【问题标题】:Working time of webhook in dialogflow or alternative对话流或替代方案中 webhook 的工作时间
【发布时间】:2018-08-22 20:53:31
【问题描述】:

我正在为自己编写一个机器人,它可以根据要求找到种子并将其下载到我的家庭媒体中心。

我的 webhook 收到错误:请求仅存在 ~ 5 秒。

解析器工作 1-10 秒 + hackberry 上的家庭服务器非常慢。

这样,我的请求在 50% 处死掉了。

如何查询并在超过 5 秒后收到答复?

【问题讨论】:

    标签: dialogflow-es actions-on-google google-home


    【解决方案1】:

    操作预计会在 5 秒内做出响应。这不一定是准确的答案,但您需要有一些东西让用户知道您的操作仍在处理中。

    这可以像给出中间状态一样简单,例如“好的,我要开始了。你还想要什么吗?”,或者播放一个简短的 MediaResponse 作为“等待音乐”。然后,您可以将状态存储在一个短期且快速访问的数据库中,该数据库易于轮询并在用户询问时作为状态更新提供。

    【讨论】:

    • 好吧,假设,用户请求“搜索电影 %filname%”。服务器开始解析并向用户发送带有文本“正在加载...”的响应。如果对话框流不等待第二个响应,我如何在加载完成后向用户发送响应?
    • the docs 中,它声明一旦媒体响应结束,您将收到另一个意图。
    【解决方案2】:

    这可以通过 followUpEvents 轻松完成。您可以通过 web hook 的 followUpEvent 调用任何意图。因此,要解决您的问题,您必须在 Web 应用程序中维护“正在搜索”、“找到”、“正在下载”和“已下载”等状态,这完全取决于您。

    现在,一旦调用了初始意图,您将在服务器上启动该过程,然后等待 3-3.5 秒并发送一个 followUpEvent 来调用其他意图,该意图将再等待 3-3.5 秒并继续轮询您的服务器每秒更新状态。您可以继续调用下一个后续意图,直到您从服务器获得所需的状态。

    因此,如果您的请求在单个意图上以 50% 的速度死亡,那么它应该可以与两个后续意图一起正常工作。

    【讨论】:

      猜你喜欢
      • 2022-10-18
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多