Rat's

一款强大的网站在线客服聊天系统:whisper搭建教程
简介whisper是一个在线客服系统源码,采用thinkphp5+Gatewayworker编写,性能强悍。自己搭...
扫描右侧二维码阅读全文
16
2018/09

一款强大的网站在线客服聊天系统:whisper搭建教程

简介

whisper是一个在线客服系统源码,采用thinkphp5+Gatewayworker编写,性能强悍。自己搭建,控制在自己,也无需为您的数据安全担心,您可以应用在任何的正规的网站,只需要添加一段简单的js代码,就可以使您的网站拥有在线客服功能。

官方网站:http://whisper.baiyf.com/

截图

请输入图片描述
请输入图片描述
请输入图片描述

功能

  • 支持客服分组,多客服服务,让您的服务更有条理。
  • 支持客服转接,让会员接受最专业的服务。
  • 智能分配客户流量,让服务更加高效。
  • 问候语设置,服务更加亲切。
  • 历史聊天记录查看,方便监管和总结。
  • 支持数据趋势统计,随时掌握服务情况,做出最优的调整。

安装

环境要求:PHP >= 5.6

1、安装宝塔

#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh

安装完成后,进入面板,点击左侧软件管理,然后安装PHPMysqlNginxphpmyadmin

2、拉取源码
点击左侧网站,添加站点,使用命令:

