如何为Dialogflow意图配置disjunction union上下文的或逻辑触发规则
Dialogflow 上下文或关系绑定意图实现方案
Dialogflow 原生默认的输入上下文匹配规则为「与」逻辑,即只有指定的所有输入上下文同时处于活跃状态时才会触发意图,没有直接提供「或」关系的上下文绑定开关,可通过以下三种方案实现需求,无需重复复制相同意图:
方案1:公共中转上下文适配(全版本通用)
- 调整原有上下文的激活逻辑,在激活上下文
A或者上下文B时,同步激活一个公共中转上下文,例如命名为context_test_trigger,将其生命周期设置为和A/B的生命周期一致 - 将
Test<A | B>意图的输入上下文仅设置为context_test_trigger - 只要
A或B任意一个活跃,公共中转上下文就会同步激活,触发目标意图,该方案改动量最小,适配所有Dialogflow版本
方案2:多上下文组配置(适配Dialogflow ES版本)
- Dialogflow ES支持为单个意图添加多组独立的输入上下文组合,不同组之间天然为「或」的匹配关系
- 直接在
Test<A | B>意图的输入上下文配置栏,点击「添加上下文组」,第一组上下文只填A,第二组上下文只填B - 无需修改原有上下文的激活逻辑,只要任意一组上下文全部处于活跃状态即可触发意图
方案3:条件规则配置(适配Dialogflow CX版本)
- 若使用Dialogflow CX,可直接通过意图调用条件实现或逻辑,无需额外配置中转上下文或多组上下文
- 清空
Test<A | B>意图的输入上下文配置,在意图的调用条件输入框中写入规则:sys.context.active("A") || sys.context.active("B") - 保存配置后只要
A或B任意一个处于活跃状态,即可满足调用条件触发意图
注意:如果你的场景中
A、B上下文可能同时活跃,三种方案均不会影响触发逻辑,依然可以正常匹配目标意图。
内容的提问来源于stack exchange,提问作者jery void
相关产品推荐
相关产品推荐

