# 企业微信客服

Source: https://langbot.app/docs/zh/usage/platforms/wecom/wecomcs

用 LangBot 配置企业微信客服，提供 AI 驱动的客服对话。

> 本文详细讲述 LangBot 部署到企业微信客服号的过程，此功能可以将客服号与普通微信进行对话。若只需要在企业微信内部使用，请参考\[企业微信内部应用实现]\(wecom)。:
>
> **部署企业微信客服号需要企业资质**，具体查看[企业微信客服号接入指南](https://developer.work.weixin.qq.com/document/path/94638)，并且根据此文档提供对应的企业资质证明。

## 效果图

![效果图](https://langbot.app/docs/images/zh/deploy/bots/wecom/wecomcs/wecomcs_01.jpg)

## 部署企业微信客服

#### 配置企业微信客服页面

打开[企业微信客服后台](https://kf.weixin.qq.com/kf)，登录之后进入，点击`企业信息`，获取`企业ID`。

![主页](https://langbot.app/docs/images/zh/deploy/bots/wecom/wecomcs/wecomcs_03.png)

保存企业ID，然后点击`开发配置`，点击`开始使用`，进入之后随机获取 Token，EncodingAESKey，随后将此三项填写入 LangBot 配置页中，Secret 随便填写,如图：

![connect](https://langbot.app/docs/images/zh/deploy/bots/wecom/wecomcs/connect_to_langbot.png)

点击 LangBot 配置页中的提交，启用机器人，复制 WebHook回调地址，填写入企业微信客服后台中的 URl （记得改成自己的 ip 或者域名），点击保存，如果可以保存成功，那么说明可以正常连接。

> idea:
>
> **配置域名太麻烦？** [LangBot Cloud](https://space.langbot.app/cloud) 自带域名和 HTTPS，无需自行配置，开箱即用。

复制页面中的 Secret，然后打开新建好的 LangBot 企业微信客服机器人，填写入新的 Secret，重新启动。

## 获取客服链接和二维码

完成回调配置后，还需要获取供微信用户发起咨询的入口。

1. 回到[微信客服后台](https://kf.weixin.qq.com/kf)，进入`客服帐号`，创建或选择需要接入 LangBot 的客服帐号。
2. 打开该帐号的接入页面，向下找到`在微信外App/网页中接入`，点击`去接入`。

![在微信外 App 或网页中接入微信客服](https://langbot.app/docs/images/zh/deploy/bots/wecom/wecomcs/customer-service-entry.png)

3. 在接入页面顶部找到对应的客服帐号。点击`复制链接`可获取客服咨询链接，点击`生成二维码`可查看该帐号的咨询二维码。

![复制客服链接或生成二维码](https://langbot.app/docs/images/zh/deploy/bots/wecom/wecomcs/customer-service-link.png)

> info:
>
> 截图中的客服链接仅作示例，请使用自己帐号生成的链接或二维码。Webhook 回调地址用于微信向 LangBot 推送消息，客服链接和二维码用于用户发起咨询。

## 扫码测试

1. 确认 LangBot 中的机器人已启用，并在`事件路由`中将`收到消息`交给需要使用的处理器。
2. 使用普通微信扫描刚生成的二维码，进入客服会话后发送一条消息。
3. 在 LangBot 中查看机器人的日志、会话监控及对应处理器的运行日志，确认消息已接收并处理，再检查微信中是否收到回复。

如果只是扫码测试，获取二维码后即可发起咨询，无需继续配置页面下方的 App 关联。

## 可路由的事件

在机器人的「事件路由」中，可以分别为以下事件选择处理器。普通消息可交给流水线或 Agent；其他事件可交给支持相应事件的 Agent 或插件处理器。

| 事件                | 事件类型                                        |
| ----------------- | ------------------------------------------- |
| 收到消息              | `message.received`                          |
| 客户或接待人员撤回消息       | `message.deleted`                           |
| 客户通过链接进入会话        | `wecomcs.enter_session`                     |
| 客服消息发送失败          | `wecomcs.msg_send_fail`                     |
| 接待人员状态变更          | `wecomcs.servicer_status_change`            |
| 客服会话接入、转接、结束或重新接入 | `wecomcs.session_status_change`             |
| 拒收客户消息设置变更        | `wecomcs.reject_customer_msg_switch_change` |

撤回事件包含原消息 ID、操作者和会话 ID。客服专属事件保留客服帐号、客户及事件相关字段，例如 `welcome_code`、`fail_type` 和 `change_type`；处理器可按字段决定后续操作。未知事件仍通过 `platform.specific` 保留原始数据。

进入会话事件只在客户通过客服链接进入时触发，从已有聊天列表打开会话不会触发。接入事件不等于自动发送欢迎语，仍需配置相应处理逻辑。

### 回复窗口与欢迎语

- 普通消息回复要求客户先主动发消息，且在 48 小时内回复；仅进入会话不会开启此窗口。错误码 `95002` 表示不满足发送时间限制。
- Agent 的 `event_reply` 在进入会话事件中使用专用事件回复接口和 `welcome_code`，不会当作普通消息发送。微信只在符合欢迎语条件时提供此凭据，每个凭据只能发送一条消息，有效期仅 20 秒。建议使用快速固定文案，避免等待耗时较长的模型生成。
- 会话状态变化事件的 `event_reply` 使用 `msg_code`，仍受凭据有效期和当前会话状态限制。当前事件回复支持文本；凭据缺失、过期或已使用时无法补发，重新执行旧事件不能延长有效期。

详见微信官方的[发送消息](https://developer.work.weixin.qq.com/document/path/94677)和[发送事件响应消息](https://developer.work.weixin.qq.com/document/path/95122)。
