Facebook聊天机器人Webhook调试:curl -H命令执行失败报错求助
解决Facebook Messenger Webhook的curl命令与JSON解析错误
看起来你遇到了两个关联的问题:curl命令的语法错误导致请求格式异常,进而引发后端body-parser的JSON解析失败。咱们一步步拆解解决:
1. 先修复curl命令的语法问题
错误日志里的Could not resolve host: page、unmatched close brace/bracket是典型的Windows命令提示符下curl参数格式错误——Windows CMD不支持用单引号包裹JSON字符串,而且内部的双引号需要转义。
修正后的curl命令示例(适配Windows CMD)
curl -H "Content-Type: application/json" -X POST -d "{\"object\":\"page\",\"entry\":[{\"id\":\"你的PAGE_ID\",\"time\":1620000000,\"messaging\":[{\"sender\":{\"id\":\"测试用户ID\"},\"recipient\":{\"id\":\"你的PAGE_ID\"},\"message\":{\"text\":\"Hello Webhook\"}}]}]}" https://你的Webhook地址/webhook
关键修正点:
- 把包裹JSON的单引号
'换成双引号" - JSON内部的所有双引号前面加反斜杠
\转义(比如"object"变成\"object\") - 确保整个JSON结构完整,没有缺失的括号或逗号
如果你用的是Git Bash或WSL(Linux子系统),可以直接用单引号包裹JSON,不需要转义内部双引号,命令会更简洁:
curl -H "Content-Type: application/json" -X POST -d '{"object":"page","entry":[{"id":"你的PAGE_ID","time":1620000000,"messaging":[{"sender":{"id":"测试用户ID"},"recipient":{"id":"你的PAGE_ID"},"message":{"text":"Hello Webhook"}}]}]}' https://你的Webhook地址/webhook
2. 解决body-parser的JSON解析错误
SyntaxError: Unexpected token ' in JSON at position 0这个错误,本质是后端收到的请求体不是有效的JSON格式——这正是因为之前curl命令发送的内容被CMD拆分后,变成了混乱的字符串,导致body-parser无法解析。
额外验证步骤:
- 先把要发送的JSON内容单独拿出来,用JSON校验工具检查格式是否合法(确保没有语法错误)
- 确认你的Node.js代码里正确配置了body-parser:
const bodyParser = require('body-parser'); app.use(bodyParser.json()); // 必须配置这一行,确保解析JSON格式的请求体
总结
先把curl命令的格式修正对,确保发送的是完整有效的JSON请求体,后端的body-parser就能正常解析了。如果还是有问题,可以先打印后端收到的req.body或者原始请求体,看看实际收到的内容是什么,再针对性调整。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

