每一条咨询,
有人接、不丢失、可追溯
NexDesk 是为自有业务私有部署的人工客服系统:系统管理端、商户后台、客服工作台三端共用员工账号,访客经 PC 网页嵌入、手机 H5、业务 App 接入。一套部署服务多个业务应用,消息先落库再通知,撤权即时生效。

两分钟走完一次完整接待
演示站部署的是与生产相同的二进制。打开两个浏览器窗口(或一台电脑 + 一部手机),一边当访客,一边当客服,看消息如何被分配、接待、监控和统计。
| 演示账号 | 登录名 | 密码 | |
|---|---|---|---|
| 客服小李 | demo_agent1 | Demo@2026 | 一键登录 → |
| 客服小王 | demo_agent2 | Demo@2026 | 一键登录 → |
| 演示主管 | demo_supervisor | Demo@2026 | 一键登录 → |
| 演示应用管理员 | demo_merchant | Demo@2026 | 一键登录 → |
| 演示系统管理员 | demo_admin | Demo@2026 | 一键登录 → |
演示环境说明:数据每天 03:40(北京时间)自动重置,并重新生成近 7 天的咨询记录。访客共用账号,所以这里关闭了强制改密与管理员两步验证,也不开放修改密码、绑定验证器与访问网络白名单;生产部署中这些都是强制的。
三端合一,按职责各看各的
员工只有一个账号,按授予的角色看到系统管理端、商户后台或客服工作台;每个工作端都只加载本人有权限的应用与数据。

客服工作台
- 会话列表按进行中 / 排队 / 已结束分栏,支持待回复、未读、滞留与入口筛选
- 回复与内部备注分开;
/调用常用语,个人常用语与使用次数 - 转接邀请、邀请主管协同、主动邀评、结束时记录解决情况与咨询分类
- 右侧访客面板:身份、入口、来源搜索词、终端、历史咨询与标签
- 同一账号多标签只有一个"发送工作台",接管需要确认;全屏工号水印

访客端 PC 嵌入H5App
- 一行
<script>嵌入任意网页;H5 直接打开;App 内用 H5 + 宿主桥接 - 欢迎语、快捷问题、咨询类型、服务时间说明与隐私告知,均由商户后台发布
- 匿名访客也能找回本机的历史咨询;会员可用业务方签名的凭证登录
- 非营业时间或无人在线时转留言,联系方式加密保存
- 严格 CSP、无内联脚本;嵌入窗口与宿主页之间每条消息都校验来源

实时监控(主管)
- 在线客服、接待中、排队与最长等待,5 秒刷新,支持大屏模式
- 预警中心:待回复超时、排队超限等由实时状态推导,点即跳到对应列表
- 按组查看客服负载、今日对话、平均响应与满意度
- 有正文监管权时可进入只读时间线、写内部备注,或转接 / 结束会话
- 协同请求卡片:客服点"协同"后主管在这里一键进入

数据概览与报表
- 对话量趋势、平均首次响应、满意度、留言,今日 / 昨日 / 近 7 天 / 近 30 天
- 入口分布、热门咨询分类与解决率、满意度分布
- 应用报表按应用 / 组 / 客服 / 分类聚合,统计口径固定为报告时区
- 对话记录可按时间、客服、分类、评价筛选,导出为异步任务
- 只含聚合数据,概览页不加载聊天正文

访客端配置(商户后台)
- 主色、标题、头像、欢迎语、服务说明、快捷问题,所见即所得预览
- 营业时间、路由与提醒、隐私告知分别管理
- 每项配置都是"草稿 → 发布 → 可回退"的版本,发布即对访客生效
- 入口与接入密钥、会员凭证公钥、常用语与咨询分类字典
- 员工、客服组、防骚扰、保存期限和应用级访问网络白名单

