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

问题描述

场景:

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

问题:

直到最近,我的谷歌操作都运行良好。但是我遇到了一个问题,Google 助理应用程序有时会强行退出操作并退出对话。例如,用户可以输入“yoga”,Google Assistant 会离开对话并在 google 上搜索yoga。当我在操作控制台的“Test页面中测试这个短语时,我看不到请求或响应正文,只有“调用错误”。随着消息“您无法在模拟器中使用标准的 Google 助理功能。如果您想尝试这些功能,请在您的手机或其他兼容设备上使用 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 将关闭 Action 并自行处理:

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

在 Dialogflow 下解决此问题的方法是使用单个短语的 Intent,其参数与 @sys.any System Entity type 匹配,并使用此 Intent(和参数)进行处理,而不是使用回退意图。

Fallback Intents 应该只在用户输入不能被常规处理的情况下使用(即 - 你想说你不理解,或者这是一个错误)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...