企业微信自动打标签教程

企业微信自动打标签设置与开发详细教程

一、理解企业微信标签系统

  1. 标签的作用

    • 用于精细化客户管理:对客户、客户群、企业成员进行分类。
    • 赋能精准营销与服务:基于标签推送个性化消息、设置欢迎语、分配群发任务、进行客户群管理等。
    • 实现自动化流程:结合其他功能(如SCRM系统、工作流引擎)实现基于客户行为的自动化操作。
  2. 标签类型

    • 客户标签:用于标记外部联系人(客户)。
    • 群标签:用于标记客户群。
    • 成员标签:用于标记企业内部员工(较少用于自动化场景,本教程主要聚焦客户标签)。
  3. 管理权限

    • 超级管理员:可管理所有标签。
    • 分级管理员:可管理指定范围(部门/标签组)的标签。
    • 普通成员:通常只有使用标签的权限,无管理权。自动打标签通常需要管理员权限或API调用权限。

二、基础设置(手动/半自动)

这是实现自动打标签的基础,确保标签体系已建立。

  1. 创建标签组和标签

    • 登录 企业微信管理后台
    • 进入 客户联系 -> 配置 -> 企业客户标签
    • 点击 标签组 旁边的 + 按钮创建新的标签组(例如:兴趣偏好购买阶段来源渠道)。
    • 在标签组下,点击 标签 旁边的 + 按钮创建具体标签(例如:在 兴趣偏好 组下创建 健身美食旅游;在 购买阶段 组下创建 潜在客户已购买复购用户)。
    • 注意:标签名称要清晰、简洁,便于后续识别和使用。
  2. 手动/半自动打标签

    • 成员手动打标签 :员工在企业微信工作台或手机端与客户聊天时,可以点击客户头像 -> 设置标签,为单个客户选择或创建标签。
    • 批量导入打标签
      • 企业客户标签 页面,找到需要操作的标签组/标签。
      • 点击标签右侧的 ... -> 通过表格管理成员
      • 下载模板,填写需要打上该标签的客户 userid (企业成员的) 或 external_userid (客户的)。
      • 上传表格完成批量打标签。注意:此功能主要用于初始批量操作或定期维护,非实时自动化。

三、自动打标签开发实现(API方式)

这是实现真正自动化、基于规则或事件触发的打标签的核心。需要开发能力。

前提条件

  1. 获取API权限

    • 企业微信管理员需在管理后台 应用管理 -> 自建应用 中创建一个应用(或使用已有的应用)。
    • 为该应用启用 客户联系 相关的API权限(通常需要 客户基础信息客户联系 下的权限,具体查看API文档要求)。
    • 记录应用的 AgentId, Secret, CorpID (企业ID)。这些是调用API的凭证。
    • 配置应用的 可信IP (调用API的服务器IP地址)。
  2. 开发环境准备

    • 选择熟悉的编程语言(Python, Java, Node.js, Go等)。
    • 安装企业微信官方提供的SDK(可选,可直接发送HTTP请求)。
    • 准备一个可接收企业微信事件的服务器(回调URL)。

核心步骤与API调用

自动打标签通常由特定事件触发,并在事件处理逻辑中调用打标签API。以下是关键环节:

  1. 配置事件接收(回调URL)

    • 在自建应用的管理页面,找到 接收消息设置API接收 选项。

    • 设置一个 URL (你的服务器地址) 和 Token, EncodingAESKey(用于消息加解密验证)。

    • 你的服务器需要实现一个接口,能够响应企业微信发送的 GET 验证请求(返回 echostr 参数)和 POST 的事件推送请求。

    • 验证URL有效性 :企业微信会向你的URL发送一个GET请求,你需要原样返回 echostr 参数。代码示例(Python Flask):

      python 复制代码
      from 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事件
              ...
  2. 解析事件推送

    • 当有事件发生时(如客户添加员工、客户发送消息、成员修改客户备注等),企业微信会向你的回调URL发送加密的XML消息。
    • 使用 TokenEncodingAESKey 解密消息体。
    • 解析XML,获取事件类型 (Event) 和相关数据。
    • 常见触发事件
      • change_external_contact / change_external_chat:客户添加/删除员工、员工添加/删除客户、客户退群等。
      • msg:接收用户消息事件(文本、图片、语音、视频、位置、链接、文件等)。
      • change_contact:成员修改客户备注、描述等信息。(注意:2023年4月后,此事件不再推送标签变更信息)
  3. 设计自动打标签规则

    • 基于解析出的事件信息,编写你的业务逻辑来决定给哪个客户 (external_userid) 打上哪个标签 (tag_id)。
    • 规则示例
      • 新客户自动标签 :当 change_external_contact 事件类型为 add_external_contact (添加客户) 时,自动给该客户打上 新客户 标签。
      • 关键词触发 :当接收到客户发送的文本消息 (msg 事件) 时,解析消息内容。如果包含 "健身",则打上 健身 标签;如果包含 "价格",则打上 询价中 标签。
      • 来源渠道标签 :在添加客户事件中,解析 welcome_code (如果使用了联系我二维码或活码),根据不同的二维码来源打上 线上活动官网咨询线下展会 等标签。
      • 结合CRM数据 :当你的CRM系统标记客户状态为 "已成交" 时,调用企业微信API给该客户打上 已购买 标签。
      • 定时任务/批量处理 :定期扫描客户列表(调用 获取客户列表 API),根据某些条件(如添加时间超过30天未互动)打上 待激活 标签。
  4. 调用打标签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列表 (可选)
      }
    • 步骤

      1. 获取 access_token (使用 CorpID, Secret 调用 获取access_token API)。
      2. 构造请求体,包含成员 userid、客户 external_userid、要添加的标签ID数组 add_tag
      3. 发送 POST 请求到上述 Endpoint。
      4. 解析响应,检查 errcode (0 表示成功)。
    • 代码示例 (Python - requests库) :

      python 复制代码
      import 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']}")
  5. 调用查询标签API(可选)

    • 在打标签前,可能需要先查询客户已有的标签,避免重复添加或做更复杂的逻辑。
    • API名称获取客户详情
    • Endpoint : https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=ACCESS_TOKEN&external_userid=EXTERNAL_USERID
    • 在返回的客户详情中,会包含 tags 字段,列出了该客户已有的标签信息(包含 idname)。

