【发布时间】:2018-08-22 20:53:31
【问题描述】:
我正在为自己编写一个机器人,它可以根据要求找到种子并将其下载到我的家庭媒体中心。
我的 webhook 收到错误:请求仅存在 ~ 5 秒。
解析器工作 1-10 秒 + hackberry 上的家庭服务器非常慢。
这样,我的请求在 50% 处死掉了。
如何查询并在超过 5 秒后收到答复?
【问题讨论】:
标签: dialogflow-es actions-on-google google-home
我正在为自己编写一个机器人,它可以根据要求找到种子并将其下载到我的家庭媒体中心。
我的 webhook 收到错误:请求仅存在 ~ 5 秒。
解析器工作 1-10 秒 + hackberry 上的家庭服务器非常慢。
这样,我的请求在 50% 处死掉了。
如何查询并在超过 5 秒后收到答复?
【问题讨论】:
标签: dialogflow-es actions-on-google google-home
操作预计会在 5 秒内做出响应。这不一定是准确的答案,但您需要有一些东西让用户知道您的操作仍在处理中。
这可以像给出中间状态一样简单,例如“好的,我要开始了。你还想要什么吗?”,或者播放一个简短的 MediaResponse 作为“等待音乐”。然后,您可以将状态存储在一个短期且快速访问的数据库中,该数据库易于轮询并在用户询问时作为状态更新提供。
【讨论】:
这可以通过 followUpEvents 轻松完成。您可以通过 web hook 的 followUpEvent 调用任何意图。因此,要解决您的问题,您必须在 Web 应用程序中维护“正在搜索”、“找到”、“正在下载”和“已下载”等状态,这完全取决于您。
现在,一旦调用了初始意图,您将在服务器上启动该过程,然后等待 3-3.5 秒并发送一个 followUpEvent 来调用其他意图,该意图将再等待 3-3.5 秒并继续轮询您的服务器每秒更新状态。您可以继续调用下一个后续意图,直到您从服务器获得所需的状态。
因此,如果您的请求在单个意图上以 50% 的速度死亡,那么它应该可以与两个后续意图一起正常工作。
【讨论】: