使用多个 DialogFlow 的 Webhook 查询 API 云外的 API 端点

Using multiple DialogFlow's Webhooks to query API endpoints outside Google Cloud

我需要一个 Dialogflow 代理来多次查询 Google 云之外的 REST 网络服务(端点)。

文档、教程,一切都指向启用 fullfillment 和将触发网络请求的意图,启用 "webhook call for this intent"。

好吧,在 fulfillment 面板上,启用 Webhook,并粘贴自定义端点 URL,并从上下文传递参数,auth 参数(到端点,),headers...

然而,在调用意图时,我发现没有网络 activity 与 webhook 相关。因此,不会调用自定义 webhook。这是我的问题的第一点:当一个意图成功匹配时,如何触发或实现它,调用所需的 webhook。

我对后端、端点没有任何问题,没关系,通过 Postman、curl 等任何服务都能很好地工作。

我真正的问题是为什么我的自定义 webhook 没有被触发,说没有网络 activity,没有获取,没有 ajax,没有 nada。没有网络钩子请求。我需要至少看到对自定义端点的网络请求,无论响应类型或有效负载如何,这不是我的问题。只是如何发送自定义 webhooks 请求并发送许多,为不同的意图触发。据我所知,只有一个 custo webhook/endpoint 可用。

是否应该通过事件调用?

听起来你有几个问题。让我们尝试分解它们。

为什么我的 webhook 没有被调用?

您没有显示 Intent 或配置的屏幕截图,但未调用 webhook 的最常见原因是,尽管您已经设置了实现 URL,但您还没有专门为 Intent 启用它。

确保在 Intent 底部的 "Fulfillment" 部分中,您已启用 "Enable webhook call for this intent"。

这对一个 Intent 来说很好。如何为每个 Intent 设置不同的 webhook?

你没有。

每个 Dialogflow 代理只能调用一个 webhook。发送到该 webhook 的信息包括触发它的 Intent 名称,并且 webhook 应根据此名称采取适当的操作。 Webhook 调用的确切函数有时称为 Intent Handler。

如果我需要怎么办?

然后您需要编写一个层来处理来自 Dialogflow 的履行调度、验证请求、从发送的 JSON 中提取 Intent 名称和其他参数、调用另一个适当的 REST 端点,取回结果,并可能将结果格式化回 Dialogflow。

活动对此有帮助吗?

我不知道怎么办。

由事件触发的意图与由用户短语触发的意图的工作方式相同。代理中的所有事件仍然调用相同的 webhook 传递相同的信息。

事件确实最有效地准确表示 - 用户 操作 而不是用户的口头或键入输入。