Выполнение DialogFlow при подключении к REST API

Я хочу использовать Dialogflow для подключения к внешнему веб-сервису / API. Один из способов сделать это - использовать пользовательскую функцию webhook (не встроенную веб-ловушку). Однако при использовании настраиваемого веб-хука кажется, что вы ограничены созданием только одного, хотя у вас может быть много намерений, и вы можете захотеть вызвать много конечных точек. Есть ли способ ссылки на дополнительные пользовательские веб-хуки (конечные точки API)?

Если вы можете настроить только один веб-хук, то ваш webserivce всегда будет получать запрос Post от Dialogflow и затем должен будет интерпретировать тело запроса, т.е. на основе параметра намерения. Просто интересно, есть ли лучший способ работы с веб-сервисами REST с помощью Dialogflow.

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

1 ответ

Решение

Вы можете настроить только одно выполнение, которое будет обрабатывать все включенные вами материалы. Это может быть либо встроенный в редакторе выполнения, либо указанный вами URL-адрес.

Предполагается, что этот webhook делегирует фактическую обработку какому-либо Intent Handler. В библиотеке выполнения Dialogflow node.js есть способ зарегистрировать, какой обработчик вы хотите для каждого имени Intent, или вы можете включить имя Intent, имя Action или любое другое поле, предоставленное вам в вашем коде.

В библиотеке вы обычно выполняете вызовы REST из соответствующего обработчика Intent, который примет предоставленные параметры и обработает вызов. Если вы используете Javascript, убедитесь, что вы обрабатываете вызов асинхронно и верните Обещание.

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

В зависимости от того, где вы ее размещаете, могут быть расходы, однако у Firebase есть бесплатный уровень, достаточный для тестирования и легкой работы. После публикации вашего действия вы также получаете право на ежемесячный облачный кредит от Google.

Другие вопросы по тегам