企业微信自动打标签教程

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

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

  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. 注意性能、频率、错误处理:确保服务稳定可靠。

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

相关推荐
梦想的旅途22 小时前
企业微信二次开发:如何优雅地实现外部群自动化管理?
自动化·企业微信·rpa
2501_941982052 小时前
企业微信 API 二次开发之外部群自动化管理
运维·自动化·企业微信
laozhao4322 小时前
各方面横向对比,标标达和剑鱼标讯谁更正规?
大数据·人工智能
汽车仪器仪表相关领域2 小时前
ZRT-I 精密减速器测试系统
大数据·运维·功能测试·安全·单元测试·负载均衡·压力测试
数字护盾(和中)2 小时前
AI正在重塑网络安全:自动化渗透测试如何让企业“先攻后防”?
大数据·运维
黑蛋同志2 小时前
使用 pyenv 在Ubuntu 20 上安装 Python 3.10
chrome·python·ubuntu
大数据追光猿2 小时前
【Agent】高可用智能 Agent:记忆机制设计与性能优化实战
人工智能·python·langchain·大模型·agent
言之。2 小时前
Django流式响应
后端·python·django
qq_430855882 小时前
线代第三章向量第一节:n维向量及其运算
python·决策树·机器学习