首页 > 解决方案 > 如何管理 Dialogflow / Api.ai 中的 5 秒响应超时限制?

问题描述

我正在使用 Dialogflow 创建一个代理/机器人,它通过诸如“我需要从 HR 那里获得一封地址证明信”之类的操作项来响应不同类型的用户查询。这需要机器人从公司的数据库中获取一些信息,并通过将检索到的信息填充到人力资源提供的模板化信件文件中来生成文档/信件。执行此操作的逻辑已写入 python 文件。数据库集成是使用 Webhooks 完成的。

问题在于,这个解释用户请求、打开数据库和检索所需信息的完整过程需要超过 5 秒,这恰好是 Dialogflow 代理的响应超时限制。我对此进行了一些研究,发现我们无法增加此限制,但我们可以通过异步调用保持会话处于活动状态。我无法找到提供答案的正确资源。

所以,我的问题是——

我们可以在对话流中进行异步调用吗?

如果是,那么我们如何通过 json 向 Dailogflow 代理发送异步数据?

有没有其他方法可以解决这个 5 秒响应超时限制?

提前致谢!

标签: asynchronousdialogflow-essendasynchronousrequestrequest-timed-out

解决方案


我刚刚检查了Actions on Google 文档Fulfillment 文档页面,确实有 5 秒的超时限制。

这可能不是最好的解决方案,也可能不适合您的情况,但考虑到给定的严格 5 秒窗口(我们希望确保动态对话,而不会冒用户等待太久的风险)

您以您的第一个意图异步开始计算,然后返回给用户并告诉他们在几秒钟内请求结果,同时计算完成。它将保存在用户的私人空间中,此时用户将触发第二个意图,该意图将请求同时已预先计算的结果,因此您可以获取并返回它们。


推荐阅读