Files
xinhu/webmain/task/runt/tonghuaAction.php
2025-03-31 20:54:32 +08:00

135 lines
3.4 KiB
PHP

<?php
/**
* 语音通话
*
*/
class tonghuaClassAction extends runtAction
{
public function sendcpush($arr, $isnei=false)
{
$arr['msgtype'] = 'calltonghua';
$arr['type'] = 'calltonghua';
$reimobj = m('reim');
$reimobj->pushserver('sendapp', $arr);
$reimobj->pushserver('send', $arr);
if($isnei)c('JPush')->sendJpush($arr);
}
/**
* 呼叫发送
* http://192.168.1.2/app/xinhu/task.php?m=tonghua|runt&a=call&key=d9ydh2d8
*/
public function callAction()
{
$key = $this->getparams('key');
$cishu = (int)$this->getparams('cishu','1');
if($cishu>=15)return;
if(!$key)return;
$data = c('cache')->get($key);
if(!$data)return;
$channel = $data['channel'];
$uid = $data['uid'];
$urs = m('admin')->getone($uid);
$thrs = m('im_tonghua')->getone("`channel`='$channel'");
if(!$thrs)return;
if($thrs['state']>0)return;
$this->rock->adminid = $uid;
$this->rock->adminname = $urs['name'];
if($cishu==1){
$typea= array('语音','视频');
$cont = $this->jm->base64encode('['.$typea[$data['type']].'通话]');
$pushcont = $this->jm->base64encode('邀请与您'.$typea[$data['type']].'通话...');
m('reim')->sendinfor('user', $uid, $data['toid'], array(
'optdt' => $thrs['adddt'],
'cont' => $cont,
'pushcont' => $pushcont,
'msgid' => $channel
));
}
//每2秒呼叫一次
$this->sendcpush(array(
'adminid' => $uid,
'adminname' => $urs['name'],
'adminface' => m('admin')->getface($urs['face']),
'th_type' => $data['type'],
'calltype' => 'call',
'th_channel' => $channel,
'th_appid' => $data['appid'],
'th_time' => time()-strtotime($thrs['adddt']),
'receid' => $data['toid']
));
c('rockqueue')->push('tonghua,call', array('key' => $key,'cishu'=>$cishu+1),time()+2);
return 'success';
}
/**
* 取消呼叫
*/
public function cancelAction()
{
$key = $this->getparams('key');
$data = c('cache')->get($key);
if(!$data)return;
$channel = $data['channel'];
$this->sendcpush(array(
'adminid' => $data['uid'],
'calltype' => 'cancel',
'th_channel'=> $channel,
'receid' => $data['toid']
), true);
return 'success';
}
/**
* 拒接/同意
*/
public function jieAction()
{
$key = $this->getparams('key');
$state = (int)$this->getparams('state','2');
$nowtime = $this->getparams('nowtime');
$uid = (int)$this->getparams('uid','0');
$data = c('cache')->get($key);
if(!$data)return;
$channel = $data['channel'];
$tayar = array('','tongyi','jujue');
$this->sendcpush(array(
'adminid' => $data['toid'],
'calltype' => $tayar[$state],
'th_channel'=> $channel,
'receid' => $data['uid'].','.$data['toid']
));
c('xinhuapi')->getdata('tonghua','jietongs', array('uid'=>$uid,'state'=>$state,'nowtime'=>$nowtime,'channel'=>$channel));
return 'success';
}
/**
* 结束通话
*/
public function jiesuAction()
{
$uid = (int)$this->getparams('uid');
$toid = (int)$this->getparams('toid');
$nowtime = $this->getparams('nowtime');
$channel = $this->getparams('channel');
$this->sendcpush(array(
'adminid' => $uid,
'calltype' => 'jiesu',
'th_channel'=> $channel,
'receid' => $toid
));
return c('xinhuapi')->getdata('tonghua','jiesu', array('uid'=>$uid,'nowtime'=>$nowtime,'channel'=>$channel));
}
}