如何向Slack Webhook发送POST请求?Laravel代码返回400状态码怎么解决
问题原因
请求返回400状态码的核心原因是请求格式不符合Slack入站Webhook的规范,具体遗漏点如下:
- 你使用的
content、embeds是Discord Webhook的参数字段,Slack对应的纯文本字段为text,富文本嵌入结构为attachments,字段不匹配会直接被Slack拒绝 - Slack的
attachments结构中color参数要求为整型数值,你传入的字符串格式会触发参数校验失败 - Laravel Http客户端默认发送表单格式请求,Slack要求请求体为JSON格式,需要显式指定JSON请求标识
修正后代码
Route::get('/testime',function (){ $response = Http::asJson()->post(env('SLACK_WEBHOOK'),[ 'text' => "Testing testing", 'attachments' => [ [ 'title' => "Test ", 'description' => "URRA", 'color' => 7506394, ] ], ]); // 排查阶段可以放开下方注释查看Slack返回的具体错误信息 // return $response->body(); return $response->status(); });
其他排查点
如果修改后仍返回400,可以输出$response->body()查看具体错误提示,常见问题还包括:
- .env文件中SLACK_WEBHOOK地址配置错误
- 对应Slack应用的入站Webhook未激活,或者权限配置有误
内容的提问来源于stack exchange,提问作者Thymeleaf
相关产品推荐
相关产品推荐

