1

场景:

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

问题:

直到最近,我的谷歌操作都运行良好。但是我遇到了一个问题,谷歌助手应用程序有时会强行退出操作并退出对话。例如,用户可能输入“yoga”,Google 助理将离开对话并在 Google 上搜索瑜伽。当我在操作控制台的“测试”页面中测试这个短语时,我看不到请求或响应正文,只有“调用错误”。随着消息“您无法在模拟器中使用标准的 Google 助理功能。如果您想尝试它们,请在您的手机或其他兼容设备上使用 Google 助理。 ”当我在“立即尝试”中进行测试时" Dialogflow ES 本身中的框,我可以看到正确的回退意图、webhook 请求和响应。但我看不到 Dialogflow ES 的“历史记录”选项卡中的 Google Assistant 应用程序中所说的短语;看起来它从来没有做到了这一点。这表明问题出在 Google 助理或操作本身,而不是 Dialogflow。

调用错误

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

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

问题:

为什么现在发生了这种情况?

是否有一些我缺少的设置导致这种情况发生?

还是动作设计不正确?

非常感谢您的任何帮助。

4

1 回答 1

2

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

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

  • 您正在通过 Dialogflow 中的 Fallback Intent 或 Action Builder 中的 No Match Intent 处理它,并且
  • 该短语是助手可以自行处理的短语

Dialogflow 下的解决方法是使用带有与@sys.any 系统实体类型匹配的参数的单个短语的 Intent,并使用此 Intent(和参数)进行处理,而不是 Fallback Intent。

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

于 2021-03-24T16:32:26.840 回答