微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Google DialogFlow CX 中,是否可以调用外部 API,然后在 15 分钟后获得回调响应?

如何解决在 Google DialogFlow CX 中,是否可以调用外部 API,然后在 15 分钟后获得回调响应?

我正在使用一个 exteranl API,它会做一些工作 15 分钟,当它完成时,它将调用您在初始请求中定义的任何 URL 以将结果发送到。

dialogFlow 有可能在 15 分钟内接受这个结果吗? DialogFlow 中是否有内置的异步响应处理程序?

解决方法

不,正如您所描述的那样,这是不可能的。调用外部服务的唯一方法是通过 webhooks,但这些被认为是返回一个非常具体的对象的调用,然后 Dialogflow 直接将其作为回答返回给用户,因此它们本质上是同步的。

你可以做的是想一个解决方法。我不知道您正在调用的服务的具体内容,但是您可以设置一个小型服务器来处理来自 dialogflow 的 webhook 响应,除了触发对外部 api 的调用之外,它什么都不做,并且当您获得回答您可以处理它(根据 Dialogflow 规范将相关内容放入“履行”对象中)并通过 dialogflow API 在您的代理中触发事件。

所以最终的过程可能看起来像这样。

  1. 用户要求例如“pizza”:触发正确的意图,该意图的路由调用 webhook 服务器
  2. 您的 webhook 服务器接收来自 dialogflow 的调用,并调用外部 api 来询问曾经创建的所有比萨饼的列表。它向服务器返回一个空的履行
  3. 当 webhook 服务器在 15 分钟后收到响应时,它会在代理中触发 event(查看您选择的编程语言的 dialogflow api:python、node、java)并在请求中注入一些参数,然后您可以使用它在代理中形成一个句子

当我刚开始时,我发现 this 非常有用,可以帮助您了解平台在与外部服务交互方面希望您做什么,请查看图表,尤其是我认为可以做到的图表更清晰

,

如果您通过 webhook 调用外部 API,则最长 webhook timeout limit 为 30 秒。超过响应超时后,Dialogflow 会调用 webhook error 或超时 built-in event 并照常继续处理。因此,Dialogflow 将不再接受超过设置的超时限制的 webhook 响应。

请注意,对话界面旨在设计为最终用户与应用/机器人之间的持续消息交换。如果您的 Web 服务需要更多时间在后台执行操作并且无法优化,请考虑重新设计对话流,使最终用户不会等待应用程序/机器人回复超过设置的 Webhook 超时限制.

如果您有自己的自定义应用程序(使用 APIs or Client Libraries 集成),您可以改为从您的自定义应用程序调用/调用需要 15 分钟工作的函数(我们称之为 function_1)申请。

这是一个基本设置:

  1. 用户从您的自定义应用程序的界面输入查询。

  2. 您的自定义应用程序将带有 Detect Intent request 的用户查询发送到 Dialogflow 代理(使用 API 或客户端库)。

  3. 在您的自定义应用程序收到来自 代理,您可以创建代码来获取意图名称或事件名称 来自 detectIntentResponse.queryResult.match.intent.displayNamematch.event 分别响应 json 然后调用/调用 function_1 基于匹配的意图或事件。

  4. function_1 处理完毕后,您可以直接向 用户在您的自定义应用程序的界面或发送检测意图 向您的代理发出请求,使其与 Intent 匹配并发送 Intent 响应您的自定义应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。