Google 显示调用错误而不是触发回退意图的操作

Google Action showing Invocation Error instead of triggering Fallback intent

场景:

我有一个用于进行语音调查的 google 操作。它由 dialogflow ES 控制,有两个主要目的。欢迎意图和后备意图。欢迎意图用于检测用户想要打开的调查的名称,并将其存储在名为“surveyname”的参数中。 “Surveyname”然后被传递到我们的 webhook,在那里打开调查,欢迎用户,并提出初始问题。所有其他后续交互都由回退意图获取,它调用我们的 webhook,它控制调查的流程并为 google 操作提供后续问题。随后的互动可以包括任何短语,因为我可以进行调查,询问任何主题的任何问题。

问题:

直到最近,我的 google 操作都运行良好。但是我遇到了 Google 助手 App 有时会强行退出操作并退出对话的问题。例如,用户可以输入“瑜伽”,Google 助理会离开对话并google 搜索瑜伽。当我在操作控制台的“Test”页面中测试这个短语时,我看不到任何请求或响应主体,只有“Invocation Error”。连同消息“您不能在模拟器中使用标准 Google 助手功能。如果您想尝试它们,请在您的 phone 或其他兼容设备上使用 Google 助手.” 当我在 Dialogflow ES 本身的“立即尝试”框中进行测试时,我可以看到正确的回退意图、webhook 请求和响应。但是我在 Dialogflow ES 的“History”选项卡中看不到 Google Assistant 应用程序中所说的短语;看起来它从来没有做到那么远。这向我表明问题出在 Google 助手或操作本身,而不是 Dialogflow。

Invocation Error

当前(不太理想)解决方法:

我知道后备意图的优先级低于常规意图。我相信在回退意图和 Google 的隐式调用之间存在内部争斗。我目前的临时解决方案是创建一个名为 ActiveSurvey 的新意图,并希望通过这个自定义意图捕获一些被回退意图遗漏的输入短语。这似乎有点工作,但我永远不希望以这种方式捕获所有输入,因为用户可以从字面上说出任何东西。考虑到它曾经有效,在我看来这不应该是必要的。

题目:

为什么现在会这样?

是否有我遗漏的某些设置导致了这种情况的发生?

还是动作设计不正确?

非常感谢任何帮助。

从 2020 年 10 月开始,并在 2021 年 1 月进一步扩展,Google 开始实施一项名为 no-match yielding 的功能,尽管该功能直到 2021 年 2 月才在文档中列出。

在不匹配的情况下,如果这两个条件都为真,Google 将关闭操作并自行处理:

  • 您正在通过 Dialogflow 中的回退 Intent 或通过 Action Builder 中的无匹配 Intent 来处理它
  • 该短语是 Google 助理可以自行处理的短语

在 Dialogflow 下解决此问题的方法是让 Intent 包含一个短语,其参数与 @sys.any System Entity type 相匹配,并将此 Intent(和参数)用于您的处理后备意图。

仅在无法常规处理用户输入的情况下才应使用后备意图(即 - 你想说你不明白,或者这是一个错误)。