You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dialogflow ES中如何将一个意图的参数值传递到另一个意图?

Dialogflow 跨意图参数传递解决方案

默认情况下Dialogflow的意图参数为单意图作用域,不会自动继承前序意图的参数值,因此跨意图调用时会出现参数读取为undefined的问题,可通过以下三种方案解决:

方法1:输出上下文传递(最推荐)

  • 在Buy-Car意图的输出上下文配置栏新增自定义上下文,命名为buy_car_info,设置有效期≥2轮,保证覆盖到触发TriggerBot的对话轮次
  • Buy-Car收集到的所有参数会自动挂载到该输出上下文的参数列表中
  • 修改TriggerBot的fulfillment代码,从上下文中读取参数:
function TriggerBot(agent) {
    // 上下文名称大小写敏感,需和配置完全一致
    const buyCarContext = agent.context.get('buy_car_info');
    const color = buyCarContext.parameters.color;
    const size = buyCarContext.parameters.size;
    const region = buyCarContext.parameters.region;
}
  • 可选优化:在TriggerBot意图的输入上下文配置栏绑定buy_car_info,只有上下文存在时才会触发该意图,避免参数缺失异常。

方法2:会话级全局参数存储

如果需要跨多个意图长期传递参数,可将参数存入长有效期的全局上下文:

  • 在Buy-Car意图的fulfillment中添加参数存储逻辑:
function BuyCarHandler(agent) {
    agent.setContext({
        name: 'global_session_params',
        lifespan: 99, // 覆盖整个会话周期
        parameters: {
            color: agent.parameters.color,
            size: agent.parameters.size,
            region: agent.parameters.region
        }
    });
}
  • TriggerBot读取方式和方法1一致,读取global_session_params上下文的参数即可。

方法3:Followup Event主动传参

如果是在Buy-Car的fulfillment中主动触发TriggerBot,可通过事件携带参数:

  • 先在TriggerBot意图的事件配置栏新增事件trigger_bot_event
  • 在Buy-Car的fulfillment中触发事件并传参:
function BuyCarHandler(agent) {
    agent.setFollowupEvent({
        name: 'trigger_bot_event',
        parameters: {
            color: agent.parameters.color,
            size: agent.parameters.size,
            region: agent.parameters.region
        }
    });
}
  • 在TriggerBot意图中定义和传入参数同名的参数项,即可直接通过agent.parameters读取参数值。

排查注意事项

  • 上下文名称大小写完全匹配,配置和代码中的名称不能有拼写错误
  • 上下文有效期不能设置过短,触发TriggerBot时上下文需未过期
  • 事件传参时,参数名需要和TriggerBot中定义的参数名完全一致

内容的提问来源于stack exchange,提问作者Bill Software Engineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:42:04