企业微信客服 IM 接入流程

企业微信客服会话接入 EasyAI:企微侧应用与客服配置、URL 验证、渠道接入与联调检查

本文说明如何将**企业微信客服(Customer Service)**接入 EasyAI,让外部客户在企微客服会话中的消息由智能体自动接管回复。

整体链路分为四步:

  1. 企微侧准备:创建应用、开通客服能力、准备回调参数
  2. URL 验证:在企业微信完成客服回调地址验证
  3. EasyAI 侧配置:新增 wecom-cs 渠道并绑定智能体
  4. 联调验收:确认收发消息、幂等与故障排查

一、企微侧准备(先完成)

1.1 创建企业内部应用(客服回调与发消息依赖)

  1. 登录 企业微信管理后台
  2. 进入 应用管理,创建一个企业内部应用(可命名为“EasyAI 客服助手”)。
  3. 记录以下信息(后续 EasyAI 配置会用到):
    • CorpID(企业 ID)
    • AgentId(应用 AgentId)
    • Secret(应用 Secret)

字段获取位置(建议按下面路径查找):

  • CorpID:企业微信管理后台右上角进入我的企业(或企业信息页)可查看 企业 ID(CorpID)
  • Secret:必须先创建企业自建应用,再进入该应用详情页的凭证与基础信息获取应用 Secret
  • AgentId:在同一个自建应用详情页的基础信息中查看 AgentId

建议:将该应用仅授权给需要接待的客服成员,减少权限面。

1.2 开通企业微信客服能力

  1. 在企微管理后台进入客服相关模块(不同版本入口名称可能为「客户联系 / 客服」)。
  2. 开通客服能力并创建客服账号(open_kfid)。
  3. 配置可接待成员与接待范围,确保测试成员可被分配会话。

若企业未开通客服能力,后续即使 URL 验证成功,也不会有客服消息回调到 EasyAI。 若尚未创建客服账号,EasyAI 后台点击「获取客服ID」会拿不到可选项,请先在企微侧创建至少 1 个客服账号。

1.2.1 非常容易遗漏:配置“可调用接口的应用”

请在企业微信后台进入:应用管理 → 微信客服 → API,配置“可调用接口的应用”为你刚创建的自定义应用(用于调用客服相关 API)。

这个入口在后台里不显眼,实操中非常容易漏配。
若未配置,常见现象是 URL 看起来已通过,但客服账号拉取、发消息或会话状态变更接口会报权限/调用失败。

1.2.2 推荐配置:微信开发者ID绑定(用于获取 unionid)

在企业微信后台 应用管理 → 微信客服 中,找到微信开发者ID绑定,按指引通过小程序或公众号完成绑定。

绑定后的用途:

  • 可通过 API 获取微信客户对应的微信身份标识 unionid
  • 有助于识别同一微信用户在不同入口(小程序、公众号、企微客服)下的统一身份
  • 在 EasyAI 侧可提升用户映射稳定性,降低同一用户被拆分成多个身份的概率

基础消息接入不强依赖该配置;但如果你希望做跨渠道用户打通、统一画像或更稳定会话归并,建议务必配置。

1.2.3 关键补充:在“API 管理会话消息”里为应用配置客服

很多接入失败并不是回调地址问题,而是漏了这一步。

请在企业微信后台进入 应用管理 → 微信客服,拉到配置页最下方,找到 API 管理会话消息,并执行:

  1. 选择 企业内部开发
  2. 在“指定应用”中选择你用于接入 EasyAI 的企业内部应用(即前文创建并记录了 AgentId/Secret 的应用)。
  1. 在该应用下为需要接入的客服进行配置(关联可管理的客服账号)。
  1. 保存配置后,再回到 EasyAI 执行「获取客服ID」与联调验证。

若未在这里完成“企业内部开发 + 指定应用配置客服”,常见现象是:

  • EasyAI 侧可创建渠道,但客服 ID 拉取不全或为空
  • 会话消息管理/状态变更接口调用失败(权限不足)
  • 同一企业下多应用场景中,消息无法按预期路由到目标应用

