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

Dialogflow CX中Webhook设置product-type参数失败问题排查

问题诊断与修复方案

你的问题核心是Webhook返回的product-type参数仅在上下文里存在,但未同步到会话全局参数,或者流程未正确读取上下文参数。以下是具体修复步骤:

1. 同步更新全局会话参数

当前Webhook仅在outputContexts里设置参数,但Dialogflow的会话参数(sessionInfo.parameters)不会自动从上下文同步。修改代码,在响应里添加sessionInfo字段,直接更新全局参数:

exports.mapBrandToProductType = (req,res) => {
  const brand = req.body.sessionInfo.parameters.brand;
  const fullUrl = req.body.sessionInfo.session + "/contexts/product-type-context";

  let productType;

  if (brand === "Volvo" || brand === "Bentley") {
    productType = "car";
  } else if (brand === "Sony" || brand === "Panasonic") {
    productType = "television"
  }

  const response = {
    fulfillment_response: {
      messages: [
        {
          text: {
            text: ["product is a " + productType],
          }
        }
      ],
      outputContexts: [
        {
          name: fullUrl,
          lifespan_count: 60,
          parameters: {
            "product-type": productType
          }
        }
      ]
    },
    // 添加这部分,直接更新全局会话参数
    sessionInfo: {
      parameters: {
        "product-type": productType
      }
    }
  };

  res.status(200).send(response)
}

2. 验证流程参数引用

检查「问题信息」页面的流程跳转逻辑,确认它引用的是全局参数product-type,而不是某个未正确关联的上下文参数。如果流程里是读取上下文参数,需确保上下文名称和Webhook里的product-type-context完全一致(大小写敏感)。

3. 确认上下文名称格式

Dialogflow的上下文名称格式要求为:projects/{PROJECT_ID}/agent/sessions/{SESSION_ID}/contexts/{CONTEXT_NAME}。你通过req.body.sessionInfo.session + "/contexts/product-type-context"拼接的方式是正确的,但可以在测试时查看Webhook请求的session字段值,确认拼接后的名称完全符合格式。

4. 测试验证

重新部署Webhook后,在Dialogflow测试控制台发送「我的Volvo出问题了」,查看会话参数面板,确认product-type已被正确设置为car,再测试流程跳转是否正常。

内容的提问来源于stack exchange,提问作者Thbwun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:40:15