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

Dialogflow: How to restrict an Action parameter to one of the allowed values

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

I want an apple

此处 apple 被分配给一个参数 fruit

我只想将 fruit 的值限制为 'apple'、'orange' 和 'banana'

如果用户说 'peach' 代理将响应 'Please select between apple, orange and banana'

如何将 fruit 的值限制为仅这 3 个水果?

您需要做两件事:

  1. fruit 应分配给自定义实体类型
  2. 如果不匹配,您将需要一个后备 Intent(或较低优先级的 Intent)来处理输入。

自定义实体

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

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

在创建 Intent 时,您需要确保输入的短语突出显示了一个词,并为该词正确选择了实体类型。 (而且,正如@Ido 在评论中指出的那样,您可能想说该参数是必需的。)

后备意图

这处理了用户说出有效水果之一的情况。但是无效的水果呢?你如何处理这取决于你谈论的其他事情。

最简单的解决方案是创建一个 Fallback Intent,如果没有其他匹配,这是最后的手段。如果您正在使用上下文,则可以为特定上下文创建回退意图,这是跟踪您在对话中所处位置的好方法。

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

但是,如果您希望在他们要求您不想要的东西时非常具体地做出回应,您可以创建一个优先级较低的意图,如果没有更好的匹配,该意图将匹配。如果您有很多对话部分并且不使用上下文(但您应该使用上下文)或者想要保留您的后备意图以获取更一般的消息,这将很有用。

您可以通过单击意向名称旁边的点来更改意向的优先级。

因此,例如,如果您有一个 AskForSomethingElse 意图匹配更通用的 @sys.any 类型,您可以让它以有效类型响应。