Страница 17 из 38
Re: Модуль API.AI
Добавлено: Пт мар 09, 2018 9:07 pm
Gelezako
А можно пример с терминалами? К примеру у меня в качестве терминалов добавлено несколько телефонов под андроид с установленным мажордроид. Как мне понять от какого терминала пришла команда?
Re: Модуль API.AI
Добавлено: Пт мар 09, 2018 9:32 pm
olehs
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;
}
}
Re: Модуль API.AI
Добавлено: Сб мар 10, 2018 3:26 pm
Gelezako
проделал как описано, но в $source пусто и цикл тоже ничего не выводит. Подскажите куда копать?
Re: Модуль API.AI
Добавлено: Сб мар 10, 2018 4:13 pm
olehs
Gelezako писал(а):проделал как описано, но в $source пусто и цикл тоже ничего не выводит. Подскажите куда копать?
С $source - это мой косяк, поправлю. Но тот цикл точно должен писать в лог айди и имя терминала.
Проверьте, что Вы на альфа-ветке с последними обновлениями.
Убедитесь, что в терминалах есть все настройки для этого терминала: айпи, галка Majordroid API и т.д.
Re: Модуль API.AI
Добавлено: Сб мар 10, 2018 7:56 pm
lanket
Я правильно понял, что работа с контекстными возможна только в системе из Альфа ветки?
И ещё вопрос: Я хочу реализовать включение радио по наименованию станции из списка возможных модуля 101 точка ру соответственно пришедшие название я должен сравнить с существующим текущем списком возможных станций. Где это возможно обработать на стороне api.ai передав каким-то образом список всех станций или на стороне мажордомо получив название от api.ai сравнив со списком и если не найдено то заново переспросить название ?
Отправлено с моего Redmi Note 4 через Tapatalk
Re: Модуль API.AI
Добавлено: Сб мар 10, 2018 8:58 pm
olehs
Нет, просто в мастер-ветке сейчас нет передачи имени терминала в обработчик COMMAND.
Это означает, что только в альфа-ветке API.AI будет знать, откуда пришел запрос.
Остальное все должно работать.
Запрос на включение радио можно полностью обрабатывать на стороне сервиса. Список радиостанций можно передать в Entity.

- 1.png (27.34 КБ) 4333 просмотра
Код: Выделить всё
$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 (76.71 КБ) 4333 просмотра
И, наконец, обработчик для экшена radio

- 2.png (25.1 КБ) 4333 просмотра
Re: Модуль API.AI
Добавлено: Вс мар 11, 2018 2:23 pm
lanket
Круто, буду пробовать.
Вот только контексты как то не заработали у меня с первой попытки.
В консоле тестирования на самом сайте dialogflow работают, а вот в мажорике ответы на уточняющие вопоосы пишет попробуйте выразить свои мысли по другому.
То есть 'Включи радио'
Спрашивает 'какое '
Говорю 'радио рекорд'
А она вместо вопроса 'где включить' пишет 'попробуйте выразить свои мысли по другому'
Отправлено с моего Redmi Note 4 через Tapatalk
Re: Модуль API.AI
Добавлено: Вс мар 11, 2018 2:34 pm
olehs
lanket писал(а):Круто, буду пробовать.
Вот только контексты как то не заработали у меня с первой попытки.
В консоле тестирования на самом сайте dialogflow работают, а вот в мажорике ответы на уточняющие вопоосы пишет попробуйте выразить свои мысли по другому.
То есть 'Включи радио'
Спрашивает 'какое '
Говорю 'радио рекорд'
А она вместо вопроса 'где включить' пишет 'попробуйте выразить свои мысли по другому'
Отправлено с моего Redmi Note 4 через Tapatalk
Контексты - это не то, Вы что-то путаете.
На радио 101 я что-то не нашел Радио Рекорд.
Ну и возможно МЖД что-то не так распознал. Вобщем, вариантов много, надо смотреть как у Вас настроено, не люблю гадать.
Re: Модуль API.AI
Добавлено: Вс мар 11, 2018 4:58 pm
lanket
olehs писал(а):
....
Контексты - это не то, Вы что-то путаете.
На радио 101 я что-то не нашел Радио Рекорд.
Ну и возможно МЖД что-то не так распознал. Вобщем, вариантов много, надо смотреть как у Вас настроено, не люблю гадать.
Да рекорда нет, это просто что первое пришло в голову, так для примера.
Контексты я так понял это диалоги при недостающих параметров.
Полная фраза 'Включи радио enigma на кухне'
Если сказать 'Включи радио'
Алиса спрашивает 'Назовите название станции' как прописанно в dialogflow
По идее должна вызвать прослушивание и распознование уточняющего ответа название станции, в данном примере 'enigma'.
В консоли на сайте dialogflow это работает.
А в test query модуля api.ai нет, и в чат если вводить вручную нет. И если нажимаешь кнопку распознования голосовой команды в Мажордроид тоже не вызывается распознование ответа на уточняющие вопрос.
А если вручную ввести enigma то Мажордомо воспринимает как новую команду а не ответ на уточняющие вопрос.
По сути контексты в api.ai я так понял что это как в шаблонах поведения контексты. Да и в консоле dialogflow этот режим диалога с уточняющими вопросами недостающих переменных также называется Contexts. И в тестовой консоли это работает.
Или я не так понял?
Отправлено с моего Redmi Note 4 через Tapatalk
Re: Модуль API.AI
Добавлено: Вс мар 11, 2018 5:04 pm
olehs
Ну, почти так. Контексты - это скорей условия, при которых Интент вообще будет проверятся.
Можете прикрепить сюда ответы в JSON на запросы в test query?
p.s. Я там накосячил немного с получением имени терминала назад из ответа API.AI, потому может не работать уточнение на MajorDroid через ask, а будет делаться sayReply. Я кинул PR, но пока Сергей не принял.