Coder Social home page Coder Social logo

wolive-source's Introduction

WoLive 文档

wolvie-web安装

  1. wolive-web 可以用nginx+php-fpm或者apache来运行(二者选其一即可),配置参考如下。 nginx配置
server {
    listen 80;
    server_name  你的域名;
    root 实际磁盘路径/wolive-web/public;
    client_max_body_size 18M;
    index index.php index.html;
    location / {
        index index.html index.php;
    }
    location ~ \/upload\/.*\.php {
      deny all;
      return 404;
   }
    if (!-e $request_filename) {
        rewrite ^/index.php(.*)$ /index.php?s=$1 last;
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
    }
    location ~ \.php$ {
       add_header Access-Control-Allow-Origin *;
       fastcgi_pass    127.0.0.1:9000;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

2.apache配置(需要httpd.conf配置文件中加载了mod_rewrite.so模块)

<Directory "实际磁盘路径/wolive-web/public">
     Options Indexes MultiViews
     AllowOverride All
     Require all granted
 </Directory>
 <VirtualHost *:80>
     DocumentRoot "实际磁盘路径/wolive-web/public"
     ServerName 你的域名
 </VirtualHost>

3.IIS配置

如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:

RewriteRule (.*)$ /index\.php\?s=$1 [I]

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

<rewrite>
 <rules>
 <rule name="OrgPage" stopProcessing="true">
 <match url="^(.*)$" />
 <conditions logicalGrouping="MatchAll">
 <add input="{HTTP_HOST}" pattern="^(.*)$" />
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php/{R:1}" />
 </rule>
 </rules>
 </rewrite>

  1. 配置好后访问 http://你的域名/install.php ,然后根据步骤提示安装即可。 第一步、系统会自动检查环境是否ok。

输入图片说明

第二步、配置数据库相关信息,其中服务器端口配置用您的授权信息填写

输入图片说明

第三步、安装成功

输入图片说明

数据库结构

  1. wolive_service表
  • 客服列表
 CREATE TABLE `wolive_service` (
  `service_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) NOT NULL COMMENT '用户名',
  `nick_name` varchar(255) NOT NULL COMMENT '昵称',
  `password` varchar(255) NOT NULL COMMENT '密码',
  `phone` varchar(255) DEFAULT '' COMMENT '手机',
  `email` varchar(255) DEFAULT '' COMMENT '邮箱',
  `business_id` varchar(255) NOT NULL COMMENT '商家id',
  `avatar` varchar(1024) NOT NULL DEFAULT '/assets/images/admin/avatar-admin2.png' COMMENT '头像',
  `level` enum('super_manager','manager','service') NOT NULL DEFAULT 'service' COMMENT 'super_manager: 超级管理员,manager:商家管理员 ,service:普通客服',
  `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '所属商家管理员id',
  `state` enum('online','offline') NOT NULL DEFAULT 'offline' COMMENT 'online:在线,offline:离线',
  PRIMARY KEY (`service_id`),
  UNIQUE KEY `se` (`service_id`) USING BTREE,
  KEY `pid` (`parent_id`) USING BTREE,
  KEY `web` (`business_id`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

2.wolive_visiter表

CREATE TABLE `wolive_visiter` (
  `vid` int(11) NOT NULL AUTO_INCREMENT,
  `visiter_id` varchar(200) NOT NULL COMMENT '访客id',
  `visiter_name` varchar(255) NOT NULL COMMENT '访客名称',
  `channel` varchar(255) NOT NULL COMMENT '用户游客频道',
  `avatar` varchar(1024) NOT NULL COMMENT '头像',
  `ip` varchar(255) NOT NULL COMMENT '访客ip',
  `from_url` varchar(255) NOT NULL COMMENT '访客浏览地址',
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '访问时间',
  `business_id` varchar(100) NOT NULL COMMENT '商户id',
  `state` enum('online','offline') NOT NULL DEFAULT 'offline' COMMENT 'offline:离线,online:在线',
  PRIMARY KEY (`vid`),
  UNIQUE KEY `id` (`visiter_id`,`business_id`) USING BTREE,
  KEY `visiter` (`visiter_id`) USING BTREE,
  KEY `time` (`timestamp`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

3.wolive_business表

CREATE TABLE `wolive_business` (
  `wid` int(11) NOT NULL AUTO_INCREMENT,
  `business_id` varchar(100) NOT NULL COMMENT '商家id',
  `distribution_rule` enum('auto','claim') DEFAULT 'claim' COMMENT 'claim:认领,auto:自动分配',
  `video_state` enum('close','open') NOT NULL DEFAULT 'close' COMMENT '是否开启视频',
  `audio_state` enum('close','open') NOT NULL DEFAULT 'close' COMMENT '是否开启音频',
  `voice_state` enum('close','open') NOT NULL DEFAULT 'open' COMMENT '是否开启提示音',
  `voice_address` varchar(255) NOT NULL DEFAULT '/upload/voice/default.mp3' COMMENT '提示音文件地址',
  `state` enum('close','open') NOT NULL DEFAULT 'open' COMMENT '''open'': 打开该商户 ,‘close’:禁止该商户',
  PRIMARY KEY (`wid`),
  UNIQUE KEY `bussiness` (`business_id`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

4.wolive_chats表

CREATE TABLE `wolive_chats` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `visiter_id` varchar(200) NOT NULL COMMENT '访客id',
  `service_id` int(11) NOT NULL COMMENT '客服id',
  `business_id` varchar(100) NOT NULL COMMENT '商家id',
  `content` mediumtext NOT NULL COMMENT '内容',
  `timestamp` int(11) NOT NULL,
  `state` enum('readed','unread') NOT NULL DEFAULT 'unread' COMMENT 'unread 未读;readed 已读',
  `direction` enum('to_visiter','to_service') DEFAULT NULL,
  PRIMARY KEY (`cid`),
  KEY `visiter` (`visiter_id`) USING BTREE,
  KEY `service` (`service_id`) USING BTREE,
  KEY `time` (`timestamp`) USING BTREE,
  KEY `chat` (`business_id`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

5.wolive_message表

CREATE TABLE `wolive_message` (
  `mid` int(11) NOT NULL AUTO_INCREMENT,
  `content` text NOT NULL COMMENT '留言内容',
  `name` varchar(255) NOT NULL COMMENT '留言人姓名',
  `moblie` varchar(255) NOT NULL COMMENT '留言人电话',
  `email` varchar(255) NOT NULL COMMENT '留言人邮箱',
  `business_id` varchar(100) DEFAULT NULL COMMENT '商家id',
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`mid`),
  KEY `timestamp` (`timestamp`),
  KEY `web` (`business_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

6.wolive_question表

CREATE TABLE `wolive_question` (
  `qid` int(11) NOT NULL AUTO_INCREMENT,
  `business_id` varchar(225) NOT NULL,
  `question` longtext NOT NULL,
  `answer` longtext NOT NULL,
  `answer_read` longtext NOT NULL,
  PRIMARY KEY (`qid`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

7.wolive_queue表

CREATE TABLE `wolive_queue` (
  `qid` int(11) NOT NULL AUTO_INCREMENT,
  `visiter_id` varchar(200) NOT NULL COMMENT '访客id',
  `service_id` int(11) NOT NULL COMMENT '客服id',
  `business_id` varchar(100) NOT NULL COMMENT '商户id',
  `state` enum('normal','complete','in_black_list') NOT NULL DEFAULT 'normal' COMMENT 'normal:正常接入,‘complete’:已经解决,‘in_black_list’:黑名单',
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`qid`),
  UNIQUE KEY `id` (`visiter_id`,`business_id`) USING BTREE,
  KEY `se` (`service_id`) USING BTREE,
  KEY `vi` (`visiter_id`) USING BTREE,
  KEY `business` (`business_id`) USING BTREE
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

8.wolive_sentence表

CREATE TABLE `wolive_sentence` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `content` text NOT NULL COMMENT '内容',
  `service_id` int(11) NOT NULL COMMENT '所属客服id',
  `state` enum('using','unuse') DEFAULT 'unuse' COMMENT 'unuse: 未使用 ,using:使用中',
  PRIMARY KEY (`sid`),
  UNIQUE KEY `se` (`service_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

9.wolive_tablist表

CREATE TABLE `wolive_tablist` (
  `tid` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL COMMENT 'tab的名称',
  `content` text NOT NULL,
  `content_read` text NOT NULL,
  `business_id` varchar(2555) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

10.wolive_weixin表

CREATE TABLE `wolive_weixin` (
  `wid` int(11) NOT NULL AUTO_INCREMENT,
  `service_id` int(11) NOT NULL COMMENT '客服id',
  `open_id` varchar(255) NOT NULL COMMENT '微信用户id',
  PRIMARY KEY (`wid`),
  KEY `service_id` (`service_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

WoLive 公用API

1.访客分配接口

{channel: channel, visiter_id: visiter_id, business_id: business_id, record: record, avatar: pic}
channel : 访客订阅的频道 channel ;
visiter_id : 访客的名称;
business_id  : 商户id;
record  : 是访客从那个网页开始寻求交谈的;
avatar  : 访客的头像

  • 这些参数是通过来传入的。
visiter_id  : 传入访客的id,可以被传入,没有这自动生成,后台会被转化为 channel;
visiter_name : 传入访客的姓名,就是visiter_name
avatar      : 传入访客头像。
business_id : 的值就是商户id。

如果以上三个属性值都空,则项目会自动产生默认值。

-成功返回{code:0,msg:'',data:客服的数据json} -返回{code:1,msg:'该网站已经停止客服咨询!'},表示该web已经停止客服咨询 -返回{code:2,msg:'等待认领'},表示等待认领,排队中 -返回{code:3,msg:'请留言'},表示所有客服下线,跳转留言页面

2.发送消息接口

  • 发送消息有两个接口。
  • 第一个是客服发送消息,url: 你的域名/admin/set/chats。
  • 需要传入数据,如下
{visiter_id:sid,content: msg, avatar: img}

visiter_id : 用户的id ;
avatar     :访客的头像;
content    :发消息的内容 ;

  • 成功返回{code:0,msg:'success'}。

  • 失败返回{code:1,msg:'错误信息'}。

  • 第二个是客服发送消息

  • 客服发送消息,url: 你的域名/admin/event/chats。

  • 需要传入数据,如下


{visiter_id:visiter_id,service_id:service_id,content: msg,business_id: business_id, avatar: pic,record: record}
visiter_id : 用户的id ;
service_id : 客服的id;
content    :发消息的内容 ;
business_id:就是商户id;
avatar     :访客的头像;
record    :记录访客需要咨询的地址情况


  • 需要的参数和上面的一样
  • 成功返回{code:0,msg:'success'}。
  • 失败返回{code:3,msg:"错误消息"}。

3.上传图片

  • url: 你的域名/admin/event/upload
  • 需要传入个name="upload"的文件表单域
  • 返回值为
         {
            "code":0,     // 表示上传成功
            "msg":"",
            "data":newimgpath  // 新图片路径
           }

4.上传文件

  • url: 你的域名/admin/event/uploadfile
  • 需要传入个name="folder"的文件表单域
  • 返回值为
         {
            "code":0,     // 表示上传成功
            "msg":"",
            "data":newpath  // 文件下载路径
           }

5.离线访问

  • 客服离线或访客离线,服务器访问的地址
  • url: 你的域名/admin/event
<?php


 $webhook_signature = $_SERVER ['HTTP_X_PUSHER_SIGNATURE'];

 $body = file_get_contents('php://input');

 $expected_signature = hash_hmac('sha256', $body, $app_secret, false);

 if ($webhook_signature == $expected_signature) {

      $payload = json_decode($body, true);
     foreach ($payload['events'] as $event) {
        
               // 通知离线
                if ($event['name'] == 'channel_removed') {
                  // 处理自己的逻辑
                }

               // 通知在线
                if ($event['name'] == 'channel_added') {
                   // 处理自己的逻辑
                }
   }

}

WoLive 后台Api

对话平台Api

1.获取认领的对话列表

  • url: 你的域名/admin/set/getchats
  • 返回的是通过查询wolive_queue获取被认领的数据
  • 成功返回格式:{code:0,data:“对话列表数据”}

2.获取排队的列表

  • url:你的域名/admin/set/getwait
  • 通过查询wolive_queue获取的是未被认领等待通话的数据
  • 成功返回格式:{code:0,data:'排队人员数据'}

3.即使获取被删除的访客信息

  • url: 你的域名/admin/set/getchatnow
  • 需要传入访客的所有信息josn格式,信息值按照wolive_queue表
  • 不小心删除对话表中的通话对象,如果对方继续发消息,会恢复在对话表中

4.获取黑名单列表

  • url: 你的域名/admin/set/getblackdata
  • 通过查询wolive_queue获取被设定为黑名单的数据
  • 成功返回格式:{code:0,data:“黑名单列表数据”}

5.获取未读消息数

  • url:你的域名/admin/set/getmessage
  • 需要传入访客的channel值
  • 通过查询wolive_chats获取未读消息数

6.标记已看消息

  • url: 你的域名/admin/set/getwatch
  • 需要传入访客的channel值
  • 修改wolive_chats中消息的状态
  • 成功返回{code:0,msg:'success'}

7.标记某个访客为黑名单

  • url: 你的域名/admin/set/blacklist
  • 需要传入访客的channel值
  • 修改wolive_queue中访客的状态
  • 成功返回{code:0,msg:'success'}

显示最近一条消息是通过监听自己kefu频道储存在local storage中

客服管理Api

  1. 新增客服。
  • url: 你的域名/admin/manager/registForService
  • 需要传入数据,如下:
{
     user_name: user,  // 用户名
     nick_name: nick,  // 昵称
     password: pass1, // 密码
     password2: pass2,// 确认密码
     phone: phone,    // 手机号
     email: email,    // 邮箱
     avatar: path   // 客服头像
 }

  • 成功,返回{code:0,msg:'成功'}
  • 失败,返回{code:1,msg:'错误信息'}

2.头像上传

  • url : 你的域名/admin/manager/uploadpic
  • 需要传入个name="img_head"的文件表单域
  • 成功,返回{code:0,msg:'',data:'图片的地址'}
  • 失败,返回{code:1,msg:'错误信息'}

3.修改客服信息

  • url: 你的域名/admin/manager/update
  • 需要传入数据,如下:
{
     user_name: user,  // 用户名
     nick_name: nick,  // 昵称
     phone: phone,    // 手机号
     email: email,    // 邮箱
     company:company  // 公司
     avatar: path   // 客服头像
 }

  • 成功,返回{code:0,msg:'成功'}
  • 失败,返回{code:1,msg:'错误信息'}
  1. 修改密码
  • url: 你的域名/admin/manager/modify
  • 需要传入数据,如下:
{
   oldpass: oldpass,    // 旧密码
   newpass: newpass,    // 新密码
   newpass2: newpass2   // 确认新密码
 }

  • 成功,返回{code:0,msg:'成功'}
  • 失败,返回{code:1,msg:'错误信息'}

查看历史消息Api

  1. 查询与该客服交谈过的所有的访客。
  • url: 你的域名/admin/set/getvisiters
  • 需要传入数据,如下:
{service: user}
service : 客服的昵称 
  • 成功返回{code:0,msg:'',data:'获取的数据'}
  1. 查询客服和访客的对话。
  • 第一个url: 你的域名/admin/set/getviews
  • 需要传入数据,如下:
{channel: cha, puttime: times}
channel : 访客的channel
time : 最近一周或最近一个月

  • 第二个url: 你的域名/admin/set/getdesignForViews
  • 需要传入数据,如下:
{channel: cha, start: s_time, end: e_time}
channel : 访客的channel
s_time  : 开始时间
end     : 结束时间
  • 成功,返回{code:0,msg:'',data:'获取的数据'}

问候语添加Api

  1. 添加问候语
  • url : 你的域名/admin/manager/cmtalk
  • 需要传入数据,如下:
 {content:content}
  content : 输入的问候语
  • 成功,返回{code:0,msg:'成功'}

添加常用问题

  • url:你的域名/admin/manager/addquestion
  • 需要传入,如下:
{question:q,answer:a,answer_read:ra,qid:qid}

添加tab的编辑面版

  • url:你的域名/admin/set/gettab
  • 需要传入,如下:
{title:title,content:content,content_read:rcontent,tid:id}

更换‘在线咨询’的图像

  • 在wolive中public/assets/index/kefu_online.js中
$(".kefu_box").css({"z-index":"9999","text-align":"center","width":"60px","height": "60px","cursor": "pointer",'background': 'url("'+web+'/assets/images/index/im.png") no-repeat',"position": "fixed","top":"60%","right":"5%","background-size": "cover"});

url: 就是咨询的图像

wolive-source's People

Contributors

abc333love avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.