Google助手接管了我执行的操作的命令

问题描述

从几天前开始,我的操作一直引发问题。本应由我的操作处理的查询已路由到Google Assistant主流程。这在Android Phone和Google Home上都会发生。

复制步骤:

  • 发言:好的Google,请与Tinker Doodle对话。
  • 助手:欢迎来到Tinker Doodle,我能为您做什么?
  • 说:可用命令。
  • 助手:(突然结束Tinker Doodle对话,在助手上列出常规命令。)

我希望助手可以继续进行Tinker Doodle对话,并将输入的内容反馈给我的动作。

这使Tinker Doodle几乎无法使用。你能帮忙吗?

由于我使用自己的NLP,因此我将NO_MATCH系统意图配置为调用Webhook。

直到几天前,这在Android Phone和Google Home上都运行良好。在Action Builder的模拟器中运行没有问题。

这是Action Builder中的主要场景和NO_MATCH意图的屏幕截图。

enter image description here

enter image description here

解决方法

您可以采用custom-nlu sample使用的设计,而不是使用no_match:

有一个试图匹配user_utterance意向的“主要”场景:

enter image description here

然后,user_utterance使用any数据类型对所有内容进行匹配:

enter image description here

当您进入模拟器时,任何查询都应明确符合您的意图,然后作为示例的一部分,它将回显您的响应:

enter image description here

,

目前尚不清楚,但这听起来可能与最近的公告有关,在某些情况下,与特定Intent不匹配的短语可能会导致您的操作关闭,因此Assistant可以改为处理该短语。

甚至除此之外,通常也不希望使用NO_MATCH进行处理,因为在强制关闭Action之前,这种操作只会连续执行三次。

相反,您应该创建一个可以处理“任意”输入的Intent,并使用此方法将该输入路由到您的处理程序。这涉及:

  1. 创建一个接受自由格式文本的新类型(通常称为“任何”)

Creating an Any type

  1. 创建一个Intent(我将其命名为“ matchAny”)通过其训练短语(甚至只是一个接受该类型的值的短语)来接受该类型的值

matchAny Intent

  1. 在您的场景中,将其添加为可以匹配的Intent,然后在您的Webhook设置它的处理程序。

相关问答

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