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

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

Модератор: immortal

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

Re: Модуль API.AI

Сообщение Gelezako » Пн мар 26, 2018 9:46 pm

olehs писал(а): Какой нужен пример: с входящими контекстами или исходящими (в терминологии сервиса)?
Входящие контексты можно использовать как условия для сработки разных интентов (типа фильтровать интенты).
Исходящие - не так много вариантов применений. Они скорее нужны в самом dialogflow для ведения диалогов. Ну кроме тех, которые Модуль отсылает, а сервис возвращает назад (known-user, known-terminal etc.)
буду признателен за оба примера и пхп код, который потом со всем этим добром работает
фанат Мажордомо
тематический блог 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 » Пн мар 26, 2018 9:59 pm

Ну давайте начнем с простого )
Вложения
Hello, _USERNAME_.json.txt
(1.47 КБ) 523 скачивания
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль API.AI

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

Импортировал его как интент, всё норм. Прямо в диалогфло пишу "Здарова" там где поле "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"
}
фанат Мажордомо
тематический блог 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 » Пн мар 26, 2018 10:58 pm

Все правильно. У него входящий контекст known-user
Соответственно из Try it now он и не должен работать.

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

Re: Модуль API.AI

Сообщение Gelezako » Вт мар 27, 2018 12:08 am

ага, понял, работает, а можно теперь пример с исходящим контекстом?

Ещё вопрос, по-поводу входящего контекста. У интента имя "Hello, %username%" оно точно должно быть таким? Вроде само имя не должно влиять на определение имени пользователя.
Последний раз редактировалось Gelezako Вт мар 27, 2018 12:08 pm, всего редактировалось 1 раз.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Onilo09
Сообщения: 28
Зарегистрирован: Пн окт 02, 2017 11:42 am
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Модуль API.AI

Сообщение Onilo09 » Вт мар 27, 2018 1:58 am

подскажите пожалуйста почему не срабатывает 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);
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вт мар 27, 2018 11:53 am

Модуль не определил, с какого терминала запрос. Что-то не так настроено в Терминалах
Onilo09
Сообщения: 28
Зарегистрирован: Пн окт 02, 2017 11:42 am
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Модуль API.AI

Сообщение Onilo09 » Вт мар 27, 2018 3:56 pm

olehs писал(а):Модуль не определил, с какого терминала запрос. Что-то не так настроено в Терминалах
когда отправляю запрос не через тест, а через расширение хрома, то say($soures) , выдает верное имя терминала, или есть еще какая то переменная выдающая терминал, а в логах расширения приходит команда sayto
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вт мар 27, 2018 4:31 pm

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);
}
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Модуль API.AI

Сообщение olehs » Вт мар 27, 2018 4:32 pm

Жесть! Все описание, которое я делал для Модуля куда-то пропало! Что за хрень???
За это сообщение автора olehs поблагодарил:
Onilo09 (Вт мар 27, 2018 9:11 pm)
Рейтинг: 1.16%
Ответить