You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中用Guzzle实现Slack订单通知POST请求报400错误求助

问题解决方法

你的问题出在Guzzle请求的参数结构上,Slack Incoming Webhook的请求格式和你当前的代码不匹配:

错误原因

终端curl请求是通过--data-urlencode把payload作为表单字段传递,而你用Guzzle的json选项时,错误地把所有参数嵌套在了payload键下,导致Slack无法识别到text等核心字段,所以返回missing_text_or_fallback_or_attachments错误。

修改方案(二选一)

方案1:直接发送JSON请求体(推荐)

不需要嵌套payload键,直接把参数作为JSON主体发送:

public function slack(Request $request){
    try {
        $client = new \GuzzleHttp\Client();
        
        $response = $client->post('https://hooks.slack.com/services/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', [
            'json' => [
                'channel' => '#new-order',
                'username' => 'product-notifier',
                'text' => "New Orders:\nhttps://mission-control.airbringr.com/orders/item/411980",
                'icon_emoji' => ':smiley:'
            ]
        ]);
    } catch (\Exception $e) {
        return response()->json($e->getMessage(), 400);
    }
    return response()->json(["message" => "notified successfully"], 200);
}

注意:这里把\n放在双引号里,PHP才会解析为换行符,单引号里的\n会被当作普通字符串。

方案2:模拟curl的表单编码方式

和curl请求保持一致,用form_params传递payload字段:

public function slack(Request $request){
    try {
        $client = new \GuzzleHttp\Client();
        
        $payload = json_encode([
            'channel' => '#new-order',
            'username' => 'product-notifier',
            'text' => "New Orders:\nhttps://mission-control.airbringr.com/orders/item/411980",
            'icon_emoji' => ':smiley:'
        ]);
        
        $response = $client->post('https://hooks.slack.com/services/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', [
            'form_params' => [
                'payload' => $payload
            ]
        ]);
    } catch (\Exception $e) {
        return response()->json($e->getMessage(), 400);
    }
    return response()->json(["message" => "notified successfully"], 200);
}

另外,你代码里重复实例化了Client对象,上述方案已删除冗余的实例化语句。

内容的提问来源于stack exchange,提问作者Mahir Tazwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:35:34