<?php header("content-type:text/html;charset=utf-8"); require_once 'db_connect.php'; require_once 'include/asterevent.class.php'; $username = trim($_GET['username']); if ($username == "") { echo 0; exit; } if (ereg("[0-9a-zA-Z\\@\\.]+", $username)) { $query = "SELECT * FROM astercrm_account WHERE username = '******' "; $row = $db->getRow($query); if ($row['id'] == '') { echo 0; exit; } } $event = asterEvent::checkNewCall(0, $row['extension'], $row['channel'], $row['agent']); if ($event['status'] == '') { echo 0; } else { echo 1; } exit;
function dial($phoneNum, $first = '', $myValue, $dtmf = '', $diallistid = 0) { global $config, $locate; $objResponse = new xajaxResponse(); if (trim($myValue['curid']) > 0) { $curid = trim($myValue['curid']) - 1; } else { $curid = trim($myValue['curid']); } $call = asterEvent::checkNewCall($curid, $curid, $_SESSION['curuser']['extension'], $_SESSION['curuser']['channel'], $_SESSION['curuser']['agent']); if ($call['status'] != '') { //$objResponse->addAssign("divMsg", "style.visibility", "hidden"); $objResponse->addScript("alert('" . $locate->Translate("Exten in use") . "')"); return $objResponse->getXML(); } //$group_info = astercrm::getRecordByID($_SESSION['curuser']['groupid'],"astercrm_accountgroup"); if ($_SESSION['curuser']['group']['incontext'] != '') { $incontext = $_SESSION['curuser']['group']['incontext']; } else { $incontext = $config['system']['incontext']; } if ($_SESSION['curuser']['group']['outcontext'] != '') { $outcontext = $_SESSION['curuser']['group']['outcontext']; } else { $outcontext = $config['system']['outcontext']; } if ($dtmf != '') { $app = 'Dial'; $data = 'local/' . $phoneNum . '@' . $incontext . '|30' . '|D' . $dtmf; $first = 'caller'; } $myAsterisk = new Asterisk(); if ($first == '') { if ($_SESSION['curuser']['group']['firstring'] != '') { $first = $_SESSION['curuser']['group']['firstring']; } else { $first = $config['system']['firstring']; } } $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { $objResponse->addAssign("mobileStatus", "innerText", "Failed"); } if ($first == 'caller') { //caller will ring first $variable = '__CUSCID=' . $_SESSION['curuser']['extension']; $strChannel = "local/" . $_SESSION['curuser']['extension'] . "@" . $incontext . "/n"; if ($config['system']['allow_dropcall'] == true) { $sid = Customer::generateUniquePin(); $myAsterisk->dropCall($sid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $phoneNum, 'Context' => $outcontext, 'Account' => $_SESSION['curuser']['accountcode'], 'Variable' => "{$variable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $phoneNum)); } else { $myAsterisk->sendCall($strChannel, $phoneNum, $outcontext, 1, $app, $data, 30, $phoneNum, $variable, $_SESSION['curuser']['accountcode']); } } else { $variable = '__CUSCID=' . $_SESSION['curuser']['extension']; $strChannel = "local/" . $phoneNum . "@" . $outcontext . "/n"; if ($config['system']['allow_dropcall'] == true) { $sid = Customer::generateUniquePin('10'); /* coz after we use new method to capture dial event there's no good method to make both leg display correct clid for now so we comment these lines */ $myAsterisk->dropCall($sid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $_SESSION['curuser']['extension'], 'Context' => $incontext, 'Account' => $_SESSION['curuser']['accountcode'], 'Variable' => "{$variable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $phoneNum)); } else { $myAsterisk->sendCall($strChannel, $_SESSION['curuser']['extension'], $incontext, 1, $app, $data, 30, $phoneNum, $variable, NULL); } } //$myAsterisk->disconnect(); //$objResponse->addAssign("divMsg", "style.visibility", "hidden"); if ($diallistid > 0) { $row = astercrm::getRecordByID($diallistid, 'diallist'); if ($row['dialnumber'] != '') { $row['callresult'] = ''; astercrm::deleteRecord($row['id'], "diallist"); $row['dialednumber'] = $phoneNum; $row['dialedby'] = $_SESSION['curuser']['extension']; $row['trytime'] = $row['trytime'] + 1; astercrm::insertNewDialedlist($row); } $objResponse->loadXML(getPrivateDialListNumber($_SESSION['curuser']['extension'])); } return $objResponse->getXML(); }
function waitingCalls($myValue) { global $db, $config; $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'portal'); $objResponse = new xajaxResponse(); $curid = trim($myValue['curid']); // to improve system efficiency /************************** **************************/ // modified 2007/10/30 by solo // start //print_r($_SESSION);exit; //if ($_SESSION['curuser']['channel'] == '') $call = asterEvent::checkNewCall($curid, $_SESSION['curuser']['extension'], $_SESSION['curuser']['channel'], $_SESSION['curuser']['agent']); //else // $call = asterEvent::checkNewCall($curid,$_SESSION['curuser']['channel']); // end if ($call['status'] == '') { $title = $locate->Translate("waiting"); $status = 'idle'; //$call['curid'] = $curid; $direction = ''; $info = $locate->Translate("extension") . $_SESSION['curuser']['extension'] . "-" . $locate->Translate("stand_by"); } elseif ($call['status'] == 'incoming') { //incoming calls here $title = $call['callerid']; $stauts = 'ringing'; $direction = 'in'; $info = $locate->Translate("incoming") . ' ' . $call['callerid']; $trunk = split("-", $call['callerChannel']); //print_r($trunk);exit; $trunk_name = split('@', $trunk[0]); $info = $info . ' channel: ' . $trunk_name[0]; // get trunk info $mytrunk = astercrm::getTrunkinfo($trunk[0], $call['didnumber']); if ($mytrunk) { $infomsg = "<strong>" . $mytrunk['trunkname'] . "</strong><br>"; $infomsg .= mb_substr(astercrm::db2html($mytrunk['trunknote']), 0, 10, "UTF-8") . '...'; if ($call['didnumber'] != '') { $infomsg .= " |" . $locate->Translate("Callee id") . " : <b>" . $call['didnumber'] . "</b>"; } $objResponse->addAssign('divTrunkinfo', "innerHTML", $infomsg); } else { $trunk_name = split('@', $trunk[0]); $infomsg = $locate->Translate("no information get for trunk") . ": " . $trunk_name[0]; $objResponse->addAssign('divTrunkinfo', "innerHTML", $infomsg); } $objResponse->addAssign("iptSrcNumber", "value", $call['callerid']); $objResponse->addAssign("iptCallerid", "value", $call['callerid']); $objResponse->addAssign("btnHangup", "disabled", false); if ($config['system']['pop_up_when_dial_in']) { if (strlen($call['callerid']) > $config['system']['phone_number_length'] && $call['callerid'] != '<unknown>') { if ($myValue['popup'] == 'yes') { if ($config['system']['enable_external_crm'] == false) { $objResponse->loadXML(getContact($call['callerid'])); if ($config['system']['browser_maximize_when_pop_up'] == true) { $objResponse->addScript('maximizeWin();'); } } else { //use external link $myurl = $config['system']['external_crm_url']; $myurl = preg_replace("/\\%method/", "dial_in", $myurl); $myurl = preg_replace("/\\%callerid/", $call['callerid'], $myurl); $myurl = preg_replace("/\\%calleeid/", $_SESSION['curuser']['extension'], $myurl); if ($config['system']['open_new_window'] == false) { $mycrm = '<iframe id="mycrm" name="mycrm" src="' . $myurl . '" width="100%" frameBorder=0 scrolling=auto height="100%"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); } else { $javascript = "openwindow('" . $myurl . "')"; $objResponse->addScript($javascript); } } } } else { } } } elseif ($call['status'] == 'dialout') { //dailing out here $title = $call['callerid']; $status = 'dialing'; $direction = 'out'; $info = $locate->Translate("dial_out") . ' ' . $call['callerid']; $objResponse->addAssign("iptCallerid", "value", $call['callerid']); $objResponse->addAssign("btnHangup", "disabled", false); if ($call['didnumber'] != '') { $didinfo = $locate->Translate("Callee id") . " : " . $call['didnumber']; $objResponse->addAssign('divDIDinfo', 'innerHTML', $didinfo); } if ($config['system']['pop_up_when_dial_out']) { if (strlen($call['callerid']) > $config['system']['phone_number_length']) { if ($myValue['popup'] == 'yes') { if ($config['system']['enable_external_crm'] == false) { $objResponse->loadXML(getContact($call['callerid'])); if ($config['system']['browser_maximize_when_pop_up'] == true) { $objResponse->addScript('maximizeWin();'); } } else { //use external link $myurl = $config['system']['external_crm_url']; $myurl = preg_replace("/\\%method/", "dial_out", $myurl); $myurl = preg_replace("/\\%callerid/", $_SESSION['curuser']['extension'], $myurl); $myurl = preg_replace("/\\%calleeid/", $call['callerid'], $myurl); if ($config['system']['open_new_window'] == false) { $mycrm = '<iframe id="mycrm" name="mycrm" src="' . $myurl . '" width="100%" frameBorder=0 scrolling=auto height="100%"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); } else { $javascript = "openwindow('" . $myurl . "')"; $objResponse->addScript($javascript); } } } } } } // $objResponse->addScript('document.title='.$title.';'); // $objResponse->addAssign("status","innerHTML", $stauts ); $objResponse->addAssign("extensionStatus", "value", $stauts); //echo $call['uniqueid'];exit; $objResponse->addAssign("uniqueid", "value", $call['uniqueid']); $objResponse->addAssign("callerid", "value", $call['callerid']); $objResponse->addAssign("callerChannel", "value", $call['callerChannel']); $objResponse->addAssign("calleeChannel", "value", $call['calleeChannel']); $objResponse->addAssign("curid", "value", $call['curid']); $objResponse->addAssign("direction", "value", $direction); $objResponse->addAssign("myevents", "innerHTML", $info); return $objResponse; }