AI智能客服

AI智能客服截图
AI智能客服截图
AI智能客服缩略图
AI智能客服缩略图

基于BadouCMS的AI客服插件,面向站点运营人员的操作说明。安装配置、日常使用、常见问题都在这里。

前台客服浮窗

一、它能做什么

在网站右下角放一个客服浮窗,访客点开就能提问。系统按下面的顺序处理:

  1. 先查知识库 —— 命中就用知识库内容回答,不消耗 AI 额度
  2. 知识库没有,交给 AI —— 由模型组织答案(如果开启了 AI)
  3. AI 不确定,转人工 —— 进入排队,坐席在工作台接入
  4. 没人接待,留个记录 —— 访客可留言,后台收到提醒

访客发纯表情、标点或只说了句「你好」时,不会转人工,而是回一句引导语让访客说清需求。这句话可以在设置里改。

AI 只依据知识库回答,知识库没有的内容不会编造。这是刻意设计的——宁可转人工,也不给访客错误信息。

二、安装

1. 安装插件

后台「插件管理」→ 找到「AI智能客服」→ 安装。

2. 导入测试数据(可选,建议先做)

安装流程里会询问是否导入测试数据。已经装好的,也可以在「模块管理」里找到「AI智能客服」,点「导入测试数据」。

导入后会有:

  • 13 条电梯行业知识库(公司、价格、产品系列、安装、售后)
  • 7 条快捷回复(访客提问 3 条 + 坐席话术 4 条)
  • 3 段演示对话(AI 接待 / 人工接待 / 已结束)

这是一个可以直接演示的完整站点。 熟悉之后再换成自己的内容。

3. 配置常驻服务(必须)

AI 回复和消息推送依赖一个后台常驻进程,不启动的话,访客消息会一直卡着没人处理。

这一步在宝塔里做,下面分两种方式,任选一种。

方式一:Supervisor 守护(推荐)

① 安装 Supervisor 管理器

宝塔后台 →「软件商店」→ 搜索 Supervisor → 安装「Supervisor管理器」。

② 先在终端里确认命令能跑

宝塔后台 →「终端」(左侧菜单,没有的话去软件商店装「堡塔终端」),执行:

cd /www/wwwroot/你的域名目录
/www/server/php/82/bin/php think aichat:serve

看到下面两行就说明命令没问题,按 Ctrl+C 停掉,再去配 Supervisor:

实时推送已注册,监听 9502
AI 客服服务已启动:实时推送 + AI 回复处理

PHP 路径必须写全。宝塔的 PHP 不在系统 PATH 里,直接写 php 多半会报「command not found」。

路径规则是 /www/server/php/{版本号}/bin/php:

| 版本 | 路径 |

PHP 8.1/www/server/php/81/bin/php
PHP 8.2/www/server/php/82/bin/php
PHP 8.3/www/server/php/83/bin/php
不确定装的是哪个版本,去「软件商店 → 已安装」里看 PHP 的版本号。

③ 添加守护进程

打开「Supervisor管理器」→「添加守护进程」,按下表填写:

字段填写内容
名称aichat-serve
启动用户www
运行目录/www/wwwroot/你的域名目录
启动命令/www/server/php/82/bin/php think aichat:serve
进程数量1

保存后状态显示「运行中」就成功了。

几个容易填错的地方:

  • 运行目录填网站根目录(think 文件所在的那一层),不是 public
  • 进程数量必须是 1,多个进程会重复处理同一条消息
  • 启动用户用 www,和网站一致;用 root 会导致后续生成的文件权限混乱
  • 如果 PHP 是 8.1 就把命令里的 82 改成 81

④ 验证

回后台「AI智能客服 → 客服设置」,顶部「回复处理者」卡片:

  • 显示「运行中」+ 最近运行时间 → 成功
  • 显示「未运行」→ 进程没起来,去 Supervisor 看日志

方式二:计划任务(备选)

