/** * 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; }
function waitingCalls($myValue) { global $db, $config, $locate; $objResponse = new xajaxResponse(); $curid = trim($myValue['curid']); // to improve system efficiency /************************** **************************/ if (strtoupper($config['system']['extension_pannel']) == 'ON') { $phone_html = asterEvent::checkExtensionStatus($curid); $objResponse->addAssign("divExtension", "innerHTML", $phone_html); $objResponse->addScript("menuFix();"); } else { $objResponse->addAssign("divExtension", "style.visibility", 'hidden'); } // 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 //print_r($call['callerid']);exit; if ($call['status'] == '') { if ($call['hold']['number'] != '') { //print_r($call);exit; $curcallerid = $call['hold']['number']; $objResponse->addAssign("divHolding", "innerHTML", '<a href="###" onclick="getContact(' . $call['hold']['number'] . ');">[' . $call['hold']['number'] . ']</a> <a onclick="xajax_turnback(\'' . $call['hold']['channel'] . '\',\'' . $myValue['callerChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Turn back") . '</font></a> <a onclick="xajax_holdhangup(\'' . $call['hold']['channel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Hangup") . '</font></a>'); //return $objResponse; } else { $objResponse->addAssign("divHolding", "innerHTML", ''); } $title = $locate->Translate("waiting"); $status = 'idle'; //$call['curid'] = $curid; $direction = ''; $info = $locate->Translate("stand_by"); ///$objResponse->addAssign("dndlist_campaignid","value","0"); } elseif ($call['status'] == 'incoming') { //incoming calls here if ($config['system']['enable_socket'] == 'yes' && $_SESSION['socket_url_flag'] == 'yes') { //固定端口 $service_port = $config['system']['fix_port']; //socketURL $socket_url = $config['system']['socket_url']; if ($service_port != '' && $socket_url != '') { //本地 $address = Customer::get_real_ip(); //创建 TCP/IP socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === FALSE) { $_SESSION['socket_url_flag'] = 'no'; $objResponse->addAlert("socket创建失败原因: " . socket_strerror($socket) . " \n 请检查当前系统的socket,并且重新登录系统 \n 坐席的ip是 " . $address); return $objResponse; } $result = socket_connect($socket, $address, $service_port); if ($result === FALSE) { $_SESSION['socket_url_flag'] = 'no'; $objResponse->addAlert("SOCKET连接失败原因: ({$result}) " . socket_strerror($result) . " \n 请检查当前系统的socket,并且重新登录系统 \n 坐席的ip是 " . $address); return $objResponse; } $socket_url = str_replace('%callerid%', $call['callerid'], $socket_url); socket_write($socket, $socket_url, strlen($socket_url)); #socket_write ($socket, "\r\n", strlen ("\r\n")); socket_close($socket); } } // if(strstr($call['calleeChannel'],'agent')){ // $objResponse->addAssign("attendtran","disabled",true); // }else{ // $objResponse->addAssign("attendtran","disabled",false); // } $objResponse->addScript("clearSettimePopup();"); $title = $call['callerid']; $stauts = 'ringing'; $direction = 'in'; if (!empty($call['srcname']) && $call['srcname'] != 'unknown' && $call['srcname'] != '<unknown>') { $info = $locate->Translate("incoming") . ' ' . $call['callerid'] . ' (' . $call['srcname'] . ') '; } else { $info = $locate->Translate("incoming") . ' ' . $call['callerid']; } $result = asterCrm::checkDialedlistCall($call['callerid']); $dialedlistid = $result['id']; $campaign_id = $result['campaignid']; if ($campaign_id != '') { $objResponse->addAssign("dndlist_campaignid", "value", $campaign_id); } else { $objResponse->addAssign("dndlist_campaignid", "value", "0"); } if ($myValue['callResultStatus'] == '' && $call['callerid'] != '') { if ($dialedlistid) { $divCallresult = Customer::getCampaignResultHtml($dialedlistid, 'NOANSWER'); $objResponse->addAssign("divCallresult", "style.display", ""); $objResponse->addAssign("divCallresult", "innerHTML", $divCallresult); $objResponse->addAssign("dialedlistid", "value", $dialedlistid); } else { $objResponse->addAssign("dialedlistid", "value", 0); $objResponse->addAssign("divCallresult", "style.display", "none"); } $objResponse->addAssign("callResultStatus", "value", '1'); } if ($dialedlistid) { if ($config['diallist']['popup_diallist'] == 1) { $dialistHtml = Customer::formDiallist($dialedlistid); $objResponse->addAssign('formDiallistPopup', 'innerHTML', $dialistHtml); $objResponse->addAssign('formDiallistPopup', "style.visibility", "visible"); } } if ($call['didnumber'] != '') { $didinfo = $locate->Translate("Callee id") . " : <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"); } if ($config['system']['enable_sms'] == 'callerid' && $call['callerid'] != '') { $objResponse->addScript('xajax_SendSmsForm("callerid",' . $call['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' && $campaign_id != '') { $objResponse->addScript('xajax_SendSmsForm("campaign_number",' . $campaign_id . ')'); } } } $objResponse->addAssign("iptCallerid", "value", $call['callerid']); $objResponse->addAssign("btnHangup", "disabled", false); if ($call['queue'] != '') { foreach ($_SESSION['curuser']['campaign_queue'] as $row) { //print_r($row);exit; if ($row['queuename'] == $call['queue']) { $objResponse->addAssign("campaignDiv-" . $row['id'], "style.background", 'red'); } } } if ($config['system']['pop_up_when_dial_in']) { if (strlen($call['callerid']) > $config['system']['phone_number_length'] && $call['callerid'] != '<unknown>') { // $config['system']['allow_popup_when_aleady_popup'] 客户弹屏存在是否重新弹出客户窗口 if ($myValue['popup'] == 'yes' || $config['system']['enable_external_crm'] || $config['system']['allow_popup_when_already_popup']) { if ($config['system']['enable_external_crm'] == false) { $objResponse->loadXML(getContact($call['callerid'], 0, $campaign_id, 0, $call['srcname'])); if ($config['system']['browser_maximize_when_pop_up'] == true) { $objResponse->addScript('maximizeWin();'); } } else { //print_r($call);exit; //use external link $myurl = $config['system']['external_crm_url']; $method = "dial_in"; $callerid = $call['callerid']; $calleeid = $_SESSION['curuser']['extension']; $uniqueid = $call['uniqueid']; $calldate = $call['calldate']; $didnumber = $call['didnumber']; $cur_srcname = Customer::getSrcnameByCurid($call['curid']); $curHtml = '<form id="external_crm_form" action="' . $myurl . '?curid=' . $call['curid'] . '&srcname=' . $cur_srcname . '" target="_blank" method="post"> <input type="hidden" name="callerid" value="' . $callerid . '" /> <input type="hidden" name="calleeid" value="' . $calleeid . '" /> <input type="hidden" name="method" value="' . $method . '" /> <input type="hidden" name="uniqueid" value="' . $uniqueid . '" /> <input type="hidden" name="calldate" value="' . $calldate . '" /> <input type="hidden" name="didnumber" value="' . $didnumber . '" /> '; if ($config['system']['external_url_parm'] != '') { if ($config['system']['detail_level'] == 'all') { $customerid = astercrm::getCustomerByCallerid($call['callerid']); } else { $customerid = astercrm::getCustomerByCallerid($call['callerid'], $_SESSION['curuser']['groupid']); } if ($customerid != '') { $customer = astercrm::getCustomerByID($customerid, "customer"); $url_parm = split(',', $config['system']['external_url_parm']); foreach ($url_parm as $parm) { if ($parm != '') { $curHtml .= '<input type="hidden" name="' . $parm . '" value="' . urlencode($customer[$parm]) . '" />'; } } } } $curHtml .= "</form>"; if ($config['system']['open_new_window'] == 'internal') { $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); $curHtml = preg_replace("/\\_blank/", "mycrm", $curHtml); $objResponse->addAssign("external_crmDiv", "innerHTML", $curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv", "innerHTML", ""); } else { if ($config['system']['open_new_window'] == 'external') { $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", $curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", ""); } else { $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); $internal_curHtml = preg_replace("/\\_blank/", "mycrm", $curHtml); $external_curHtml = preg_replace("/external_crm_form/", "external_crm_openNew_form", $curHtml); $objResponse->addAssign("external_crmDiv", "innerHTML", $internal_curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv", "innerHTML", ""); $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", $external_curHtml); $objResponse->addScript("document.getElementById('external_crm_openNew_form').submit();"); $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", ""); } } /*if ($config['system']['open_new_window'] == false){ $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm","innerHTML", $mycrm ); $curHtml = preg_replace("/\_blank/","mycrm",$curHtml); $objResponse->addAssign("external_crmDiv","innerHTML", $curHtml ); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv","innerHTML", "" ); }else{ //print_r($curHtml);exit; $objResponse->addAssign("external_crmDiv","innerHTML", $curHtml ); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv","innerHTML", "" ); //$javascript = "openwindow('".$myurl."')"; //$objResponse->addScript($javascript); }*/ } } } else { } } } elseif ($call['status'] == 'dialout') { //dailing out here // if(strstr($call['callerChannel'],'agent')){ // $objResponse->addAssign("attendtran","disabled",true); // }else{ // $objResponse->addAssign("attendtran","disabled",false); // } $objResponse->addScript("clearSettimePopup();"); $title = $call['callerid']; $status = 'dialing'; $direction = 'out'; $info = $locate->Translate("dial_out") . ' ' . $call['callerid']; if ($call['hold']['number'] != '') { //print_r($call);exit; $call['callerid'] = $call['hold']['number']; $objResponse->addAssign("divHolding", "innerHTML", '<a href="###" onclick="getContact(' . $call['hold']['number'] . ');">[' . $call['hold']['number'] . ']</a> <a onclick="xajax_turnback(\'' . $call['hold']['channel'] . '\',\'' . $myValue['callerChannel'] . '\');return false;" href="###"><font size="2px">' . $locate->Translate("Turn back") . '</font></a> '); //<a onclick="xajax_holdhangup(\''.$call['hold']['channel'].'\');return false;" href="###"><font size="2px">'.$locate->Translate("Hangup").'</font></a> } else { $objResponse->addAssign("divHolding", "innerHTML", ''); } if ($myValue['callResultStatus'] == '' && $call['callerid'] != '') { $result = asterCrm::checkDialedlistCall($call['callerid']); //print_r($result);exit; $dialedlistid = $result['id']; $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, 'NOANSWER'); //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("divCallresult", "style.display", "none"); } $objResponse->addAssign("callResultStatus", "value", '1'); //print_r($config['diallist']);exit; if ($dialedlistid) { if ($config['diallist']['popup_diallist'] == 1) { $dialistHtml = Customer::formDiallist($dialedlistid); $objResponse->addAssign('formDiallistPopup', 'innerHTML', $dialistHtml); $objResponse->addAssign('formDiallistPopup', "style.visibility", "visible"); } } } $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' || $config['system']['allow_popup_when_already_popup']) { if ($config['system']['enable_external_crm'] == false) { $objResponse->loadXML(getContact($call['callerid'], 0, $campaign_id, 0, $call['srcname'])); if ($config['system']['browser_maximize_when_pop_up'] == true) { $objResponse->addScript('maximizeWin();'); } } else { //print_r($call);exit; //use external link $myurl = $config['system']['external_crm_url']; $method = "dial_out"; $callerid = $_SESSION['curuser']['extension']; $calleeid = $call['callerid']; $uniqueid = $call['uniqueid']; $calldate = $call['calldate']; $didnumber = $call['didnumber']; $cur_srcname = Customer::getSrcnameByCurid($call['curid']); $curHtml = '<form id="external_crm_form" action="' . $myurl . '?curid=' . $call['curid'] . '&srcname=' . $cur_srcname . '" target="_blank" method="post"> <input type="hidden" name="callerid" value="' . $callerid . '" /> <input type="hidden" name="calleeid" value="' . $calleeid . '" /> <input type="hidden" name="method" value="' . $method . '" /> <input type="hidden" name="uniqueid" value="' . $uniqueid . '" /> <input type="hidden" name="calldate" value="' . $calldate . '" /> <input type="hidden" name="didnumber" value="' . $didnumber . '" /> </form>'; if ($config['system']['open_new_window'] == 'internal') { $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); $curHtml = preg_replace("/\\_blank/", "mycrm", $curHtml); $objResponse->addAssign("external_crmDiv", "innerHTML", $curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv", "innerHTML", ""); } else { if ($config['system']['open_new_window'] == 'external') { $objResponse->addAssign("external_crmDiv", "innerHTML", $curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv", "innerHTML", ""); //$javascript = "openwindow('".$myurl."')"; //$objResponse->addScript($javascript); } else { $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm", "innerHTML", $mycrm); $internal_curHtml = preg_replace("/\\_blank/", "mycrm", $curHtml); $external_curHtml = preg_replace("/external_crm_form/", "external_crm_openNew_form", $curHtml); $objResponse->addAssign("external_crmDiv", "innerHTML", $internal_curHtml); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv", "innerHTML", ""); $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", $external_curHtml); $objResponse->addScript("document.getElementById('external_crm_openNew_form').submit();"); $objResponse->addAssign("external_crm_openNewDiv", "innerHTML", ""); } } /*if ($config['system']['open_new_window'] == false){ $mycrm = '<iframe id="mycrm" name="mycrm" width="100%" frameBorder=0 scrolling=auto height="600"></iframe>'; $objResponse->addAssign("divCrm","innerHTML", $mycrm ); $curHtml = preg_replace("/\_blank/","mycrm",$curHtml); $objResponse->addAssign("external_crmDiv","innerHTML", $curHtml ); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv","innerHTML", "" ); } else { $objResponse->addAssign("external_crmDiv","innerHTML", $curHtml ); $objResponse->addScript("document.getElementById('external_crm_form').submit();"); $objResponse->addAssign("external_crmDiv","innerHTML", "" ); //$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; }