前言
在企业私域部署体系中,企业微信作为官方合规的客户连接入口,原生提供了基础的客户管理、标签管理能力,但在规模化客户运营场景下,原生手动标签管理、行为数据无联动、客户分层效率低等问题尤为突出。
本文基于企业微信官方开放API,结合Python后端开发,实现一套轻量级SCRM核心模块------客户行为自动打标与智能分层系统,完整实现客户事件监听、行为数据解析、自动化标签同步、客户分层存储功能,代码可直接部署复用,解决企微原生运营的技术痛点。
一、技术方案与核心逻辑
本文核心实现SCRM最基础也最核心的能力:基于客户互动行为,自动为企微客户打上精准标签,替代人工操作。 技术栈:Python 3.8+、FastAPI、企业微信第三方应用API、Redis(行为数据缓存)、MySQL(客户数据存储)。
核心流程:
-
配置企微第三方应用,获取CorpID、Secret、权限白名单
-
搭建Webhook接口,监听企微客户点击、会话、社群互动事件
-
解析客户行为数据,匹配预设标签规则
-
调用企微官方API,自动为客户添加/更新标签
-
基于标签体系完成客户分层,实现SCRM基础数据能力
二、前置配置(企微后台必备)
-
登录企业微信管理后台,创建「第三方自建应用」
-
开启客户联系权限、会话内容存档权限、客户标签管理权限
-
设置可信IP,配置Webhook接收地址
-
获取开发参数:
CORP_ID、AGENT_SECRET、TOKEN、ENCODING_AES_KEY
三、完整可运行代码实现
1. 企微API鉴权与AccessToken获取工具类
import requests
import json
import hashlib
from fastapi import FastAPI, Request, HTTPException
import redis
import pymysql
from datetime import datetime
# 全局配置项
CORP_ID = "你的企微企业ID"
AGENT_SECRET = "应用密钥"
TOKEN = "你的回调Token"
ENCODING_AES_KEY = "你的加密密钥"
REDIS_HOST = "127.0.0.1"
DB_CONFIG = {
"host": "127.0.0.1",
"user": "root",
"password": "数据库密码",
"database": "wechat_scrm_db",
"charset": "utf8mb4"
}
# 初始化实例
app = FastAPI(title="企微SCRM标签自动化系统")
redis_client = redis.Redis(host=REDIS_HOST, port=6379, db=0, decode_responses=True)
# 获取企微全局AccessToken(缓存2小时,避免频繁请求)
def get_wechat_access_token():
token_cache = redis_client.get("wechat_access_token")
if token_cache:
return token_cache
url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={AGENT_SECRET}"
res = requests.get(url).json()
if res.get("errcode") == 0:
access_token = res.get("access_token")
redis_client.setex("wechat_access_token", 7200, access_token)
return access_token
raise HTTPException(status_code=500, detail="AccessToken获取失败")
2. 企微Webhook回调验证接口(平台必填)
# 企微回调URL验证接口(CSDN部署必备,必须通过验签才能接收事件)
@app.get("/wechat/webhook")
def webhook_verify(signature: str, timestamp: str, nonce: str, echostr: str):
# 企微官方验签逻辑
tmp_list = [TOKEN, timestamp, nonce]
tmp_list.sort()
tmp_str = "".join(tmp_list)
tmp_signature = hashlib.sha1(tmp_str.encode("utf-8")).hexdigest()
if tmp_signature == signature:
return echostr
raise HTTPException(status_code=403, detail="验签失败")
3. 客户行为监听+自动打标核心逻辑
# 接收企微客户行为事件,自动执行标签规则
@app.post("/wechat/webhook")
async def wechat_event(request: Request):
access_token = get_wechat_access_token()
body = await request.json()
# 筛选客户点击链接、发送关键词、入群等核心行为事件
event_type = body.get("Event")
external_userid = body.get("ExternalUserID") # 企微客户唯一ID
userid = body.get("UserID") # 成员ID
if not external_userid:
return {"status": "success", "msg": "非客户事件"}
# ==================== 核心规则:行为触发标签 ====================
tag_id = ""
# 规则1:客户点击产品链接 → 打上「高意向客户」标签
if event_type == "CLICK_VIEW_LINK":
tag_id = "TAG_PRODUCT_INTREST" # 企微后台创建的标签ID
# 规则2:客户发送关键词「价格」→ 打上「待报价客户」标签
elif event_type == "MSG_SEND" and "价格" in body.get("Content", ""):
tag_id = "TAG_WAIT_QUOTE"
# 规则3:客户加入社群 → 打上「社群活跃客户」标签
elif event_type == "JOIN_CHAT":
tag_id = "TAG_GROUP_ACTIVE"
else:
return {"status": "success", "msg": "无匹配标签规则"}
# 调用企微官方API,为客户自动添加标签
add_tag_url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit\_mark\_tag?access\_token={access_token}"
params = {
"userid": userid,
"external_userid": external_userid,
"add_tag": [tag_id]
}
res = requests.post(add_tag_url, json=params).json()
# 同步客户数据至SCRM本地数据库
if res.get("errcode") == 0:
save_customer_data(external_userid, tag_id, event_type)
return {"status": "success", "msg": "标签已自动同步", "data": params}
return {"status": "fail", "msg": res.get("errmsg")}
4. 客户数据持久化存储(SCRM数据底座)
# 将客户标签与行为数据存入MySQL,构建SCRM客户画像
def save_customer_data(external_userid, tag_id, event_type):
conn = pymysql.connect(**DB_CONFIG)
cursor = conn.cursor()
create_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
sql = """
INSERT INTO customer_scrm_data (external_userid, tag_id, event_type, create_time)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE tag_id=%s, event_type=%s
"""
cursor.execute(sql, (external_userid, tag_id, event_type, create_time, tag_id, event_type))
conn.commit()
cursor.close()
conn.close()
四、MySQL数据表创建语句
-- SCRM客户行为与标签数据表
CREATE TABLE `customer_scrm_data` (
`id` int NOT NULL AUTO_INCREMENT,
`external_userid` varchar(64) NOT NULL COMMENT '企微客户唯一ID',
`tag_id` varchar(64) DEFAULT NULL COMMENT '自动匹配标签ID',
`event_type` varchar(64) DEFAULT NULL COMMENT '触发行为类型',
`create_time` datetime DEFAULT NULL COMMENT '同步时间',
PRIMARY KEY (`id`),
UNIQUE KEY `external_userid` (`external_userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='SCRM客户标签数据中心';
五、部署与扩展说明
-
本文代码基于企微官方原生API开发,无任何违规接口,符合平台合规要求
-
该系统是SCRM的核心基础模块,解决企微原生无法自动打标、无法行为联动的痛点
-
可扩展能力:客户流失预警、会话智能质检、SOP自动推送、群发风控拦截
-
部署方式:支持Docker容器化部署,搭配Nginx反向代理即可上线
六、总结
企业微信原生仅提供基础的客户连接能力,而SCRM的核心技术价值,在于通过API能力实现运营流程的自动化、数据化、标准化。本文实现的自动标签系统,是轻量化SCRM的必备核心模块,代码简洁、可直接二次开发,适合中小企业低成本搭建私域运营技术底座,无需依赖重型SCRM系统即可实现核心能力落地。