企业微信API高效群发实战指南

QiWe开放平台提供了后台直登功能,登录成功后获取相关参数,快速Apifox在线测试,所有登录功能都是基于QiWe平台API自定义开发。


核心前提

  1. 获取 ChatID :你不能直接通过群名发送。必须先通过"获取客户群列表"接口获取外部群的 chatid

  2. 应用权限:你的自建应用必须在"客户联系"的业务范围内。

  3. AccessToken :所有请求都需要有效的 access_token


1. Python 实现 (使用 requests)

适用于快速脚本或轻量级后台。

python 复制代码
import requests
import json

def send_to_external_group(access_token, chat_id, text_content):
    url = f"https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token={access_token}"
    
    payload = {
        "chatid": chat_id,
        "msgtype": "text",
        "text": {
            "content": text_content
        },
        "safe": 0
    }
    
    try:
        response = requests.post(url, data=json.dumps(payload))
        result = response.json()
        if result.get("errcode") == 0:
            print("消息发送成功")
        else:
            print(f"发送失败: {result}")
    except Exception as e:
        print(f"请求异常: {e}")

# 调用示例
# send_to_external_group("YOUR_TOKEN", "wrOgQhDgAA...", "Hello WeCom!")

2. Go 实现 (原生 http)

适用于高性能微服务场景。

Go 复制代码
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

type WeChatMessage struct {
    ChatID  string `json:"chatid"`
    MsgType string `json:"msgtype"`
    Text    struct {
        Content string `json:"content"`
    } `json:"text"`
}

func SendGroupMsg(token string, chatId string, content string) error {
    apiURL := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=%s", token)
    
    msg := WeChatMessage{
        ChatID:  chatId,
        MsgType: "text",
    }
    msg.Text.Content = content

    body, _ := json.Marshal(msg)
    resp, err := http.Post(apiURL, "application/json", bytes.NewBuffer(body))
    
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    
    // 解析返回结果可根据业务需求进一步处理
    return nil
}

3. Java 实现 (使用 RestTemplate)

适用于 Spring Boot 项目。

Go 复制代码
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;

public class WeComService {

    private final RestTemplate restTemplate = new RestTemplate();

    public void sendMessage(String token, String chatId, String content) {
        String url = "https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=" + token;

        // 构建请求体
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("chatid", chatId);
        requestBody.put("msgtype", "text");
        
        Map<String, String> textNode = new HashMap<>();
        textNode.put("content", content);
        requestBody.put("text", textNode);

        try {
            Map<String, Object> response = restTemplate.postForObject(url, requestBody, Map.class);
            if (response != null && "0".equals(response.get("errcode").toString())) {
                System.out.println("发送成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

避坑与进阶指南

  • 群 ID 的坑 :外部群的 chatid 与内部群格式不同。如果是通过"客户联系"接口获取的,通常以 wr 开头。

  • 发送频率限制 :企业微信对主动向外部群推送消息有严格频率限制。如果短时间内发送过多,接口会返回 45009(接口调用超过限制)。

  • 群机器人(Webhook) vs 应用消息

    • 如果你只是想往某个固定的外部群发通知,群机器人最简单,无需编写复杂的 Token 维护逻辑。

    • 如果你需要程序化、动态地给不同的外部群发消息,必须走上述 应用 API 流程。

您是否需要我为您演示如何通过代码自动获取外部群的 chatid 列表?

相关推荐
北漂燕郊杨哥3 天前
企业微信机器人 ↔ 扣子智能体 桥接服务程序WeCom-Coze Bridge
golang·机器人·企业微信·扣子·扣子智能体
正在走向自律3 天前
企业微信与DeepSeek大模型深度融合技术实践——智能消息、小程序及多媒体交互全方案
企业微信·小程序开发·deepseek大模型·多模态交互·智能消息·办公智能化
梦想的旅途24 天前
JavaScript 实现企业微信消息自动发送的技术实践
运维·javascript·自动化·企业微信
wechatbot8884 天前
企业微信 AI 自动化运营:RPA 与 API 方案效果实测
人工智能·微信·自动化·企业微信·rpa
金融Tech趋势派5 天前
金融行业如何用企业微信大圆提升客户服务效率?
人工智能·企业微信
王者鳜錸5 天前
企业解决方案二十一-企微消息接收后提炼关键信息并转发方案实现
企业微信·消息接收·消息提炼转发·消息分析·自动化作业
chenyulin45456 天前
企业微信API二次开发:万级并发回调下的极致幂等性设计与防重放架构实战
大数据·人工智能·安全·架构·企业微信
梦想的旅途26 天前
利用 API 实现企业微信消息自动化推送
运维·自动化·企业微信
小懿互联集成平台6 天前
企业微信与金蝶云星空业财审批一体化对接实施方案
数据分析·企业微信·金蝶云星空·小懿互联·数据集成对接·采购申请审批·费用报销审批
2501_941982056 天前
企业微信二下开发:自动发送图片让社群活动海报精准送达?
企业微信