QiWe开放平台 · 个人名片
API驱动企微 外部群 自动化,让开发更高效
官方站点:www.qiweapi.com
对接通道:进入官方站点联系客服
团队定位:企微生态深度服务,专注 API+RPA 融合技术方案
在企业微信的私域运营中,及时响应进群动作非常重要。通过监听回调接口中的成员变更事件,我们可以实现比官方更灵活的欢迎逻辑。
1. 核心接口与字段解析
根据文档,我们需要关注两个环节:回调触发和消息发送。
回调事件字段(MemberChange 场景):
w_id: 当前登录的机器人账号 ID。room_id: 发生变动的外部群 ID。content: 消息内容(在成员入群事件中,这里通常包含入群者的信息)。type: 消息类型。
发送消息接口字段(SendTextMsg):
w_id: 机器人账号 ID。room_id: 接收消息的群 ID。content: 消息文本内容。at_list: 数组格式,用于 @ 指定成员。
2. Python 代码实现
我们将逻辑分为"识别入群"和"执行回复"两步。
Python
import requests
import json
# 配置接口基础信息
API_BASE_URL = "http://127.0.0.1:8888" # 替换为你实际的服务地址
AUTH_TOKEN = "your_token"
def send_welcome_message(w_id, room_id, nickname):
"""
执行发送欢迎语的操作
"""
url = f"{API_BASE_URL}/api/SendTextMsg"
# 构造文档要求的 Payload
payload = {
"w_id": w_id,
"room_id": room_id,
"content": f"欢迎新同学 @{nickname} 加入本群!\n进群请先查看群公告。",
"at_list": [] # 如果有成员的wxid,可以填入实现强提醒
}
headers = {
"Authorization": f"Bearer {AUTH_TOKEN}",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.json()
# 模拟接收回调数据 (Callback Data)
def on_receive_callback(callback_data):
# 严格匹配文档字段
w_id = callback_data.get("w_id")
room_id = callback_data.get("room_id")
msg_type = callback_data.get("type")
content = callback_data.get("content")
# 逻辑:判断是否为群成员增加事件 (假设文档中该事件 type 为 10002)
# 注意:实际 type 值请对照文档"消息类型定义"章节
if msg_type == 10002:
print(f"检测到外部群 {room_id} 有新成员加入")
# 从 content 中解析出新成员昵称 (根据文档实际返回格式处理)
# 假设 content 内容为 "张三 顺着二维码加入了群聊"
new_member_name = content.split(" ")[0]
# 调用发送接口
result = send_welcome_message(w_id, room_id, new_member_name)
print(f"欢迎语发送结果: {result}")
# 模拟一条入群回调数据
mock_data = {
"w_id": "robot_01",
"room_id": "2398472398@chatroom",
"type": 10002,
"content": "王小二 加入了群聊"
}
on_receive_callback(mock_data)

3. 技术要点拆解
w_id的重要性 :在多账号矩阵(同时登录多个企业微信)时,必须指定w_id,否则服务器不知道由哪个账号去发这条消息。room_id的唯一性 :外部群的room_id是持久化的,你可以将其存在数据库中,针对不同的群(如:技术交流群 vs 客户服务群)设置不同的欢迎语模板。- 字符串解析 :由于 RPA 接口返回的入群通知通常是系统文本,Python 开发者需要根据
content里的固定格式(如"加入了群聊")用正则表达式或split函数提取出新人的昵称。
4. 常见问题:为什么发送失败?
如果你完全按照 doc.qiweapi.com 传参但失败了,请检查以下几点:
- JSON 格式 :确保
at_list即使为空也要传空数组[]。 - 账号状态 :检查该
w_id对应的账号是否仍在群里。 - 转义字符 :
content里的换行请使用\n。
总结
通过严格对应文档字段,Python 脚本可以精准控制每一个机器人账号的行为。这种"监听+自动回复"的组合,是构建私域 SOP 的基础。