亲测一份PHP在线客服系统源码,thinkphp+workerman开发,网上流传最广的客服源码搭建教程

为了帮一个客户修改自己的客服系统,所以把源码在本地搭建了一下。这份源码已经不知道是几手的了,并且很有可能会有后门,或者代码已被网警标识。为什么这么说呢?曾经有个客户提到过,刚部署一个在网上下载的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去增加配置坐席 ,获取访客聊天连接

    再登录客服后台  ,去接待具体客户