企业微信自动打标签设置与开发详细教程
一、理解企业微信标签系统
-
标签的作用:
- 用于精细化客户管理:对客户、客户群、企业成员进行分类。
- 赋能精准营销与服务:基于标签推送个性化消息、设置欢迎语、分配群发任务、进行客户群管理等。
- 实现自动化流程:结合其他功能(如SCRM系统、工作流引擎)实现基于客户行为的自动化操作。
-
标签类型:
- 客户标签:用于标记外部联系人(客户)。
- 群标签:用于标记客户群。
- 成员标签:用于标记企业内部员工(较少用于自动化场景,本教程主要聚焦客户标签)。
-
管理权限:
- 超级管理员:可管理所有标签。
- 分级管理员:可管理指定范围(部门/标签组)的标签。
- 普通成员:通常只有使用标签的权限,无管理权。自动打标签通常需要管理员权限或API调用权限。
二、基础设置(手动/半自动)
这是实现自动打标签的基础,确保标签体系已建立。
-
创建标签组和标签:
- 登录 企业微信管理后台。
- 进入
客户联系->配置->企业客户标签。 - 点击
标签组旁边的+按钮创建新的标签组(例如:兴趣偏好、购买阶段、来源渠道)。 - 在标签组下,点击
标签旁边的+按钮创建具体标签(例如:在兴趣偏好组下创建健身、美食、旅游;在购买阶段组下创建潜在客户、已购买、复购用户)。 - 注意:标签名称要清晰、简洁,便于后续识别和使用。
-
手动/半自动打标签:
- 成员手动打标签 :员工在企业微信工作台或手机端与客户聊天时,可以点击客户头像 ->
设置标签,为单个客户选择或创建标签。 - 批量导入打标签 :
- 在
企业客户标签页面,找到需要操作的标签组/标签。 - 点击标签右侧的
...->通过表格管理成员。 - 下载模板,填写需要打上该标签的客户
userid(企业成员的) 或external_userid(客户的)。 - 上传表格完成批量打标签。注意:此功能主要用于初始批量操作或定期维护,非实时自动化。
- 在
- 成员手动打标签 :员工在企业微信工作台或手机端与客户聊天时,可以点击客户头像 ->
三、自动打标签开发实现(API方式)
这是实现真正自动化、基于规则或事件触发的打标签的核心。需要开发能力。
前提条件
-
获取API权限:
- 企业微信管理员需在管理后台
应用管理->自建应用中创建一个应用(或使用已有的应用)。 - 为该应用启用
客户联系相关的API权限(通常需要客户基础信息、客户联系下的权限,具体查看API文档要求)。 - 记录应用的
AgentId,Secret,CorpID(企业ID)。这些是调用API的凭证。 - 配置应用的
可信IP(调用API的服务器IP地址)。
- 企业微信管理员需在管理后台
-
开发环境准备:
- 选择熟悉的编程语言(Python, Java, Node.js, Go等)。
- 安装企业微信官方提供的SDK(可选,可直接发送HTTP请求)。
- 准备一个可接收企业微信事件的服务器(回调URL)。
核心步骤与API调用
自动打标签通常由特定事件触发,并在事件处理逻辑中调用打标签API。以下是关键环节:
-
配置事件接收(回调URL):
-
在自建应用的管理页面,找到
接收消息或设置API接收选项。 -
设置一个
URL(你的服务器地址) 和Token,EncodingAESKey(用于消息加解密验证)。 -
你的服务器需要实现一个接口,能够响应企业微信发送的
GET验证请求(返回echostr参数)和POST的事件推送请求。 -
验证URL有效性 :企业微信会向你的URL发送一个GET请求,你需要原样返回
echostr参数。代码示例(Python Flask):pythonfrom flask import Flask, request import hashlib app = Flask(__name__) @app.route('/wecom/callback', methods=['GET', 'POST']) def wecom_callback(): if request.method == 'GET': # 验证URL msg_signature = request.args.get('msg_signature', '') timestamp = request.args.get('timestamp', '') nonce = request.args.get('nonce', '') echostr = request.args.get('echostr', '') # 这里需要实现签名验证逻辑(比较 msg_signature 和自己计算的签名是否一致) # 官方SDK通常封装了此验证方法 verify_url # 假设验证通过,返回 echostr return echostr else: # 处理POST事件 ...
-
-
解析事件推送:
- 当有事件发生时(如客户添加员工、客户发送消息、成员修改客户备注等),企业微信会向你的回调URL发送加密的XML消息。
- 使用
Token和EncodingAESKey解密消息体。 - 解析XML,获取事件类型 (
Event) 和相关数据。 - 常见触发事件 :
change_external_contact/change_external_chat:客户添加/删除员工、员工添加/删除客户、客户退群等。msg:接收用户消息事件(文本、图片、语音、视频、位置、链接、文件等)。change_contact:成员修改客户备注、描述等信息。(注意:2023年4月后,此事件不再推送标签变更信息)
-
设计自动打标签规则:
- 基于解析出的事件信息,编写你的业务逻辑来决定给哪个客户 (
external_userid) 打上哪个标签 (tag_id)。 - 规则示例 :
- 新客户自动标签 :当
change_external_contact事件类型为add_external_contact(添加客户) 时,自动给该客户打上新客户标签。 - 关键词触发 :当接收到客户发送的文本消息 (
msg事件) 时,解析消息内容。如果包含 "健身",则打上健身标签;如果包含 "价格",则打上询价中标签。 - 来源渠道标签 :在添加客户事件中,解析
welcome_code(如果使用了联系我二维码或活码),根据不同的二维码来源打上线上活动、官网咨询、线下展会等标签。 - 结合CRM数据 :当你的CRM系统标记客户状态为 "已成交" 时,调用企业微信API给该客户打上
已购买标签。 - 定时任务/批量处理 :定期扫描客户列表(调用
获取客户列表API),根据某些条件(如添加时间超过30天未互动)打上待激活标签。
- 新客户自动标签 :当
- 基于解析出的事件信息,编写你的业务逻辑来决定给哪个客户 (
-
调用打标签API:
-
API名称 : 标记客户
-
Endpoint :
https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag?access_token=ACCESS_TOKEN -
HTTP Method :
POST -
请求体 (JSON) :
json{ "userid": "zhangsan", // 企业成员的userid (谁给客户打标签) "external_userid": "woAJ2GCAAAd1N1234", // 客户的external_userid "add_tag": ["TAG_ID1", "TAG_ID2"], // 要添加的标签ID列表 "remove_tag": ["TAG_ID3", "TAG_ID4"] // 要删除的标签ID列表 (可选) } -
步骤 :
- 获取
access_token(使用CorpID,Secret调用 获取access_token API)。 - 构造请求体,包含成员
userid、客户external_userid、要添加的标签ID数组add_tag。 - 发送 POST 请求到上述 Endpoint。
- 解析响应,检查
errcode(0 表示成功)。
- 获取
-
代码示例 (Python - requests库) :
pythonimport requests # 1. 获取 access_token (假设已有函数 get_access_token) access_token = get_access_token(corp_id, corp_secret) # 2. API URL url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag?access_token={access_token}" # 3. 请求数据 data = { "userid": "zhangsan", # 实际的企业成员userid "external_userid": "woAJ2GCAAAd1N1234", # 实际的客户external_userid "add_tag": ["TAG_ID_123", "TAG_ID_456"] # 实际的标签ID } # 4. 发送请求 response = requests.post(url, json=data) result = response.json() # 5. 处理结果 if result['errcode'] == 0: print("打标签成功!") else: print(f"打标签失败: {result['errmsg']}")
-
-
调用查询标签API(可选):
- 在打标签前,可能需要先查询客户已有的标签,避免重复添加或做更复杂的逻辑。
- API名称 : 获取客户详情
- Endpoint :
https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=ACCESS_TOKEN&external_userid=EXTERNAL_USERID - 在返回的客户详情中,会包含
tags字段,列出了该客户已有的标签信息(包含id和name)。
四、注意事项与最佳实践
- API调用频率限制:企业微信API有严格的调用频率限制(例如单个应用对单个企业所有API的调用上限为每分钟600次)。务必做好代码中的频率控制,避免触发限流。对于批量操作,考虑使用队列和延时处理。
- 标签ID管理 :在代码中硬编码标签ID不易维护。建议:
- 将标签ID存储在数据库或配置文件中。
- 开发一个管理界面,允许管理员配置规则时选择标签(通过调用 获取企业标签库 API 动态获取标签列表)。
- 成员
userid的选择 :打标签API需要指定一个企业成员 (userid)。通常选择:- 添加该客户的成员的
userid。 - 一个固定的、具有权限的管理员账号
userid(需谨慎)。 - 或者,通过 获取客户详情 API 查询
follow_user字段(跟进人列表),选择一个合适的跟进人。
- 添加该客户的成员的
- 标签冲突与覆盖 :注意
add_tag是添加,remove_tag是删除。如果多次调用,标签会累加或移除。确保业务逻辑清晰,避免标签混乱。考虑在添加前检查是否已存在。 - 错误处理与日志:API调用可能失败(网络问题、权限问题、参数错误、频率超限等)。务必在代码中做好异常捕获和重试机制(注意重试间隔)。记录详细的操作日志,方便排查问题。
- 客户隐私与合规:自动打标签涉及客户数据操作。确保符合相关法律法规(如个人信息保护法),并告知客户标签的使用目的和范围(通常在隐私政策中说明)。
- 测试环境先行:务必在企业微信的测试环境中充分测试你的自动打标签逻辑,确认无误后再部署到生产环境。
- 监控与告警:对自动打标签服务进行监控,当失败率升高或API调用异常时触发告警。
五、总结
实现企业微信自动打标签的核心是:
- 建立标签体系:在管理后台规划好标签组和标签。
- 配置事件接收:设置回调URL接收企业微信事件通知。
- 开发事件处理服务:解析事件,根据业务规则决定打标签动作。
- 调用打标签API :使用正确的成员、客户和标签ID调用
mark_tagAPI。 - 注意性能、频率、错误处理:确保服务稳定可靠。
通过这套流程,你可以实现高度定制化的客户自动分类,极大地提升客户管理和营销效率。