1

我想使用 Dialogflow 实现连接到外部 Web 服务/API。一种方法是使用自定义 webhook 功能(而不是内联 web 挂钩)。但是,当使用自定义 Web 挂钩时,您似乎仅限于创建一个,即使您可能有很多意图并且您可能想要调用许多端点。有没有办法链接到更多自定义 webhook(API 端点)?

如果您只能设置一个网络挂钩,那么您的网络服务将始终收到来自 Dialogflow 的 Post 请求,然后需要解释请求的主体,即基于意图参数。只是想知道是否有更好的方法通过 Dialogflow 使用 REST Web 服务。

另一个可能的选择是使用内联网络挂钩,然后将逻辑放入其中以调用特定的端点,但是,这可能会有点混乱。

4

1 回答 1

1

您只能设置一个履行来处理您启用的所有意图的处理。这可以是通过履行编辑器内置的,也可以是您指定的 webhook URL。

该 webhook 预计会将实际处理委托给某种 Intent Handler。Dialogflow node.js 实现库有一种方法可以为每个 Intent 名称注册您想要的处理程序,或者您可以打开 Intent 名称、Action 名称或代码中提供给您的任何其他字段。

在库中,您通常会从适当的 Intent 处理程序进行 REST 调用,该处理程序将获取提供的参数并制作调用。如果您使用的是 Javascript,请确保您正在异步处理调用并返回一个 Promise。

我推荐一个 webhook,因为它比内联编辑器给你更多的控制权。内联编辑器实际上只是一个使用 Firebase Cloud Functions 的网络钩子。即使将它自己放在云函数中,您也可以更好地控制它。

可能会产生费用,具体取决于您托管它的位置,但 Firebase 有一个免费层,足以进行测试和简单操作。发布您的操作后,您还有资格获得 Google 的每月云积分。

于 2018-10-31T21:41:55.753 回答