资讯中心

朵米客服系统3.5部署实战:多渠道接入与AI大模型自动回复

📅 2026/10/13 19:20:46
朵米客服系统3.5部署实战:多渠道接入与AI大模型自动回复
简介一份集成AI能力的朵米客服系统3.5无限制开心版附带详细搭建文档主要面向需要快速搭建企业级在线客服体系的开发者、运维人员与中小企业。系统支持在线聊天、邮件、电话等渠道具备智能分流、自动回复、数据报表等能力能有效降低客户响应耗时提升服务效率与客户粘性。资源包含完整后端PHP源码、前端JS/CSS交互层、数据库SQL脚本及部署辅助Shell脚本同时提供宝塔面板下的环境配置说明覆盖Nginx、PHP7.1-7.3、MySQL5.6-5.7等版本匹配和常见踩坑点适合有一定Linux基础、希望二次开发或直接投产的读者。压缩包共2000个文件大小42.83MB以JS、HTML、CSS、PHP、SQL等类型为主目录结构清晰便于按功能模块检索。目前已有67人学习下载借助文档可快速完成从部署到上线的全流程获得一套可实际运行的AI客服系统。1. 朵米客服系统3.5把网页、邮件、AI回复收进一个工作台的客服系统做过客服系统交付的同行都有同感客户不可能只从网页进来微信、邮件、电话渠道一多客服端就要同时开着好几个后台来回切换效率极低。朵米客服系统3.5正是把这些入口收进一个工作台的PHP方案而且这一版最大的变化是加了AI自动回复模块可以直接接大模型接口让机器人先顶住重复咨询。本次要拆的这个无限制开心版授权验证已经提前处理掉压缩包里带着完整搭建文档我在2核2G的云服务器上实测能跑通。适合想两天内搭出一套自用客服系统的小团队也适合接外包的开发者拿来改造成自己的交付物。接下来按架构→环境→部署→AI→排查→验证完整走一遍。2. 系统架构拆解多渠道接入、智能分流与AI链路的三层逻辑2.1 前端技术栈与后台结构从静态资源判断系统骨架打开资源包会看到一批CSS和JS文件像amazeui.css、layui.css、bootstrap.min.css、app.ccaa54a563bd7edef54a4a5dbd192ae7.css这种带哈希后缀的文件。这已经能透露不少信息它并不是一个前后端分离的单页应用而是传统的 PHP 多页 前端框架混用。客服工作台这边用了 AmazeUI管理后台用的是 Layui客户端聊天窗用的是 Bootstrap三种框架并存说明这套系统的不同端是独立开发的然后被整合到同一个会话池里。这个判断对部署很重要。第一它决定了静态资源必须走正常的 Web 服务不能开什么特殊的资源映射第二带哈希后缀的 CSS/JS 文件都在public/static目录下Nginx 的伪静态规则必须放行这些目录否则页面会白屏无样式。第三这套代码对 PHP 版本有要求摘要里明确写了 7.1-7.3而我实际查过它用了一些 PHP 7 的匿名类和标量类型声明所以千万别拿 PHP 5.6 去跑会直接语法错误。2.2 多渠道接入网页聊天、邮件工单与电话回拨的统一入口朵米客服系统把客户来源抽象成会话这一个概念有点类似工单系统但更偏实时通话。网页端是通过一段 JS 嵌入到你的站点访客点开就是聊天窗口这条链路走的是 WebSocket 或轮询邮件端则是通过 IMAP/POP3 协议定时拉取邮箱里新到的邮件把邮件转换成一条离线会话电话端它做的是回拨模式——客服点呼叫系统通过 PSTN 网关拨给客户通话记录也归到会话里。这套设计的好处是客服端只需要盯住一个会话列表不用管客户是从哪个入口来的。所有渠道进来的消息最终都落到session这张表里通过channel字段区分来源。我在后台跑过一条 SQL 统计能明显看到不同渠道的会话量和平均响应时长这就是后面做数据分析的原始数据来源。理解了这一层你调代码时就不会被一堆work_order、telephone_log、web_chat之类的表绕晕——它们只是session的扩展表。2.3 智能分流规则技能组、来源标记与当前负载的优先级所谓智能分流不是随机分配它内部配了一套类似呼叫中心 ACD自动呼叫分配的规则执行顺序是固定的。第一优先级是技能组匹配管理员在后台给客服分组比如售前组售后组投诉组客户在网页端选我要退货系统就按预设规则把会话扔给售后组。第二优先级是来源标记比如从商品详情页发起的聊天会自动标记到负责该商品的客服。第三优先级才是负载均衡这也是最容易忽略的。系统会给每个在线客服统计当前进行中会话数和最大接待上限两个字段计算公式大致是当前会话数 / 最大接待上限比值小的优先收到新会话而不是简单轮询。我在源码里看到这部分的算法是按字典序取最小值的也就是说同一个客服如果连续结束几个会话他的比值会降下来新会话会重新分配给他。这个逻辑在搭建文档里没细讲但你在后台调接待上限参数时就能感受到上限设成0表示不限制设成5表示同时最多接 5 个超过后即使空闲也不会新分配适合应对单一客服账号被多个网页拖死的情况。2.4 AI 自动回复规则命中优先大模型兜底3.5 版本最值得说的就是 AI 模块。它不是简单的关键词回复而是分了两层第一层是规则层管理员可以在后台配置关键词→回复的映射比如客户发运费就自动回复运费说明。这一层命中就直接拦截不会把消息传给客服也不消耗 API 调用。第二层才是大模型兜底当规则层没命中时系统会把当前会话的上下文最近 20 条消息拼接成一个 prompt发给配置好的大模型 API然后把模型返回的内容作为客服的回复发送出去。这里有个实现细节它并不是完全替代人而是给客服一个AI 生成回复的按钮。客服在聊天窗口可以看到 AI 建议的回复文案一键选用也可以直接自动回复后台可配置开关。这个设计很聪明避免了 AI 胡说八道直接发给客户的尴尬。源码里app/controller/Ai.php这个控制器就是干这个的里面定义了chat()、reply()和settings()三个方法分别处理会话、生成回复和保存配置。你后续接大模型时只需要改一个配置文件里的 API 地址和 key后面第四章我详细讲参数。3. 搭建环境准备CentOS 7.6 宝塔 Nginx PHP 7.2参数这样设最稳3.1 服务器配置怎么选2核2G跑这套系统的真实余量摘要给出的推荐配置是 CPU 2核、内存 2G、带宽 5M我照这个配置买了一台腾讯云轻量服务器实测。实际情况是空闲时候内存占用大概 900MPHP-FPM 每进程吃 30-50MMySQL 5.7 启动后就要吃掉 400M 左右2G 内存其实是刚好卡线的。如果同时开 Redis 和大量聊天推送内存会飙到 1.6G 以上这时候就需要 swap 兜底。建议部署前加一个 2G 的 swap 文件命令如下dd if/dev/zero of/swapfile bs1M count2048 mkswap /swapfile swapon /swapfile echo /swapfile swap swap defaults 0 0 /etc/fstab这段做了三件事创建 2G 的 swap 文件、格式化成 swap 分区、启用它最后写进/etc/fstab让它重启后自动挂载。我一般会在跑 PHP 项目前都加这一步特别是内存不太富裕的机器。加了 swap 之后即使 PHP-FPM 进程突然涨到 1.8G系统也不至于直接 OOM 把 MySQL 杀掉。带宽这块5M 对于一个客服系统是够的因为聊天消息本身只有几 KB主要流量在静态资源。首次加载客服页面可能会用到 2-3M 带宽几十个客服同时登录会有一点压力但不会打满。如果是带微信消息推送的渠道建议用轻量服务器的流量包否则跑一个月对话记录可能会超流量。3.2 宝塔面板安装与 LNMP 环境初始化宝塔面板是目前部署这套系统最省心的方式因为它自带的 Nginx、PHP、MySQL 版本可以逐项选择。这里强调一下环境组合建议用 LNMPNginx MySQL PHP不要用 LAMPApache因为朵米的伪静态规则是按 Nginx 写的Apache 下要重新配.htaccess而且文档里没给。宝塔安装命令用官方的一键脚本yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh装完会输出面板地址、用户名和密码这里不赘述。进入面板后在软件商店里安装 Nginx 1.21、MySQL 5.7、PHP 7.2。注意别装 PHP 8.0我在踩坑记录里看到过 8.0 下朵米后台会报preg_replace()函数被移除的错误因为老代码用了/e修饰符。PHP 7.2 是兼容性和性能最平衡的版本官方文档给的 7.1-7.3 范围里我推荐 7.2。3.3 PHP 配置要点扩展、内存与超时在宝塔的PHP 设置里除了默认的常用扩展建议额外安装fileinfo、opcache、redis。fileinfo是用在文件上传时检测 MIME 类型的朵米的邮件附件和聊天图片上传都依赖它不装的话上传会报finfo_open(): Failed to enable。redis是给会话缓存用的虽然不装也能跑但装了之后可以把 session 存到 Redis客服登录不再频繁掉线。PHP 的php.ini关键参数按下面这份改改完记得重载 PHPmemory_limit 256M max_execution_time 300 post_max_size 50M upload_max_filesize 50M session.cookie_lifetime 86400 opcache.enable 1 opcache.memory_consumption 128参数说明memory_limit设置 256M 是因为朵米在处理邮件转换时会加载整个邮件体128M 可能不够max_execution_time设置成 300 秒是为了给大模型 API 接口的curl请求留出响应时间如果你的网络到 API 服务商的延迟高这个值小了会经常请求超时upload_max_filesize50M 对应后台批量导入客户数据表的需求。session.cookie_lifetime86400 表示登录状态保持一天避免客服工位用着用着突然弹出重新登录。4. 部署朵米 3.5从上传源码到 AI 接口接通的完整步骤4.1 创建站点与数据库目录规划与伪静态规则在宝塔面板左侧打开网站 → 添加站点域名填你准备用来访问客服系统的域名或 IPPHP 版本选 7.2数据库选 MySQL 5.7其他默认。创建完成后进入网站设置 → 配置文件把 Nginx 伪静态规则替换成下面这段location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s$1 last; break; } } location ~ \.php(.*)$ { fastcgi_pass unix:/tmp/php-cgi-72.sock; fastcgi_index index.php; fastcgi_split_path_info ^((?U).\.php)(/?.)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }第一段if是典型的 ThinkPHP 伪静态当请求的文件在磁盘上不存在时把它重写到index.php并把原来的路径作为s参数传进去。这样/chat/start这种 URL 就会由框架的路由来处理。第二段设置 PHP 解析必须关掉宝塔默认的include enable-php-72.conf中的一些冲突配置否则.php文件可能不被正确执行。fastcgi_pass后面的 socket 路径要和你 PHP 版本一致这里是 7.2。4.2 上传源码并设置目录权限runtime 目录必须可写把资源包里的所有文件上传到站点根目录比如/home/www/duomi。上传方式我习惯用宝塔自带的文件管理器压缩包直接上传后在线解压免去 FTP 断点续传的麻烦。上传完成后必须设置目录权限这一步不做网站前端还是能打开但后台一登录就报runtime 目录不可写之类的错误。执行以下命令cd /home/www/duomi chmod -R 755 . chmod -R 777 runtime chmod -R 777 upload chmod -R 777 application/database.php chmod -R 777 application/config.php第一行把全部文件设置成 755所有者可读写执行其他人只读执行这是生产环境的常规姿势。runtime和upload必须 777因为 PHP-FPM 进程是以www用户运行的如果站点文件属主是rootwww用户没有写权限日志缓存、会话缓存、上传图片都会写不进去。application/database.php和application/config.php也必须可写因为安装向导要往这两个文件里写入数据库配置和站点参数。有些朋友图省事直接chmod -R 777 .我不推荐会让源码文件也被任意修改有安全风险。4.3 安装向导数据库配置与管理后台初始化在浏览器里访问你绑定的域名系统会检测到还没安装自动跳到/install页面。这一步的界面是朵米自己的安装向导与 ThinkPHP 默认的全中文界面稍有不同会先检查环境PHP 版本、扩展、目录权限全部打勾后进入数据库配置表单。填写项里注意数据库地址一般填127.0.0.1不要填localhost因为 PHP 的 mysqli 扩展在有的环境下查localhost会走 socket而宝塔的 MySQL 默认监听在 3306 端口两者不一致会报连接失败。数据库名、用户名、密码就是你 4.1 步创建站点时设置的。填好以后点安装进度条大概走 30 秒左右创建了全部数据表然后生成后台初始账号admin初始密码一般是admin888具体看安装完成页面的提示建议登录后立刻改掉。安装完成后还有一个动作删除install目录。如果不删别人访问/install能重新安装把你数据库清空重来。命令是cd /home/www/duomi rm -rf install4.4 配置 AI 模块修改配置文件接入大模型 APIAI 功能的配置不在后台界面里而是在源码的application/extra/ai.php文件中或者config/ai.php取决于资源包版本打开看注释就知道。我拿到的这份资源包是application/extra/ai.php内容大致如下return [ enabled true, api_url https://api.example.com/v1/chat/completions, api_key sk-xxxxxxxxxxxxxxxx, model gpt-3.5-turbo, temperature 0.7, max_tokens 500, timeout 30, ];参数解析enabled总开关改成false后 AI 模块完全不参与会话适合还没配好 API 时先关闭api_url是大模型的接口地址格式要符合 OpenAI 兼容的/chat/completions规范如果你用的是国内厂家的兼容接口把域名换成它的域名就行api_key填你在模型服务商那边申请的密钥sk-开头model填模型名阿里云通义千问就填qwen-plusOpenAI 兼容接口填gpt-3.5-turbotemperature控制生成随机性0.2-0.4 比较严谨适合客服场景0.8 以上就比较发散客户也会觉得不太靠谱max_tokens限制单次回复最大 Token 数客服回复一般几百字就够500 是安全的timeout是请求超时秒数。改完保存后回到客服工作台重新刷新页面AI 开关按钮就出来了。你可以先在后台AI 设置里填一条关键词规则比如物流→亲您的订单已发货请到订单详情查看物流单号然后去网页端模拟访客发一条物流系统会直接命中规则不会走到大模型接口。再发一条规则没覆盖的问句比如今天你们放假吗如果 AI API 配置没问题小助手会回复一条生成的内容。如果迟迟没反应紧接着的第五章就是排查思路。5. 搭建后排查白屏、静态资源404、AI不回复的五个坑5.1 白屏与 500 错误现象访问域名后整个页面空白浏览器的 Network 面板里能看到首页请求是 500 或 502控制台报 PHP fatal error。原因绝大多数情况是runtime目录没有写权限或者 PHP 版本高于 7.3老代码用的preg_replace/e修饰符在 PHP 7.4 以后被移除直接抛语法错误。解决执行chmod -R 777 runtime先排除权限问题如果还白屏就去宝塔把 PHP 版本切换到 7.2 或 7.3然后打开/home/www/duomi/runtime/log里的最新日志看到syntax error, unexpected e之类的记录就能确认是版本问题。我在别的机器上踩过 PHP 7.4切换回 7.2 后一次过。5.2 数据库连接失败现象安装向导进行到数据库验证步骤提示数据库连接失败或Access denied for user。原因最常见的是数据库地址填了localhost但 PHP 连接的是 socket而 MySQL 配置的是 TCP还有就是宝塔创建数据库时生成了复杂的随机密码复制时带了空格。解决第一步把数据库地址改成127.0.0.1第二步在宝塔数据库列表里点管理确认用户名和密码完全正确——可以用命令行测试mysql -u 用户名 -p密码 数据库名能进去就说明配置没问题再回到安装向导重填。5.3 静态资源 404页面有字但没样式现象页面能打开但布局全乱、没有 CSS 效果控制台一堆.js.css文件 404。原因伪静态规则没生效或者你上传源码时把文件放到了一个子目录但站点的 root 指向了外层目录导致/static/...找不到。解决先检查网站根目录是否正确指向public如果资源包是 TP 结构站点 root 应该是/home/www/duomi/public。然后看 Nginx 的配置文件里有没有location ~* \.(css|js|png|jpg|gif)$这类放行规则没有就加上。测试伪静态是否生效直接访问https://你的域名/index.php?s/chat/index如果能看到聊天页面而/chat/index看不到说明重写规则没配好回去看一眼 4.1 那段配置是不是完整粘进去了。5.4 AI 不回复前台一直转圈现象对话框发 AI 提问左侧正在输入图标闪几秒后消失没有任何回复。原因AI 请求超时、API key 无效或者服务器访问不了api_url这个域名。这里注意很多云服务器默认 DNS 解析有问题导致curl到 API 服务商失败。解决先在命令行测试连通性和 key 有效性curl -X POST https://api.example.com/v1/chat/completions \ -H Authorization: Bearer sk-xxxxxxxx \ -H Content-Type: application/json \ -d {model:gpt-3.5-turbo,messages:[{role:user,content:hello}]}能返回正常 JSON就说明网络和 key 都没问题。如果curl报Could not resolve host把 DNS 改成114.114.114.114和223.5.5.5再测。如果 curl 没反应检查timeout参数是不是设太短我建议 30 秒起步因为客服场景的 prompt 往往有 20 条上下文生成耗时可能到 10-20 秒。5.5 客服端登录后频繁退出转头就跳登录页现象客服账号登录工作台后最长半小时就自动退出刷新页面又要重新登。原因PHP 的session.cookie_lifetime默认是 0表示浏览器关闭就失效另外朵米后台的会话保持时间设置也可能被填成了很短的分钟数。解决回到 3.3 我给的php.ini配置把session.cookie_lifetime改成86400同时把session.gc_maxlifetime也设成86400重启 PHP。再到朵米后台系统设置 → 安全设置里把登录有效期改成 7 天两边一致后就不会频繁掉线了。这个地方容易玄学明明是同一台机器改完这个参数后一整天都没再掉过。6. 进阶验证用三个场景确认 AI 模块和分流规则真的可用部署完不等于能用建议按下面的顺序做一轮系统性验证每一轮都相当于给你的客户演示这系统不是白搭的。第一验证 AI 兜底通道。在后台把AI规则设置为先规则后模型然后模拟访客发三条消息一条命中的规则词比如价格一条是规则没覆盖的开放性问题比如你们营业到几点再发一条错别字乱序问句比如今 天 开 门 吗。查看客服工作台里是否分别出现规则命中和AI 生成的标识。如果 AI 生成的内容特别口语化可以调低temperature到 0.3同时给 prompt 模板加一句请用不超过50字、礼貌、不含评价性表述的方式回答客户问题。第二验证分流负载。建两个测试客服账号一个接待上限设 1一个设 3然后用两个浏览器窗口同时在网页端发起会话。你会发现第一个会话总是落到上限为 1 的客服第二个会话则自动落到上限为 3 的客服第三个会话仍然去那个上限 3 的客服——因为系统的负载比较算法是取当前会话数/上限比值最小的那个上限 1 的已满员1/1 1上限 3 的只占了 1/3。这个现象能在后台的会话列表里清楚看到所属客服字段的变化用来给客户演示很直观。第三验证数据报表。让两个客服各处理几轮会话客户聊完后点满意/不满意然后到后台报表页按日期查会话量、平均响应时间、满意度占比。如果报表数据和原始会话记录对不上多半是时区配置问题去application/config.php里把default_timezone设成PRC否则统计数据会按 UTC 少 8 小时这是最容易忽视的隐藏坑。这套系统的备份也顺手说一句数据库用宝塔的计划任务每天凌晨备份一次源码文件打包存到/home/backup即可恢复时只要把数据库导入源码解压回原目录权限按 4.2 重新设置一遍基本十分钟内能恢复一套可用的系统。从那以后我每次部署客服类系统都会强制走一遍上述三个验证场景确认 AI、分流、报表都无异常了才敢交付给客户最后这一手能帮你省掉很多售后投诉。希望帮到你。本文还有配套的精品资源点击获取

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案