GreenJoson / workman_kefu

基于workerman/gatewayclient客服系统,mvc推送消息

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

after

Workerman+Layim+TP5简单客服系统

实现了功能:
1、可通过后台对聊天成员的增删改查
2、实现了离线客服登录后聊天记录推送
3、实现了表情和图片的发送
4、实现了一对一聊天和聊天记录的查看
5、实现了在线状态显示

注意事项:

1、back文件加下有数据库备份文件,请建立数据库,并导入。同时配置项目中的config文件中的datebase.php的数据库信息。
2、需要修改Workerman数据库配置 vendor/Workerman/Applications/Config/Db.php 3、确保php已安装pcntl扩展并且未禁用pcntl相关函数

如何运行

1、将代码下载到本地,并配置好虚拟域名(基于tp5框架,只要按照tp5框架的配置方式即可)

2、导入 back 文件夹下的 after.sql 表,数据库名为 after

3、在win下启动方式,双击 after/vendor/Workerman/start_for_win.bat 启动 workerman,不要关闭!停止按 Ctrl+c

4、在linux下启动方式,php /after/vendor/workerman/start.php start (启动,可以输出错误信息,但是关闭远程连接后会自动停止);php /after/vendor/workerman/start.php start -d (守护进程模式启动,关闭Xshell连接不会停止);php /after/vendor/workerman/start.php stop (停止服务)

5、访问聊天系统,进入前台,注册新用户登录即可聊天。 请用两个浏览器打开,登录不同的账户互相聊天。后台默认账号是admin,密码admin

6、常见问题

您好!请问有什么需要帮助的吗?人工客服在线时间上午9:00—12:00  下午13:30—18:00   其他时间咨询请留言。
常见问题请点击(勿回数字):
<br><br>
<div class="question" onclick="getanswer(183)"><span>1. </span> 请点击查看 (多久发货?从哪里发货?)</div>
<div class="question" onclick="getanswer(184)"><span>2. </span> 请点击查看(怎么自提?怎么选同城配送?)</div>
<div class="question" onclick="getanswer(185)"><span>3. </span> 请点击查看(售后问题如收到的货有破损、货发错了、质量问题等)</div>

7、商品信息卡片

<a href="https://www.azmbk.com/511.html?prescribe_status=0" target="_blank" class="wolive_product">
	<div class="wolive_img">
	<img src="/uploads/20230114/381c2825d9d9f20469e7392d04e4040f.jpg" width="100px">
</div>
	<div class="wolive_head">
		<p class="wolive_title">【特价促销】悦而 维生素D滴剂(胶囊型) 36粒/盒
			<span class="wolive_price">69.00</span>
		</p>
		<p></p>
		<p class="wolive_info">预防治疗维生素D缺乏缺失</p>
	</div>
</a>

8、小程序跳转

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script type="text/javascript">
	$('body').on('click','.wolive_product',function(){
		//判断是否允许跳转
		//如果带有goods_href类,说明需要判断是否跳转小程序
		if ($(this).hasClass('goods_href')) {
			var mini_program_url = $(this).data('mini_program_url');
			var url = $(this).data('url');
			var ua = navigator.userAgent.toLowerCase();
			if(ua.match(/MicroMessenger/i)=="micromessenger") {
				//ios的ua中无miniProgram,但都有MicroMessenger(表示是微信浏览器)
				wx.miniProgram.getEnv((res)=>{
					if (res.miniprogram) {
						wx.miniProgram.navigateTo({
							url: mini_program_url,
						});
						return false;
					}
				})
			} else {
				window.location.href=url;
				return false;
			}
		}
	})
</script>

安装

方法一

composer require workerman/gatewayclient

使用时引入vendor/autoload.php 类似如下:

use GatewayClient\Gateway;
require_once '真实路径/vendor/autoload.php';

方法二 下载源文件到任意目录,手动引入 GatewayClient/Gateway.php, 类似如下:

use GatewayClient\Gateway;
require_once '真实路径/GatewayClient/Gateway.php';

使用

// GatewayClient 3.0.0版本以后加了命名空间
use GatewayClient\Gateway;

// composer安装
require_once '真实路径/vendor/autoload.php';

// 源文件引用
//require_once '真实路径/GatewayClient/Gateway.php';

/**
 * === 指定registerAddress表明与哪个GatewayWorker(集群)通讯。===
 * GatewayWorker里用Register服务来区分集群,即一个GatewayWorker(集群)只有一个Register服务,
 * GatewayClient要与之通讯必须知道这个Register服务地址才能通讯,这个地址格式为 ip:端口 ,
 * 其中ip为Register服务运行的ip(如果GatewayWorker是单机部署则ip就是运行GatewayWorker的服务器ip),
 * 端口是对应ip的服务器上start_register.php文件中监听的端口,也就是GatewayWorker启动时看到的Register的端口。
 * GatewayClient要想推送数据给客户端,必须知道客户端位于哪个GatewayWorker(集群),
 * 然后去连这个GatewayWorker(集群)Register服务的 ip:端口,才能与对应GatewayWorker(集群)通讯。
 * 这个 ip:端口 在GatewayClient一侧使用 Gateway::$registerAddress 来指定。
 * 
 * === 如果GatewayClient和GatewayWorker不在同一台服务器需要以下步骤 ===
 * 1、需要设置start_gateway.php中的lanIp为实际的本机内网ip(如不在一个局域网也可以设置成外网ip),设置完后要重启GatewayWorker
 * 2、GatewayClient这里的Gateway::$registerAddress的ip填写填写上面步骤1lanIp所指定的ip,端口
 * 3、需要开启GatewayWorker所在服务器的防火墙,让以下端口可以被GatewayClient所在服务器访问,
 *    端口包括Rgister服务的端口以及start_gateway.php中lanIp与startPort指定的几个端口
 *
 * === 如果GatewayClient和GatewayWorker在同一台服务器 ===
 * GatewayClient和Register服务都在一台服务器上,ip填写127.0.0.1及即可,无需其它设置。
 **/
Gateway::$registerAddress = '127.0.0.1:1236';

// GatewayClient支持GatewayWorker中的所有接口(Gateway::closeCurrentClient Gateway::sendToCurrentClient除外)
Gateway::sendToAll($data);
Gateway::sendToClient($client_id, $data);
Gateway::closeClient($client_id);
Gateway::isOnline($client_id);
Gateway::bindUid($client_id, $uid);
Gateway::isUidOnline($uid);
Gateway::getClientIdByUid($uid);
Gateway::unbindUid($client_id, $uid);
Gateway::sendToUid($uid, $dat);
Gateway::joinGroup($client_id, $group);
Gateway::sendToGroup($group, $data);
Gateway::leaveGroup($client_id, $group);
Gateway::getClientCountByGroup($group);
Gateway::getClientSessionsByGroup($group);
Gateway::getAllClientCount();
Gateway::getAllClientSessions();
Gateway::setSession($client_id, $session);
Gateway::updateSession($client_id, $session);
Gateway::getSession($client_id);

效果

image image

image image image image image image image image

About

基于workerman/gatewayclient客服系统,mvc推送消息

License:Other


Languages

Language:PHP 98.6%Language:HTML 0.8%Language:Smarty 0.5%Language:PLpgSQL 0.1%