Majordomo

Majordomo и Wikipedia

• 28-01-2019 •

А было ли у вас так, когда идет спор на вопрос что или кто такой, или когда на языке вертится а вспомнить никак?

В мажордомо можно реализовать прикольную функцию, которая будет отвечать голосом на вопрос: кто такой или что такое. Не могу сказать, что такая функция принесет огромную пользу.

Скорее всего, кроме как показать друзьям и родственникам вы ее использовать не будете.

Переходим в раздел Шаблоны поведения и добавляем новую запись


(что такое|кто такой) (.+)

Копируем все с картинки. И остается добавить код:


$query = $matches[2];
$arr = explode('@', $query);
$query = $arr[0];
sayReply('Ищу, что такое: '.$query,2);
$queryUrl = urlencode($query);
$url = 'http://ru.wikipedia.org/w/api.php?action=opensearch&search='.$queryUrl.'&prop=info&format=xml&inprop=url';
$content = file_get_contents($url);
$xml = simplexml_load_string($content);
$answer = $xml->Section->Item->Description; 

//избавимся от ударений
$answer = iconv("UTF-8","CP1251//IGNORE",$answer);
$answer = iconv("CP1251","UTF-8",$answer);
$answer = preg_replace("#\s\(.*?\)#isu", '', $answer); 
$answer = strval($answer);
sayReply($answer,2);

Принцип скрипта следующий. Добавляем в переменную ключевое слово, которое мы только что сказали. Для того, чтобы убедиться что ключевое слово используется то, которое мы назвали, мы запускаем голосом фразу: «Ищу, что такое: ‘.$query» ($query — то самое слово).

Дальше, через специальную API ссылку, мы посылаем запрос на wikipedia, и получаем ответ в виде xml.

Дело в том, что ответ нам приходит в виде текста, где присутствуют знаки ударения, а так же и другие знаки, которые помешают нашему голосовому помощнику нормально продиктовать текст. По этому от них нужно избавляться.

После того как мы почистили текст, можно спокойно запускать функцию sayReplay и наслаждаться ответом)

Если у вас есть более удобный вариант исполнения скрипта, то напишите в комментариях, обязательно дополню эту статью!

Так же можете почитать: Подключение SONOFF к Majordomo без перепрошивки

Добавить комментарий