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
相关产品推荐
相关产品推荐

