演示站在线 · 右下角就是真实的访客窗口

每一条咨询,
有人接、不丢失、可追溯

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

以客服身份接待
0 条主库被强杀切换后,逐条核对 2.1 万条已确认消息的丢失数
≈110 ms1550 条并发连接下,发送确认 p95
38 / 38验收项(AC01–AC38)逐项对应测试证据
/desk/ · 客服工作台
客服工作台:会话列表、对话区与访客信息面板
手机 H5 访客窗口
新会话 · 演示商城 · 已分配给小李
TRY IT

两分钟走完一次完整接待

演示站部署的是与生产相同的二进制。打开两个浏览器窗口(或一台电脑 + 一部手机),一边当访客,一边当客服,看消息如何被分配、接待、监控和统计。

访客

发起咨询

点页面右下角的气泡,选择咨询类型并发送问题;或用手机打开 H5 访客页。

打开访客窗口 →在新窗口打开 H5 →
客服小李

接单并回复

登录客服工作台,点左上角状态切到"接单",新会话自动分配进来;试试 / 调用常用语、转接、结束时选择解决情况。

登录客服工作台 →
演示主管

实时监控与协同

在商户后台"实时监控"看在线客服、排队与待回复预警;客服在会话头点"协同"即可邀请主管进入。

登录主管视角 →
管理员

看数据、改配置

数据概览与报表已有近 7 天的模拟咨询;访客端配置改主色与欢迎语,发布后访客窗口立即生效。

登录商户后台 →登录系统管理端 →
演示账号登录名密码
客服小李demo_agent1Demo@2026一键登录 →
客服小王demo_agent2Demo@2026一键登录 →
演示主管demo_supervisorDemo@2026一键登录 →
演示应用管理员demo_merchantDemo@2026一键登录 →
演示系统管理员demo_adminDemo@2026一键登录 →

演示环境说明:数据每天 03:40(北京时间)自动重置,并重新生成近 7 天的咨询记录。访客共用账号,所以这里关闭了强制改密与管理员两步验证,也不开放修改密码、绑定验证器与访问网络白名单;生产部署中这些都是强制的。

THREE CONSOLES, ONE ACCOUNT

三端合一,按职责各看各的

员工只有一个账号,按授予的角色看到系统管理端、商户后台或客服工作台;每个工作端都只加载本人有权限的应用与数据。

客服工作台

客服工作台

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

一条消息的旅程:先落库,再通知

实时通道只负责"提醒有变化",消息本身走 HTTPS 提交、在 MySQL 中与 outbox 同一事务保存。网关掉线、切网、重连都不会让消息丢失或重复。

1

客户端生成 ID

每条消息带 UUIDv7 client_message_id,时间可校验,重试用同一个 ID。

2

HTTPS 提交

消息、序号与 outbox 事件在 MySQL 同一事务写入;负责人与工作台代次同时校验。

3

显示"已保存"

只有提交成功才回执;应答丢了,就用原 ID 核实,返回第一次的结果。

4

WSS 变更提示

worker 投递 outbox,网关只推送不含正文的提示;无权限的人收不到内容。

5

按高水位补拉

对端按固定高水位补拉,序号单调;断线重连后从上次位置继续。

不重复同一 ID 只保存一次,内容不一致直接拒绝
不丢失已回执即已落库;半同步复制下主库故障 RPO=0
不乱序会话内序号单调,补拉以高水位为准
不越权推送不带正文,读取时按当前权限重新计算
1550并发连接(1500 访客 + 50 客服)全程保持
≈110 ms发送确认 p95(规划档 46.6 条/秒)
0.77 s对端可见 p95(访客侧)
1.2 s30% 连接同时掉线的重连风暴 p95
0主库强杀后已确认消息丢失 / 重复
32 s转储 + binlog 续放的地域恢复 RTO

数据来自仓库内的容量与韧性实测(单台 4 核机器,负载生成器、MySQL 与全部进程同机),只代表这台机器;80 条/秒业务峰值需数据库分机后复测。

CAPABILITIES

人工客服需要的,一次做扎实

首版不做机器人与知识库,把排队、分配、接待、监管和统计这条主链路做到可验收。

多应用隔离

一套部署服务多个业务应用;访客、会话、配置、字典与员工授权按应用隔离,跨应用不可见。

分配与排队

按客服组、容量与负载自动分配;排队位置实时更新,回头客优先回到上次的客服,首响超时自动改派。

可靠的接待状态

接单 / 忙碌 / 小休 / 离线带原因与时长;工作台心跳续租,失联自动重排,大面积失联时健康门暂停超时动作。

转接 · 协同 · 邀评

转接需对方接受;邀请有监管权的主管进入协同而不新增发言人;访客可在会话结束后评价一次。

实时监控与预警

待回复红色预警、排队超限、滞留会话;主管可只读查看、写内部备注、转接或结束。

留言闭环

非营业时间或无人在线转留言,可附图片;分配、处理、回访状态完整记录。

访客端品牌化

主色、欢迎语、快捷问题、服务说明与隐私告知按版本发布、随时回退。

效率工具

常用语分组与快捷码、个人常用语、键盘快捷键、批量结束;结束时必选咨询分类,统计口径一致。

报表与导出

首响、满意度、解决率、留言量,按应用 / 组 / 客服 / 分类聚合;导出为异步任务,带下载审计。

SECURITY & COMPLIANCE

权限与数据,按"最小可见"设计

客服系统里有客户的联系方式和对话正文。NexDesk 默认收紧,每一项放宽都要显式授权并留下审计。

每次请求重新计算权限

权限从 MySQL 按请求计算,不依赖缓存的令牌;撤权、停用即时截止,在途会话按规则重排。

管理员强制两步验证

系统 / 应用管理员必须绑定 TOTP;首次登录强制改密,登录与验证码均限速。

访问网络白名单

系统级与应用级两层 IP / CIDR 白名单,保存时校验本人 IP 防自锁;拒绝写审计。

工号水印

客服工作台全屏覆盖"公开名 · 工号 · 日期"水印,截图和打印都能追溯到人。

联系方式加密

访客电话与邮箱按版本密钥加密,检索走盲索引;密钥可轮换,展示时按权限掩码。

审计与保存期

授权、配置发布、查看联系方式、导出申请与下载全部审计;对话与附件按应用设置的保存期自动清理。

INTEGRATE & DEPLOY

一行脚本接入,一个二进制部署

不依赖外部 SaaS,数据只在自己的 MySQL 与对象存储里。

接入访客端

PC 网页嵌入右下角窗口(本页右下角就是这样接入的):

<script src="https://desk.example.com/static/js/embed.js"
        data-entry="w_XXXXXXXX" async></script>

手机 H5 直接打开 /chat/<入口>;业务 App 内嵌同一 H5,通过宿主桥接传入会员凭证(业务方私钥签名,NexDesk 用公钥校验)。

单一二进制,四种角色

serverJSON API、三端后台与访客页,无本地状态,可多实例
realtimeWSS 通知网关:一次性票据认证、变更提示、正在输入、心跳续约
workeroutbox 投递、自动分配、超时动作、报表、导出与保存期清理
all三者合一,用于单节点试点(本演示站即是)
Go 1.24 · go-zeroMySQL 8.4 LTSValkey / RedisS3 兼容对象存储Prometheus 指标与告警distroless 镜像 ≈50 MB

现在就试一次

在右下角以访客身份发一句话,再用"客服小李"登录工作台把它接起来。

登录客服工作台