四、注意事项与最佳实践

  1. API调用频率限制:企业微信API有严格的调用频率限制(例如单个应用对单个企业所有API的调用上限为每分钟600次)。务必做好代码中的频率控制,避免触发限流。对于批量操作,考虑使用队列和延时处理。
  2. 标签ID管理 :在代码中硬编码标签ID不易维护。建议:
    • 将标签ID存储在数据库或配置文件中。
    • 开发一个管理界面,允许管理员配置规则时选择标签(通过调用 获取企业标签库 API 动态获取标签列表)。
  3. 成员userid的选择 :打标签API需要指定一个企业成员 (userid)。通常选择:
    • 添加该客户的成员的 userid
    • 一个固定的、具有权限的管理员账号 userid (需谨慎)。
    • 或者,通过 获取客户详情 API 查询 follow_user 字段(跟进人列表),选择一个合适的跟进人。
  4. 标签冲突与覆盖 :注意 add_tag 是添加,remove_tag 是删除。如果多次调用,标签会累加或移除。确保业务逻辑清晰,避免标签混乱。考虑在添加前检查是否已存在。
  5. 错误处理与日志:API调用可能失败(网络问题、权限问题、参数错误、频率超限等)。务必在代码中做好异常捕获和重试机制(注意重试间隔)。记录详细的操作日志,方便排查问题。
  6. 客户隐私与合规:自动打标签涉及客户数据操作。确保符合相关法律法规(如个人信息保护法),并告知客户标签的使用目的和范围(通常在隐私政策中说明)。
  7. 测试环境先行:务必在企业微信的测试环境中充分测试你的自动打标签逻辑,确认无误后再部署到生产环境。
  8. 监控与告警:对自动打标签服务进行监控,当失败率升高或API调用异常时触发告警。

五、总结

实现企业微信自动打标签的核心是:

  1. 建立标签体系:在管理后台规划好标签组和标签。
  2. 配置事件接收:设置回调URL接收企业微信事件通知。
  3. 开发事件处理服务:解析事件,根据业务规则决定打标签动作。
  4. 调用打标签API :使用正确的成员、客户和标签ID调用 mark_tag API。
  5. 注意性能、频率、错误处理:确保服务稳定可靠。

通过这套流程,你可以实现高度定制化的客户自动分类,极大地提升客户管理和营销效率。

相关推荐
AC赳赳老秦4 小时前
OpenClaw email技能:批量发送邮件、自动回复,高效处理工作邮件
运维·人工智能·python·django·自动化·deepseek·openclaw
zhaoshuzhaoshu4 小时前
Python 语法之数据结构详细解析
python
AI问答工程师4 小时前
Meta Muse Spark 的"思维压缩"到底是什么?我用 Python 复现了核心思路(附代码)
人工智能·python
zfan5205 小时前
python对Excel数据处理(1)
python·excel·pandas
小饕5 小时前
我从零搭建 RAG 学到的 10 件事
python
老歌老听老掉牙5 小时前
PyQt5+Qt Designer实战:可视化设计智能参数配置界面,告别手动布局时代!
python·qt
极创信息6 小时前
信创系统认证服务怎么做?从适配到验收全流程指南
java·大数据·运维·tomcat·健康医疗
格鸰爱童话6 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习
悟空爬虫-彪哥6 小时前
VRChat开发环境配置,零基础教程
python
数据知道6 小时前
《 Claude Code源码分析与实践》专栏目录
python·ai·github·claude code·claw code