在企业微信生态中,向外部群(有外部客户的群)推送消息,主要有两种主流路径:群机器人(Webhook)和自建应用(客户群群发)。
1. 方案选择:Webhook 还是 API?
| 特性 | 群机器人 (Webhook) | 自建应用 (群发助手) |
|---|---|---|
| 群聊要求 | 必须由内部人员手动添加机器人到群 | 无需手动加人,通过 API 指派给群主 |
| 主动性 | 实时推送,无需人工确认 | 需群主/成员手动确认(企业微信的防骚扰限制) |
| 消息类型 | 文本、图片、文件、Markdown | 文本、图片、视频、图文、小程序 |
| 适用场景 | 监控告警、数据周报、内部小群服务 | 营销活动、全量客户通知、标准服务流程 |
2. 路径一:群机器人实现(最快实现)
如果你的群聊是由员工创建并维护的固定群,使用 Webhook 是最简单的。
开发步骤:
-
获取 URL :在群设置中点击"群机器人" -> "添加",获取
webhook_url。 -
发送请求 :使用
POST方法发送 JSON 数据。
代码示例 (Python):
python
import requests
import json
def send_group_msg(url, content):
headers = {"Content-Type": "application/json"}
data = {
"msgtype": "markdown",
"markdown": {
"content": f"### 业务提醒\n >状态:<font color=\"info\">已处理</font>\n >详情:{content}"
}
}
response = requests.post(url, data=json.dumps(data), headers=headers)
return response.json()
3. 路径二:API 自动触达(企业级开发)
如果你需要从后台统一管理成千上万个客户群,则需要使用企业微信的"客户群群发"接口。
核心逻辑:
由于企业微信为了防止营销骚扰,不允许程序直接"静默"发消息给客户。流程必须是:
后台调用接口 -> 群主在企微收到通知 -> 群主点击确认 -> 消息发出。
开发步骤:
-
获取调用凭证 :获取
access_token。 -
定位群聊 :通过
list接口获取客户群的chat_id。 -
创建群发任务 :调用
add_appchat_msg_template。
关键参数说明:
-
chat_id_list: 包含需要接收消息的群 ID 列表。
-
sender: 指定由哪位成员发送。
请求示例:
java
POST https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_appchat_msg_template?access_token=ACCESS_TOKEN
{
"chat_id_list": ["wrOgQhDgAAMYXXXX", "wrOgQhDgAAWYYYY"],
"text": {
"content": "各位群友,今日直播课即将开始,请点击链接进入。"
},
"attachments": [
{
"msgtype": "miniprogram",
"miniprogram": {
"title": "直播间",
"appid": "wx12345",
"page": "/pages/live"
}
}
]
}
4. 避坑指南(经验之谈)
-
频率限制:同一个客户群,每天接收到的企业群发消息是有上限的(通常每天1条,每月4条,具体以官方最新规则为准)。
-
成员确认状态查询 :调用发送接口后,记得通过
get_groupmsg_send_result接口跟踪哪些群主没有点确认,以便线下提醒。 -
IP 白名单 :所有 API 调用必须确保服务器 IP 在企业微信管理后台的可信 IP 列表中,否则会报错
60020。 -
Markdown 限制:外部群机器人的 Markdown 并不支持所有 HTML 标签,仅支持企微规定的几种颜色和加粗。
总结
-
如果你追求实时性 和自动化 (如告警、内部通知),且群数量较少,选 Webhook。
-
如果你追求合规性 和大规模覆盖 (如营销推广、服务通知),选 API 客户群发。
二次开发时,建议先在"企业微信接口调试工具"中跑通 JSON 结构,再写代码封装,这样能节省 50% 的调试时间。
QiWe开放平台提供了后台直登功能,登录成功后获取相关参数,快速Apifox在线测试,所有登录功能都是基于QiWe平台API自定义开发。