基于企业微信开放API,实现SCRM核心客户标签自动化管理系统

前言

在企业私域部署体系中,企业微信作为官方合规的客户连接入口,原生提供了基础的客户管理、标签管理能力,但在规模化客户运营场景下,原生手动标签管理、行为数据无联动、客户分层效率低等问题尤为突出。

本文基于企业微信官方开放API,结合Python后端开发,实现一套轻量级SCRM核心模块------客户行为自动打标与智能分层系统,完整实现客户事件监听、行为数据解析、自动化标签同步、客户分层存储功能,代码可直接部署复用,解决企微原生运营的技术痛点。

一、技术方案与核心逻辑

本文核心实现SCRM最基础也最核心的能力:基于客户互动行为,自动为企微客户打上精准标签,替代人工操作。 技术栈:Python 3.8+、FastAPI、企业微信第三方应用API、Redis(行为数据缓存)、MySQL(客户数据存储)。

核心流程:

  1. 配置企微第三方应用,获取CorpID、Secret、权限白名单

  2. 搭建Webhook接口,监听企微客户点击、会话、社群互动事件

  3. 解析客户行为数据,匹配预设标签规则

  4. 调用企微官方API,自动为客户添加/更新标签

  5. 基于标签体系完成客户分层,实现SCRM基础数据能力

二、前置配置(企微后台必备)

  1. 登录企业微信管理后台,创建「第三方自建应用」

  2. 开启客户联系权限、会话内容存档权限、客户标签管理权限

  3. 设置可信IP,配置Webhook接收地址

  4. 获取开发参数:CORP_IDAGENT_SECRETTOKENENCODING_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客户标签数据中心';

五、部署与扩展说明

  1. 本文代码基于企微官方原生API开发,无任何违规接口,符合平台合规要求

  2. 该系统是SCRM的核心基础模块,解决企微原生无法自动打标、无法行为联动的痛点

  3. 可扩展能力:客户流失预警、会话智能质检、SOP自动推送、群发风控拦截

  4. 部署方式:支持Docker容器化部署,搭配Nginx反向代理即可上线

六、总结

企业微信原生仅提供基础的客户连接能力,而SCRM的核心技术价值,在于通过API能力实现运营流程的自动化、数据化、标准化。本文实现的自动标签系统,是轻量化SCRM的必备核心模块,代码简洁、可直接二次开发,适合中小企业低成本搭建私域运营技术底座,无需依赖重型SCRM系统即可实现核心能力落地。


相关推荐
Hui_AI7201 小时前
电商桌面自动化实战:用RPA实现抖店批量铺货
运维·开发语言·人工智能·自然语言处理·自动化·开源软件·rpa
红茶要加冰1 小时前
三、条件测试
linux·运维·服务器
开开心心就好1 小时前
带可视化界面的目录文件合并工具
java·运维·科技·游戏·tomcat·自动化·powerpoint
爱喝水的鱼丶1 小时前
SAP-ABAP:第二篇:实操避坑篇——ABAP Hello World程序创建、语法校验到调试运行全流程指南
运维·服务器·数据库·学习·sap·abap
wanderist.1 小时前
完美解决VS Code/Cursor远程连接报错:远程主机不满足运行 VS Code 服务器的先决条件(附AI编程最佳实践)
运维·服务器·ssh·ai编程
wanhengidc1 小时前
服务器 科学技术
运维·服务器·安全·web安全
义龙陳序员2 小时前
Nginx 修改默认错误页面:实现带 CSS 动画的自定义错误页
运维·css·nginx·nginx源码
是有头发的程序猿2 小时前
AI Agent自动化交易流程:1688定制交易API全链路开发实战教程(Python源码)
python·自动化·php
wanhengidc2 小时前
云手机 游戏多开不卡顿
运维·服务器·网络·安全·web安全·游戏·智能手机