Страница 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". И оно даже название интента не распознаёт.
Вот что отвечает:
SPOILERSPOILER_SHOW
{
"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
Жесть! Все описание, которое я делал для Модуля куда-то пропало! Что за хрень???