Twilio WhatsApp沙箱无消息响应问题排查求助
故障原因分析
- 405 Method Not Allowed错误:你的Glitch项目
server.js中未配置/webhook路径的POST请求处理逻辑,导致Twilio发送的POST请求被服务器拒绝。 - URI为null(错误码11200):这是405错误引发的连锁问题——服务器未返回Twilio预期的TwiML响应,Twilio无法识别有效回调结果,因此抛出该错误。
解决方法
步骤1:修正server.js代码
确保同时支持GET和POST请求到/webhook,并正确返回Twilio所需的TwiML格式响应:
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // 解析Twilio发送的表单数据 app.use(bodyParser.urlencoded({ extended: false })); // 处理Twilio消息回调(POST请求) app.post('/webhook', (req, res) => { const incomingMessage = req.body.Body; // 构造回复的TwiML const twimlResponse = ` <Response> <Message>Hola, recibimos tu mensaje: ${incomingMessage}</Message> </Response> `; res.set('Content-Type', 'text/xml'); res.send(twimlResponse); console.log(`收到消息:${incomingMessage}`); // 日志输出用于调试 }); // 处理状态回调(GET请求) app.get('/webhook', (req, res) => { res.status(200).send('Webhook服务正常'); }); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`服务器运行在端口 ${port}`); });
步骤2:确认package.json依赖
确保项目包含express和body-parser依赖,package.json内容示例:
{ "name": "[my-project]-glitch-app", "version": "1.0.0", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.18.2", "body-parser": "^1.20.2" } }
步骤3:部署测试
- 重启Glitch项目,确认日志显示服务器正常启动
- 用Postman向
https://[my-project].glitch.me/webhook发送POST请求,设置Body为x-www-form-urlencoded格式,添加Body参数并填入测试内容,验证返回200状态码和正确的TwiML - 用已验证的号码向Twilio沙箱号码发送消息,确认收到预期回复,且Glitch日志有消息记录
额外注意事项
- 确保Twilio沙箱配置中,「收到消息时的Webhook」请求方法为POST,「状态回调URL」请求方法为GET,与代码逻辑对应
- 检查Glitch项目隐私设置,确保项目为公开可访问状态(默认公开,若设为私有需调整权限)
内容的提问来源于stack exchange,提问作者m b
相关产品推荐
相关产品推荐

