QiWe开放平台 · 个人名片
API驱动企微 外部群 自动化,让开发更高效
官方站点:www.qiweapi.com
对接通道:进入官方站点联系客服
团队定位:企微生态深度服务,专注 API+RPA 融合技术方案
在企业微信官方 API 中,邀请外部联系人入群有诸多限制(如必须是好友、需要用户手动确认等)。基于 RPA 协议的接口则可以通过模拟操作,实现更高效的主动邀请。
1. 接口准备
根据文档,我们需要关注以下两个核心动作:
- 获取群列表/详情:确定目标外部群的
room_id。 - 发送外部群邀请:调用拉人接口。
2. 基础请求类实现
首先,我们利用 requests 库(或异步的 aiohttp)封装一个基础类,处理文档中要求的 Content-Type: application/json 和鉴权。
import requests
import json
class QiWeApiConnector:
def __init__(self, server_url, api_key):
self.server_url = server_url
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def _post(self, method, data):
url = f"{self.server_url}/api/{method}"
try:
response = requests.post(url, headers=self.headers, data=json.dumps(data))
return response.json()
except Exception as e:
return {"status": "error", "message": str(e)}
3. 功能开发:主动拉人入外部群
在 doc.qiweapi.com 的文档中,拉人接口通常定义为 AddSceneGroupMember。以下是 Python 实现逻辑:
def invite_to_external_group(self, room_id, wxids):
"""
主动拉人进入外部群
:param room_id: 外部群ID
:param wxids: 待加入成员的微信号/wxid列表 (List)
"""
payload = {
"room_id": room_id,
"wxids": wxids,
"reason": "欢迎加入技术交流群" # 部分版本支持设置邀请理由
}
return self._post("AddSceneGroupMember", payload)
# 实例化调用
api = QiWeApiConnector("http://127.0.0.1:8888", "your_admin_token")
# 示例:将两名新客户拉入指定的外部交流群
result = api.invite_to_external_group(
room_id="210xxxxxxxx@chatroom",
wxids=["wxid_user123", "wxid_user456"]
)
print(f"执行结果: {result}")
4. 深度解析:如何获取外部群的 room_id?
很多开发者卡在“不知道群 ID”这一步。在 RPA 体系下,你可以通过 Python 脚本实现实时同步:
def sync_external_chat_rooms(self):
"""
获取当前账号加入的所有外部群聊列表
"""
res = self._post("GetChatList", {"type": 2}) # 2 通常代表外部群
if res.get("code") == 200:
for room in res.get("data", []):
print(f"群名: {room['nickname']} | ID: {room['room_id']}")
return res
5. 技术难点与避坑指南
- wxid 转换:确保你传入的是企业微信内部的
wxid。如果只有手机号,需要先调用SearchContactByPhone接口转换。 - 群类型校验:外部群(External Group)与内部群在底层协议上有本质区别,调用接口时需确认
room_id的后缀是否符合外部群特征(通常包含@chatroom或@external)。 - 频率控制:虽然 RPA 接口没有官方 API 那样的严格配额,但 Python 脚本执行速度极快。建议在批量拉人时加入
time.sleep(2),模拟人工操作间隔,规避风控。
总结
通过 Python 对 doc.qiweapi.com 接口的二次封装,开发者可以将原本复杂的底层协议操作简化为几行逻辑代码。这为构建自动化营销系统、社群管理机器人提供了极大的灵活性。