Twilio SMS statusCallback无法触发自定义Webhook的问题求助
问题排查:Twilio StatusCallback 自有服务器无响应
你当前使用Twilio发送SMS时,配置statusCallback为自有服务器地址后无任何反应,但使用webhook.site地址正常,可按以下步骤排查:
1. 核对回调地址的拼写与可达性
- 先检查地址拼写:你的代码中回调文件名是
twillioStatusCallback.php,但Twilio的正确拼写是Twilio(少了一个字母w),这可能导致服务器返回404,Twilio无法触发回调。 - 在本地终端用
curl测试地址是否能正常响应:
确认返回curl -I https://XXXXXX.COM/XXX/webhooks/twillioStatusCallback.php200 OK,如果返回404/500等错误,先修复服务器端的路径或文件问题。
2. 验证SSL证书有效性
Twilio要求回调地址必须是HTTPS且使用受信任CA颁发的有效证书,自签名证书会被拒绝。直接用浏览器访问你的回调地址,查看证书是否显示"安全"状态,若证书过期或不受信任,需重新配置有效证书。
3. 检查服务器防火墙与安全组
- 确认服务器的防火墙、云服务商安全组已开放80/443端口,允许外部请求进入。
- 确保Twilio的IP段被允许访问你的服务器,可在Twilio官方文档中获取其IP范围,将这些IP加入白名单。
4. 调试回调请求记录
修改你的PHP回调文件,增加详细日志并确保返回200响应,以便确认Twilio是否发起了请求:
<?php // 记录完整请求信息 $logFile = 'twilio_callback_log.txt'; $logContent = date('Y-m-d H:i:s') . "\n"; $logContent .= "请求方法: " . $_SERVER['REQUEST_METHOD'] . "\n"; $logContent .= "请求体: " . file_get_contents('php://input') . "\n"; $logContent .= "请求头: " . print_r(getallheaders(), true) . "\n"; $logContent .= "-------------------------\n"; // 确保文件有写入权限 file_put_contents($logFile, $logContent, FILE_APPEND); // 必须返回200状态码给Twilio http_response_code(200); ?>
同时执行chmod 755 twilio_callback_log.txt赋予文件写入权限,避免因权限问题无法生成日志。
5. 查看Twilio控制台的错误日志
登录Twilio控制台,找到对应的SMS消息,查看其状态日志,里面会明确显示回调请求的失败原因(如超时、证书错误、404等),这是最直接的问题定位方式。
内容的提问来源于stack exchange,提问作者rsirota
相关产品推荐
相关产品推荐

