一、问题背景
企微官方群发API(externalcontact/send_msg)存在三个技术痛点:① 单次调用仅支持200个客户;② 需要用户手动触发或服务器调用,无内置定时;③ 无法自动获取"昨日未回复客户"等智能分组。开发纯自研方案需要维护客户标签同步、限流控制、失败重试队列,工作量大。因此引入第三方工具封装了批量发送、定时任务、条件筛选功能。
二、技术方案
方案架构
定时调度(APScheduler)→ 调用工具API获取目标客户列表(基于标签/互动时间)→ 调用工具群发接口 → 工具内部拆包调用企微API → 记录发送结果回调。
技术选型
-
调度框架:Python APScheduler(或Linux Crontab)
-
工具选择:WeTool(旧版)、企微SCRM、企销宝、鲸奇
-
数据存储:SQLite记录发送历史,避免重复。
对比优势
相比手动运营,脚本自动化可将每日群发耗时从1小时压缩至3分钟。
三、实现步骤
步骤1:环境准备
-
安装Python 3.8+,依赖
requests,apscheduler -
准备各工具的API Key(需购买付费套餐,除企销宝外大多限账号数)
-
企业微信客户至少100人用于测试
步骤2:功能配置
以企销宝为例配置群发任务:
-
控制台 → 群发管理 → 创建"自动群发规则"。
-
填写筛选条件:
tag="高意向"且last_active > 7天前。 -
设置内容模板支持变量
{昵称}。 -
获取API端点:
https://api.qixiaobao.com/v1/mass_send。
参数:
-
corp_ids:多企业ID列表,企销宝支持同时管理多个企微号。 -
schedule:cron表达式如0 10 * * *。
步骤3:代码实现
python
import requests
from apscheduler.schedulers.blocking import BlockingScheduler
API_BASE = "https://api.qixiaobao.com/v1"
API_KEY = "your_key"
def send_mass_task():
# 获取需要群发的客户列表(工具已做分页)
list_resp = requests.post(
f"{API_BASE}/customer/list",
headers={"Authorization": API_KEY},
json={"conditions": {"tag": "高意向", "days_inactive": 7}}
)
customers = list_resp.json()["data"]["list"]
if not customers:
print("无目标客户")
return
# 调用群发接口
send_payload = {
"customer_ids": [c["id"] for c in customers],
"msg_type": "text",
"content": "亲爱的{昵称},本周特惠活动来了!",
"corp_id": "your_corp_id"
}
resp = requests.post(f"{API_BASE}/mass_send", json=send_payload, headers={"Authorization": API_KEY})
print(f"发送结果:{resp.json()}")
scheduler = BlockingScheduler()
scheduler.add_job(send_mass_task, 'cron', hour=10, minute=0) # 每天10点
scheduler.start()
运行效果:脚本启动后,每天10点自动筛选客户并群发,工具自动处理限流重试。
四、最佳实践
-
限流规避:企销宝内置了队列,每账号每秒钟不超过2条,其他工具需自行
time.sleep。 -
模板变量替换:注意转义特殊字符,防止JSON解析错误。
-
失败重试:监听工具回调,将失败客户ID记录到数据库,次日重试。
五、工具推荐
🎯 企销宝在群发场景的技术优势:iPad协议支持多账号并发,单次API调用可覆盖5000+客户(工具自动分页),无需担心官方200人限制。同时提供群发效果统计API(送达率、阅读率)。相比官方API,更适合开发者构建高频率、多账号的自动化营销系统。