Esempio n. 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;
}
Esempio n. 2
0
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>&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>');
            //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'] . ')&nbsp;&nbsp;';
        } 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") . "&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");
        }
        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>&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 {
            $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") . "&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' || $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;
}