系统管理端
- 应用、员工、角色与共享客服组;按应用授权并设授权上限
- 运行页:实例心跳、依赖状态、outbox 积压、失败任务重新调度
- 健康门:Redis 不可验证或网关缺失时暂停超时类动作,恢复后给满宽限
- 全局报表、导出、审计日志与生命周期(保存期)设置
- 系统级访问网络白名单,带防自锁与运维兜底命令
一条消息的旅程:先落库,再通知
实时通道只负责"提醒有变化",消息本身走 HTTPS 提交、在 MySQL 中与 outbox 同一事务保存。网关掉线、切网、重连都不会让消息丢失或重复。
客户端生成 ID
每条消息带 UUIDv7 client_message_id,时间可校验,重试用同一个 ID。
HTTPS 提交
消息、序号与 outbox 事件在 MySQL 同一事务写入;负责人与工作台代次同时校验。
显示"已保存"
只有提交成功才回执;应答丢了,就用原 ID 核实,返回第一次的结果。
WSS 变更提示
worker 投递 outbox,网关只推送不含正文的提示;无权限的人收不到内容。
按高水位补拉
对端按固定高水位补拉,序号单调;断线重连后从上次位置继续。
数据来自仓库内的容量与韧性实测(单台 4 核机器,负载生成器、MySQL 与全部进程同机),只代表这台机器;80 条/秒业务峰值需数据库分机后复测。
人工客服需要的,一次做扎实
首版不做机器人与知识库,把排队、分配、接待、监管和统计这条主链路做到可验收。
多应用隔离
一套部署服务多个业务应用;访客、会话、配置、字典与员工授权按应用隔离,跨应用不可见。
分配与排队
按客服组、容量与负载自动分配;排队位置实时更新,回头客优先回到上次的客服,首响超时自动改派。
可靠的接待状态
接单 / 忙碌 / 小休 / 离线带原因与时长;工作台心跳续租,失联自动重排,大面积失联时健康门暂停超时动作。
转接 · 协同 · 邀评
转接需对方接受;邀请有监管权的主管进入协同而不新增发言人;访客可在会话结束后评价一次。
实时监控与预警
待回复红色预警、排队超限、滞留会话;主管可只读查看、写内部备注、转接或结束。
留言闭环
非营业时间或无人在线转留言,可附图片;分配、处理、回访状态完整记录。
访客端品牌化
主色、欢迎语、快捷问题、服务说明与隐私告知按版本发布、随时回退。
效率工具
常用语分组与快捷码、个人常用语、键盘快捷键、批量结束;结束时必选咨询分类,统计口径一致。
报表与导出
首响、满意度、解决率、留言量,按应用 / 组 / 客服 / 分类聚合;导出为异步任务,带下载审计。
权限与数据,按"最小可见"设计
客服系统里有客户的联系方式和对话正文。NexDesk 默认收紧,每一项放宽都要显式授权并留下审计。
每次请求重新计算权限
权限从 MySQL 按请求计算,不依赖缓存的令牌;撤权、停用即时截止,在途会话按规则重排。
管理员强制两步验证
系统 / 应用管理员必须绑定 TOTP;首次登录强制改密,登录与验证码均限速。
访问网络白名单
系统级与应用级两层 IP / CIDR 白名单,保存时校验本人 IP 防自锁;拒绝写审计。
工号水印
客服工作台全屏覆盖"公开名 · 工号 · 日期"水印,截图和打印都能追溯到人。
联系方式加密
访客电话与邮箱按版本密钥加密,检索走盲索引;密钥可轮换,展示时按权限掩码。
审计与保存期
授权、配置发布、查看联系方式、导出申请与下载全部审计;对话与附件按应用设置的保存期自动清理。
一行脚本接入,一个二进制部署
不依赖外部 SaaS,数据只在自己的 MySQL 与对象存储里。
接入访客端
PC 网页嵌入右下角窗口(本页右下角就是这样接入的):
<script src="https://desk.example.com/static/js/embed.js" data-entry="w_XXXXXXXX" async></script>
手机 H5 直接打开 /chat/<入口>;业务 App 内嵌同一 H5,通过宿主桥接传入会员凭证(业务方私钥签名,NexDesk 用公钥校验)。
单一二进制,四种角色
| server | JSON API、三端后台与访客页,无本地状态,可多实例 |
| realtime | WSS 通知网关:一次性票据认证、变更提示、正在输入、心跳续约 |
| worker | outbox 投递、自动分配、超时动作、报表、导出与保存期清理 |
| all | 三者合一,用于单节点试点(本演示站即是) |