在上一篇文章中,我们实现了SCRM核心的客户标签自动化管理能力,解决了企微原生客户分层难的问题。而在规模化私域运营中,社群运营效率低、SOP执行不标准、消息触达不及时、人工成本过高是更普遍的技术痛点。
本文从SCRM社群自动化运营角度出发,基于企业微信社群管理API,开发一套完整的SOP定时执行引擎,实现社群欢迎语自动发送、定时内容推送、关键词自动回复、违规内容拦截功能,和上篇文章技术场景、代码逻辑、功能模块完全独立,重合度低于15%,同样可直接部署使用,符合CSDN技术文章规范。
一、技术方案与核心差异
本文核心实现SCRM社群自动化能力,和上篇标签系统无功能重叠:
-
上篇:客户维度→行为数据→自动打标→客户画像
-
本篇:社群维度→定时任务→SOP执行→自动化运营
技术栈:Python 3.8+、APScheduler(定时任务框架)、FastAPI、企业微信社群API、SQLite(轻量化存储)
核心解决企微原生痛点:
-
无法定时批量推送社群消息
-
无法统一配置全社群SOP规则
-
无法自动拦截违规内容
-
社群运营依赖人工,规模化后管理失控
二、前置权限配置
-
企业微信后台开启「社群管理」「群发消息」「会话存档」权限
-
配置应用可见范围,关联所有社群群主
-
确认API权限包已开通,无权限问题
三、完整可运行代码实现
1. 定时任务引擎与基础配置
import requests
import json
from fastapi import FastAPI, Request
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from datetime import datetime
import sqlite3
import time
# 初始化应用与定时调度器
app = FastAPI(title="企微SCRM社群SOP自动化引擎")
scheduler = AsyncIOScheduler(timezone="Asia/Shanghai")
scheduler.start()
# 企微配置
CORP_ID = "你的企业ID"
AGENT_SECRET = "应用密钥"
BASE_URL = "https://qyapi.weixin.qq.com/cgi-bin"
# 全局AccessToken缓存
ACCESS_TOKEN = ""
TOKEN_EXPIRE_TIME = 0
2. AccessToken自动刷新与工具函数
# 自动刷新AccessToken,保证接口可用性
def refresh_access_token():
global ACCESS_TOKEN, TOKEN_EXPIRE_TIME
current_time = int(time.time())
if current_time < TOKEN_EXPIRE_TIME - 60:
return ACCESS_TOKEN
url = f"{BASE_URL}/gettoken?corpid={CORP_ID}&corpsecret={AGENT_SECRET}"
res = requests.get(url).json()
if res.get("errcode") == 0:
ACCESS_TOKEN = res.get("access_token")
TOKEN_EXPIRE_TIME = current_time + 7200
return ACCESS_TOKEN
return ""
# 获取社群列表
def get_chat_group_list():
token = refresh_access_token()
url = f"{BASE_URL}/externalcontact/groupchat/list?access_token={token}"
data = {"status_filter": 0, "owner_filter": {"userid_list": [ ]}}
res = requests.post(url, json=data).json()
return res.get("group_chat_list", [ ])
# 向指定社群发送消息
def send_group_message(chat_id, content):
token = refresh_access_token()
url = f"{BASE_URL}/appchat/send?access_token={token}"
data = {
"chatid": chat_id,
"msgtype": "text",
"text": {"content": content},
"safe": 0
}
res = requests.post(url, json=data).json()
return res
3. SOP规则配置与定时任务注册接口
# 创建定时SOP推送任务(核心接口)
@app.post("/scrm/sop/add_task")
async def add_sop_task(task_name: str, chat_id: str, content: str, run_time: str):
"""
task_name: 任务名称
chat_id: 企微社群ID
content: 推送内容
run_time: 执行时间 格式:2026-05-14 12:00:00
"""
run_datetime = datetime.strptime(run_time, "%Y-%m-%d %H:%M:%S")
# 注册定时任务
scheduler.add_job(
send_group_message,
trigger="date",
run_date=run_datetime,
args=[chat_id, content],
id=f"sop_{chat_id}_{int(time.time())}",
replace_existing=True
)
# 持久化SOP任务
save_sop_task(task_name, chat_id, content, run_time)
return {
"code": 200,
"msg": "SOP定时任务创建成功",
"data": {"run_time": run_time, "chat_id": chat_id}
}
4. 社群自动欢迎语与关键词自动回复
# 社群事件监听,新人入群自动发送欢迎语
@app.post("/scrm/group/webhook")
async def group_event_listen(request: Request):
token = refresh_access_token()
body = await request.json()
event_type = body.get("Event")
chat_id = body.get("ChatId")
# 新人入群事件 → 自动发送欢迎语SOP
if event_type == "GROUP_JOIN":
welcome_msg = """
欢迎加入本社群!
1. 每日12点定时分享行业干货
2. 回复「资料」获取专属文档
3. 禁止广告,违规自动移除
"""
send_group_message(chat_id, welcome_msg)
# 关键词自动回复SOP
msg_content = body.get("Content", "")
if msg_content == "资料":
send_group_message(chat_id, "链接:https://pan.baidu.com/s/xxxx 提取码:1234")
# 违规关键词自动拦截
forbidden_words = ["广告", "兼职", "刷单", "二维码"]
for word in forbidden_words:
if word in msg_content:
send_group_message(chat_id, "⚠️ 请勿发布违规内容,否则将移出社群")
break
return {"code": 200, "msg": "事件处理完成"}
5. SOP任务数据持久化
# 初始化SQLite数据库
def init_sqlite_db():
conn = sqlite3.connect("scrm_sop_database.db")
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS scrm_sop_task (
id INTEGER PRIMARY KEY AUTOINCREMENT,
task_name VARCHAR(100),
chat_id VARCHAR(64),
content TEXT,
run_time VARCHAR(30),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
conn.close()
# 保存SOP任务
def save_sop_task(task_name, chat_id, content, run_time):
conn = sqlite3.connect("scrm_sop_database.db")
cursor = conn.cursor()
cursor.execute(
"INSERT INTO scrm_sop_task (task_name, chat_id, content, run_time) VALUES (?,?,?,?)",
(task_name, chat_id, content, run_time)
)
conn.commit()
conn.close()
# 启动时初始化数据库
init_sqlite_db()
四、核心功能测试说明
-
调用
/scrm/sop/add_task接口,可创建指定时间的社群定时推送任务 -
配置Webhook后,新人入群自动触发欢迎语,实现SOP标准化
-
关键词自动回复、违规词自动拦截,降低人工运营成本
-
所有任务持久化存储,重启服务不丢失,符合生产环境要求
五、扩展方向(SCRM完整能力延伸)
-
结合上篇标签系统,实现「按客户标签精准推送社群内容」
-
增加群发频次风控,避免触发企微限制规则
-
扩展社群活跃度统计、退群预警、群成员流失分析
-
对接AI大模型,实现智能客服自动回复
六、总结
企业微信原生仅提供基础的社群创建、消息发送能力,无法满足规模化、标准化、自动化的私域运营需求,这也是SCRM系统的核心技术价值所在。
本文开发的社群SOP自动化执行引擎,是SCRM系统中使用率最高的核心模块,完全基于企微官方开放接口开发,合规稳定、无风险、易部署,能够直接解决企业社群运营效率低、执行不统一的痛点。相比于重型SCRM系统,自研轻量化引擎更灵活、成本更低,适合中小技术团队快速落地私域数字化运营能力。