[Модуль] API.AI (apiai)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

Сообщение Gelezako » Пт мар 09, 2018 9:07 pm

А можно пример с терминалами? К примеру у меня в качестве терминалов добавлено несколько телефонов под андроид с установленным мажордроид. Как мне понять от какого терминала пришла команда?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Пт мар 09, 2018 9:32 pm

Gelezako писал(а):А можно пример с терминалами? К примеру у меня в качестве терминалов добавлено несколько телефонов под андроид с установленным мажордроид. Как мне понять от какого терминала пришла команда?
Если Вы на альфа-ветке, то имя терминала будет в переменной $source

Кроме того, терминал передается в качестве контекста:
укажите в настройках Developer access token , затем нажмите на кнопку Send напротив terminals на вкладке Entities.
После этих действий получить терминал можно из контекста, например так

Код: Выделить всё

foreach($contexts as $ctx) {
    if ('known-terminal' == $ctx['name']) {
        debmes($ctx['parameters']['terminal']);
        debmes($ctx['parameters']['terminal.original']);
        break;
    }
}
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

Сообщение Gelezako » Сб мар 10, 2018 3:26 pm

проделал как описано, но в $source пусто и цикл тоже ничего не выводит. Подскажите куда копать?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Сб мар 10, 2018 4:13 pm

Gelezako писал(а):проделал как описано, но в $source пусто и цикл тоже ничего не выводит. Подскажите куда копать?
С $source - это мой косяк, поправлю. Но тот цикл точно должен писать в лог айди и имя терминала.
Проверьте, что Вы на альфа-ветке с последними обновлениями.
Убедитесь, что в терминалах есть все настройки для этого терминала: айпи, галка Majordroid API и т.д.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль API.AI

Сообщение lanket » Сб мар 10, 2018 7:56 pm

Я правильно понял, что работа с контекстными возможна только в системе из Альфа ветки?

И ещё вопрос: Я хочу реализовать включение радио по наименованию станции из списка возможных модуля 101 точка ру соответственно пришедшие название я должен сравнить с существующим текущем списком возможных станций. Где это возможно обработать на стороне api.ai передав каким-то образом список всех станций или на стороне мажордомо получив название от api.ai сравнив со списком и если не найдено то заново переспросить название ?

Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Сб мар 10, 2018 8:58 pm

Нет, просто в мастер-ветке сейчас нет передачи имени терминала в обработчик COMMAND.
Это означает, что только в альфа-ветке API.AI будет знать, откуда пришел запрос.
Остальное все должно работать.

Запрос на включение радио можно полностью обрабатывать на стороне сервиса. Список радиостанций можно передать в Entity.
СпойлерПоказать
1.png
1.png (27.34 КБ) 4085 просмотров

Код: Выделить всё

$stations = SQLSelect('select ID, TITLE from ru101_stations');
$total = count($stations);
$entries = array();
for($i=0; $i<$total; $i++) {
 $entries[] = array(
  'value' => $stations[$i]['ID'], 
  'synonyms' => array($stations[$i]['TITLE'])
 );
}

$entity = array(
 'name' => 'radio-station',
 'entries' => $entries
);

return $entity; 
Затем нажать на нем кнопку Send.

Далее создаете Intent
СпойлерПоказать
3.png
3.png (76.71 КБ) 4085 просмотров
И, наконец, обработчик для экшена radio
СпойлерПоказать
2.png
2.png (25.1 КБ) 4085 просмотров
Последний раз редактировалось olehs Пн мар 12, 2018 1:23 pm, всего редактировалось 1 раз.
За это сообщение автора olehs поблагодарили (всего 3):
fandaymon (Сб мар 10, 2018 10:24 pm) • Denis_k (Вс мар 11, 2018 3:38 pm) • lanket (Пн мар 12, 2018 2:19 pm)
Рейтинг: 3.49%
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль API.AI

Сообщение lanket » Вс мар 11, 2018 2:23 pm

Круто, буду пробовать.

Вот только контексты как то не заработали у меня с первой попытки.

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

То есть 'Включи радио'
Спрашивает 'какое '
Говорю 'радио рекорд'
А она вместо вопроса 'где включить' пишет 'попробуйте выразить свои мысли по другому'

Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вс мар 11, 2018 2:34 pm

lanket писал(а):Круто, буду пробовать.

Вот только контексты как то не заработали у меня с первой попытки.

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

То есть 'Включи радио'
Спрашивает 'какое '
Говорю 'радио рекорд'
А она вместо вопроса 'где включить' пишет 'попробуйте выразить свои мысли по другому'

Отправлено с моего Redmi Note 4 через Tapatalk
Контексты - это не то, Вы что-то путаете.
На радио 101 я что-то не нашел Радио Рекорд.
Ну и возможно МЖД что-то не так распознал. Вобщем, вариантов много, надо смотреть как у Вас настроено, не люблю гадать.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль API.AI

Сообщение lanket » Вс мар 11, 2018 4:58 pm

olehs писал(а): ....
Контексты - это не то, Вы что-то путаете.
На радио 101 я что-то не нашел Радио Рекорд.
Ну и возможно МЖД что-то не так распознал. Вобщем, вариантов много, надо смотреть как у Вас настроено, не люблю гадать.
Да рекорда нет, это просто что первое пришло в голову, так для примера.

Контексты я так понял это диалоги при недостающих параметров.
Полная фраза 'Включи радио enigma на кухне'
Если сказать 'Включи радио'
Алиса спрашивает 'Назовите название станции' как прописанно в dialogflow
По идее должна вызвать прослушивание и распознование уточняющего ответа название станции, в данном примере 'enigma'.
В консоли на сайте dialogflow это работает.
А в test query модуля api.ai нет, и в чат если вводить вручную нет. И если нажимаешь кнопку распознования голосовой команды в Мажордроид тоже не вызывается распознование ответа на уточняющие вопрос.
А если вручную ввести enigma то Мажордомо воспринимает как новую команду а не ответ на уточняющие вопрос.

По сути контексты в api.ai я так понял что это как в шаблонах поведения контексты. Да и в консоле dialogflow этот режим диалога с уточняющими вопросами недостающих переменных также называется Contexts. И в тестовой консоли это работает.

Или я не так понял?


Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вс мар 11, 2018 5:04 pm

Ну, почти так. Контексты - это скорей условия, при которых Интент вообще будет проверятся.
Можете прикрепить сюда ответы в JSON на запросы в test query?

p.s. Я там накосячил немного с получением имени терминала назад из ответа API.AI, потому может не работать уточнение на MajorDroid через ask, а будет делаться sayReply. Я кинул PR, но пока Сергей не принял.
Ответить