Как получить динамический ответ на основе результата действия, выполненного в Api.ai?

Я пробую несколько примеров в консоли Api.ai. Я вижу, что есть примеры, когда агент отвечает, используя значения, извлеченные из пользовательского запроса или из контекста. Но есть ли способ отобразить ответ, сформированный с использованием вывода выполненного действия?

Например -

Пользователь: Подтвержден ли мой заказ на пиццу?

Действие: проверить статус заказа

Ответ: Да, это подтверждено (или «Нет, это не так»)


person user3344591    schedule 27.04.2016    source источник


Ответы (3)


Для этого вам нужно будет использовать какой-то пользовательский веб-хук, либо интегрирующийся со сторонним API, либо ваш собственный серверный вызов базы данных - в этом случае веб-хук будет принимать идентификатор пользователя и запрашивать, готова ли их пицца или нет, и затем это будет передано обратно в API.ai.

Вот пример использования стороннего веб-перехватчика для выполнения того, о чем вы просите: https://github.com/api-ai/apiai-weather-webhook-sample

person Matt R O'Connor    schedule 16.04.2017
comment
этот использует python, какие-либо образцы node.js, на которые можно ссылаться? - person PirateApp; 30.04.2017

Да, вы можете сделать это с помощью веб-хуков.

Как правило, вы сохраняете статус заказа в своей базе данных, тогда у вас может быть намерение, которое будет:

  1. Поймите запрос вашего пользователя (подтвержден ли мой заказ на пиццу)
  2. Намерение вызовет ваш веб-хук
  3. веб-перехватчик вернет порядок статусов.
  4. Затем Api.ai даст ответ.

Когда вы используете веб-перехватчики, вам нужно вернуть ответ speech, displayText, необязательно data, которые нужны вашим приложениям, contextOut и source.

Я думаю, вам также нужно было бы реализовать некоторый контекст в api.ai, чтобы вы могли теперь знать, кто спрашивает о статусе заказа. После этого вы сможете использовать sessionId

person Samuel    schedule 18.07.2016

Тут Мэтт прав. Вы должны использовать вебхук. К сожалению, документация от API.AI в настоящее время очень плохая. Вот пример скриншота входящего почтового запроса. Моя функция сообщения вернет объект с желаемым ответом. В этом случае я использую чат-бот Telegram. Если вы не используете какой-либо мессенджер, вы можете сбросить ключ данных: значение. FollowupEvent также является необязательным.

Код Node.JS с Restify

В своем намерении API.AI обязательно отметьте Webhook. Если здесь вы получите текстовый ответ «Сломано», значит, что-то пошло не так, и вам следует проверить свои коды ошибок.

намерение API.AI

И, наконец, на вкладке «Выполнение» обязательно включите веб-перехватчик и направьте его на нужную конечную точку.

person Geo    schedule 16.05.2017
comment
Пожалуйста, не размещайте код в виде изображений (ваш первый снимок экрана). Просто сделайте отступ в коде на 4 пробела, чтобы получить отформатированный вывод. - person chtz; 16.05.2017