应集成腾讯云智服sdk或welive js方案,并建mysql消息表、配redis缓存及gatewayworker队列。具体包括:配置tencentcloud sdk;嵌入welive脚本;建customer_messages表并生成模型;用redis缓存5条上下文;以gatewayworker解耦高并发消息。

如果您正在使用ThinkPHP6.x开发在线客服系统,但面临第三方客服系统集成困难或历史消息无法持久化保存的问题,则可能是由于SDK配置缺失、消息表结构不匹配或未启用消息存储逻辑。以下是解决此问题的步骤:
一、集成腾讯云智服SDK
腾讯云智服提供标准化小程序端接入能力,通过引入轻量级SDK可绕过自研通信层,直接复用其消息路由与会话管理能力。该方式适用于需快速上线且对数据主权要求不极端严格的场景。
1、登录腾讯云控制台,在【智服】产品页创建新实例,获取AppID、Secret及WebSocket接入域名。
2、在ThinkPHP6项目根目录执行命令安装官方SDK:composer require tencentcloud/tcsdk。
3、在config/tencentcloud.php中配置参数,确保region设为ap-guangzhou,timeout不低于5秒。
4、于小程序前端调用TCSdk.init()并传入AppID与用户OpenID,后端通过TencentCloud\TcSdk\Client::sendMessage()透传消息至智服工作台。
二、对接WeLive客服系统JS嵌入方案
WeLive采用纯前端注入模式,无需修改ThinkPHP6后端业务逻辑,仅需在客服页面HTML中嵌入指定脚本即可完成对接。适用于已有成熟客服团队、仅需补充线上触点的中小企业。
1、访问http://im.68ying.com/admin/login/index.html,使用账号在线客服2018与密码123456登录WeLive后台。
2、进入【站点管理】→【添加站点】,填写您的ThinkPHP6项目域名,获取唯一site_id。
3、在ThinkPHP6视图模板中(如public/static/kefu.html),插入WeLive提供的标准JS代码块,其中data-siteid属性替换为上一步获取的值。
4、启动ThinkPHP6内置服务器后,访问该页面,确认右下角出现WeLive悬浮客服按钮,并能正常发起会话。
三、构建MySQL消息持久化表结构
为保障对话记录可审计、可追溯,必须在MySQL中建立专用消息表,支持按OpenID、时间范围、消息类型多维检索。该表需与ThinkPHP6模型层严格对齐,避免ORM操作异常。
1、执行以下SQL语句创建customer_messages表:CREATE TABLE `customer_messages` (`id` int(11) NOT NULL AUTO_INCREMENT, `openid` varchar(50) NOT NULL, `message_type` varchar(20) NOT NULL, `content` text, `create_time` datetime NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2、在ThinkPHP6应用目录下运行命令生成对应模型:php think make:model CustomerMessages。
3、在app/model/CustomerMessages.php中设置$table = 'customer_messages',并定义protected $autoWriteTimestamp = true启用自动时间戳。
4、于消息接收控制器中,在调用CustomerMessages::create()前对content字段做htmlspecialchars()转义,防止XSS注入。
四、启用Redis会话上下文缓存
为支撑上下文感知的智能回复(例如识别“刚才说的价格”所指对象),需以OpenID为键在Redis中缓存最近5条消息。该机制减轻数据库查询压力,同时保证实时性。
1、确认PHP环境已启用redis扩展,并在.env中配置REDIS_HOST=127.0.0.1、REDIS_PORT=6379。
2、在app/common/MessageContext.php中定义静态方法push($openid, $message),使用lPush将消息推入context:{$openid}列表。
3、调用lTrim('context:'.$openid, 0, 4)截取列表仅保留最新5项,避免内存溢出。
4、在自动回复逻辑触发前,执行lRange('context:'.$openid, 0, -1)拉取完整上下文数组,交由NLP模块处理。
五、配置GatewayWorker消息队列中继
当并发会话超过300路时,直接由ThinkPHP6 HTTP进程处理消息易造成阻塞。引入GatewayWorker作为独立消息中继层,可将HTTP请求解耦为异步事件,提升吞吐能力。
1、使用Composer安装GatewayWorker:composer require workerman/gateway-worker。
2、在start_gateway.php中设置$gateway->startPort = 8282,并绑定lanIp为内网地址,禁止公网直连。
3、在Events.php中重写onMessage方法,接收来自ThinkPHP6的JSON消息包,解析openid与content后存入MySQL与Redis双写。
4、启动命令统一置于start.php中,执行php start.php start -d以后台守护模式运行全部Worker进程。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











