Python 实战:调用 RPA 接口实现外部群成员自动邀请

0 阅读3分钟

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

image.png

5. 技术难点与避坑指南

  • wxid 转换:确保你传入的是企业微信内部的 wxid。如果只有手机号,需要先调用 SearchContactByPhone 接口转换。
  • 群类型校验:外部群(External Group)与内部群在底层协议上有本质区别,调用接口时需确认 room_id 的后缀是否符合外部群特征(通常包含 @chatroom@external)。
  • 频率控制:虽然 RPA 接口没有官方 API 那样的严格配额,但 Python 脚本执行速度极快。建议在批量拉人时加入 time.sleep(2),模拟人工操作间隔,规避风控。

总结

通过 Python 对 doc.qiweapi.com 接口的二次封装,开发者可以将原本复杂的底层协议操作简化为几行逻辑代码。这为构建自动化营销系统、社群管理机器人提供了极大的灵活性。