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

时间:2017-10-14 08:50:48

标签: dialogflow actions-on-google

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

I want an apple

这里苹果被分配到一个参数fruit

我想将fruit的值限制为' apple',' orange'和' banana'仅

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

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

1 个答案:

答案 0 :(得分:4)

您需要两件事:

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

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

    enter image description here

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

    enter image description here

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

    enter image description here

    后备意图

    当用户说出其中一个有效的水果时处理这种情况。但无效水果呢?你如何处理这取决于你正在谈论的其他事情。

    最简单的解决方案是创建后备意图,如果没有别的匹配,这是最后的意图。如果您正在使用上下文,则可以为特定上下文创建后备意图,这是跟踪您在对话中的位置的好方法。

    在任何一种情况下,您都可以修改自己的回复,告诉他们可以选择哪些有效成果。

    enter image description here

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

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

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

    enter image description here