Skip to content

feat(channels): 新增微信客服渠道 - #202

Closed
orhuoxu wants to merge 11 commits into
OpenBMB:mainfrom
orhuoxu:wechat-wecom-attachment
Closed

feat(channels): 新增微信客服渠道#202
orhuoxu wants to merge 11 commits into
OpenBMB:mainfrom
orhuoxu:wechat-wecom-attachment

Conversation

@orhuoxu

@orhuoxu orhuoxu commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

变更说明

新增微信客服渠道,将微信客服账号接入 StaffDeck 数字员工和团队,并复用现有 Durable Inbox、Harness v2 与渠道 Outbox。

主要功能

  • 支持两阶段配置微信客服 API 回调:先生成 URL、Token、EncodingAESKey,再保存 Secret
  • 支持回调 URL 验签、AES 解密、sync_msg 拉取及账号级 Cursor
  • 支持一个微信客服 API 配置管理多个客服账号
  • 支持客服账号选择、新建、编辑名称与头像、删除
  • 支持客服头像上传并传递 media_id
  • 支持每个客服账号绑定对应渠道的数字员工或团队
  • 支持客服账号二维码、分享链接和配置详情
  • 支持账号解绑、渠道删除后的重新绑定
  • 支持文本消息进入现有 AgentLoop,并通过微信客服接口回复
  • 增加微信客服账号映射表和 SQLite 兼容迁移

安全与可靠性

  • Secret、回调 Token、EncodingAESKey 加密保存,不返回前端
  • 使用微信消息 ID 做入站幂等
  • 入站消息写入 Durable Inbox,回复进入现有 Outbox
  • corp_id + open_kfid 隔离客户身份
  • 一个客服账号不能同时绑定多个 StaffDeck 渠道
  • 删除或断开渠道时释放客服账号映射

测试

  • backend/.venv/bin/python -m pytest backend/tests/test_channel_api.py backend/tests/test_wechat_kf_callback.py -q
    • 57 passed
  • npm --prefix frontend-enterprise run build
    • 构建通过
  • Ruff F/I 检查通过
  • git diff --check 通过

风险说明

  • 当前首版主要支持文本咨询;图片、语音、文件等客户消息的完整入站处理仍需后续扩展
  • 微信客服 API 的账号权限和反垃圾审核仍受企业微信平台配置约束

@fadeoreo

Copy link
Copy Markdown
Collaborator

微信客服功能的核心链路和测试看起来是完整的,相关测试已通过(57 passed)。

但当前 PR 分支无法 clean merge 到 main,GitHub 状态是 mergeable=false。这个 PR 基于较旧的 main,且与近期渠道、团队和附件相关改动重叠较多。

请先 rebase 最新 main,解决以下模块的冲突后再更新 PR:

  • backend/app/api/channels.py
  • backend/app/channels/service_intake.py
  • backend/app/channels/service_outbox.py
  • backend/app/db/models.py
  • frontend-enterprise/src/pages/ChannelsPage.tsx

rebase 后请重新运行微信客服测试、渠道 API 测试和前端 build。

@orhuoxu

orhuoxu commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

此 PR 已基于较旧主分支,现已基于最新 main 重新整理到 PR #203。关闭此旧 PR,后续请查看 #203

@orhuoxu orhuoxu closed this Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants