Страница 21 из 38
Re: Модуль API.AI
Добавлено: Пн мар 26, 2018 9:46 pm
Gelezako
olehs писал(а):
Какой нужен пример: с входящими контекстами или исходящими (в терминологии сервиса)?
Входящие контексты можно использовать как условия для сработки разных интентов (типа фильтровать интенты).
Исходящие - не так много вариантов применений. Они скорее нужны в самом dialogflow для ведения диалогов. Ну кроме тех, которые Модуль отсылает, а сервис возвращает назад (known-user, known-terminal etc.)
буду признателен за оба примера и пхп код, который потом со всем этим добром работает
Re: Модуль API.AI
Добавлено: Пн мар 26, 2018 9:59 pm
olehs
Ну давайте начнем с простого )
Re: Модуль API.AI
Добавлено: Пн мар 26, 2018 10:42 pm
Gelezako
Импортировал его как интент, всё норм. Прямо в диалогфло пишу "Здарова" там где поле "Try it now". И оно даже название интента не распознаёт.
Вот что отвечает:
{
"id": "67aca5d4-6fa2-43e0-9647-ade4c864c90d",
"timestamp": "2018-03-26T19:41:09.557Z",
"lang": "ru",
"result": {
"source": "agent",
"resolvedQuery": "Здарова",
"contexts": [],
"metadata": {},
"fulfillment": {
"speech": ""
},
"score": 0
},
"status": {
"code": 200,
"errorType": "success",
"webhookTimedOut": false
},
"sessionId": "d65a5bca-52f6-46f0-9e81-8d32d824654e"
}
Re: Модуль API.AI
Добавлено: Пн мар 26, 2018 10:58 pm
olehs
Все правильно. У него входящий контекст known-user
Соответственно из Try it now он и не должен работать.
А вот если скажете Привет через терминал МЖД - должно сработать
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 12:08 am
Gelezako
ага, понял, работает, а можно теперь пример с исходящим контекстом?
Ещё вопрос, по-поводу входящего контекста. У интента имя "Hello, %username%" оно точно должно быть таким? Вроде само имя не должно влиять на определение имени пользователя.
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 1:58 am
Onilo09
подскажите пожалуйста почему не срабатывает ask
Код: Выделить всё
{
"id": "252fc6dc-f5fe-469f-8277-2e518a68935a",
"timestamp": "2018-03-26T22:55:43.034Z",
"lang": "ru",
"result": {
"source": "agent",
"resolvedQuery": "включи",
"action": "",
"actionIncomplete": true,
"parameters": {
"actions": "1",
"devices": "",
"room": ""
},
"contexts": [
{
"name": "off\/on_dialog_params_devices",
"parameters": {
"actions.original": "включи",
"devices": "",
"room.original": "",
"actions": "1",
"room": "",
"devices.original": ""
},
"lifespan": 1
},
{
"name": "off\/on_dialog_context",
"parameters": {
"actions.original": "включи",
"devices": "",
"room.original": "",
"actions": "1",
"room": "",
"devices.original": ""
},
"lifespan": 2
},
{
"name": "7c6e6867-3f86-4e90-ade9-3a19c48b421f_id_dialog_context",
"parameters": {
"actions.original": "включи",
"devices": "",
"room.original": "",
"actions": "1",
"room": "",
"devices.original": ""
},
"lifespan": 2
}
],
"metadata": {
"intentId": "7c6e6867-3f86-4e90-ade9-3a19c48b421f",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "off\/on"
},
"fulfillment": {
"speech": "что?",
"messages": [
{
"type": 0,
"speech": "что?"
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success",
"webhookTimedOut": false
},
"sessionId": ".5ab97a6387f07"
}
терминал определяет
проверял с помощью say($source);
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 11:53 am
olehs
Модуль не определил, с какого терминала запрос. Что-то не так настроено в Терминалах
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 3:56 pm
Onilo09
olehs писал(а):Модуль не определил, с какого терминала запрос. Что-то не так настроено в Терминалах
когда отправляю запрос не через тест, а через расширение хрома, то say($soures) , выдает верное имя терминала, или есть еще какая то переменная выдающая терминал, а в логах расширения приходит команда sayto
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 4:31 pm
olehs
Onilo09 писал(а):olehs писал(а):Модуль не определил, с какого терминала запрос. Что-то не так настроено в Терминалах
когда отправляю запрос не через тест, а через расширение хрома, то say($soures) , выдает верное имя терминала, или есть еще какая то переменная выдающая терминал, а в логах расширения приходит команда sayto
С Хромом тут есть проблемка... Дело в том, что ask сейчас умеют отрабатывать только MajorDroid и ChromeGate. Так вот проверить, что терминал является Мажордроидом я могу (по наличию галки MajorDroid API), а признака, что это CromeGateMJD - нет.
Потому в текущей реализации ask выполняется только для Дроида, а для остальных - sayTo.
Выходов, пока нет возможности определить тип терминала, есть несколько.
1. Попробовать для этого терминала поставить галку MajorDroid API, но тут могут перестать правильно работать другие методы.
2. В обработчике action перехватывать сообщение и делать ask. Примерно вот так (код не проверял):
Код: Выделить всё
if($data['result']['actionIncomplete'] && ($source == 'chrome')) {
$msg = $data['result']['fulfillment']['speech'];
$data['result']['fulfillment']['speech'] = '';
ask($msg, $source);
}
Re: Модуль API.AI
Добавлено: Вт мар 27, 2018 4:32 pm
olehs
Жесть! Все описание, которое я делал для Модуля куда-то пропало! Что за хрень???