Dialogflow ES流程插入意图及跨流程参数传递问题咨询
Dialogflow ES 预约系统流程调整与参数传递方案
一、流程中间插入新意图(无需重新搭建流程)
在Dialogflow ES中,不需要推翻现有流程重搭,通过**上下文(Contexts)或事件(Events)**就能在流程中间插入新意图:
- 上下文衔接法:
- 定位原流程中要插入新意图的节点,找到该节点的触发意图,为其设置输出上下文(比如
booking_mid_step) - 给新意图设置输入上下文为刚才的
booking_mid_step,确保用户完成前序步骤后,新意图会被优先匹配 - 新意图处理完成后,设置对应的输出上下文(比如
booking_mid_done),同时将原流程下一个意图的输入上下文改为booking_mid_done,保证流程无缝衔接回原路径
- 定位原流程中要插入新意图的节点,找到该节点的触发意图,为其设置输出上下文(比如
- 事件触发法:
在原流程对应节点的 fulfillment 代码中,调用agent.setFollowupEvent('trigger_new_intent'),给新意图绑定该事件。新意图处理完成后,同样通过设置上下文或触发事件,衔接回原流程。
二、跨流程/独立意图的参数传递
不管是「其他流程→独立意图」还是「独立意图→其他流程」,都可以通过会话参数或上下文实现参数传递:
- 其他流程传递参数到独立意图:
- 在原流程的意图处理逻辑中,通过
agent.setSessionParameter('param_name', param_value)将参数存入会话参数;或者在输出上下文中携带参数 - 独立意图设置匹配的输入上下文后,直接通过
agent.sessionParameters.param_name读取传递的参数
- 在原流程的意图处理逻辑中,通过
- 独立意图传递参数到其他流程的意图:
- 独立意图处理完成后,将参数存入会话参数,或设置包含参数的输出上下文
- 目标流程的意图设置对应的输入上下文,即可读取参数;也可以调用
agent.setFollowupEvent('trigger_target_intent', {param_name: param_value}),直接触发目标流程的意图并携带参数
三、关于Dialogflow CX的替代方案
如果觉得Dialogflow CX的UI过于复杂,Dialogflow ES的上下文、事件、会话参数机制完全能支撑预约系统的流程调整与参数传递需求,无需切换到CX。
内容的提问来源于stack exchange,提问作者平井翔大
相关产品推荐
相关产品推荐