cd www/wwwroot/xx.com
git clone https://gitee.com/nickbai/whisper_tp5.git
#如果移动的时候有mv提示,直接Enter即可
mv whisper_tp5/{,.}* ./
chmod 775 ./* ./runtime/temp/*

3、网站设置
进入到域名设置,点击网站目录,去除跨站攻击的,并设置运行目录为public

然后点击伪静态设置,填入以下代码:

 location / {
   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
   break;
    }
 }

4、新建数据库
点击面板左侧数据库,点击phpmyadmin进入数据库管理界面,新建whisper数据库。再将根目录的whisper.sql文件导入到数据库,然后修改根目录application/database.php配置信息。

#修改如下
// 服务器地址
'hostname'        => '127.0.0.1',
// 数据库名
'database'        => 'whisper',
// 用户名
'username'        => 'root',
// 密码
'password'        => 'root',
// 端口
'hostport'        => '3306',

5、安装拓展
环境一般只要安装两个扩展即可,一个是pcntl,一个是libeventevent)。pcntl为必须的,libevent为非必须的,但是起到高性能作用的恰恰是libeventevent)。如果你您的并发并不是很高,咨询量也不是很大,您可以不安装这个扩展,Gatewayworker会采用系统的select同样性能可观。

查看已安装的PHP拓展:

php -m

这时候发现必需的pcntl拓展已被安装,接下来就安装另外一个拓展了(一般情况下可以不用安装),即PHP5.x安装libevent扩展,PHP7.x安装event拓展。

PHP7.x安装event拓展,博主以PHP7.0测试环境,如果你是7.1将下面目录70改成71即可:

#event包下载地址http://pecl.php.net/package/event,这里以最新版2.4.1为准
cd /www/server/php
wget http://pecl.php.net/get/event-2.4.1.tgz
tar -zxvf event-2.4.1.tgz && cd event-2.4.1
/www/server/php/70/bin/phpize
./configure --with-php-config=/www/server/php/70/bin/php-config --with-event-libevent-dir=/www/server/php/event-2.4.1/
make && make install
echo "extension=event.so" >> /www/server/php/70/etc/php.ini

PHP5.x安装libevent扩展,这里以PHP5.6测试环境,使用命令:

cd /www/server/php
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
tar -zxvf libevent-2.1.8-stable.tar.gz && cd libevent-2.1.8-stable
/www/server/php/56/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libevent=/www/server/php/libevent-2.1.8-stable/
make && make install

echo "extension=libevent.so" >> /www/server/php/56/etc/php.ini

其实要求不高的,这步可以省略。

6、启动程序
这时候需要先下载服务端文件,下载地址:whisper_server.zip,然后解压上传到网站根目录vendor目录里,再编辑以下文件。

#编辑vendor/GatewayWorker/Applications/whisper/Events.php文件
#修改数据库名和密码
self::$db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'root', 'pass', 'whisper');

然后启动程序:

#进入服务端文件夹
cd /www/wwwroot/xx.com/vendor/GatewayWorker
#后台运行
php start.php start -d

然后再到宝塔的安全里开启8282端口。

然后再配置application/config.php,进行如下修改:

'socket' => '192.168.1.104:8282',

ip填写你服务器的ip

搭建成功后程序系统为xx.com,后台后xx.com/admin,管理员用户名密码均为admin,客服的工作台xx.com/service

接下来我们进入程序系统首页,点击右下角的客服按钮,如果出现以下提示,则为安装成功,不然请检查你的步骤。
请输入图片描述
最后我们就将在线客服集成到自己网站。

网站使用

1、首先在您的网站上引入两段js

<script src="http://xxx.com/static/customer/js/layer/layer.js"></script>
<script src="http://xxx.com/static/customer/js/whisper-tool.js"></script>

对应的地方,换成你刚才部署whisper事时采用的域名。其实你也可以放本地,只要这个资源能访问到即可。

2、配置参数

var ws = new whisper();
$(dom).click(function(){
    var group = $(this).attr('data-group');
    ws.init({
        id: uid,
        url: 'http://xxx.xxx.com/index/index/chat',
        name: uname,
        avatar: uavatar,
        group: group
    });
});

3、参数解释
1)dom是什么?
这里的dom就是您的客服咨询悬浮框,以whisper官网的为例子:
请输入图片描述
即这两部分的domid#cs-pre-sales#cs-after-sales

<div id="cs-groups">
    <div class="cs-groups__item" id="cs-pre-sales" data-group="1">
        <span class="widget__icon"></span>售前客服
    </div>
    <div class="widget__divider"></div>
    <div class="cs-groups__item" id="cs-after-sales" data-group="2">
        <span class="widget__icon"></span>售后客服
    </div>
</div>

其实就是这两个地方的点击事件,此处在这个dom的地方,放置一个data-group来设置 这些客服分组的信息。这个id需要与管理端设置的 异一一对应,否则该分组的客服无法正常的工作。例如whisper站点上,这个点击事件这么配置的:

$("#cs-pre-sales,#cs-after-sales").click(function(){
        // 其他业务代码
})

2)init中的参数是什么意思?

{
        id: uid,
        name: uname,
        avatar: uavatar,
        whisper_domain: 'http://xxx.xxx.com',
        group: group
}

对应的信息为:

id    当前登录户用户的唯一id
name    当前登录用户的昵称
avatar    当前登录用户的头像
whisper_domain    您搭建whisper系统的域名
group    用户咨询的客服分组

好了,到此为止,您的whisper系统算是搭建 和整合完毕了。你可以为你的访客提供咨询服务了。

总结

该程序免费版本只更新到了v1.0.1,对于大部分网站来说,免费版功能已经够用了。如果想拿来进行商用,需要机器人等功能的话,就要联系作者购买授权了。

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2018 年 09 月 16 日 04 : 03 PM

发表评论

17 条评论

  1. 七七

    博主php start.php start -d运行提示语法错误是什么情况

    1. 七七
      @七七

      php start.php start -d
      PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/libevent.so' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/libevent.so: cannot open shared object file: No such file or directory in Unknown on line 0
      PHP Warning: PHP Startup: Unable to load dynamic library '/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/event.so' - /www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/event.so: cannot open shared object file: No such file or directory in Unknown on line 0
      Workerman[start.php] start in DAEMON mode
      PHP Warning: pcntl_fork() has been disabled for security reasons in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php on line 978

      Warning: pcntl_fork() has been disabled for security reasons in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php on line 978
      PHP Fatal error: Uncaught exception 'Exception' with message 'setsid fail' in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php:985
      Stack trace:

      0 /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php(454): WorkermanWorker::daemonize()1 /www/wwwroot/172.83.159.19/vendor/GatewayWorker/start.php(43): WorkermanWorker::runAll()2 {main}

      thrown in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php on line 985

      Fatal error: Uncaught exception 'Exception' with message 'setsid fail' in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php:985
      Stack trace:

      0 /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php(454): WorkermanWorker::daemonize()1 /www/wwwroot/172.83.159.19/vendor/GatewayWorker/start.php(43): WorkermanWorker::runAll()2 {main}

      thrown in /www/wwwroot/172.83.159.19/vendor/GatewayWorker/vendor/workerman/workerman/Worker.php on line 985

      1. Rat's
        @七七

        好像是pcntl_fork函数被禁用了,你点击软件商店-PHP设置-禁用函数,删掉pcntl_fork试试

    2. Rat's
      @七七

      不太清楚,能贴下错误吗,多贴下

  2. 软软
    后台运行

    php start.php start -d

    提示语法错误

    1. 软软
      @软软

      (' in /www/wwwroot/kefu.688shua.cn/vendor/GatewayWorker/start.php on line 8

  3. Californiapro6

    你有个地方设置数据库密码写成pass了,这是bug。应该是root。另外bt centos 用户名不能用root名

    1. Rat's
      @Californiapro6

      那个是演示的,具体还是要自己修改成自己的

  4. MAC

    mv whisper_tp5/{,.}* ./
    chmod 775 ./ ./runtime/temp/
    大佬,这个是什么意思,服务器其他网站
    404 Not Found
    nginx

    还原不知道不知道覆盖了些什么东西
    接收对象中: 100% (2058/2058), 5.02 MiB | 1.34 MiB/s, done.
    处理 delta 中: 100% (879/879), done.
    [root@localhost kefu.259hg.com]# mv whisper_tp5/{,.}* ./
    mv:是否覆盖"./."? y
    mv: 无法将"whisper_tp5/." 移动至"./.": 设备或资源忙
    mv:是否覆盖"./.."? y
    mv: 无法将"whisper_tp5/.." 移动至"./..": 设备或资源忙
    [root@localhost kefu.259hg.com]# mv whisper_tp5/{,.}* ./
    mv: 无法获取"whisper_tp5/*" 的文件状态(stat): 没有那个文件或目录
    mv:是否覆盖"./."?
    mv:是否覆盖"./.."?
    [root@localhost kefu.259hg.com]# chmod 775 ./ ./runtime/temp/
    [root@localhost kefu.259hg.com]# php -m

    1. Rat's
      @MAC

      移动文件,授权文件,移动文件时候的提示不用管,直接enter跳过

  5. 灯火阑珊

    我觉得我博客这个在线聊天系统也不错,不用这么复杂,把代码加到网页里面就行。

    1. Rat's
      @灯火阑珊

      你那个就免费一个月好像,然后开始收费。

  6. deku

    准备入手

  7. 范明明

    这个确实不错啊,居然是开源的。

    1. Rat's
      @范明明

      对啊,对比很多收费的还算可以了。

  8. WATGP

    博主。推荐推荐香港虚拟主机把。。

    1. Rat's
      @WATGP

      这个不玩虚拟主机,所以没啥推荐的。