从零搭建智能客服读懂这篇文章就够了在线文本客服系统早已成为企业服务用户的标配。无论是电商网站的悬浮窗还是App里的“联系客服”背后都有一套复杂而精巧的技术体系在支撑。本文将从整体架构、前后端交互、数据格式三个维度全面拆解一套现代在线客服系统的核心技术。一、整体架构分层与微服务化现代在线客服系统普遍采用前后端分离的微服务架构以确保高并发下的稳定性、功能扩展的灵活性以及持续交付的效率。整体上可以分为四层1. 接入层统一流量入口这一层负责接收来自网页、App、微信小程序、社交媒体等多种渠道的用户请求主要组件包括API网关如Nginx、Kong、Spring Cloud Gateway承担负载均衡、用户鉴权、请求限流等职责将不同渠道的请求标准化后转发给后端服务。协议支持同时处理HTTP用于历史消息查询、登录等非实时操作和WebSocket/SSE用于实时消息收发。2. 业务逻辑层系统的“大脑”由一组独立的微服务构成各司其职会话管理服务维护用户与客服或机器人之间的对话状态负责会话的创建、销毁和上下文存储。NLP引擎服务提供意图识别、实体抽取、情感分析等AI能力是智能客服的核心。路由与分配服务根据用户画像、客服技能组、当前负载等策略将用户请求智能分配给合适的机器人或人工坐席。人工客服服务为坐席人员提供工作台界面包括会话列表、快捷回复、客户信息等。工单/数据分析服务处理未解决问题的流转并为运营提供数据报表和监控大盘。3. 数据层多模存储协同不同类型的业务数据需要选择合适的存储引擎关系型数据库MySQL/PostgreSQL存储用户信息、客服账号、工单记录等结构化数据。键值存储Redis作为高性能缓存存放会话状态、在线状态、限流计数器等支撑高并发访问。全文检索引擎Elasticsearch对知识库FAQ进行快速的关键词检索帮助机器人匹配标准问答。向量数据库Milvus/FAISS用于存储和检索问题的高维向量实现语义级相似度搜索是高级NLP系统的标配。4. 基础设施层稳定的基石消息队列Kafka/RabbitMQ异步处理日志、对话数据、通知等削峰填谷避免突发流量冲垮系统。容器编排Kubernetes实现微服务的自动化部署、弹性伸缩和自我修复。下图展示了完整的分层架构及数据流向文字描述用户→接入层API网关→业务逻辑层会话管理、NLP引擎、路由分配、人工客服↔数据层MySQL、Redis、ES、Milvus同时业务逻辑层通过消息队列异步写入日志和监控数据基础设施层K8s负责调度所有服务。二、前后端交互双协议驱动在线客服对实时性要求极高因此前后端交互采用了WebSocket和HTTP两种协议协同工作的模式。1. WebSocket全双工实时通信适用场景用户与客服之间消息的实时双向收发。实现方式客户端与服务器建立一条WebSocket长连接后任意一方都可以随时向对方推送消息延迟低至毫秒级。服务端常用Socket.io、Netty等框架处理。优势全双工、低延迟是主流在线客服系统的首选。2. SSE服务端单向推送适用场景主要用于服务端向客户端单向推送流式数据例如AI机器人逐字输出回复类ChatGPT的流式生成。实现方式基于HTTP协议前端使用EventSourceAPI订阅后端设置响应头Content-Type: text/event-stream保持长连接。优势实现简单无需像WebSocket那样维护复杂的状态机。3. 一次完整的消息交互流程1用户发送消息前端通过WebSocket将JSON格式的消息含会话ID、内容等发送至后端。2后端处理① API网关鉴权后转发给会话管理服务。② 会话管理服务调用NLP引擎进行意图识别和实体抽取。③ NLP引擎根据意图检索知识库或调用大模型生成回复。3后端推送会话管理服务将生成的回复通过WebSocket推送给前端。4前端渲染前端收到消息后动态渲染到对话界面。5异步处理同时后端将交互日志通过消息队列发送到数据分析平台用于后续模型训练和监控。4. 会话状态管理为了支持多轮对话系统必须维护每个会话的“状态”。通常使用Redis存储会话上下文例如{ “sessionId”: “user_123_session_1”, “userId”: “user_123”, “currentIntent”: “return_goods”, “collectedInfo”: { “orderId”: null, “reason”: “quality_issue” }, “lastActiveTime”: “2026-03-31 15:30:30” }当用户下一句说“订单号是888888”时系统从Redis取出该上下文识别出这是在补充退货意图所需的信息从而完成连贯的多轮对话。三、数据格式统一JSON协议无论是WebSocket还是HTTP接口前后端交互的数据格式都围绕JSON展开并定义了一套统一的消息协议。1. WebSocket消息结构Envelope模式为保证长连接下能传输多种类型的数据文字、图片、事件、指令等消息体采用统一的包装结构{ “msgId”: “uuid-1234-5678”, “type”: “text”, // text, image, event, command “subType”: “user”, // user, agent, bot, typing, read_receipt “sessionId”: “sess_12345”, “sender”: { “id”: “user_001”, “role”: “customer” // customer, agent, bot }, “receiver”: { “id”: “agent_001”, “role”: “agent” }, “payload”: { “text”: “如何申请退货”, “metadata”: { “intent”: “return_goods”, “confidence”: 0.95 } }, “timestamp”: 1716547200000 }type和subType字段是前端区分业务逻辑的关键。payload根据type的不同可以包含文本、图片URL、文件信息等。2. HTTP API统一响应格式对于历史记录拉取、登录认证、会话评分等非实时操作采用RESTful风格响应体统一包装{ “code”: 0, // 0表示成功非0表示业务错误 “message”: “success”, “requestId”: “req_xyz789”, “data”: { // 实际业务数据 } }典型示例获取历史消息请求GET /api/v1/sessions/{sessionId}/messages?page1size20响应{ “code”: 0, “data”: { “total”: 120, “records”: [ { “msgId”: “msg_001”, “type”: “text”, “subType”: “user”, “payload”: { “text”: “你好” }, “timestamp”: 1716547200000 } ] } }3. 流式输出SSE的数据格式当集成大语言模型LLM时采用SSE实现逐字输出数据遵循text/event-stream规范event: message data: {“id”: “chunk_1”, “content”: “您好”, “finished”: false} event: message data: {“id”: “chunk_2”, “content”: “请问”, “finished”: false} event: done data: {“messageId”: “msg_003”, “finished”: true}前端通过EventSource或fetchReadableStream接收并实时拼接展示。4. 文件与富媒体交互发送图片或文件时采用两步上传策略避免Base64编码带来的开销1获取上传凭证前端调用HTTP接口请求预签名上传URL。2直传文件前端将二进制文件直接上传到云存储如OSS、S3。3发送引用消息通过WebSocket发送一条type为image或file的消息payload中包含文件URL。{ “type”: “image”, “payload”: { “url”: “https://cdn.example.com/files/abc.jpg”, “name”: “screenshot.png”, “size”: 102400 } }四、智能处理核心NLP引擎NLP引擎是智能客服的“大脑”其内部流程如下1预处理分词、去除停用词、文本归一化。2意图识别使用BERT、RoBERTa等预训练模型分类如“查订单”、“退货”、“转人工”。当置信度低于阈值如0.8时自动触发转人工。3实体抽取提取关键信息如“我要查今天能到吗”中的“今天”被识别为时间实体。4对话管理结合意图和上下文决定下一步动作简单场景用有限状态机FSM复杂场景用强化学习RL。5知识库检索与生成① 检索式从Elasticsearch或向量数据库中找到最相似的FAQ返回预设答案。② 生成式调用大语言模型动态生成个性化回复。五、总结一张表看懂核心设计维度技术选型数据格式实时消息WebSocket统一Envelope JSON业务操作HTTP REST{code, message, data}流式输出SSEtext/event-stream JSON块文件传输HTTP WebSocket二进制直传 引用JSON会话状态RedisJSON结构存储上下文智能问答NLPBERT/LLM 向量检索意图、实体、置信度等元数据在线文本客服系统是一项典型的高并发、实时、智能的互联网应用。通过分层的微服务架构、双协议通信、统一的JSON数据格式以及强大的NLP引擎它能够在海量用户请求下提供稳定、流畅、智能的服务体验。