如果不想装 Supervisor,可以用宝塔的「计划任务」每分钟触发一次处理。

进入「计划任务」→「添加任务」:

字段填写内容
任务类型Shell脚本
任务名称aichat-work
执行周期N分钟 → 1分钟
脚本内容见下方

脚本内容:

cd /www/wwwroot/你的域名目录 && flock -n /tmp/aichat-work.lock /www/server/php/82/bin/php think aichat:work --seconds=55

这个命令每次运行最多处理 55 秒,下一分钟再被触发,相当于「每分钟醒一次」的常驻效果。

前面的 flock -n 是防重叠:万一某次执行卡住超过一分钟,下一次会直接跳过,不会多进程叠加。没有 flock 命令的话(极少数环境)去掉它也能用,插件内部有任务锁兜底。

这种方式和方式一的差别:

Supervisor计划任务
AI 回复处理✅✅
实时推送(WebSocket)✅❌ 走 HTTP 轮询,最多延迟几秒
进程常驻是每次运行完退出
适合正式环境虚拟主机、不能装 Supervisor 的环境

两种方式不要同时开,会重复处理消息。

关于端口 9502

aichat:serve 默认会监听 9502 端口用于 WebSocket 推送。

  • 如果服务器有安全组/防火墙,需要放行 9502(仅本机访问,不用对公网开放)
  • 想让浏览器用上即时推送,还要在站点 Nginx 配置里加反向代理,见本文档「常见问题 → 消息有延迟」

如果不需要即时推送,加 --no-ws 参数即可,不占端口:

/www/server/php/82/bin/php think aichat:serve --no-ws

命令参数说明

aichat:serve 支持的参数:

参数默认值说明
--admin=11调用 AI 时使用的管理员 ID,一般不用改
--seconds=5050每轮处理最长秒数
--no-ws关闭只处理 AI 回复,不启动实时推送

4. 登录官网账号(AI 功能必需)

后台「插件管理」→ 登录 badoucms 官网账号。

这个账号用来调用 AI 模型,会消耗该账号的 AI 额度。不登录的话,知识库仍然能回答,但知识库没命中时无法让 AI 组织答案。

登录状态保存在缓存里。如果后台点过「清除缓存」,需要重新登录一次。表现为设置页显示「AI 服务异常」。

5. 添加坐席

后台「AI智能客服 → 客服坐席」→ 新增,绑定一个管理员账号。

坐席需要用自己绑定的管理员账号登录后台,并打开「客服工作台」,才会被系统认为在线(每 30 秒产生一次心跳)。下拉框里只显示真正在线的坐席。

三、前台效果

访客看到的浮窗:

  • 顶部是客服头像、标题、「智能助手 · 为您解答」
  • 中间是对话区,AI 消息和访客消息左右分列
  • 底部是快捷提问(可在设置里配置)
  • 输入框上方有「转人工」「留言回访」两个入口

访客点击快捷提问会直接发送,不需要打字。

如果站点是响应式布局,浮窗在手机上会自动变成全屏面板。

四、三种接待模式

后台「客服设置 → 基础设置 → 默认接待模式」:

模式适合场景访客体验
AI 优先常见问题为主,想减少人工AI 直接回答,答不了才转人工
人工优先客单价高,必须真人接待直接进排队,坐席接入
AI 草稿 + 人工确认不能出错,但想提效人工接待,AI 帮坐席写草稿,坐席审核后发送

模式是新会话的默认值,单个会话里可以随时切换。

AI 草稿辅助怎么用

会话处于人工接待时,工作台顶部有「开启 AI 草稿辅助」按钮。

开启后,访客每发一条消息,AI 都会生成一条回复草稿,但访客看不到——只有坐席能在工作台看到。坐席可以:

  • 直接采纳发送
  • 改一改再发(推荐)
  • 丢弃,自己重新打

采纳后消息会以坐席身份发给访客,访客不会知道有 AI 参与。