1.3 准备回调验证参数

在企业微信管理后台 应用管理 → 进入你的自定义应用 → 接收消息 页面,需要配置三组参数:

  • Token:自定义字符串(建议高强度随机)
  • EncodingAESKey:43 位随机字符串(企微回调加解密使用)
  • URL:EasyAI 对外可访问的回调地址(见下一节)

建议先在运维侧准备好公网域名与 HTTPS,再进行 URL 验证。


二、URL 验证与回调配置

企业微信会在保存回调地址时进行校验,只有校验通过才会开始推送客服事件。

2.1 回调地址格式

请将 URL 指向 EasyAI 的企微客服 webhook,URL 路径里要带 open_kfid(路由参数),例如:

https://你的域名/api/im-gateway/webhook/wecom-cs/wkf_xxx

实际路径以你当前部署网关路由为准;若你有反向代理前缀,请带上前缀。

open_kfid 配置建议:

  1. 初次接入时,可先填写一个临时值完成 URL 验证;
  2. 后续在 EasyAI 后台配置客服列表后,获取真实客服 ID(open_kfid);
  3. 回到企微后台,把 URL 中的 open_kfid 改成与 EasyAI 后台一致的值。

2.2 在企微后台执行 URL 验证

先确认企业可信 IP 已配置:

  1. 在企业微信管理后台 应用管理 → 进入你的自定义应用 页面。
  2. 将 EasyAI 网关出口公网 IP(或反向代理出口 IP)加入企业可信 IP白名单。
  3. 如为多出口网络,请把所有可能出口 IP 都加入白名单。

未配置企业可信 IP 时,URL 验证通常会失败,或后续消息回调不稳定。

