|
@@ -39,6 +39,7 @@ class Events
|
|
|
public static $redis = null;
|
|
public static $redis = null;
|
|
|
public static $logic = null;
|
|
public static $logic = null;
|
|
|
|
|
|
|
|
|
|
+ const KFSERVICES = 'KFSERVICES'; //KFSERVICES:KF10 1213131=>22这样的 客服工单hash表 健为连接号,值为工单号
|
|
|
const KFINFOKEY = 'KFINFO'; //客服信息hash表
|
|
const KFINFOKEY = 'KFINFO'; //客服信息hash表
|
|
|
const USERINFOKEY = 'USERINFO'; //用户信息hash表
|
|
const USERINFOKEY = 'USERINFO'; //用户信息hash表
|
|
|
const USERLIST = 'USERLIST'; //用户排队表
|
|
const USERLIST = 'USERLIST'; //用户排队表
|
|
@@ -186,6 +187,9 @@ class Events
|
|
|
case 'getEvaluate';
|
|
case 'getEvaluate';
|
|
|
self::getEvaluate($message['data']);
|
|
self::getEvaluate($message['data']);
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case 'debug':
|
|
|
|
|
+ self::debug($message['data']);
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
@@ -581,7 +585,8 @@ class Events
|
|
|
echo "客服发生异常退出\n";
|
|
echo "客服发生异常退出\n";
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- $user_info = $uinfo['user_info'];
|
|
|
|
|
|
|
+ //$user_info = $uinfo['user_info'];
|
|
|
|
|
+ $user_info = self::$redis->hgetall(self::getKfServiceKey($uid));
|
|
|
$kfid = self::getkfid($uid);
|
|
$kfid = self::getkfid($uid);
|
|
|
$now = time();
|
|
$now = time();
|
|
|
$starttime = $now - 86400 * 7;
|
|
$starttime = $now - 86400 * 7;
|
|
@@ -691,12 +696,13 @@ class Events
|
|
|
// 删除当前工单.
|
|
// 删除当前工单.
|
|
|
self::$redis->hdel('SERVICELOG', $servicelogId);
|
|
self::$redis->hdel('SERVICELOG', $servicelogId);
|
|
|
// 当前服务客服删除当前人员.
|
|
// 当前服务客服删除当前人员.
|
|
|
- $kfUserList = self::ArrayDataopt($kfInfo['user_info'], $data['client_id'], 0);
|
|
|
|
|
|
|
+ //$kfUserList = self::ArrayDataopt($kfInfo['user_info'], $data['client_id'], 0);
|
|
|
|
|
+ self::$redis->hdel(self::getKfServiceKey($kfInfo['id']), $data['client_id']);
|
|
|
// 删除当前人员信息.
|
|
// 删除当前人员信息.
|
|
|
self::$redis->hdel('USERINFO', $data['user_id']);
|
|
self::$redis->hdel('USERINFO', $data['user_id']);
|
|
|
// 当前客服所接待人员.
|
|
// 当前客服所接待人员.
|
|
|
- $kfInfo['user_info'] = $kfUserList;
|
|
|
|
|
- $kfInfo['task'] = count($kfUserList);
|
|
|
|
|
|
|
+ //$kfInfo['user_info'] = $kfUserList;
|
|
|
|
|
+ //$kfInfo['task'] = count($kfUserList);
|
|
|
// 存入客服信息.
|
|
// 存入客服信息.
|
|
|
self::$redis->HSET('KFINFO', 'KF' . $data['kf_id'], json_encode($kfInfo, 256));
|
|
self::$redis->HSET('KFINFO', 'KF' . $data['kf_id'], json_encode($kfInfo, 256));
|
|
|
// 发送消息给用户.
|
|
// 发送消息给用户.
|
|
@@ -807,8 +813,7 @@ class Events
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- $maxset = (self::$global->systemconfig)['KFMaxServices'] ?? 5;
|
|
|
|
|
- $maxset = intval($maxset);
|
|
|
|
|
|
|
+ $maxset = intval((self::$global->systemconfig)['KFMaxServices']);
|
|
|
|
|
|
|
|
if ($group && $uid) {
|
|
if ($group && $uid) {
|
|
|
// 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
|
|
// 指定用指定组 [可能存在断线重连的情况] 如果存在旧的会话,直接连线客服和用户
|
|
@@ -853,7 +858,7 @@ class Events
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return;
|
|
return;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//开启一个会话
|
|
//开启一个会话
|
|
@@ -904,10 +909,7 @@ class Events
|
|
|
|
|
|
|
|
$redisData = array_merge($server, $armarr, ['kf_client_id' => $kfinfo['client_id'], 'server_name' => $kfinfo['name']]);
|
|
$redisData = array_merge($server, $armarr, ['kf_client_id' => $kfinfo['client_id'], 'server_name' => $kfinfo['name']]);
|
|
|
self::$redis->hset(self::SERVICELOG, $serviceid, json_encode($redisData, 256));
|
|
self::$redis->hset(self::SERVICELOG, $serviceid, json_encode($redisData, 256));
|
|
|
-
|
|
|
|
|
- $kfinfo['user_info'] = array_merge($kfinfo['user_info'], [$userInfo['client_id'] => $serviceid]);
|
|
|
|
|
- $kfinfo['task'] = count($kfinfo['user_info']);
|
|
|
|
|
- self::$redis->hset(self::KFINFOKEY, $kfuid, json_encode($kfinfo, 256));
|
|
|
|
|
|
|
+ self::setKfTasks($kfuid, $userInfo['client_id'], 1, $serviceid);
|
|
|
|
|
|
|
|
$userInfo['serverid'] = $serviceid;
|
|
$userInfo['serverid'] = $serviceid;
|
|
|
$userInfo['kfuid'] = $kfuid;
|
|
$userInfo['kfuid'] = $kfuid;
|
|
@@ -925,7 +927,6 @@ class Events
|
|
|
];
|
|
];
|
|
|
self::MySendMsg($userInfo['client_id'], json_encode($noticeUser, 256));
|
|
self::MySendMsg($userInfo['client_id'], json_encode($noticeUser, 256));
|
|
|
|
|
|
|
|
-
|
|
|
|
|
$sayHello = (self::$global->replay)['2'];
|
|
$sayHello = (self::$global->replay)['2'];
|
|
|
if (!empty($sayHello) && 1 == $sayHello['status']) {
|
|
if (!empty($sayHello) && 1 == $sayHello['status']) {
|
|
|
$chat_message = [
|
|
$chat_message = [
|
|
@@ -988,7 +989,8 @@ class Events
|
|
|
self::$redis->hset(self::USERINFOKEY, $uid, json_encode($userInfo, 256));
|
|
self::$redis->hset(self::USERINFOKEY, $uid, json_encode($userInfo, 256));
|
|
|
// 更改客服连接信息.
|
|
// 更改客服连接信息.
|
|
|
$kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
|
|
$kfinfo = json_decode(self::$redis->hget(self::KFINFOKEY, $kfuid), true);
|
|
|
- $kfUsers = json_decode($kfinfo['user_info'], true);
|
|
|
|
|
|
|
+ //$kfUsers = json_decode($kfinfo['user_info'], true);
|
|
|
|
|
+ $kfUsers = self::$redis->hgetall(self::getKfServiceKey($kfuid));
|
|
|
foreach ($kfUsers as $key => $value) {
|
|
foreach ($kfUsers as $key => $value) {
|
|
|
if ($value == $uid) {
|
|
if ($value == $uid) {
|
|
|
// 删除之前的当前用户连接
|
|
// 删除之前的当前用户连接
|
|
@@ -1074,6 +1076,8 @@ class Events
|
|
|
$now = json_decode($val, true);
|
|
$now = json_decode($val, true);
|
|
|
if ($now && $now['status'] == 1) {
|
|
if ($now && $now['status'] == 1) {
|
|
|
//客分组后的数组
|
|
//客分组后的数组
|
|
|
|
|
+ $tmp = self::getKfTasks($now['id']);
|
|
|
|
|
+ $now['task'] = $tmp ? count($tmp) : 0;
|
|
|
$allkfgkarr[$now['group']][] = $now;
|
|
$allkfgkarr[$now['group']][] = $now;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1766,6 +1770,42 @@ class Events
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //调试使用
|
|
|
|
|
+ public static function debug($dataArray)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //客服的工单hash健名
|
|
|
|
|
+ public static function getKfServiceKey($kfuid)
|
|
|
|
|
+ {
|
|
|
|
|
+ return self::KFSERVICES . ':' . $kfuid;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //获取客服所有连接信息及工单信息
|
|
|
|
|
+ public static function getKfTasks($kfuid)
|
|
|
|
|
+ {
|
|
|
|
|
+ $all = self::$redis->hgetall(self::getKfServiceKey($kfuid));
|
|
|
|
|
+ if (empty($r)) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return $all;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //设置或删除客服的连接 opt==0删除 1添加
|
|
|
|
|
+ public static function setKfTasks($kfuid, $clientid, $opt = 0, $serviceid = 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ $k = self::getKfServiceKey($kfuid);
|
|
|
|
|
+ if ($opt == 0) {
|
|
|
|
|
+ self::$redis->hdel($k, $clientid);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ self::$redis->hset($k, $clientid, $serviceid);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|