(start|play) music
Код
runScript('playFavoriteMusic');
|
Будильник
Код
$h=$matches[2];
if (!check_for_number($h)) {
$ddd = explode(" ", $h);
$len=count($ddd);
$h=0;
for($j=0;$j<$len;$j++) {
$n=text_to_number($ddd[$j]);
//if (!$n) {$n="0";}
if (check_for_number($n)) {$h=$h+$n;}
else {$h=$matches[2];}
}
$h=(string)$h;
}
if (strlen($h)<2) {$h="0".$h;}
$m=$matches[5];
if (!check_for_number($m)) {
$ddd = explode(" ", $m);
$len=count($ddd);
$m=0;
for($j=0;$j<$len;$j++) {
$n=text_to_number($ddd[$j]);
//if (!$n) {$n="0";}
if (check_for_number($n)) {$m=$m+$n;}
else {$m=$matches[5];}
}
$m=(string)$m;
}
if (($h>24)|(!check_for_number($h))) {
say("Что это ".$h." ".$matches[3].".? И который это час по вашему.? Определитесь и сообщите снова.",5);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
return;
}
if (($m>59)|(!check_for_number($m))) {
say("Мне не понятно на сколько, в минутах, завести будильник, поэтому пусть будет ровно 00.",1);
$m="00";
}
if (!$m) {$m="00";}
if (($m<10)&($m!="00")) {$m="0".$m;}
say(getRandomLine('ok')." Ставлю будильник на время ".$h." ".$matches[3]." ".$m." ".$matches[8].$matches[10],1);
setGlobal('AlarmOne.AlarmOn',1);
setGlobal('AlarmOne.AlarmTime',$h.':'.$m);
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
|
Википедия
Шаблон: (Ч|ч)то такое|(К|к)то такой|(К|к)то такая (.+)
Код
$keywords = preg_split("/[\s,]+/",$original); // помещаем запрос в массив
$totalz=count($keywords);
for($i=2;$i<$totalz;$i++) { // i=2 отсекаем голосовую команду (шаблон). в моем случае "что такое" или "кто такой". Значение i= равна кол-ву слов в голосовой комманде.
$message_textz=$message_textz." ".$keywords[$i];
}
// sayreply("$message_textz,ожидайте,ищу по вики ",1);
// Установка свойства объекта на основании полученной переменной
sg("Объект.Свойство",$message_textz);
context_getuser();
context_clear();
context_activate(ID);
$zap="$message_textz";
$zapurl=urlencode($zap);
$url='https://ru.wikipedia.org/w/api.php?action=opensearch&search='.$zapurl.'&prop=info&format=xml&inprop=url';
$answ=file_get_contents($url);
$data_xml = simplexml_load_string($answ); //загружаем ответ от вики в массив
$otvet=$data_xml->Section[0]->Item[0]->Description[0]; //получаем первый найденный вариант
$description = $data_xml->Section[0]->Item[0]->Description[0]; //получаем определение слова
if (empty($description)) { //если ничего не нашлось
sayreply ("по прямому запросу ничего нет. уточните запрос",1);
for ($i=1; $i<50;) { // максимальное количество выводимых найденых вариантов запросов. можно сократить.
$description = $data_xml->Section[0]->Item[$i]->Description[0]; //получаем определение слова
if (!empty($description)) { //если определение есть, продолжаем
$otvet2=$data_xml->Section[0]->Item[$i]->Text[0]; // записываем следующий вариант запроса
//удаление спецсимволов
$otvet2=iconv("UTF-8","CP1251//IGNORE",$otvet2);
$otvet2=iconv("CP1251","UTF-8",$otvet2);
$otvet2="Вариант ".$i.":".$otvet2." "; // подготавливаем для озвучивания/ вывода на экран
sayreply($otvet2,1);
$i++;
} else {
sayreply("Больше вариантов нет.",1);
$i=100;
}
}
} else {
//удаление спецсимволов
$otvet=iconv("UTF-8","CP1251//IGNORE",$otvet);
$otvet=iconv("CP1251","UTF-8",$otvet);
sayreply($otvet,1);
//Сохраняем запросы в файл. это лог. на работу скрипта не влияет. можно удалить
$data = fopen('wiki.xml', 'a'); //открываем файл для до записи 'a' для перезаписи 'w'
$message_textz = "\n#######\n".$message_textz." = ".$otvet."\n\n";
fwrite($data, $message_textz); //записываем результат выполнения
fclose($data); //закрываем
}
|
Калькулятор
Шаблон: (С|с)колько будет (.*)
Код
$command=$matches[2];
$com=str_replace(',','.',$command);
$com=str_replace('один','1',$com);
$com=str_replace('два','2',$com);
$com=str_replace('три','3',$com);
$com=str_replace('x','*',$com);
$com=str_replace('делить на','/',$com);
$com=str_replace('разделить на','/',$com);
$com=str_replace('на','*',$com);
$com=str_replace('плюс','+',$com);
$com=str_replace('минус','-',$com);
$command=str_replace('x',' умножить на ',$command);
$command=str_replace('+',' плюс ',$command);
$command=str_replace('/',' делить на ',$command);
$command=str_replace('-',' минус ',$command);
$com='$result=' . $com .';';
eval($com);
$result = round($result,2);
$result=str_replace('.',',',$result);
sayreply($command . ' равно ' . $result,1);
|
Который час
Шаблон: (С|с)кажи время|(К|к)оторый час
Код
|
Общий контекст
|
Помощь
Код
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
sayreply($actions[$i]);
}
|
|
Про интернет
|
Радиостанции включение
Шаблон: (О|о)ткрой станцию (.+) на громкость (.+)
Код
cm('RadioSetting.Control', array('sta'=>$matches[2], 'cmd'=>'play', 'vol'=>$matches[3]));
|
Радиостанции выключение
|
Статус
Шаблон: ((^состояние).*)|(^статус$)|(^как ты)|((^как).*(дела))|(^что у нас)
|