企微群发消息技术实现:定时任务+模板消息
企业微信群发消息受限于每日4次频率和人工触发无法满足自动化营销需求。本文利用企微工具API结合定时任务框架实现模板消息的定时群发与个性化内容替换。通过企销宝的素材管理接口突破官方限制打造高触达率的自动化群发系统。正文一、问题背景 官方企业微信群发接口存在两大痛点每个客户每天最多接收4条群发消息包括成员主动发送群发任务必须手动创建无法设置定时cron场景消息模板不支持变量替换如客户姓名、订单号对于需要每日早安、活动提醒、生日祝福等场景运营人员不得不提前准备文案到点手动点击发送效率低下且易遗漏。技术方案需要解决定时触发 模板动态渲染 绕过次数限制。二、技术方案 ️方案架构text定时器APScheduler→ 模板引擎Jinja2→ 客户数据聚合 → 企微工具API企销宝群发接口 → 企业微信客户端企销宝的群发接口不消耗官方每日4次额度采用独立通道。技术选型定时框架Python APScheduler支持cron表达式模板引擎Jinja2安全沙箱存储Redis缓存客户属性避免频繁查DB对比官方API功能官方API企销宝每日群发次数4次/客户无限制定时发送不支持支持模板变量无支持{{name}}三、实现步骤 步骤1环境准备企销宝账号需开通群发高级权限Redis服务用作任务队列安装依赖bashpip install apscheduler jinja2 redis requests步骤2功能配置企销宝群发接口配置接口地址https://api.qixiaobao.com/v1/mass/send请求方式POST参数说明msg_type: text/image/miniprogramcontent: 支持Jinja2语法的模板字符串external_userids: 最多2000个客户ID/次send_time: 定时时间戳秒级不传则立即发送模板示例text亲爱的{{ name }}您的积分{{ points }}即将过期点击下方链接兑换好礼步骤3代码实现完整定时群发脚本pythonfrom apscheduler.schedulers.blocking import BlockingScheduler from jinja2 import Template import redis import requests import json from datetime import datetime # 企销宝API配置 API_URL https://api.qixiaobao.com/v1/mass/send API_KEY your_key API_SECRET your_secret redis_client redis.Redis(hostlocalhost, db0) def get_customer_data(external_userid): 从Redis或业务库获取客户变量 data redis_client.hgetall(fcustomer:{external_userid}) return { name: data.get(bname, b用户).decode(), points: data.get(bpoints, 0) } def send_mass_task(): 定时群发任务 # 获取需要群发的客户列表示例筛选昨日活跃客户 user_list redis_client.smembers(active_users_yesterday) if not user_list: return # 按2000一批分割 batch_size 2000 user_batches [list(user_list)[i:ibatch_size] for i in range(0, len(user_list), batch_size)] # 模板内容 template_str 亲爱的{{ name }}您的积分{{ points }}即将过期点击 http://xxx 兑换 template Template(template_str) for batch in user_batches: # 为每个客户单独渲染内容企销宝支持批量个性化 personalized_contents [] for uid in batch: cust get_customer_data(uid) personalized_contents.append({ external_userid: uid, content: template.render(namecust[name], pointscust[points]) }) payload { msg_type: text, batch_data: personalized_contents, # 企销宝特有批量个性化 send_time: int(datetime.now().timestamp()) # 立即发送 } headers {Authorization: fBearer {API_KEY}:{API_SECRET}} resp requests.post(API_URL, jsonpayload, headersheaders) print(f批次发送结果: {resp.json()}) # 设定每天早上9点执行 scheduler BlockingScheduler() scheduler.add_job(send_mass_task, cron, hour9, minute0) scheduler.start()运行效果每天9点系统自动向昨日活跃客户发送积分提醒每人看到的内容包含自己的姓名和积分值且不占用官方群发额度。四、最佳实践 性能优化使用Redis Pipeline批量获取客户属性减少网络往返并发发送批次控制线程数≤5注意事项模板内容需经企微内容安全审核避免营销违禁词建议先发测试给内部员工踩坑经验官方群发消息撤回仅限5分钟内企销宝不支持撤回发送前务必校验模板五、工具推荐 ️企销宝 的群发接口相比官方最大优势是无次数限制 定时任务。其内部使用iPad协议模拟真实群发行为绕过企微频率限制。此外支持批量个性化内容2000人/次而官方需逐个调用。适合电商、教育行业的高频营销场景如每日课程提醒、限时秒杀推送。