Telnyx主Webhook无法接收SMS消息负载 问题排查求助
Telnyx主Webhook接收不到推送排查步骤
按优先级从高到低排查:
- 第一优先级核对Laravel路由与中间件配置
routes/api.php下定义的路由默认带/api前缀,你在Telnyx后台填的Webhook地址必须是https://你的域名/api/receive_incoming_sms,漏写/api前缀是最高发的配置错误- 检查CSRF拦截:去
app/Http/Middleware/VerifyCsrfToken.php,在$except白名单数组中加入该路径,避免请求被419拦截;手动发请求如果是在本地浏览器环境带了cookie、或者用工具跳过了CSRF校验,会出现手动访问正常、第三方推送被拦的情况 - 确认该路由没有绑定
auth、请求频率超限拦截等会拦截无鉴权公网请求的中间件
- 第二优先级核对公网连通性与响应规则
- 你的接口必须直接返回2xx区间的HTTP状态码,不能有301/302跳转:比如HTTP强制跳HTTPS、域名配置了非www跳www、路径末尾斜杠规则不匹配触发框架跳转,Telnyx不会跟随重定向,会直接判定推送失败
- 检查公网访问限制:WAF、IP白名单、Basic Auth、CDN拦截规则不要拦截Telnyx的出口IP,自签SSL证书、证书链不完整、证书过期的HTTPS地址也会被Telnyx拒绝连接
- 接口响应耗时必须控制在3秒以内,Telnyx推送超时阈值极低,超过阈值会直接判定失败转推故障转移地址
- 不要限制请求Content-Type,Telnyx推送默认使用
application/json格式,接口要能正常解析JSON请求体
- 第三优先级核对Telnyx侧日志
- 直接进入Telnyx控制台对应消息配置文件的Webhook日志页,日志会明确标注每次向主Webhook推送的失败原因:连接超时、状态码异常、SSL握手失败、域名解析失败等,不需要盲目排查
- 核对主Webhook地址拼写,确认协议(HTTP/HTTPS)、路径、域名没有写错
你当前贴出的控制器返回200的代码本身没有逻辑问题,路由定义语法也符合Laravel规则,90%以上的这类问题都是路由前缀漏写、CSRF拦截、HTTPS跳转三类原因导致。
// 控制器代码本身无逻辑问题 public function receive_incoming_sms(Request $request){ return response()->json('Successfully Received',200); }
// 注意该路由在api.php中,实际路径带/api前缀 Route::post('/receive_incoming_sms', 'App\Http\Controllers\BucketController@receive_incoming_sms')->name('receive_incoming_sms');
内容的提问来源于stack exchange,提问作者Arsalan Khan
相关产品推荐
相关产品推荐