完成可信 IP 配置后,再执行 URL 验证:

  1. 打开企业应用/客服应用的回调配置页面。
  2. 填入:
  • URL(路径中需包含 open_kfid
  • Token
  • EncodingAESKey
  1. 点击保存或验证。

验证通过的标志:

  • 企微页面提示「校验成功」或等价文案。
  • EasyAI 网关日志出现回调校验请求并返回成功。

2.3 URL 验证失败的常见原因

  • 回调地址不可公网访问(内网地址、DNS 未生效、防火墙拦截)
  • HTTPS 证书异常或域名不匹配
  • Token / EncodingAESKey 与 EasyAI 渠道配置不一致
  • 企业可信 IP 未配置、配置错误或尚未生效
  • 反向代理未正确转发 query 参数(msg_signaturetimestampnonceechostr
  • 网关未部署 wecom-cs webhook 路由

三、EasyAI 后端新增渠道配置(关键步骤)

在 EasyAI 管理后台创建 IM 渠道,将企微客服消息路由到指定智能体。

3.1 进入渠道管理

  • 菜单入口:管理后台 → IM 渠道
  • 新建路径通常为:/admin/im-channels/new

3.2 新建企业微信客服渠道

  1. 点击 新建 IM 渠道
  2. 填写基础信息:
    • 渠道名称:如 企微客服-售前
    • IM 平台:选择 企业微信客服wecom-cs
    • 绑定智能体(Agent):选择用于自动回复的智能体
  3. 平台配置(platform_config)填写:
    • openKfId(必填)
    • corpId
    • corpSecret(必填,兼容历史字段 secret
    • (可选)handoverServicerUserId(转人工的默认客服 ID,填写企微内部成员 userid,可在企业微信后台 通讯录 → 成员详情 获取;不是 open_kfid
    • (可选)token
    • (可选)encodingAESKey
  4. 点击 获取客服ID,选择要接管该渠道的客服 open_kfid(即 openKfId),并确认该渠道绑定了正确的 Agent。
    • 若列表为空,先回企业微信创建客服账号,再重新点击获取。
  5. 将这个正确的 open_kfid 复制回企业微信后台「接收消息」配置,替换最初 URL 中用于验证的占位客服 ID。
  6. 保存并启用渠道。

可参考配置结构:

{
  "openKfId": "wkf_xxxxxxxxxxxxxxxx",
  "corpId": "wwxxxxxxxxxxxxxxxx",
  "corpSecret": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "handoverServicerUserId": "zhangsan",
  "token": "easyai_wecom_cs_token",
  "encodingAESKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

3.3 配置注意事项

  • openKfId 必须与企微后台 URL 中的 open_kfid 保持一致(建议最终改成一致值)
  • corpSecret 为推荐字段名;历史 secret 仍兼容,但建议统一使用 corpSecret
  • tokenencodingAESKey 若配置,必须和企微后台严格一致
  • 若启用人工接管,建议在客服团队内部明确“接管/释放”操作规范
  • 生产环境建议开启日志脱敏,避免明文输出客户隐私字段

3.4 配置智能体“转人工”工具(非常建议开启)

仅有渠道配置还不够。若希望用户在对话中输入“转人工/人工客服”等时自动转人工,需要在智能体中启用转人工工具。

配置建议:

  1. 进入 智能体管理,编辑绑定在该 IM 渠道上的 Agent。
  2. 在工具列表中启用转人工工具:im_handover_to_human(标题通常显示为“转人工客服”)。
  3. 在智能体提示词中补充规则:当用户明确表达“转人工、人工客服、投诉、退款、无法继续处理”等诉求时,优先调用转人工工具。

生效效果:

  • 用户在会话中输入“转人工”等诉求时,Agent 可发起转人工
  • 默认优先转到渠道里配置的 handoverServicerUserId
  • 若未配置默认接待人员,会进入待接入池(等待客服接入)

3.5 IM 会话管理中的状态切换说明(可切/不可切)

入口:管理后台 → IM 会话管理 → 企微客服会话 → 状态切换

当前状态定义(企微远端 service_state):

  • 0:未处理
  • 1:机器人接待
  • 2:待接入池
  • 3:人工接待
  • 4:已结束

可切换规则(按当前系统实现):

  • 可切:1/0/4 -> 2(切到待接入池)
  • 可切:1/0/4 -> 3(切到人工接待;需提供客服成员 userid,或渠道里已配置 handoverServicerUserId
  • 可切:1/2/3 -> 4(结束会话)
  • 有限制:2/3 -> 1 不允许直接切换
    • 需先切到 4(结束会话),再由客户下一条新消息触发机器人接待

重点提醒:

  • 已经处于人工接待(3)时,不允许直接切换为机器人接待(1)
  • 正确流程是:先切到已结束(4),再等待客户发起新的会话/新消息接入机器人

补充说明:

  • 状态切换仅支持 wecom-cs 会话
  • 若切到人工接待时未提供客服 userid,切换会失败

参考文档(企业微信官方):


四、联调与验收清单

4.1 最小联调步骤

  1. 外部客户发起企微客服会话并发送文本消息。
  2. EasyAI 收到回调并入队处理。
  3. 绑定的 Agent 返回回复内容。
  4. 客户侧在企微客服会话中收到机器人回复。

4.2 验收标准(建议)

  • 单条文本消息在 5 秒内收到回复(P95)
  • 重复回调不会重复回复(幂等生效)
  • openKfId 与回调 URL 的 open_kfid 一致时,消息可稳定命中对应渠道
  • 人工接管时机器人静默,释放后可恢复自动回复

4.3 排障顺序(推荐)

  1. 先看企微后台:回调是否持续失败、错误码是什么
  2. 再看网关日志:是否收到 webhook、验签/解密是否成功
  3. 再看 EasyAI 渠道配置openKfId/corpId/corpSecret/token/encodingAESKey 是否一致
  4. 最后看 Agent:是否绑定正确、是否因权限或模型配置导致无响应

五、上线建议

  • 建议先用单独客服应用做灰度(不要直接复用生产接待应用)
  • 渠道按业务拆分(售前/售后)并绑定不同 Agent,便于运营与审计
  • wecom-cs 单独设置告警(验签失败率、发送失败率、平均响应时延)

按以上步骤完成后,即可实现企业微信客服 IM 与 EasyAI 智能体的稳定对接。