1、后台方法读取状态并json返回到前台
public function getState(){
$m_user =
M('m_user');
if($_REQUEST['id']){
$m_user_list =
$m_user->where('d_id =
%d',$_REQUEST['id'])->field('user_id,exten_state,last_time,last_ip')->select();
}else{
$m_user_list =
$m_user->field('user_id,exten_state,last_time,last_ip')->select();
}
$idleNum = 0;//空闲
$inuseNum = 0;//通话中
$dndNum = 0;//示忙
$otherNum =
0;//其他
if
($onlineNum) {
foreach ($m_user_list as $key =>
$val) {
switch
($val['exten_state']) {
case 'idle':
$idleNum++;
$detail = '空闲';
break;
case 'ringing':
$inuseNum++;
$detail = '通话中';
break;
case 'inuse':
$inuseNum++;
$detail = '通话中';
break;
case 'dnd':
$dndNum++;
$detail =
'离线';
break;
case 'busy':
$inuseNum++;
$detail = '通话中';
break;
default:
$otherNum++;
break;
}
$user_list[$key] =
array(
'user_id' =>
$val['user_id'],
'exten_state' =>
$val['exten_state'],
'extenStateDetail' =>
$detail,
'last_time' =>
getdifftime($val['last_time']),
'last_ip' => $val['last_ip']
);
}
}
$arr_r = array(
"result" => 1,
"data" => $user_list,
//统计各个状态人员数量。并返回到前台
"onlineNum" =>
$onlineNum,
'idleNum' => $idleNum,
'inuseNum' =>
$inuseNum,
'dndNum' => $dndNum,
'otherNum' => $otherNum
);
echo
json_encode($arr_r);
}
2、前台接收值,并根据返回状态显示在页面,js每秒执行一次请求,检测用户状态
function load_cti(){
$.getJSON('{:U("monitor/getState")}'+'&id={$id}'+'&t='
+ Math.random(1000),function(data){
if(data.result == "1"){
if(data.data){
$.each(data.data, function(i,
item) {
$("#td_user_id_"+item['user_id']).html(item['extenStateDetail']);
});
}
}
});
setTimeout("load_cti();",1000);
}
load_cti();