这是新人坐席上手、或者处理敏感问题(报价、退款)时的好帮手。

五、后台功能

客服设置

客服设置

顶部是服务状态:今日会话、消息数、在线坐席、AI 回复数、待补充知识数。

下面两张卡片分别显示 AI 服务和回复处理者的状态。如果 AI 显示异常,先看是不是官网账号掉了。

三个页签:

  • 基础设置 —— 开关、接待模式、浮窗位置、样式、标题、欢迎语、公告栏、快捷提问、AI 头像
  • AI 行为 —— 转人工关键词、禁止话题、兜底话术、无实质内容引导语
  • 人工接待 —— 排队策略、坐席容量、超时回收

浮窗位置支持右下角、左下角、侧边栏。选「侧边栏」后可以指定挂载容器的选择器(如 #sidebar),适合有固定侧边栏的站点。

挂件样式有 5 套:经典蓝、商务深蓝、玻璃拟态、极简黑白、活力橙。

知识库

这是整个系统最重要的部分。AI 的答案质量取决于这里。

每条知识包含:

  • 标题 —— 概括这条知识讲什么
  • 内容 —— 完整答案,建议 100-300 字,直接正面回答
  • 关键词 —— 逗号分隔,用于提高召回率

检索机制:访客的问题会和标题、内容、关键词做匹配。不需要字字相同,系统会拆词、去停用词后比对。命中多条时按相关度排序,取前几条给 AI 参考。

命中测试:知识库列表右上角有「匹配测试」,输入一个问题就能看到命中了哪几条、分数多少。加完知识一定要测一下,确认真的能召回。

支持导入:TXT、CSV、以及直接选站内文章转成知识。

快捷回复

两个用途:

  • 访客可见 —— 显示在前台浮窗底部,访客点一下直接发送(如「怎么联系你们」「价格怎么算」)
  • 坐席可见 —— 只出现在工作台的快捷回复面板,坐席点一下插入输入框(如「稍等,我确认一下」)

前台浮窗的快捷提问也可以在「客服设置」里直接改,但那只是简单的多行文本。用「快捷回复」功能可以分组管理、统计使用次数。

未命中问题

访客问了、但知识库没命中的问题会记在这里,按出现次数排序。

这是知识库补全的最佳来源:看看访客都在问什么、系统答不上来什么,针对性补充知识。

每条右边有「转为知识」,点一下就能把问题变成知识条目,填上答案即可。

会话管理

所有会话的列表,可以按状态、接待坐席、时间筛选。

  • 状态:AI 接待 / 人工接待 / 排队中 / 已结束
  • 可以看完整聊天记录、导出 CSV、删除、拉黑访客

拉黑后该访客再打开浮窗会看到提示,无法发送消息。

客服工作台

坐席日常待的地方。左侧四个标签:

标签内容
我的会话我正在接待的(人工接待中)
待接入排队等人工的,带数字徽章
历史我接待过的,含已结束
智能接待AI 正在接待的,带数字徽章

右侧是对话区,可以发消息、发附件、用快捷回复、开 AI 草稿辅助。

上方显示访客信息:IP、来源页面、进入时间、接待坐席。可以编辑访客称呼、联系方式、备注。

转接:把会话转给另一个在线坐席。下拉框只显示当前在线的坐席。

结束会话:会话关闭,访客下次来会开新会话。

客服坐席

管理坐席账号。每个坐席绑定一个管理员账号,可以设置:

  • 昵称(访客看到的名字)
  • 头像
  • 最大同时接待数
  • 上线/下线开关
注意:上线 开关只是「允许分配」,真正在线还需要该坐席登录后台并打开工作台。列表里的在线状态显示的是开关状态,不是心跳状态。

留言与回访

访客在浮窗点「留言回访」提交的表单,以及 AI 无法回答时自动登记的记录。

处理流程:

  1. 坐席认领
  2. 状态改为「跟进中」
  3. 联系访客
  4. 完成后填写回访结果

系统会记录每次状态变更和处理人,形成完整跟进轨迹。

客服统计

按时间范围统计坐席绩效:接待会话数、回复消息数、平均响应时长等。

六、与其他插件配合

商城(shop 插件)

装好商城后不需要任何配置,客服会自动认商品。

访客看到的效果:打开商品详情页,浮窗顶部会多出一张商品卡——商品图、名称、一句话简介。点一下就把「我想咨询这款产品:xxx」发过来,不用手动描述是哪款。

坐席看到的效果:工作台里这条消息显示成产品卡片,直接能看到访客咨询的是哪款商品,不用再问「您看的是哪一款」。

识别依据:商品内容所属的 CMS 模型。商城设置里「商品模型」填的哪个 mcode,客服就按哪个识别,默认是「产品」(mcode=3)。在商城设置里换了模型,客服会自动跟着变,不用改插件配置。

一个前提:商品详情页要走 CMS 内容详情路由(cms.detail)。

如果商城做了完全自定义的详情页(自己写控制器渲染),浮窗仍会出现,但商品卡不会显示——因为系统认不出当前是哪个商品。

外贸 / 多语言站点

商品识别是支持多语言的:访客访问英文版商品页,识别出来的是该商品的英文版本(按站点当前语言匹配,找不到才退回默认语言)。

但文字内容不分语言,这点需要提前知道:

内容是否分语言
商品识别是,按当前语言匹配
浮窗标题、欢迎语、公告栏否,全局一套
快捷提问否,全局一套
知识库否,全局一套
兜底话术、无实质内容引导语否,全局一套

实际影响:英文站访客打开浮窗,看到的是中文欢迎语;用英文提问时,知识库也很难命中——因为检索靠中文分词,英文单词的匹配能力有限。

三个低成本做法:

  1. 欢迎语写成双语:改成 Hello! 您好!请问有什么可以帮您?,这一步最省事,效果最直接。
  2. 知识库关键词中英混写:一条知识的关键词里同时放两种语言,比如 价格,多少钱,报价,price,quote,cost。正文可以先写英文,末尾补一句中文摘要。
  3. 按主语言运营:如果外贸站主要面向英文客户,知识库正文直接写英文,关键词补上中文,这样中文访客偶尔也能命中。
每个语言要一套独立知识库的话,当前版本不支持,需要定制开发。

会员 / VIP 插件

访客如果已登录会员账号,会话会记录对应的会员 ID,在访客档案里能对上人。

没登录的访客按浏览器标识识别(一个浏览器算一个访客),和会员系统互不影响。

翻译类插件

jstranslate、tanshutranslate、youdaotranslate 这类翻译插件只影响页面内容,不会翻译客服对话。

也就是说:访客发中文、坐席用英文看,翻译插件帮不上忙。跨语言沟通还是需要坐席自己处理。

七、日常运营建议

每周看一次「未命中问题」

按次数排序,前 10 条补进知识库。这是提升 AI 回答率最有效的方式。

知识库怎么写才好用

  • 一条知识只讲一件事,不要写成大杂烩
  • 标题就是访客可能的问法,如「电梯多少钱」比「价格体系说明」好
  • 关键词补同义词:价格、多少钱、报价、费用、贵不贵
  • 内容要正面回答,第一句话就给结论,后面再展开
  • 不要写「请联系客服」,这种内容 AI 答了等于没答

定期看工作台「智能接待」

AI 接待的会话虽然不需要坐席介入,但偶尔看一眼能发现 AI 答得不好的地方。

如果发现 AI 经常答非所问,说明知识库的关键词没覆盖到访客的实际问法。

会话不会自动关闭

同一访客(同一个浏览器)会一直复用同一个会话,除非坐席手动「结束会话」。

这意味着老访客下次打开会看到很久以前的聊天记录。如果不希望这样,需要坐席定期清理已结束的会话。

八、常见问题

前台不显示浮窗

  1. 检查「客服设置 → 基础设置 → 启用前台客服」是否开启
  2. 检查站点是否已关闭(后台「系统设置 → 关闭站点」)
  3. 清除缓存后刷新页面

AI 不回复,一直显示「正在输入」

最常见的原因是官网账号掉线。

去「客服设置」看顶部状态卡:

  • 「AI 服务」显示红色 → 去「插件管理」重新登录官网账号
  • 「回复处理者」显示未运行 → 常驻服务没启动,SSH 执行 php think aichat:serve

访客消息一直卡着不回复

先在宝塔「终端」里看进程在不在:

ps aux | grep aichat:serve
  • 没有输出 → 服务没启动,去「Supervisor管理器」看 aichat-serve 的状态,或检查计划任务有没有执行
  • 有输出但还是不动 → 看后台「客服设置」顶部「回复处理者」卡片,那里会写明卡住的原因(常见是官网账号掉线)

如果 Supervisor 里显示「已停止」,点「启动」看会不会立刻又停。反复重启一般是:

  • 9502 端口被别的程序占着 → 见下方「9502 端口被占用」
  • 运行目录填错了 → 必须填 think 文件所在的目录
  • 启动用户没权限写 runtime → 后台「文件」里把 runtime 目录权限设为 755、属主 www

消息有延迟

默认是 HTTP 轮询(开窗 2.5 秒、收窗 8 秒一次)。

想要即时推送,需要:

  1. 常驻服务带 WebSocket 启动(默认就带)
  2. Nginx 把 /aichat-ws 反向代理到 127.0.0.1:9502

Nginx 配置示例:

location /aichat-ws {
    proxy_pass http://127.0.0.1:9502;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

不配置也能用,只是走轮询,最多延迟几秒。

转接时下拉框里没有其他坐席

那个坐席不在线。需要他用自己的管理员账号登录后台,并打开「客服工作台」。

换服务器或改域名后浮窗不显示

浮窗的接口地址是自动推导的,正常不需要改。如果换了域名,清除缓存后重新访问即可。

9502 端口被占用

宝塔「终端」执行:

lsof -i:9502

会看到占用端口的 PID,然后:

kill -9 <上一步看到的PID>

再回 Supervisor 点「启动」。

如果每次重启都冲突,说明有两个守护进程或多个 Supervisor 实例在抢同一个端口,检查是不是配了两份 aichat-serve。

九、卸载

  1. 停掉常驻服务
  2. 后台「插件管理」→ 卸载「AI智能客服」
  3. 如需彻底清理,删除数据库中的 bd_aichat_* 表

附:命令速查

宝塔「终端」里执行,命令中的 PHP 路径按自己的版本替换(81 / 82 / 83)。

操作命令
启动服务(推送 + AI)/www/server/php/82/bin/php think aichat:serve
只处理 AI,不开推送/www/server/php/82/bin/php think aichat:serve --no-ws
单次处理一轮(55 秒)/www/server/php/82/bin/php think aichat:work --seconds=55
查看进程ps aux | grep aichat:serve
查看端口占用lsof -i:9502
停止服务pkill -f aichat:serve
查看 PHP 版本/www/server/php/82/bin/php -v
执行任何 think 命令前,都要先 cd 到网站根目录(think 文件所在的那一层)。

附:宝塔操作路径对照

要做什么宝塔里的位置
执行命令左侧「终端」,或软件商店装「堡塔终端」
配置常驻进程软件商店装「Supervisor管理器」→ 添加守护进程
配置定时任务「计划任务」→ 添加任务 → Shell脚本
查看已装 PHP 版本「软件商店」→ 已安装
修改文件权限「文件」→ 右键目录 → 权限
查看站点日志站点 → 设置 → 日志
官方QQ交流②群
官方QQ交流②群
QQ咨询 微信咨询 VIP代理 回到顶部