Example #1
0
/**
*  show extension status
*  @return	objResponse		object		xajax response object
*/
function showStatus($curhover)
{
    $objResponse = new xajaxResponse();
    $html .= "<br><br><br><br>";
    $html .= asterEvent::checkExtensionStatus(0, 'table', $curhover);
    $objResponse->addAssign("divStatus", "innerHTML", $html);
    $objResponse->addScript("menuFix();");
    return $objResponse;
}
Example #2
0
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();
}
Example #3
0
<?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;
Example #4
0
 function &checkDialout($curid, $exten, $maxid)
 {
     global $db;
     //		$query = "SELECT * FROM events WHERE event LIKE 'Event: Dial% Source: %".$exten."%' AND id > " . $curid . " AND id < ".$maxid." AND timestamp > '".date ("Y-m-d H:i:s" ,time()-10)."' order by id desc limit 0,1";
     $query = "SELECT * FROM events WHERE event LIKE 'Event: Dial% Source: %" . $exten . "%' AND id > " . $curid . " AND id <= " . $maxid . " AND timestamp > '" . date("Y-m-d H:i:s", time() - 10) . "' ORDER BY id desc limit 0,1";
     asterEvent::events($query);
     $res = $db->query($query);
     //		asterEvent::events("dialout:".$res->numRows());
     //		print $query;
     //		exit;
     //		print_r($res);
     if ($res->fetchInto($list)) {
         $id = $list['id'];
         $timestamp = $list['timestamp'];
         $event = $list['event'];
         $flds = split("  ", $event);
         $callerid = '';
         /*
         Event: Dial  Privilege: call,all
         Source: Local/13909846473@from-sipuser-47d9,2  
         Destination: SIP/trunk1-ec3f  
         CallerID: 8000  
         CallerIDName: <unknown>  
         SrcUniqueID: 1193886661.15682  
         DestUniqueID: 1193886661.15683
         */
         $SrcUniqueID = trim(substr($flds[6], 12));
         $DestUniqueID = trim(substr($flds[7], 13));
         $SrcChannel = trim(substr($flds[2], 7));
         //add by solo 2007/10/31
         $DestChannel = trim(substr($flds[3], 12));
         //add by solo 2007/10/31
         $srcInfo =& asterEvent::getInfoBySrcID($SrcUniqueID);
         $callerid = $srcInfo['Extension'];
         asterEvent::events("dialout: " . $event);
         if (preg_match_all("/^local\\/(.*)\\@/", $SrcChannel, $match)) {
             $callerid = trim($match[1][0]);
         }
         if ($id > $curid) {
             $curid = $id;
         }
         $call['status'] = 'dialout';
         $call['callerid'] = trim($callerid);
         $call['uniqueid'] = $SrcUniqueID;
         $call['curid'] = trim($curid);
         //add by solo 2007/10/31
         //******************
         $call['callerChannel'] = $SrcChannel;
         $call['calleeChannel'] = $DestChannel;
         //******************
     } else {
         $call['status'] = '';
         $call['curid'] = $maxid;
     }
     return $call;
 }
Example #5
0
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 .= "&nbsp;|" . $locate->Translate("Callee id") . "&nbsp;:&nbsp;<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") . "&nbsp;:&nbsp;" . $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;
}