假设我在Dialogflow中创建了一个intent AskForFruit
,用户说:
I want an apple
这里苹果被分配到一个参数fruit
我想将fruit
的值限制为' apple',' orange'和' banana'仅
如果用户说'桃子'代理商将回复“请在苹果,橙子和香蕉之间选择”
如何仅将fruit
的值限制在这3个水果中?
答案 0 :(得分:4)
您需要两件事:
fruit
应分配到自定义实体类型自定义实体
您可以通过选择右侧的Entity
菜单项,然后选择创建实体来创建自定义实体。
您将输入此实体可以承担的可能值。如果需要,您还可以为某些实体添加别名。
当您创建意图时,您需要确保输入的短语突出显示一个单词,并为该单词正确选择了实体类型。 (并且,正如@Ido在评论中指出的那样,您可能想要说参数是必需的。)
后备意图
当用户说出其中一个有效的水果时处理这种情况。但无效水果呢?你如何处理这取决于你正在谈论的其他事情。
最简单的解决方案是创建后备意图,如果没有别的匹配,这是最后的意图。如果您正在使用上下文,则可以为特定上下文创建后备意图,这是跟踪您在对话中的位置的好方法。
在任何一种情况下,您都可以修改自己的回复,告诉他们可以选择哪些有效成果。
但是,如果您想要非常具体地回复,如果他们要求您不想要的东西,那么您可以创建一个较低优先级的意图,如果没有更好的匹配则匹配。如果您有很多会话部分并且没有使用上下文(但您应该使用上下文)或者想要保留您的后备意图以获得更一般的消息,这将非常有用。
通过单击意图名称旁边的点来更改意图的优先级。
因此,例如,如果您的AskForSomethingElse
意图与更通用的@sys.any类型相匹配,则可以使用有效类型进行响应。