Esempio n. 1
0
function incomingCalls($myValue)
{
    global $db, $locate, $config;
    $objResponse = new xajaxResponse();
    //print_r($myValue);exit;
    if ($myValue['direction'] != '') {
        $call = asterEvent::checkCallStatus($myValue['curid'], $myValue['uniqueid']);
        #print_r($call);exit;
        if ($call['status'] == '') {
            if ($call['hold']['number'] != '') {
                //print_r($myValue);exit;
                $curcallerid = $call['hold']['number'];
                $objResponse->addAssign("divHolding", "innerHTML", '<a href="###" onclick="getContact(' . $call['hold']['number'] . ');">[' . $call['hold']['number'] . ']</a>&nbsp;&nbsp;<a onclick="xajax_turnback(\'' . $call['hold']['channel'] . '\',\'' . $myValue['callerChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Turn back") . '</font></a>&nbsp;&nbsp;&nbsp;');
                //<a onclick="xajax_holdhangup(\''.$call['hold']['channel'].'\');return false;" href="###"><font size="2px">'.$locate->Translate("Hangup").'</font></a>
            } else {
                $curcallerid = $myValue['callerid'];
                $objResponse->addAssign("divHolding", "innerHTML", '');
            }
            return $objResponse;
        } elseif ($call['status'] == 'link') {
            $objResponse->addAssign("btnDial", "disabled", true);
            $objResponse->addScript("clearSettimePopup();");
            if ($myValue['direction'] == 'in' && $myValue['trunkinfoStatus'] == 0) {
                if ($call['didnumber'] != '') {
                    $didinfo = $locate->Translate("Callee id") . "&nbsp;:&nbsp;<b>" . $call['didnumber'] . "</b>";
                    $objResponse->addAssign('divDIDinfo', 'innerHTML', $didinfo);
                }
                $trunk = split("-", $call['callerChannel']);
                //print_r($trunk);exit;
                $info = $info . ' channel: ' . $trunk[0];
                // get trunk info
                $mytrunk = astercrm::getTrunkinfo($trunk[0], $call['didnumber']);
                if ($mytrunk) {
                    $infomsg = "<strong>" . $mytrunk['trunkname'] . "</strong><br>";
                    $infomsg .= astercrm::db2html($mytrunk['trunknote']);
                    $objResponse->addAssign('divTrunkinfo', "innerHTML", $infomsg);
                    $objResponse->addAssign('trunkinfo_number', "innerHTML", $mytrunk['trunk_number']);
                } else {
                    $infomsg = $locate->Translate("no information get for trunk") . ": " . $trunk[0];
                    $objResponse->addAssign('divTrunkinfo', "innerHTML", $infomsg);
                    $objResponse->addAssign('trunkinfo_number', "innerHTML");
                }
                $objResponse->addAssign('trunkinfoStatus', "value", '1');
                if ($config['system']['enable_sms'] == 'callerid' && $myValue['callerid'] != '') {
                    $objResponse->addScript('xajax_SendSmsForm("callerid",' . $myValue['callerid'] . ')');
                } else {
                    if ($config['system']['enable_sms'] == 'trunk_number' && $mytrunk['trunk_number'] != '') {
                        $objResponse->addScript('xajax_SendSmsForm("trunk_number",' . $mytrunk['trunk_number'] . ')');
                    } else {
                        if ($config['system']['enable_sms'] == 'campaign_number' && $result['campaignid'] != '') {
                            $objResponse->addScript('xajax_SendSmsForm("campaign_number",' . $result['campaignid'] . ')');
                        }
                    }
                }
            }
            if ($myValue['callResultStatus'] != '2') {
                $result = asterCrm::checkDialedlistCall($myValue['callerid']);
                //print_r($result);exit;
                $dialedlistid = $result['id'];
                //$dialedlistid =
                $campaign_id = $result['campaignid'];
                if ($campaign_id != '') {
                    $objResponse->addAssign("dndlist_campaignid", "value", $campaign_id);
                } else {
                    $objResponse->addAssign("dndlist_campaignid", "value", "0");
                }
                if ($dialedlistid) {
                    $divCallresult = Customer::getCampaignResultHtml($dialedlistid, 'ANSWERED');
                    //echo $divCallresult;exit;
                    $objResponse->addAssign("divCallresult", "style.display", "");
                    $objResponse->addAssign("divCallresult", "innerHTML", $divCallresult);
                    $objResponse->addAssign("dialedlistid", "value", $dialedlistid);
                } else {
                    $objResponse->addAssign("dialedlistid", "value", 0);
                }
                $objResponse->addAssign("callResultStatus", "value", '2');
            }
            if ($myValue['extensionStatus'] == 'link') {
                //already get link event
                return $objResponse;
            }
            //			if ($call['callerChannel'] == '' or $call['calleeChannel'] == '')
            //				return $objResponse;
            $status = "link";
            if ($call['hold']['number'] != '') {
                //print_r($myValue);exit;
                $curcallerid = $call['consultnum'];
                $objResponse->addAssign("divHolding", "innerHTML", '<a href="###" onclick="getContact(' . $call['hold']['number'] . ');">[' . $call['hold']['number'] . ']</a>&nbsp;&nbsp;<a onclick="xajax_turnback(\'' . $call['hold']['channel'] . '\',\'' . $myValue['callerChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Turn back") . '</font></a>&nbsp;&nbsp;&nbsp;<a onclick="xajax_attendtransfer(\'' . $call['hold']['channel'] . '\',\'' . $myValue['calleeChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Transfer") . '</font></a>&nbsp;&nbsp;&nbsp;');
                //<a onclick="xajax_holdhangup(\''.$call['hold']['channel'].'\');return false;" href="###"><font size="2px">'.$locate->Translate("Hangup").'</font></a>
            } else {
                $curcallerid = $myValue['callerid'];
                $objResponse->addAssign("divHolding", "innerHTML", '');
            }
            #print_r($myValue);exit;
            if (!empty($call['srcname']) && $call['srcname'] != 'unknown' && $call['srcname'] != '<unknown>') {
                $info = $locate->Translate("talking_to") . $curcallerid . ' (' . $call['srcname'] . ')&nbsp;&nbsp;';
            } else {
                $info = $locate->Translate("talking_to") . $curcallerid;
            }
            if ($call['queue'] != '') {
                foreach ($_SESSION['curuser']['campaign_queue'] as $row) {
                    if ($row['queuename'] == $call['queue']) {
                        if ($row['autopause'] == 'checked') {
                            $pagent = '';
                            if (strstr($call['calleeChannel'], 'agent')) {
                                $pagent = $call['calleeChannel'];
                            }
                            $objResponse->addScript("xajax_queueAgentControl('" . $row['queuename'] . "','pause','" . $row['queue_context'] . "','" . $pagent . "');");
                        }
                        $objResponse->addAssign("campaignDiv-" . $row['id'], "style.background", 'red');
                    }
                }
            }
            $objResponse->addAssign("callerChannel", "value", $call['callerChannel']);
            $objResponse->addAssign("calleeChannel", "value", $call['calleeChannel']);
            //if chkMonitor be checked or monitor by astercctools btnMonitor must be disabled
            $configstatus = Common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig);
            if ($configstatus != -2) {
                if ($myValue['chkMonitor'] != 'on' && $asterccConfig['system']['force_record'] != 1) {
                    $objResponse->addAssign("btnMonitor", "disabled", false);
                }
            }
            //$objResponse->addAssign("btnMonitor","value", $locate->Translate("start_record") );
            astercrm::events($myValue['chkMonitor'] . '-chkMonitor');
            astercrm::events($myValue['btnMonitorStatus'] . '-btnMonitorStatus');
            //echo $myValue['chkMonitor'];exit;
            if ($myValue['chkMonitor'] == 'on' && $myValue['btnMonitorStatus'] == 'idle') {
                $objResponse->addScript("monitor();");
            }
            $objResponse->addAssign("btnHangup", "disabled", false);
            if (strtoupper($config['system']['transfer_pannel']) == 'ON' && $call['hold']['number'] == '') {
                $objResponse->addAssign("btnTransfer", "disabled", false);
            }
        } elseif ($call['status'] == 'hangup') {
            if ($call['hold']['number'] != '') {
                //print_r($myValue);exit;
                $curcallerid = $call['hold']['number'];
                $objResponse->addAssign("divHolding", "innerHTML", '<a href="###" onclick="getContact(' . $call['hold']['number'] . ');">[' . $call['hold']['number'] . ']</a>&nbsp;&nbsp;<a onclick="xajax_turnback(\'' . $call['hold']['channel'] . '\',\'' . $myValue['callerChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Turn back") . '</font></a>&nbsp;&nbsp;&nbsp;');
                //<a onclick="xajax_holdhangup(\''.$call['hold']['channel'].'\');return false;" href="###"><font size="2px">'.$locate->Translate("Hangup").'</font></a>
            } else {
                $curcallerid = $myValue['callerid'];
                $objResponse->addAssign("divHolding", "innerHTML", '');
            }
            //			if($call['hold']['channel'] != ''){//检查是否还有onhold的通话,有则呼叫座席进行接回
            //
            //				$myAsterisk = new Asterisk();
            //				$myAsterisk->config['asmanager'] = $config['asterisk'];
            //				$res = $myAsterisk->connect();
            //				$strChannel = "Local/".$_SESSION['curuser']['extension']."@from-internal/n";
            //				$myAsterisk->sendCall($strChannel,NULL,NULL,1,'Bridge',$call['hold']['channel'],30,$_SESSION['curuser']['extension'],NULL,$_SESSION['curuser']['accountcode']);
            //			}
            //$objResponse->addAssign("divCallresult", "style.display", "none");
            $objResponse->addAssign("callResultStatus", "value", "");
            $objResponse->addAssign('trunkinfoStatus', "value", '0');
            //$objResponse->addAssign("divCallresult", "innerHTML", '<input type="radio" value="normal" id="callresult" name="callresult" onclick="updateCallresult(this.value);" checked>'.$locate->Translate("normal").' <input type="radio" value="fax" id="callresult" name="callresult" onclick="updateCallresult(this.value);">'. $locate->Translate("fax").' <input type="radio" value="voicemail" id="callresult" name="callresult" onclick="updateCallresult(this.value);">'. $locate->Translate("voicemail").'<input type="hidden" id="dialedlistid" name="dialedlistid" value="0">');
            if ($myValue['chkMonitor'] == 'on' && $myValue['btnMonitorStatus'] == 'recording') {
                $objResponse->addScript("monitor();");
            }
            $status = 'hang up';
            $info = "Hang up call from " . $myValue['callerid'];
            //			$objResponse->addScript('document.title=\'asterCrm\';');
            $objResponse->addAssign("uniqueid", "value", "");
            $objResponse->addAssign("callerid", "value", "");
            $objResponse->addAssign("callerChannel", "value", '');
            $objResponse->addAssign("calleeChannel", "value", '');
            if (strtoupper($config['system']['transfer_pannel']) == 'ON') {
                $objResponse->addAssign("btnTransfer", "disabled", true);
            }
            //disable monitor
            $objResponse->addAssign("btnMonitor", "disabled", true);
            $objResponse->addAssign("spanMonitorStatus", "innerHTML", $locate->Translate("idle"));
            $objResponse->addAssign("btnMonitor", "value", $locate->Translate("start_record"));
            foreach ($_SESSION['curuser']['campaign_queue'] as $row) {
                //print_r($row);exit;
                $objResponse->addAssign("campaignDiv-" . $row['id'], "style.background", '');
            }
            //disable hangup button
            $objResponse->addAssign("btnHangup", "disabled", true);
            $objResponse->addAssign('divTrunkinfo', "innerHTML", '');
            $objResponse->addAssign('trunkinfo_number', "innerHTML", '');
            $objResponse->addAssign('divDIDinfo', 'innerHTML', '');
            if ($myValue['btnWorkStatus'] == 'working') {
                $interval = $_SESSION['curuser']['dialinterval'];
                $objResponse->addScript("autoDial('{$interval}');");
            }
            $objResponse->addScript("document.getElementById('btnDial').disabled=false;");
            $objResponse->addScript("setTimeoutforPopup();");
        }
        $objResponse->addAssign("status", "innerHTML", $status);
        //		$objResponse->addAssign("extensionStatus","value", $status );
        $objResponse->addAssign("myevents", "innerHTML", $info);
    }
    return $objResponse;
}
Esempio n. 2
0
function incomingCalls($myValue)
{
    global $db, $config;
    echo $_SESSION['curuser']['country'];
    exit;
    $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'portal');
    $objResponse = new xajaxResponse();
    if ($myValue['direction'] != '') {
        $call = asterEvent::checkCallStatus($myValue['curid'], $myValue['uniqueid']);
        if ($call['status'] == '') {
            return $objResponse;
        } elseif ($call['status'] == 'link') {
            if ($myValue['extensionStatus'] == 'link') {
                //already get link event
                return $objResponse;
            }
            //			if ($call['callerChannel'] == '' or $call['calleeChannel'] == '')
            //				return $objResponse;
            $status = "link";
            $info = $locate->Translate("talking_to") . $myValue['callerid'];
            $objResponse->addAssign("callerChannel", "value", $call['callerChannel']);
            $objResponse->addAssign("calleeChannel", "value", $call['calleeChannel']);
            //if chkMonitor be checked or monitor by astercctools btnMonitor must be disabled
            Common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig);
            if ($myValue['chkMonitor'] != 'on' && $asterccConfig['system']['force_record'] != 1) {
                $objResponse->addAssign("btnMonitor", "disabled", false);
            }
            //$objResponse->addAssign("btnMonitor","value", $locate->Translate("start_record") );
            astercrm::events($myValue['chkMonitor'] . '-chkMonitor');
            astercrm::events($myValue['btnMonitorStatus'] . '-btnMonitorStatus');
            if ($myValue['chkMonitor'] == 'on' && $myValue['btnMonitorStatus'] == 'idle') {
                $objResponse->addScript("monitor();");
            }
            $spanCallCtrl = '<input type="button" id="btnCallCtrl" name="btnCallCtrl" value="' . $locate->Translate("Hangup") . '" onclick="hangup();">';
            $objResponse->addAssign("spanCallCtrl", "innerHTML", $spanCallCtrl);
            $objResponse->addAssign("btnTransfer", "disabled", false);
        } elseif ($call['status'] == 'hangup') {
            if ($myValue['chkMonitor'] == 'on' && $myValue['btnMonitorStatus'] == 'recording') {
                $objResponse->addScript("monitor();");
            }
            $status = 'hang up';
            $info = $locate->Translate("Hang up call from") . " " . $myValue['callerid'];
            //			$objResponse->addScript('document.title=\'asterCrm\';');
            $objResponse->addAssign("uniqueid", "value", "");
            $objResponse->addAssign("callerid", "value", "");
            $objResponse->addAssign("callerChannel", "value", '');
            $objResponse->addAssign("calleeChannel", "value", '');
            $objResponse->addAssign("btnTransfer", "disabled", true);
            //disable monitor
            $objResponse->addAssign("btnMonitor", "disabled", true);
            $objResponse->addAssign("spanMonitorStatus", "innerHTML", $locate->Translate("idle"));
            $objResponse->addAssign("btnMonitor", "value", $locate->Translate("start_record"));
            //disable hangup button
            $spanCallCtrl = '<input type="button" id="btnCallCtrl" name="btnCallCtrl" value="' . $locate->Translate("Dial") . '" onclick="invite();">';
            $objResponse->addAssign("spanCallCtrl", "innerHTML", $spanCallCtrl);
            $objResponse->addAssign('divTrunkinfo', "innerHTML", '');
            $objResponse->addAssign('divDIDinfo', 'innerHTML', '');
            if ($myValue['btnWorkStatus'] == 'working') {
                $interval = $_SESSION['curuser']['dialinterval'];
                $objResponse->addScript("autoDial('{$interval}');");
            }
        }
        $objResponse->addAssign("status", "innerHTML", $status);
        //		$objResponse->addAssign("extensionStatus","value", $status );
        $objResponse->addAssign("myevents", "innerHTML", $info);
    }
    return $objResponse;
}