Dialogflow:如何将Action参数限制为允许的值之一

Sou*_*asu 3 actions-on-google dialogflow-es

假设我AskForFruit在Dialogflow中创建一个意图,用户说:

I want an apple

在这里,苹果被分配给一个参数 fruit

我只想将值限制fruit为“苹果”,“橙色”和“香蕉”

如果用户说“桃子”,代理将回答“请在苹果,橙子和香蕉之间选择”

如何fruit仅将这三种水果的价值限制在其中?

Pri*_*ner 5

您需要两件事:

  1. fruit 应该分配给自定义实体类型
  2. 如果没有匹配项,则需要一个后备意图(或优先级较低的意图)来处理输入。

自定义实体

您将通过选择Entity右侧的菜单项然后创建实体来创建自定义实体。

在此处输入图片说明

您将输入该实体可以采用的可能值。如果需要,还可以为某些实体添加别名。

在此处输入图片说明

在创建Intent时,您要确保输入的短语突出显示了一个单词,并且已为该单词正确选择了Entity Type。(而且,正如@Ido在注释中指出的那样,您可能要说出该参数是必需的。)

在此处输入图片说明

后备意图

当用户说出有效水果之一时,这种情况就可以解决。但是无效的水果呢?您如何处理此问题取决于您正在谈论的其他内容。

最简单的解决方案是创建一个“ 后备意图”,如果没有其他匹配项,则这是万不得已的意图。如果您使用的是上下文,则可以为特定上下文创建后备意图,这是跟踪会话位置的好方法。

无论哪种情况,您都可以编辑回复以告诉他们可以采摘哪些有效水果。

在此处输入图片说明

但是,如果您想非常明确地响应他们是否要求您提供不需要的东西,则可以创建一个优先级较低的意图,如果没有更好的匹配项,则将进行匹配。如果您有很多对话部分并且不使用上下文(但是您应该使用上下文),或者想要保留“后备意图”以获取更通用的消息,则这很有用。

通过单击意图名称旁边的点来更改意图的优先级。

因此,例如,如果您的AskForSomethingElse意图与更通用的@ sys.any类型相匹配,则可以使它以有效的类型作为响应。

在此处输入图片说明