文章访客
a789001的头像-解压狐
a789001
详情
评论
问答

子比主题 – 使用企业微信让私信即时通管理员

// 企业微信配置
define('WECOM_CORP_ID', '');//企业ID
define('WECOM_SECRET', '');//Secret
define('WECOM_AGENT_ID', 1000003);//AgentId
define('WECOM_NOTIFY_USERIDS', [
    ['name' => 'Userc', 'id' => 1],
    ['name' => 'UserA', 'id' => 2],
    ['name' => 'UserB', 'id' => 3],
]);

// 获取企业微信 access_token
function get_wecom_access_token($corp_id, $secret) {
    $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corp_id}&corpsecret={$secret}";
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        write_wecom_log("wp_remote_get 错误:" . $response->get_error_message());
        return false;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    return $body['access_token'] ?? false;
}

// 发送企业微信卡片消息
function send_wecom_message_to_user($userid, $title, $content, $agentid, $access_token) {
    $url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$access_token}";
    $data = array(
        "touser"  => $userid,
        "msgtype" => "news",
        "agentid" => $agentid,
        "news"    => array(
            "articles" => array(
                array(
                    "title"       => $title,
                    "description" => $content,
                    "url"         => "https://www.mnsin.com/message/news",
                    "picurl"      => "https://www.mnsin.com/wp-content/uploads/2025/06/zy.png",
                ),
            ),
        ),
    );
    $response = wp_remote_post($url, array(
        'headers' => array('Content-Type' => 'application/json'),
        'body'    => json_encode($data, JSON_UNESCAPED_UNICODE),
        'timeout' => 5,
    ));
    if (is_wp_error($response)) {
        write_wecom_log("发送卡片消息失败,wp_remote_post 错误:" . $response->get_error_message());
        return;
    }
    $res = json_decode(wp_remote_retrieve_body($response), true);
    if (!empty($res['errcode']) && $res['errcode'] !== 0) {
        write_wecom_log("企业微信接口返回错误:{$res['errmsg']}");
    }
}



// 代理函数,调用私信接收并触发钩子
add_action('zib_add_message', 'notify_wecom_on_private_message', 10, 1);

function notify_wecom_on_private_message($args) {
    if (empty($args['receive_user'])) return;

    $receiver_id = intval($args['receive_user']);
    $matched_users = array_filter(WECOM_NOTIFY_USERIDS, fn($u) => $u['id'] === $receiver_id);
    if (empty($matched_users)) return;

    $sender_user = get_user_by('id', $args['send_user']);
    $sender_name = $sender_user ? $sender_user->display_name : '未知用户';

    $title   = "

 

最近有用户私信我不能及时查看,我因为使用nas用了内网穿透,让通知ip变化。所有我想站点私信也能即时通值我。

效果图

子比主题 – 使用企业微信让私信即时通管理员

子比主题 – 使用企业微信让私信即时通管理员

食用教程

注册企业微信

立即注册

子比主题 – 使用企业微信让私信即时通管理员

自己填写好,注册好之后就完成了一半了,然后登录,登录后找到我的企业,最底下的企业id复制一下就等下有用!

子比主题 – 使用企业微信让私信即时通管理员

子比主题 – 使用企业微信让私信即时通管理员

创建应用

再找到底部导航栏的应用管理,然后滑动底部,创建应用,(不细说了很简单填写下就行了)

子比主题 – 使用企业微信让私信即时通管理员

子比主题 – 使用企业微信让私信即时通管理员

然后设置可见范围和复制AgentId并且查看Secret 记下来,等下要用

然后继续滑到底部配置下这两个

子比主题 – 使用企业微信让私信即时通管理员

然后我们还得找到对应的人拿到他的企业微信账号ID

还是在首页的顶部通讯录里面找到对应的用户,点击编辑就能看到账号了

子比主题 – 使用企业微信让私信即时通管理员

最近将刚保存的东西放到代码里面即可

子比主题 – 使用企业微信让私信即时通管理员

配置基本完成了,接下来就是代码了

代码部署

// 企业微信配置
define('WECOM_CORP_ID', '');//企业ID
define('WECOM_SECRET', '');//Secret
define('WECOM_AGENT_ID', 1000003);//AgentId
define('WECOM_NOTIFY_USERIDS', [
    ['name' => 'Userc', 'id' => 1],
    ['name' => 'UserA', 'id' => 2],
    ['name' => 'UserB', 'id' => 3],
]);

// 获取企业微信 access_token
function get_wecom_access_token($corp_id, $secret) {
    $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corp_id}&corpsecret={$secret}";
    $response = wp_remote_get($url);
    if (is_wp_error($response)) {
        write_wecom_log("wp_remote_get 错误:" . $response->get_error_message());
        return false;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    return $body['access_token'] ?? false;
}

// 发送企业微信卡片消息
function send_wecom_message_to_user($userid, $title, $content, $agentid, $access_token) {
    $url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$access_token}";
    $data = array(
        "touser"  => $userid,
        "msgtype" => "news",
        "agentid" => $agentid,
        "news"    => array(
            "articles" => array(
                array(
                    "title"       => $title,
                    "description" => $content,
                    "url"         => "https://www.mnsin.com/message/news",
                    "picurl"      => "https://www.mnsin.com/wp-content/uploads/2025/06/zy.png",
                ),
            ),
        ),
    );
    $response = wp_remote_post($url, array(
        'headers' => array('Content-Type' => 'application/json'),
        'body'    => json_encode($data, JSON_UNESCAPED_UNICODE),
        'timeout' => 5,
    ));
    if (is_wp_error($response)) {
        write_wecom_log("发送卡片消息失败,wp_remote_post 错误:" . $response->get_error_message());
        return;
    }
    $res = json_decode(wp_remote_retrieve_body($response), true);
    if (!empty($res['errcode']) && $res['errcode'] !== 0) {
        write_wecom_log("企业微信接口返回错误:{$res['errmsg']}");
    }
}



// 代理函数,调用私信接收并触发钩子
add_action('zib_add_message', 'notify_wecom_on_private_message', 10, 1);

function notify_wecom_on_private_message($args) {
    if (empty($args['receive_user'])) return;

    $receiver_id = intval($args['receive_user']);
    $matched_users = array_filter(WECOM_NOTIFY_USERIDS, fn($u) => $u['id'] === $receiver_id);
    if (empty($matched_users)) return;

    $sender_user = get_user_by('id', $args['send_user']);
    $sender_name = $sender_user ? $sender_user->display_name : '未知用户';

    $title   = "
仅供学习研究使用,请在下载后24小时内删除! Ventura
子比主题 - 使用企业微信让私信即时通管理员-解压狐
子比主题 – 使用企业微信让私信即时通管理员
此内容为付费阅读,请付费后查看
R20
付费阅读
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 共1条

请登录后发表评论