全部
常见问题
产品动态
精选推荐

建一套支持 多商户(多租户) 的全渠道智能客服系统

管理 管理 编辑 删除

Java 多商户客服系统技术方案(含架构图与数据设计)

目标:搭建一套支持 多商户(多租户) 的全渠道智能客服系统,覆盖网页/APP/小程序接入、实时 IM、会话分配、工单流转、知识库、统计报表,满足 高并发、可观测、安全合规 要求,并支持 开源二开或私有化部署。


1. 总体架构概览

┌────────────────────────── SaaS/私有化 控制面 ──────────────────────────┐
│  租户管理(Tenant)  计费&订阅  运营配置  账号&权限  风险与审计  管理后台 │
└─────────────────────────────────────────────────────────────┘
                         │
                         ▼
┌────────────────────────── 数据层 ────────────────────────────┐
│ MySQL/PG(主从/分片)  Redis(缓存/队列)  ES(全文检索)  MinIO(文件) │
└─────────────────────────────────────────────────────────────┘
                         │
                         ▼
┌────────────────────────── 服务层(微服务) ──────────────────────────┐
│  网关(API Gateway)  鉴权(Auth)  多租户路由(Tenant Router)          │
│  会话/会话分配(Session & Routing)   客服工作台(Agent Service)        │
│  消息(IM Service: WebSocket/STOMP)   渠道接入(Channel Adapters)     │
│  工单(Ticket)  知识库(KB)  统计报表(Analytics)  通知(Notify)        │
│  机器人/FAQ(Bot)  Webhook/集成(Integration)  审计(Audit)            │
└─────────────────────────────────────────────────────────────┘
                         │
                         ▼
┌────────────────────────── 边缘/接入层 ───────────────────────────┐
│ Web SDK  小程序SDK  App SDK  第三方渠道(公众号/企微/钉钉/短信/邮件) │
└─────────────────────────────────────────────────────────────┘

关键技术选型

  • 后端:Java 17、Spring Boot 3、Spring Cloud (Gateway/Nacos/OpenFeign/Resilience4j)
  • 持久化:MySQL 8 / PostgreSQL 14 + MyBatis-Plus(多租户插件)
  • 缓存/会话:Redis(Cluster)
  • 消息队列:RabbitMQ / Kafka(二选一;推荐 Kafka 做高吞吐消息流)
  • 全文检索:Elasticsearch/OpenSearch(聊天记录检索)
  • 对象存储:MinIO / S3(图片、语音、文件)
  • 长连接:Spring WebSocket + STOMP(可替换为 Netty)
  • 前端:Vue3 + Vite + TypeScript;UI:Element Plus/Ant Design Vue
  • 部署:Docker + Kubernetes(HPA 自动扩缩)
  • 观测:Prometheus + Grafana + Loki,SkyWalking/Jaeger(链路)
  • 鉴权:OAuth2.1/OpenID Connect(Keycloak/自建 Auth)


2. 多租户(多商户)隔离模型

关键实现点

  • 全链路透传 X-Tenant-Id(Header、JWT Claim、WS SUB topic)
  • MyBatis-Plus 多租户拦截器按列自动拼接 tenant_id
  • 租户级限流(Gateway 层 + Redis Token Bucket)
  • 数据脱敏与 RBAC 权限按租户隔离


3. 核心域与服务说明

3.1 渠道接入 (Channel Adapters)

  • Web/H5 SDK:嵌入式气泡、全屏面板、匿名/登录访客
  • 小程序/APP SDK:同域名直连或反向代理;原生/混合容器
  • 第三方:微信公众号/企微/钉钉/邮箱/短信/电话SIP(按适配器接入)

3.2 即时通讯 IM Service

  • 协议:WebSocket + STOMP;Topic 命名:/topic/{tenantId}/{convId}
  • 消息投递:WS → Kafka im.messages → 持久化/路由 → 推送在线坐席
  • 历史消息:ES + MySQL 混合(冷热数据分层)

3.3 会话与分配 Session & Routing

  • 入口:访客发起会话或渠道 webhook
  • 分配策略: 轮询(Round-Robin)/最少会话/最大并发阈值 技能标签(Skill-Based)与优先级(VIP、渠道) 工作时间、排班、SLA 阈值、机器人优先
  • 队列与排队:Redis ZSet 维护等待队列;超时回退机器人

3.4 客服工作台 Agent Service

  • 多会话标签页、快捷回复、知识库检索、工单一键创建
  • 屏蔽词/敏感词检测、消息撤回、转接/邀请协作

3.5 工单 Ticket & CRM

  • 工单模板、状态机(Open → Pending → Solved → Closed)
  • SLA 计时、升级策略(超时自动升级/通知)
  • 用户画像(标签、设备、最近会话、CSAT)

3.6 统计与报表

  • 实时指标:在线坐席、排队人数、平均响应、解决时长
  • 经营报表:按租户/渠道/坐席/技能组聚合

3.7 机器人/知识库(可选)

  • FAQ 检索、意图路由、智能建议;所有模型调用在 服务端 侧以保护密钥


4. 关键数据模型(简表)

命名约定:所有表含 tenant_id;时间均为 UTC,应用层按租户时区展示。

tenant(id, name, plan, status, created_at)

user(id, tenant_id, role[admin/agent/viewer], email, phone, hashed_password, status, last_login)

visitor(id, tenant_id, external_id, nickname, channel, device, locale, created_at)

agent_skill(id, tenant_id, agent_id, skill, level)

conversation(id, tenant_id, channel, visitor_id, status[open/queued/assigned/closed], priority, assigned_agent_id, queue_at, first_reply_at, solved_at, close_reason)

message(id, tenant_id, conversation_id, from_type[visitor/agent/bot/system], from_id, content_type[text/image/file/event], content, meta(json), created_at, seq)

ticket(id, tenant_id, subject, description, requester_id, assignee_id, status, priority, sla_policy_id, related_conversation_id)

kb_article(id, tenant_id, title, body, tags, visibility, updated_at)

webhook_sub(id, tenant_id, url, events, secret, status)

audit_log(id, tenant_id, actor_type, actor_id, action, target, data, ip, created_at)

analytics_daily(id, tenant_id, date, channel, sessions, messages, avg_first_reply_sec, csat, solved_cnt)

索引建议:

  • conversation(tenant_id, status, assigned_agent_id)
  • message(conversation_id, seq)、message(tenant_id, created_at)
  • visitor(tenant_id, external_id)


5. API 设计(REST + WS)

5.1 认证与多租户

  • JWT 承载 tenant_id、roles;Gateway 校验并注入上下文
  • 请求头要求:Authorization: Bearer <token> + X-Tenant-Id: <tid>

5.2 主要 REST 接口(示例)

  • POST /api/v1/conversations 启动会话(访客/渠道)
  • GET /api/v1/conversations?status=queued&skill=xx 列表
  • POST /api/v1/conversations/{id}/assign?agentId= 指派/转接
  • POST /api/v1/messages 发送消息 {conversationId, content, type}
  • POST /api/v1/tickets 创建工单
  • GET /api/v1/analytics/realtime 实时指标
  • POST /api/v1/webhooks/test 测试回调

5.3 WebSocket 通道

  • 连接:wss://gw.example.com/ws?token=...
  • 订阅:/topic/{tenantId}/{conversationId}
  • 发送:/app/message.send(服务端鉴权后广播)


6. 会话分配与消息流转(时序图)

6.1 访客接入 → 坐席分配

Visitor → Gatewa


请登录后查看

小码二开 最后编辑于2025-08-31 20:09:10

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
110
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服