report system state
|
Активация контекста
Код
say("Что-нибудь хотите?");
|
(.+)
Код
say("Вы сказали ' ".$matches[1]." ' , я не понимаю...");
|
да
Код
|
нет
Код
|
|
будильник
Шаблон: (поставь|установи|заведи) будильник на (\d+)(\s*)(часов|:)*(\s*)(\d*)
Код
$h=$matches[2];
$m=$matches[6];
if ($h>24) {
say("Непонятно на который час завести будильник, определитесь и сообщите снова.",5);
return;
}
if (($m>59)|(!$m)) {
say("Непонятно на сколько минут завести будильник, поэтому пусть будет ровно 00.",5);
$m="00";
}
say("Ставлю будильник для Григория на ".$h." часов ".$m." минут. Постарайтесь не проспать.",5);
setGlobal('AlarmClock04.AlarmOn',1);
setGlobal('AlarmClock04.AlarmTime',$h.':'.$m);
|
в список дел
Шаблон: добавь в список дел (.+)
Код
callMethod('TodoList.view');
callMethod('TodoList.new', array('task'=>$matches[1]));
callMethod('TodoList.view');
say(getRandomLine(done), 1);
|
включить все будильники
Шаблон: (включить|включи) все будильники
|
Включить Наше радио
Шаблон: (В|в)ключ(и|ить) наше радио
Код
cm('RadioSetting.Control', array('sta'=>'101.7 Наше радио', 'cmd'=>'play', 'vol'=>80));
|
Включить радио
Шаблон: (В|в)ключ(и|ить) радио
Код
say(getRandomLine(DONE),1);
$terminal_rec=SQLSelectOne("SELECT * FROM terminals WHERE LATEST_REQUEST LIKE
'%".DBSafe($replyto)."%' ORDER BY LATEST_REQUEST_TIME DESC LIMIT 1");
getURL('http://localhost/rc/?command=vlc_play',0);
sg("RadioSetting.PlayTerminal",$terminal_rec['NAME']);
//cm('RadioSetting.Control', array('play'));
cm('RadioSetting.Control', array('sta'=>'Наше радио', 'cmd'=>'play', 'vol'=>80));
// последняя строчка позволяет включать конкретную станцию
|
Включить режим охраны
Шаблон: режим охраны|я ушел|я ушла|включи режим охраны|охрана|я ухожу
|
время
Шаблон: (время|сколько времени|который час)
|
выключить всё
Шаблон: выключить всё|выключи всё|выруби всё|выключить везде свет|выключи везде свет|выруби свет везде|выключи полностью свет|выруби свет|выключи весь свет|выключить весь свет|выруби весь свет|отключить всё|вырубить всё|выруби всё|выруби все|выключить свет везде|выключи свет везде
|
выключить все будильники
Шаблон: (выключить|выключи) все будильники
|
Выключить радио
Шаблон: (В|в)ыключ(и|ить) радио
Код
say(getRandomLine(DONE),1);
cm('RadioSetting.Control', array('stop'));
|
Выключить режим охраны
Шаблон: я дома|выключи режим охраны|выключить режим охраны|я пришёл|я пришла|выключи охрану
|
Где
Код
$user = explode(' ',$text)[1];
$obj_name="";
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (getGlobal($obj['TITLE'].".fullName")==$user)
{
$obj_name = $obj['TITLE'];
break;
}
}
if ($obj_name !="")
{
$coord = getGlobal($obj_name.".Coordinates");
$ll = explode(',',$coord);
$lat = $ll[0];
$lon = $ll[1];
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendLocationToUser($chat_id , $lat , $lon);
return "";
}
else
{
return "Не знаю такого!";
}
|
громкость
Код
say(getRandomLine(DONE),1);
sg('ThisComputer.volumeLevel', $matches[1]);
callMethod('ThisComputer.VolumeLevelChanged',array('VALUE'=>$matches[1]));
|
Громкость радио
Шаблон: громкость радио на (.+)
Код
say(getRandomLine(DONE),1);
sg('RadioSetting.Control', $matches[1]);
cm('RadioSetting.Control', array('vol'=>$matches[1]));
|
громкость терминала
Шаблон: ((установи(.*) громкость терминала)(.*)(\s+)(\d+))|^((громкость терминала)(.*)(\s+)(\d+))|^((громкость планшета)(.*)(\s+)(\d+))
Код
$vol=$matches[6].$matches[11].$matches[16];
say(getRandomLine('ok'),1);
callMethod("laptopVaio.volumeLevelChanged", array("VALUE"=>$vol));
|
запиши
Код
$text = $matches[1];
$filename = "C:/_majordomo/htdocs/cms/texts/memory.txt";
runScript("InFile",array("subject"=>"Текст:", "body"=>$text, "filename"=>$filename ));
say("Выполнено. Всё запомнила в файл.",2);
|
как дела
Код
sayReply(' Не дождётесь! Всё отлично. Все системы, в настоящий момент, функционируют без ошибок!', 2);
|
калькулятор
Шаблон: сколько будет (.*)
Код
$command=$matches[1];
$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);
$com=str_replace('минус','-',$com);
$command=str_replace('x',' умножить на ',$command);
$command=str_replace('х',' умножить на ',$command);
//$command=str_replace('+',' плюс ',$command);
$command=str_replace('/',' делить на ',$command);
$command=str_replace('-',' минус ',$command);
$com='$result=' . $com .';';
eval($com);
$result=str_replace('.',',',$result); //чтобы Алиса читала 1.5 как 'Один с половиной', а не 'Один точка пять', хотя это зависит от TTS-движка
say($command.' равно '.$result,2);
|
микроклимат
|
Напиши Тоне
|
напоминание_о_чем-то_шаблон отключил_есть_лучше
Код
//напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
$u=5;
$naptime = mb_strtolower($matches[1]);
$request = mb_strtolower($matches[6]);
$chislo = array('один'=> '1','одну'=> '1','два'=> '2','две'=> '2','три'=> '3','четыре'=> '4','пять'=> '5','шесть'=> '6','семь'=> '7','восемь'=> '8','девять'=> '9');
foreach($chislo as $key => $value) {$naptime =str_replace($key,$value,$naptime);}
if ($request!='') {
$su=0;
$naptime=str_replace(" на ", " ", $naptime);
if (stristr($naptime, "сегодня") != FALSE) {$naptime = str_replace("сегодня ", "", $naptime); $su=0;}
if (stristr($naptime, "послезавтра") != FALSE) {$naptime = str_replace("послезавтра ", "", $naptime); $su=2;}
if (stristr($naptime, "завтра") != FALSE) {$naptime = str_replace("завтра", "", $naptime); $su=1;}
$a=$su*86400+recognizeTime($naptime,$b);
if(time()<($a-30)){
$nday=date( "j" , $a);
$MonthNames=array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
$nmes=date( "n" , $a)-1;
$nmonth=$MonthNames[$nmes];
$ntime=date( "H:i" , $a);
$chisl = array(1=> 'первое',2=> 'второе',3=> 'третье',4=> 'четвертое',5=> 'пятое',6=> 'шестое',7=> 'седьмое',8=> 'восьмое',9=> 'девятое',10=> 'десятое',11=> 'одиннадцатое',12=> 'двенадцатое',13=> 'тринадцатое',14=> 'четырнадцатое' ,15=> 'пятнадцатое',16=> 'шестнадцатое',17=> 'семнадцатое',18=> 'восемнадцатое',19=> 'девятнадцатое',20=> 'двадцатое',30=> 'тридцатое',21=> 'двадцать',31=> 'тридцать');
if ($nday<21||$nday==30) {$chtext=$chisl[$nday];} else {$chtext=$chisl[(int)($nday/10)*10+1].' '.$chisl[$nday % 10] ;}
AddScheduledJob($request,"playSound('opoveshenie.mp3'); say('Вы просили напомнить ".$request."',".$u.");",$a, 60);
say("Задание напомнить ".$request." установлено на ".$chtext." ".$nmonth." в ".$ntime,$u);}
else
{say("Назначить напоминание на заданное время невозможно!",$u);}}
else
{say("Непонятно, что напомнить?!",$u);}
|
напомнить
Код
debmes('txt=>'.$matches[1]);
rs('setMemo',array('txt'=>$matches[1]));
// этот шаблон работает очень хорошо, весь код находиться в сценарии setMemo
|
ночной режим
Шаблон: (В|в)включи режим ночной|(В|в)включи ночной режим|(Н|н)очной режим|(Н|н)очной
Код
if (gg("NightMode.active")==1) {
sayReply ("Режим ночной уже включен",2);
}
else {
sayReply ("Включаю ночной режим",2);
callMethod("NightMode.activate");
};
|
Общий контекст
|
день недели
Шаблон: (день недели|какой сегодня день недели)
Код
$days=array('воскресенье','понедельник','вторник','среда','четверг','пятница','суббота');
$day_num=(int)date('w');
$day_of_week=$days[$day_num];
say("Сегодня - ".$day_of_week,1);
|
забудь
Шаблон: (забудь|забей|сброс)
Код
context_clear();
clearTimeOut('user_'.context_getuser().'_contexttimeout');
say('Контекст забыт.');
|
и еще
Шаблон: (и еще|а так же|кроме того|помимо этого)
Код
//context_activate(17);
//пока закомментил потому что не знаю как это можно использовать и как точно это работает
|
список команд
Шаблон: ((п|П)омощь|(п|П)омоги|(с|С)писок команд|я хз|а что можно)
Код
//runScript('help', array('actions'=>$this->getAvailableActions()));
say('Здесь доступны команды ',2);
$actions=$this->getAvailableActions();
$total=count($actions);
for($i=0;$i<$total;$i++) {
say($actions[$i],1);
}
|
сценарий
Код
sayreply("Запускаю сценарий ".$matches[1]);
runScript($matches[1]);
|
|
отменить напоминание
Шаблон: (О|о)тмени напоминание (.+)
Код
$u=5;
$naptime=mb_strtolower($matches[2]);
ClearScheduledJob($naptime);
say('Напоминание '.$naptime.' отменено!',$u);
|
Перезагрузить сервер
Шаблон: перегрузи сервер|перезагрузи сервер|перегрузить сервер|перезагрузить сервер
|
повтори последнее сообщение
Шаблон: (повтори последнее сообщение|повтори|последнее сообщение)
Код
sayReply(gg('ThisComputer.lastSayMessage'),2);
|
поговорим
Шаблон: поговорим|поболтаем
Код
sayReply('Некогда болтать, я температуру в подвале меряю.',2);
|
погода
Шаблон: (погода|температура за бортом|погода сегодня|расскажи о погоде)
|
показания счетчика
Шаблон: показания счетчика
Код
$x_x=gg("Counter02.valueWork");
$m_x=($x_x/100); //переводим в m3
sayreply('Показания счетчика горячей воды '.$m_x.' метров кубических',2);
//sayreply("Показания счетчика горячей воды",2);
//sayreply($m_x,2);
//sayreply("метров кубических",2);
|
привет
Код
sayReply('Привет Григорий',2);
|
прогноз погоды
Шаблон: (прогноз|погода на завтра|какая погода завтра|прогноз погоды|погода завтра|завтра погода|погода завтра какая|завтра погода какая|скажи погоду на завтра)
|
Произнеси на терминале
Шаблон: произнеси на (.+?) (.+)
Код
if (preg_match('/план/uis', $matches[1])) {
$t = 'VAIO';
}
elseif (preg_match('/серв/uis', $matches[1])) {
$t = 'MAIN';
}
elseif (preg_match('/комп/uis', $matches[1])) {
$t = 'VAIO';
} else {
say('Непонятно где произнести: ' . $matches[1], 1);
}
if ($t == 'VAIO') {
sayTo($matches[2], 2, $t);
}
elseif ($t == 'VAIO') {
sayTo($matches[2], 2, $t);
}
elseif ($t == 'MAIN') {
say($matches[2], 2);
}
|
проснись
Шаблон: (ты меня слышишь|очнись|говори голосом|проснись|голос)
Код
global $voicemode;
$voicemode='on';
setGlobal('minMsgLevel',0);
sayReply('Я всегда рядом, если я молчу, это не значит что я не слышу вас', 2);
callMethod("ThisComputer.VolumeLevelChanged",array("VALUE"=>50));
cm('mainVLC.setVolume',array('volume'=>50));
brLinkCommand('vol_mute');
|
рестарт цикла
Код
//sayReply('Внимание! Инициирован перезапуск цикла сяоми. Ближайшие пару минут не будут функционировать все устройства сяоми', 2);
//setGlobal('cycle_xiaomihomeControl','restart');
|
скажи
Код
|
спасибо
Шаблон: (спасиб|благода|благада|ты молодец|thank|отличн|молодец)
Код
//sayReply(getRandomLine(thanks),2);
// ниже второй вариант
$thanks = getRandomLine(thanks);
sayReply($thanks, 1);
|
Спокойной ночи
Шаблон: ((С|с)покойной ночи|бай бай)
Код
sayReply('Спокойной ночи!',5);
sayReply('Весь свет будет выключен через минуту',5);
setTimeOut("lightOFF","RunScript('TurnOff');", 1*60);
callMethod('NightMode.activate');
|
таймер
Шаблон: через (\d+) минут(.?) (.+)
Код
setTimeOut('timer', "getURL('http://localhost/command.php?qry=".urlencode($matches[3])."');", $matches[1]*60);
|
тихо
Шаблон: (тихо|тишина|молчи|замолчи|заткнись|помолчи|усни)
Код
global $voicemode;
$voicemode='off';
say('Хорошо, я пошла спать');
setGlobal('minMsgLevel','12');
callMethod("ThisComputer.VolumeLevelChanged",array("VALUE"=>0));
cm('mainVLC.setVolume',array('volume'=>0));
brLinkCommand('vol_mute');
|
ты кто?
Код
sayReply("Девочка-фиксик оранжевого цвета, всегда готовая прийти на помощь",2);
sayReply('А если серьезно, меня зовут Алиса, - я система управления умным домом',2);
|
читает новости
|
что запомнила (записала)
Шаблон: (что запомнила|из файла|что помнишь)
Код
$arr = file("C:/_majordomo/htdocs/cms/texts/memory.txt");
for($i = 0; $i < count($arr); $i++)
{
say($arr[$i],5);
}
|
что такое
Шаблон: (что такое|кто такой) (.+)
Код
$keywords = preg_split("/[\s,]+/",$original); // помещаем запрос в массив
$totalz=count($keywords);
for($i=2;$i<$totalz;$i++) { // i=2 отсекаем голосовую команду (шаблон). в моем случае "что такое" или "кто такой". Значение i= равна кол-ву слов в голосовой комманде.
$message_textz=$message_textz." ".$keywords[$i];
}
say("$message_textz,ожидайте,ищу по википедии ",2);
// Установка свойства объекта на основании полученной переменной
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)) { //если ничего не нашлось
say ("по прямому запросу ничего нет. уточните запрос",2);
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." "; // подготавливаем для озвучивания/ вывода на экран
say($otvet2,2);
$i++;
} else {
say("Больше вариантов нет.",2);
$i=100;
}
}
} else {
//удаление спецсимволов
$otvet=iconv("UTF-8","CP1251//IGNORE",$otvet);
$otvet=iconv("CP1251","UTF-8",$otvet);
say($otvet,2);
//Сохраняем запросы в файл. это лог. на работу скрипта не влияет. можно удалить
$data = fopen('wiki.xml', 'w'); //открываем файл для до записи 'a' для перезаписи 'w'
$message_textz = "\n#######\n".$message_textz." = ".$otvet."\n\n";
fwrite($data, $message_textz); //записываем результат выполнения
fclose($data); //закрываем
}
|
Яндекс.Переводчик
Шаблон: (П|п)ереве(ди|сти|зти) на (.+) (слово|фраза|фразу|выражение)
Код
$apikey = "trnsl.1.1.20190325T153540Z.2b3d28a8b48e7c1d.2fac2dcde1aad29f6a3e1bf376efcd5f87d21fa9"; //API-ключ с яндекса получить можно здесь https://translate.yandex.ru/developers/keys КАВЫЧКИ НЕ УБИРАТЬ!!!
$message_text=$original; //вся фраза целиком (Переведи на английский фразу ПЕРЕВОДИМАЯ ФРАЗА)
$keywords = preg_split("/[\s,]+/",$original); //Разбиваем фразу на отдельные слова
$total=count($keywords); //Считаем сколько слов в оригинальной фразе
$xtotal=$total - 4; //$xtotal - количество слов после шаблонного запроса, ($total -4) цифра 4 - это количество слов в шаблоне запроса до переводимой фразы/слова
//извлекаем переводимое слово/фразу, т.е. отсекаем запрос "Переведи на английский фразу" от всего запроса оставляя то, что надо перевести на другой язык
for($i=$xtotal;$i<$total;$i++) {
$message_text = substr(strstr($message_text," "), 1);
}
$message_text_strrep = str_replace(" ","%20",$message_text); //заменяем пробелы на %20 в переводимом слове/фразе для запроса GET (не понимает пробелов)
//sayreply($message_text,2); //проверка на вывод поисковой фразы
$langfrom = file_get_contents("https://translate.yandex.net/api/v1.5/tr.json/detect?key=".$apikey."&text=".$message_text_strrep); // Определяем с какого языка будет перевод (если английский - вывод: {"code":200,"lang":"en"})
$langfrom = substr($langfrom , strpos($langfrom , 'g')+4); // обрезаем полученную строку {"code":200,"lang":"en"} с начала до en"}
$langfrom = strstr($langfrom , '"', true); // теперь режем последние символы "}, чтоб осталось en
//определяем переменную на какой язык надо перевести
if($matches[3]=="азербайджанский"){$langto="az";}
elseif($matches[3]=="албанский"){$langto="sq";}
elseif($matches[3]=="амхарский"){$langto="am";}
elseif($matches[3]=="английский"){$langto="en";}
elseif($matches[3]=="арабский"){$langto="ar";}
elseif($matches[3]=="армянский"){$langto="hy";}
elseif($matches[3]=="африкаанс"){$langto="af";}
elseif($matches[3]=="баскский"){$langto="eu";}
elseif($matches[3]=="башкирский"){$langto="ba";}
elseif($matches[3]=="белорусский" || $matches[3]=="беларуский"){$langto="be";}
elseif($matches[3]=="бенгальский"){$langto="bn";}
elseif($matches[3]=="бирманский"){$langto="my";}
elseif($matches[3]=="болгарский"){$langto="bg";}
elseif($matches[3]=="боснийский"){$langto="bs";}
elseif($matches[3]=="валлийский"){$langto="cy";}
elseif($matches[3]=="венгерский"){$langto="hu";}
elseif($matches[3]=="вьетнамский"){$langto="vi";}
elseif($matches[3]=="гаитянский" || $matches[3]=="креольский"){$langto="ht";}
elseif($matches[3]=="галисийский"){$langto="gl";}
elseif($matches[3]=="голландский"){$langto="nl";}
elseif($matches[3]=="горномарийский"){$langto="mrj";}
elseif($matches[3]=="греческий"){$langto="el";}
elseif($matches[3]=="грузинский"){$langto="ka";}
elseif($matches[3]=="гуджарати"){$langto="gu";}
elseif($matches[3]=="датский"){$langto="da";}
elseif($matches[3]=="иврит"){$langto="he";}
elseif($matches[3]=="идиш"){$langto="yi";}
elseif($matches[3]=="индонезийский"){$langto="id";}
elseif($matches[3]=="ирландский"){$langto="ga";}
elseif($matches[3]=="итальянский"){$langto="it";}
elseif($matches[3]=="исландский"){$langto="is";}
elseif($matches[3]=="испанский"){$langto="es";}
elseif($matches[3]=="казахский"){$langto="kk";}
elseif($matches[3]=="каннада"){$langto="kn";}
elseif($matches[3]=="каталанский"){$langto="ca";}
elseif($matches[3]=="киргизский"){$langto="ky";}
elseif($matches[3]=="китайский"){$langto="zh";}
elseif($matches[3]=="корейский"){$langto="ko";}
elseif($matches[3]=="коса"){$langto="xh";}
elseif($matches[3]=="кхмерский"){$langto="km";}
elseif($matches[3]=="лаосский"){$langto="lo";}
elseif($matches[3]=="латынь" || $matches[3]=="латинский"){$langto="la";}
elseif($matches[3]=="латышский"){$langto="lv";}
elseif($matches[3]=="литовский"){$langto="lt";}
elseif($matches[3]=="люксембургский"){$langto="lb";}
elseif($matches[3]=="малагасийский"){$langto="mg";}
elseif($matches[3]=="малайский"){$langto="ms";}
elseif($matches[3]=="малаялам"){$langto="ml";}
elseif($matches[3]=="мальтийский"){$langto="mt";}
elseif($matches[3]=="македонский"){$langto="mk";}
elseif($matches[3]=="маори"){$langto="mi";}
elseif($matches[3]=="маратхи"){$langto="mr";}
elseif($matches[3]=="марийский"){$langto="mhr";}
elseif($matches[3]=="монгольский"){$langto="mn";}
elseif($matches[3]=="немецкий"){$langto="de";}
elseif($matches[3]=="непальский"){$langto="ne";}
elseif($matches[3]=="норвежский"){$langto="no";}
elseif($matches[3]=="панджаби"){$langto="pa";}
elseif($matches[3]=="папьяменто"){$langto="pap";}
elseif($matches[3]=="персидский"){$langto="fa";}
elseif($matches[3]=="польский"){$langto="pl";}
elseif($matches[3]=="португальский"){$langto="pt";}
elseif($matches[3]=="румынский"){$langto="ro";}
elseif($matches[3]=="русский"){$langto="ru";}
elseif($matches[3]=="себуанский"){$langto="ceb";}
elseif($matches[3]=="сербский"){$langto="sr";}
elseif($matches[3]=="сингальский"){$langto="si";}
elseif($matches[3]=="словацкий"){$langto="sk";}
elseif($matches[3]=="словенский"){$langto="sl";}
elseif($matches[3]=="суахили"){$langto="sw";}
elseif($matches[3]=="сунданский"){$langto="su";}
elseif($matches[3]=="таджикский"){$langto="tg";}
elseif($matches[3]=="тайский"){$langto="th";}
elseif($matches[3]=="тагальский"){$langto="tl";}
elseif($matches[3]=="тамильский"){$langto="ta";}
elseif($matches[3]=="татарский"){$langto="tt";}
elseif($matches[3]=="телугу"){$langto="te";}
elseif($matches[3]=="турецкий"){$langto="tr";}
elseif($matches[3]=="удмуртский"){$langto="udm";}
elseif($matches[3]=="узбекский"){$langto="uz";}
elseif($matches[3]=="украинский"){$langto="uk";}
elseif($matches[3]=="урду"){$langto="ur";}
elseif($matches[3]=="финский"){$langto="fi";}
elseif($matches[3]=="французский"){$langto="fr";}
elseif($matches[3]=="хинди"){$langto="hi";}
elseif($matches[3]=="хорватский"){$langto="hr";}
elseif($matches[3]=="чешский"){$langto="cs";}
elseif($matches[3]=="шведский"){$langto="sv";}
elseif($matches[3]=="шотландский"){$langto="gd";}
elseif($matches[3]=="эстонский"){$langto="et";}
elseif($matches[3]=="эсперанто"){$langto="eo";}
elseif($matches[3]=="яванский"){$langto="jv";}
elseif($matches[3]=="японский"){$langto="ja";}
$lang = $langfrom."-".$langto; //направление перевода. пример en-ru
$text = file_get_contents("https://translate.yandex.net/api/v1.5/tr.json/translate?key=".$apikey."&text=".$message_text_strrep."&lang=".$lang."&format=plain"); //получаем перевод. Вывод GET запроса: {"code":200,"lang":"en-ru","text":["Перевести эту фразу"]}
$answercode = substr($text,8,3); //смотрим код ответа
//если всё хорошо то:
if ($answercode == 200) {
$text = substr($text, strpos($text, '[')+2); //обрезаем вывод GET запроса до символа [. +2 - удаляем сам знак [ и следующий за ним символ
$say = strstr($text, '"', true); //обрезаем вывод GET запроса с конца до первых кавычек, включая и кавычки
if ($matches[4] == "фразу") {$matches[4] = "фраза";} //делаем удобоваримый для слуха ответ от Алисы
say($matches[4].": ".$message_text." переводится на ".$matches[3]." как: ".$say,2); // собственно сам выхлоп перевода, то , что скажет нам в ответ Алиса
}
//иначе сообщаем об ошибке (пока почему-то не работает, при ошибке, file_get_contents возвращает пустое значение (через строку браузера всё работает :-( ))
elseif ($answercode == 401) {say("Неправильный API-ключ",2);}
elseif ($answercode == 402) {say("API-ключ заблокирован",2);}
elseif ($answercode == 404) {say("Превышено суточное ограничение на объем переведенного текста",2);}
else {say("Неизвестный код ответа сервера: ".$answercode,2);}
|