Exemplo n.º 1
0
 function checkCallStatus($curid, $uniqueid)
 {
     global $db, $config;
     $exten = $_SESSION['curuser']['extension'];
     $channel = $_SESSION['curuser']['channel'];
     $agent = $_SESSION['curuser']['agent'];
     //echo $curid;exit;
     if ($config['system']['eventtype'] == 'curcdr') {
         //$query = "SELECT * FROM curcdr WHERE (srcuid = '$uniqueid' OR dstuid = '$uniqueid') AND (src = '$exten' OR dst = '$exten' OR dstchan = 'agent/$agent' OR srcchan LIKE '$channel-%' OR dstchan LIKE '$channel-%' OR srcchan LIKE 'local/".$exten."@%' OR dstchan LIKE 'local/".$exten."@%') AND dstchan != '' AND srcchan != '' AND dst != '' AND src != '' ";
         $query = "SELECT * FROM curcdr WHERE (srcuid = '{$uniqueid}' OR dstuid = '{$uniqueid}') AND (src = '{$exten}' OR dst = '{$exten}' OR srcchan = 'agent/{$agent}' OR dstchan = 'agent/{$agent}' OR srcchan LIKE '{$channel}-%' OR dstchan LIKE '{$channel}-%' ) AND dstchan != '' AND srcchan != '' AND dst != '' AND src != '' OR id = {$curid}";
         //echo $query;exit;
         $res = $db->query($query);
         asterEvent::events($query);
         if ($res->fetchInto($list)) {
             //检查onhold 通话
             $sql = "SELECT * FROM hold_channel WHERE accountid='" . $_SESSION['curuser']['accountid'] . "' ORDER BY id DESC LIMIT 1";
             $holds = $db->getrow($sql);
             $call['hold'] = $holds;
             if (strtolower($list['disposition']) == 'link') {
                 $call['callerChannel'] = $list['srcchan'];
                 $call['calleeChannel'] = $list['dstchan'];
                 $call['consultnum'] = $list['dst'];
                 $call['queue'] = $list['queue'];
                 $call['status'] = 'link';
                 $call['didnumber'] = $list['didnumber'];
                 $call['srcname'] = $list['srcname'];
             } else {
                 $call['status'] = '';
                 $call['queue'] = $list['queue'];
                 $call['didnumber'] = $list['didnumber'];
                 $call['srcname'] = $list['srcname'];
             }
         } else {
             //检查onhold 通话
             $sql = "SELECT * FROM hold_channel WHERE accountid='" . $_SESSION['curuser']['accountid'] . "' ORDER BY id DESC LIMIT 1";
             $holds = $db->getrow($sql);
             $call['hold'] = $holds;
             //$sql = "DELETE FROM hold_channel WHERE accountid='".$_SESSION['curuser']['accountid']."'";
             //$db->query($sql);
             $call['status'] = 'hangup';
         }
         $call['id'] = $curid;
         return $call;
     }
     // check if hangup
     $call =& asterEvent::checkHangup($curid, $uniqueid);
     if ($call['status'] == 'hangup') {
         return $call;
     }
     // check if linked
     $call =& asterEvent::checkLink($curid, $uniqueid);
     return $call;
 }