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

如何在WordPress的PHP代码中构造含attachments的JSON发送至Slack Webhook

问题:如何在PHP中构造包含attachments数组的Slack Webhook JSON结构?

我明白你熟悉JavaScript里的对象与数组写法,刚用PHP构造要转成JSON的结构时确实容易搞混——毕竟PHP的数组同时承担了JS里数组和对象的角色。你现在需要把原来直接放在text里的内容移到attachments数组的对象中,同时保留顶部的提示文本,咱们一步步来改:

核心思路

在PHP里:

  • 关联数组(键为字符串的数组)会被json_encode转成JSON的对象
  • 数字索引的数组会被转成JSON的数组

所以你的目标JSON里的attachments是一个数组,里面包含一个对象,对应到PHP里就是:一个数组,里面嵌套一个关联数组。

修改后的完整代码

// 构造要转成JSON的PHP数组结构
$data = json_encode(array( 
    "username"=> "Email Notifier", 
    "mrkdwn"=> true, 
    "icon_emoji"=> ":email:", 
    "text" => "You have received a new message!",
    "attachments" => array(
        array(
            "text" => "*Name:* {$posted_data["your-name"]}\n*Email:* {$posted_data["your-email"]}\n*Subject:* {$posted_data["your-subject"]}\n*Message:*\n >{$posted_data["your-message"]}",
            "fallback" => "Required plain-text summary of the attachment.",
            "color" => "#36a64f"
        )
    )
)); 

// Curl发送部分保持不变
$ch = curl_init("https://hooks.slack.com/services/Txxxxxx/Bxxxxxx/xxxxxxxxxxxxxxx");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$result = curl_exec($ch); 
curl_close($ch); 
return $result;

关键部分说明

  • 新增的"attachments"键对应的值是一个数组(外层array()),这个数组里放了一个关联数组(内层array()),对应你目标JSON里的attachments数组中的单个对象
  • 原来的用户提交内容,现在从顶层text移到了attachments数组里的那个对象的text字段中
  • 顶层的text改成了你想要的提示语:"You have received a new message!"

这样json_encode之后,就会生成你想要的目标JSON结构啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:47:46