Dialogflow ES测验对话中如何配置意图实现用户中途退出
配置不生效的核心原因
你配的终止测验意图一直触发不了,本质是两个配置逻辑冲突:
- 整个测验流程是靠上下文链式串起来的,每个答题节点只会优先匹配绑定了当前测验上下文的意图,如果你新加的退出意图只配了全局生效,在测验上下文的优先级压制下根本不会被检索到
- 你给答错意图配了
sys.any万能匹配实体,这个实体会兜底吞下同上下文下所有没被更高优先级意图匹配的用户输入,默认优先级比普通训练短语的意图高,用户输的end quiz直接被当成答错内容处理,根本轮不到匹配退出逻辑
可落地的配置步骤
- 新建独立的「终止测验」意图
- 训练短语覆盖所有需要支持的退出指令:
end quiz、退出测验、结束答题、不答了这类常用表述,至少加10条左右不同的说法提高匹配准确率 - 把10道题各自对应的输出上下文,全部添加到这个意图的输入上下文列表里,不要只配置全局上下文
- 调整该意图的匹配优先级,拉到同上下文下所有意图的最高位,必须比答对、答错两个意图的优先级高
- 意图响应设置为退出提示,比如「已结束本次测验,需要重新参与可以随时发送I want a quiz」,同时清空所有测验流程相关的输出上下文,直接切回默认对话上下文
- 训练短语覆盖所有需要支持的退出指令:
- 修正现有答错意图的兜底逻辑
- 给答错意图的
sys.any实体匹配加触发限制:只有当用户输入未命中更高优先级的终止测验、答对意图时,才触发答错兜底 - 关闭答错意图的「优先兜底匹配」开关,确保它的优先级是同测验上下文下最低的,不会抢占高优先级意图的匹配资格
- 给答错意图的
- 全流程校验
- 逐题测试:从第1题到第10题的每个答题节点,都输入
end quiz验证是否能直接退出,不会被判定为答错 - 回归原有答题逻辑:确认正常答对、答错后的跳转、反馈和之前完全一致,不会被新增的退出意图干扰
- 逐题测试:从第1题到第10题的每个答题节点,都输入
如果用的对话机器人平台支持上下文级别的事件触发,也可以直接给整个测验链路的所有上下文绑定统一的退出事件,匹配到end quiz类关键词就直接清空上下文回到默认对话状态,稳定性比单独配置意图更高。
内容的提问来源于stack exchange,提问作者Ryuzakii
相关产品推荐
相关产品推荐

