Dialogflow Webhook调用失败求助:求正确的JSON回复格式
解决Dialogflow Webhook响应解析错误的问题
这个问题我之前碰到过,根源很明确——你用的是Dialogflow V1版本的Webhook响应格式,但当前你的Agent应该是V2或V3版本,两者的JSON结构差异很大,所以才会触发"Cannot find field: messages"的解析错误。
错误原因拆解
你发送的响应里用到的messages、speech、type都是V1时代的旧字段,而Dialogflow V2/V3的Webhook响应要求使用fulfillmentText(简单文本回复)或者fulfillmentMessages(复杂多类型消息)作为顶级字段,旧字段在新API里已经不被识别了。
正确的响应格式
根据你的需求,这里提供两种常用的正确格式:
1. 简单文本回复(最常用)
如果只需要返回一段文本,直接用fulfillmentText即可,结构非常简洁:
{ "fulfillmentText": "Text response" }
2. 多消息/复杂类型回复
如果需要返回多条文本、卡片、按钮等复杂消息,就用fulfillmentMessages数组,文本类型的示例如下:
{ "fulfillmentMessages": [ { "text": { "text": ["第一条文本回复", "第二条文本回复"] } } ] }
如果要添加其他类型的消息(比如卡片、快速回复),只需要在fulfillmentMessages数组里添加对应结构的对象即可,比如卡片消息需要嵌套card字段,而非V1的type标识。
验证小技巧
修改响应格式后,你可以在Dialogflow的测试控制台里触发意图,查看Webhook的请求和响应日志,确认是否还存在解析错误。如果格式正确,你应该能正常收到机器人的回复。
内容的提问来源于stack exchange,提问作者Sunil
相关产品推荐
相关产品推荐

