Использование нескольких веб-подключений DialogFlow для запроса конечных точек API за пределами Google Cloud - PullRequest
1 голос
/ 30 апреля 2020

Мне нужен агент Dialogflow для многократного запроса веб-службы REST (endopoint) за пределами Google Cloud.

Документация, учебные пособия, все указывает на то, чтобы включить полное выполнение, и намерение, которое вызовет сетевой запрос, включить "вызов webhook для этого намерения".

Итак, на панели выполнения включите Webhook, вставьте URL-адрес настраиваемой конечной точки и передайте параметры из контекста, параметры аутентификации (в конечную точку), заголовки ...

Однако при вызове намерения я не заметил сетевой активности, связанной с веб-крючком. Таким образом, пользовательский webhook не вызывается. Что является первым пунктом моего вопроса: как вызвать или сделать так, чтобы при успешном совпадении намерения вызывался нужный webhook.

У меня нет проблем с бэкендом, конечной точкой, все в порядке, хорошо работает через Почтальон, завиток, ... из любого сервиса.

Моя настоящая проблема в том, почему мой пользовательский веб-крючок не запускается, скажем, нет сетевой активности, нет загрузки, нет ajax, нет нада. Нет запроса веб-крюка. Мне нужно увидеть хотя бы сетевой запрос к пользовательской конечной точке, независимо от типа ответа или полезной нагрузки, это не вопрос моего вопроса. Просто как отправлять пользовательские запросы веб-хуков и отправлять много, запущенных для разных целей. Насколько я вижу, доступен только один стандартный webhook / endpoint.

Должен ли он вызываться через события?

1 Ответ

0 голосов
/ 30 апреля 2020

Похоже, у вас есть несколько вопросов. Давайте попробуем разбить их.

Почему мой webhook не вызывается?

Вы не показываете скриншоты своего намерения или вашей конфигурации, но Наиболее распространенная причина, по которой webhook не вызывается, заключается в том, что, хотя вы установили URL-адрес выполнения, вы специально не включили его для Intent.

Убедитесь, что в разделе «Выполнение» в нижней части вашего намерения вы включили «Включить вызов веб-крюка для этого намерения».

Callout to fulfillment webhook

Это хорошо для одного Намерения. Как установить разные веб-крюки для каждого намерения?

Вы не делаете.

Каждый агент Dialogflow может вызвать только один веб-крючок. Информация, отправляемая на этот веб-крючок, включает имя намерения, которое его запускает, и ожидается, что веб-крюк предпримет соответствующие действия на основе этого имени. Точную функцию, которую вызывает webhook, иногда называют Intent Handler.

Что, если мне нужно?

Тогда вам нужно написать слой, который обрабатывает диспетчеризацию выполнения из Dialogflow, проверяет запрос, извлекает имя намерения и другие параметры из отправленного JSON, при необходимости выполняет вызов к другим конечным точкам REST, возвращает результат и, возможно, форматирует результаты обратно в Dialogflow.

Могут ли события помочь с этим?

Я не понимаю, как.

Содержимое, которое вызывается событием, работает одинаково как те, которые запускаются по фразам пользователей. Все события в агенте по-прежнему вызывают один и тот же webhook, передавая одну и ту же информацию.

События действительно наиболее эффективны для точного представления именно этого - пользовательское действие , а не голосовой или печатный ввод из пользователь.

...