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; }