Dialogflow意图是否支持可选输入上下文?无需创建重复意图
解决Dialogflow意图复用:用上下文+槽位默认值实现可选参数填充
嘿,完全不用创建两个几乎一样的意图!Dialogflow本身就支持你想要的这种“有上下文就用,没有就问”的逻辑,只需要一个主意图就能搞定,我给你一步步拆解怎么配置:
核心思路
利用输入上下文的可选性 + 参数默认值从上下文提取的组合,让同一个意图自动适配两种场景:
- 当存储房间信息的上下文存在时,直接读取上下文里的
room值,跳过槽位询问 - 当上下文不存在时,触发槽位填充流程,引导用户指定房间
具体配置步骤
创建主意图
新建一个意图(比如命名为TurnOnLights),把你的训练短语都加进去:turn on lights in the loungeturn on lights in the kitchenturn on the lights(不带房间的触发短语)
定义必填槽位
在意图的“参数”部分,添加一个必填参数room,绑定对应的实体(可以是自定义实体,包含lounge、kitchen等房间值),并标记为必填。设置参数默认值(关键步骤)
给room参数设置默认值,直接引用上下文里的变量。比如你用来存储房间的上下文叫room_context,那默认值就填:#room_context.room。这个默认值的作用是:如果上下文
room_context存在且包含room变量,Dialogflow会自动把这个值填充到room参数里,不需要用户再输入。配置输入上下文(可选)
在意图的“上下文”标签页,添加room_context作为输入上下文。注意:Dialogflow的输入上下文是非强制的——就算这个上下文不存在,只要用户的查询匹配训练短语,意图依然会被触发,只是会进入槽位填充流程。设置槽位填充提示
在“参数”的“填充提示”里,添加引导用户的话术,比如:请问你要打开哪个房间的灯?。当上下文里没有room值时,Dialogflow就会用这句话询问用户。
场景验证
- 有上下文的情况:如果之前的交互已经把
room: lounge存在room_context里,用户说turn on the lights,意图触发后会直接读取上下文的lounge,执行打开客厅灯的操作,不会额外询问。 - 无上下文的情况:用户第一次说
turn on the lights,上下文不存在,意图触发后会弹出填充提示,等用户回答kitchen后,填充槽位并执行操作。
这样一来,一个意图就完美覆盖了两种场景,完全不用重复创建意图啦!
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

