企业微信外部客户群自动化管理:建群+群发+踢人一体化
一、问题背景
🧩 技术背景说明
私域运营中,常需根据客户标签创建对应社群(如“北京母婴群”“A产品体验群”),并定期推送内容、清理潜水或违规用户。手动操作耗时且易出错。
⛔ 企微官方限制
创建客户群需指定群主,每个群主每天创建群数有限(内部规则)
客户群群发接口仅支持向所有客户群发送,无法按群筛选
踢人需群主或管理员权限,且需知道群ID
💡 为什么需要技术手段解决
通过API自动化,可将建群、群发、踢人流程标准化,并与CRM标签系统联动,实现精细化的客户群生命周期管理。
二、技术方案
🏗️ 方案架构图(文字描述)
text
[CRM标签系统] → 群规则配置 → [自动化引擎] → [企微API] ↓ ↓ [客户群A] ← 同步成员 ← [群发任务]根据标签规则自动创建或解散客户群
定期同步客户进群/退群
按群标签进行定向群发
🔧 技术选型说明
组件 | 选型 | 理由 |
语言 | Python | 生态丰富 |
调度 | Airflow / Cron | 复杂依赖用Airflow,简单用Cron |
数据库 | PostgreSQL | 存储群与标签映射关系 |
⚖️ 与其他方案对比
方案 | 优点 | 缺点 |
纯人工 | 灵活 | 无法规模化 |
第三方SCRM | 功能全 | 成本高,数据安全 |
自研API方案 | 可控,成本低 | 开发周期长 |
三、实现步骤
📦 步骤1:环境准备
企业微信已开通客户联系功能
获取客户联系secret(权限较高)
安装依赖:
pip install requests psycopg2-binary
⚙️ 步骤2:建群规则配置
在数据库中定义规则表group_rules:
sql
CREATE TABLE group_rules ( id SERIAL PRIMARY KEY, rule_name VARCHAR(100), tag_condition JSON, -- 例如 {"tag": ["北京", "母婴"]} max_members INT DEFAULT 200, owner_userid VARCHAR(50), -- 群主 created_at TIMESTAMP );💻 步骤3:自动化建群脚本
获取符合标签的客户列表
python
def get_customers_by_tags(tags): """通过客户标签筛选客户userid列表(需调用企微API获取客户详情)""" token = get_token() # 获取access_token # 先获取标签下客户 customers = [] for tag in tags: url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token={token}" # 实际需先获取标签ID,再获取标签下客户,此处简化 # ... return customers创建客户群
python
def create_customer_group(rule): """根据规则创建客户群""" token = get_token() # 获取群主userid(必须是具有客户联系权限的成员) owner = rule["owner_userid"] # 获取要拉入群的客户列表(不超过max_members) customers = get_customers_by_tags(rule["tag_condition"])[:rule["max_members"]] # 创建群 url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/create?access_token={token}" data = { "owner": owner, "userlist": customers } resp = requests.post(url, json=data) result = resp.json() if result.get("errcode") == 0: chat_id = result["chat_id"] # 记录群ID与规则关联 save_group_chat(rule["id"], chat_id) return chat_id else: raise Exception(f"建群失败: {result}")定时检查规则并创建/补充群
python
def sync_groups(): rules = get_active_rules() for rule in rules: # 检查该规则是否已有群 existing_chat = get_group_by_rule(rule["id"]) if not existing_chat: create_customer_group(rule) else: # 补充新客户(如果有空位) supplement_group(rule, existing_chat)💬 群发消息(定向群)
python
def send_to_group_chats(rule_ids, msg_data): """向指定规则下的所有客户群发送消息""" chat_ids = [] for rule_id in rule_ids: chats = get_chats_by_rule(rule_id) chat_ids.extend(chats) token = get_token() url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/send?access_token={token}" data = { "chat_id_list": chat_ids, "msgtype": "text", "text": msg_data } resp = requests.post(url, json=data) return resp.json()四、最佳实践
🚀 性能优化建议
建群操作低频执行(如每天一次),避免触发频率限制
群发任务可拆分为多个批次,间隔5分钟
使用消息模板,减少重复构造
⚠️ 注意事项
客户群有数量上限(如500人),需监控并创建新群
群主离职需提前转移群所有权,否则群无法操作
群发前过滤已解散群,避免无效调用
🕳️ 踩坑经验
坑1:创建客户群时,userlist中的客户必须是该群主的外部联系人
坑2:群发接口不支持按标签筛选,需提前获取群ID列表
坑3:群主每天创建群数有限,需轮换群主
五、工具推荐
对于需要管理上千个客户群且要求实时响应的团队,官方API在群发频率和群数量上可能成为瓶颈。企销宝基于iPad协议,可实现:
单账号管理无上限客户群
群发消息无频率限制(模拟人工操作)
支持自动拉人、踢人、改群名等原生操作
对比:官方API适合轻量级、低频管理;企销宝适合大规模、高频运营场景,尤其适合私域代运营团队。
