企微客服助手 · 手机远程控制台(mobile-h5)
给客服本人用的手机 / 平板 H5:用 ZYT 账号登录,查看自己电脑上客服软件的运行状态,远程启动 /
停止自动回复,管理会话黑名单。有 wecom_rpa.remote/all 权限的主管可以切换查看其他客服。
- 技术栈:Vue 3 + Vite + Vant 4,hash 路由,按需引入 Vant 样式。
- 布局:手机单栏 + 底部标签栏;宽度 ≥ 768px(平板、电脑浏览器)切成左列表 / 右详情两栏。
- 适配:iOS 安全区(
viewport-fit=cover)、深色模式(跟随系统)、可"添加到主屏幕"(manifest + 不缓存的 Service Worker)。 - 托管:构建产物由管理端
wechat_rpa/admin_api.py挂在/m/,接口是同源的/api/v2/mobile/*。
独立项目
这个目录不属于 admin-web 的 pnpm workspace(pnpm-workspace.yaml 里有 !apps/mobile-h5),
依赖和锁文件都在本目录,不会影响 vben 管理端的安装和构建。
cd admin-web/apps/mobile-h5
pnpm install --ignore-workspace # 走本目录 .npmrc 里的 npmmirror
pnpm dev # http://127.0.0.1:5190/m/ ,/api 代理到 127.0.0.1:8766(MOBILE_API_TARGET 可改)
pnpm test # vitest:时间格式、设备 / 指令状态文案
pnpm build # vue-tsc 类型检查 + vite build → dist/
发布时把 dist/ 放到服务器 /opt/im-admin/admin-web/apps/mobile-h5/dist/(见
deploy/mobile-remote-20260928/),deploy/im-admin/Dockerfile 会把它一起打进镜像。
页面
| 路由 | 内容 |
|---|---|
#/login |
ZYT 账号密码登录(后台代登 ZYT 终端 8,密码不落地);公网明文 HTTP 下提示改用 HTTPS |
#/desktops |
电脑卡片:在线 / 离线、监听中 / 已停止、企业微信连接、回复通道、待处理数;启动 / 停止自动回复(需确认),下发后每 3 秒查询一次指令结果 |
#/conversations |
会话列表(来自聊天归档,只有名称、类型、最近时间,不含聊天正文)+ 搜索 + 黑名单页签;详情里加入 / 移出黑名单 |
#/me |
当前账号、五项手机端权限是否开通、登录信息、添加到主屏幕说明、退出登录 |
电脑离线(客服软件没开)时只显示"电脑离线",无法远程拉起;电脑上是旧版客服软件(没有命令通道)时显示 "版本过低",按钮不可用。
接口(/api/v2/mobile,Bearer 令牌)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/login |
{account, password, client_name} → {access_token, expires_at, me} |
| POST | /auth/logout |
同时注销 ZYT 终端 8 会话 |
| GET | /me |
账号、权限(control / control_all / blacklist_add / blacklist_remove / root)、会话有效期 |
| GET | /accounts?q= |
全部客服电脑概况,仅 wecom_rpa.remote/all |
| GET | /desktops?account_id= |
名下电脑与实时状态;account_id 仅 remote/all 可指定别人 |
| POST | /desktops/{device_id}/commands?account_id= |
{type: start_listening | stop_listening},离线 409 device_offline,旧版 409 client_outdated |
| GET | /commands/{id} |
指令状态:pending → delivered → succeeded / failed / expired / superseded |
| GET | /conversations?q=&scope=all|blocked&cursor=&limit= |
会话与黑名单状态 |
| PUT | /blacklist/{account}/{conversation}?account_id= |
{name, account_name, reason},需 wecom_rpa.blacklist/add |
| DELETE | /blacklist/{account}/{conversation}?account_id= |
需 wecom_rpa.blacklist/remove |
错误体统一是 {"detail": {"code": "...", "message": "给人看的中文"}},401 时前端清掉令牌回登录页。