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

如何通过PHP发送消息时动态更换Slack机器人图标?

可行,实现方法如下

Slack的Incoming Webhook支持通过icon_url字段自定义每条消息的机器人图标,完全可以根据任务内容切换不同图标。

修改后的代码示例

我们可以给函数新增图标参数,或者根据任务标识(比如标题、消息内容)自动匹配对应图标:

public static function send_to_slack($message, $title = null, $iconUrl = null){

    $body = array();
    $body['text'] = '';
    // 预设默认图标,避免空值异常
    $defaultIcon = "https://img.icons8.com/emoji/96/000000/penguin--v2.png";
    $body['icon_url'] = $iconUrl ?? $defaultIcon;

    if(!empty($title)) {
        $body['text'] .= "*$title*\n";
        // 根据任务标题自动切换图标(示例逻辑)
        switch($title) {
            case "任务完成:用户注册":
                $body['icon_url'] = "https://your-domain.com/register-icon.png";
                break;
            case "任务完成:订单提交":
                $body['icon_url'] = "https://your-domain.com/order-icon.png";
                break;
            // 可扩展更多任务类型的图标匹配
        }
    }
    $body['text'] .= $message;

    $json = json_encode($body);
    
    // 替换为你的Slack Webhook地址
    $slack = "SLACKURL";
    $response = wp_remote_post( $slack, array(
        'method' => 'POST',
        'body' => $json,
        'headers' => array('Content-Type' => 'application/json')
        // 新增请求头,确保Slack正确解析JSON
    ) );

    // 修正返回逻辑,真实反馈发送状态
    if ( is_wp_error( $response ) ) {
        return false;
    } else {
        $responseCode = wp_remote_retrieve_response_code($response);
        return $responseCode >= 200 && $responseCode < 300;
    }
}

关键修改说明

  • 新增$iconUrl参数,允许调用时直接指定图标URL,适配灵活场景
  • 添加标题匹配图标的逻辑,适合固定任务类型的场景
  • 修复原代码中$slack变量缺少分号的语法错误
  • 新增Content-Type请求头,符合Slack Webhook的解析要求
  • 修正返回逻辑,真实返回消息发送的成功/失败状态,便于后续处理

调用示例:

// 指定图标发送注册完成消息
self::send_to_slack("用户XXX完成注册流程", "任务完成:用户注册", "https://your-domain.com/register-icon.png");

// 使用默认图标发送普通通知
self::send_to_slack("系统备份已完成", "运维通知");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:35:21