【问题标题】:Dialogflow - How Would I Go About Getting The Context From Fulfilment For First Call?Dialogflow - 我将如何从 Fulfillment 中获取上下文以进行首次通话?
【发布时间】:2018-09-22 20:40:40
【问题描述】:

所以我很难解决一个我发现很难克服的问题。我的代理直接与我的服务器对话,后者又通过作为中间人控制某些设备。当我说“与 {Agent Name} 交谈”时,这很好,因为来自服务器的实现 Welcome 返回一个响应和一堆(基于)设备状态的上下文,我可以在下一次调用中跟进。问题是当我说“告诉 {Agent Name} 做一些动作”时,它会诉诸回退,因为它没有任何关于此类设备状态的上下文。

在尝试意图之前,我需要一种方法来从实现中找出状态,因为我尝试执行的意图可能具有输入上下文,并且将被跳过,因为在初始调用中没有分配上下文(考虑到我正在尝试“tell {agent name} ....”。我更喜欢将 tell / ask 命令用于简单命令,因为调用欢迎需要时间,您必须等待响应然后执行命令,但它是对简单化的命令感到痛苦。我还需要意图的这些上下文,因为许多其他意图具有类似的短语,如果它们的状态不相关,则不应调用它们。

【问题讨论】:

    标签: dialogflow-es actions-on-google google-assistant-sdk


    【解决方案1】:

    一个棘手的先有鸡还是先有蛋的问题,不是吗!

    我认为我们拥有的最佳解决方案是在没有可用上下文的情况下创建用作这些欢迎 Intent 的 Intent(您也将它们标记为 Welcome Intent)。您还将它们设置为低于实际执行工作的优先级。

    然后,在这些 Intent 的处理程序中,您首先获取所需的信息并设置与它们相关的 Context,然后执行工作并返回响应。 “做这项工作”既可以调用相同的后端函数并返回结果,也可以使用Detect Intent API,可能看起来像这样:

    1. request 构建到包含您拥有的会话、您设置的上下文以及来自用户的原始文本的 API
    2. 发送给DetectIntentRequest。这将通过正常的 Dialogflow 处理,应检测要使用的 Intent,并使用此 Intent 调用适当的 webhook。然后,您将像往常一样使用履行来处理此问题并返回结果。
    3. 使用来自response 的值(包括output_contextswebhook_payload 字段)从被调用的原始Webhook 构建响应。

    后一种方法有一些注意事项 - 最值得注意的是,原始/欢迎 webhook 完成任务的时间仍然有限 - 通常约为 5 秒。因此,您的第二个 webhook 必须在少于此时间的时间内完成,以便为原始 webhook 留出足够的时间来完成其工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多