为了帮一个客户修改自己的客服系统,所以把源码在本地搭建了一下。这份源码已经不知道是几手的了,并且很有可能会有后门,或者代码已被网警标识。为什么这么说呢?曾经有个客户提到过,刚部署一个在网上下载的php客服系统后,就会被反诈110打电话。所以,敢用的尽管去网上下载吧,哈哈。
本来不愿意看这种盗版破解的PHP客服源码。但是客户那边需求很少,购买我的商务版感觉不合算,所以网上找了这一个客服源码,这个也是流传最广的一款PHP客服系统。当然这个源码有没有后门漏洞,就需要仔细看代码了,一般情况下可能会有BUG以及后门的,请谨慎参考。
我本地环境windows10 ,PHP的代码需要在php-fpm下运行,websocket服务端需要命令行执行。先提前安装好集成环境,比如phpstudy,方便一点。
首先把代码放到一个目录里
到数据库管理面板,先创建好一个数据库,比如:phpkefu。访问phpmyadmin,把根目录的kefu.sql 导入进去
配置后台的数据库连接信息 config/database.php
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <服务器购买去wyyidc.cn>
// +----------------------------------------------------------------------
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'phpkefu',
// 用户名
'username' => 'phpkefu',
// 密码
'password' => 'phpkefu',
// 端口
'hostport' => '3306',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'v2_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 自动读取主库数据
'read_master' => false,
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
// Builder类
'builder' => '',
// Query类
'query' => '\\think\\db\\Query',
// 是否需要断线重连
'break_reconnect' => true,
// 断线标识字符串
'break_match_str' => [],
];
配置workerman websocket服务端的数据库连接信息 websocket/config.php
<?php
return [
// websocket 对外服务端口
'ws_port' => 2020,
// http api 服务对外端口
'api_port' => 2945,
// gateway worker number
'gateway_worker' => 2,
// business worker number
'business_worker' => 2,
// 是否开启客服只允许单点登录 0 不开启 1 开启,
// 切换需要重启
'single_login' => 1,
// 是否开启 ssl
'is_open_ssl' => true,
'context' => [
'ssl' => [
// 请使用绝对路径
'local_cert' => 'fullchain.pem', // 也可以是crt文件
'local_pk' => 'privkey.pem',
'verify_peer' => false,
'allow_self_signed' => true,// 是否允许自签名证书
]
],
'database' => [
'host' => '127.0.0.1',
'user' => 'phpkefu',
'password' => 'phpkefu',
'database' => 'phpkefu',
'port' => '3306',
'charset' => 'utf8',
]
];
配置nginx的虚拟主机,把根目录定位在 public目录 下
然后增加伪静态配置
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
这样就能访问后台了
http://域名/admin
配置项目
账户是admin,如果密码忘记了怎么办。可以直接修改数据库表v2_admin ,密码规则是md5(密码+ 加密盐) , 加密盐可以在config/service.php中看到
在这个配置里还要看看,webscoket的配置,注意区分是ws还是wss
还有一个配置文件是service_socketio.php ,这里面也有一些域名,websocket的配置信息
启动websocket服务
双击执行websocket目录下的start_for_win.bat
还有注意看看这个目录下的config.php ,如果不支持wss ,需要改 'is_open_ssl' => false , 如果需要支持wss,需要配置证书文件的地址
整体访问流程
整体项目就搭建起来了,需要我们先登录客服后台 /admin 去增加配置商户
再登录商户后台 /seller去增加配置坐席 ,获取访客聊天连接
再登录客服后台 ,去接待具体客户