window.console = window.console || (function () { var c = {}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile = c.clear = c.exception = c.trace = c.assert = function () { }; return c; })(); $(function () { document.all.lblFJH.innerText = strFJH; if (strIsAdmin=="0") { $("#btnAgentMonitor").parent().hide(); } __Connect(1); }); /********************************************* 方法封装 *********************************************/ //移动坐席登录 function __Connect(_verifyMode) { if (Agent.connected) { return; } var jsonOption = '{"UseLicense": 1,"AgentId": ' + strFJH + ',"TeleNum": "' + strFJH + '"}'; try { Agent.BeepOnRing = false; Agent.CtiServerName = "192.168.1.11"; Agent.CtiServerPort = "13920"; Agent.WorkNo = strGH; Agent.Password = "123"; Agent.VerifyMode = _verifyMode; Agent.ConnectCtiServer(jsonOption); } catch (e) { } } //移动坐席退出 function __Loginout() { Agent.LogOut(); return true; } //挂断 function __Hangup(exten) { Agent.PickDown(); } //外拨 function __Dial(exten, dst) { if (!Agent.connected) { showstatus('服务器未连接'); } if (!Agent.Logged) { showstatus('坐席未登录'); } blCallOut = true; var txtCallingNo = document.all.txtCallingNo.value.Trim(); Agent.PickUp(); } //转接 function __Transfer(exten, dst) { Agent.Transfer(dst, -1, ""); } //监听 function __Chanspy(exten, dst) { isListen = true; Agent.PickUp(); } //示闲/忙 function __setDND(dnd) { if (dnd == 1)//示忙 { Agent.Pause(11);//离开 } else{ Agent.Continue();//离开 } } //清除转接状态 function clearTransfer() { document.all.lfjh.style.display = "none"; } //清除监听状态 function clearToListen() { document.all.lfjh.style.display = "none"; } //清除定时器 function cleartimer() { nTimer = 1; window.clearTimeout(timer2); } /********************************************* 功能代码 *********************************************/ //退出 function btnLogout() { __Loginout(); } //登录 function btnLogin() { __Connect(1); } //软挂机 function funBtnSoftHook() { clearTransfer(); clearToListen(); __Hangup(strFJH); } //外拨 function funBtnCall() { try { clearToListen(); clearTransfer(); var dst = document.all.txtTelNO.value.Trim(); if (dst.length == 0) { showstatus("号码为空!", "err"); return; } if (strGH == "") { showstatus("登录超时,请重新登录。", "err"); return; } __Dial(strFJH, dst); } catch (e) { showstatus("系统错误", "err", e); console.log("funBtnCall出错:" + e.message); } } // 转接 function funBtnTrans() { $('#btnFJH').unbind("click"); document.all.txtTelNO.value = ""; document.all.btnFJH.value = "转接"; document.all.lfjh.style.display = ""; $("#btnFJH").bind("click", function () { var strTransfer = document.all.txtTelNO.value.Trim(); if (strTransfer == "") { alert('请选择要转接到的号码。'); return; } if (isBC && isBC == "True") { $.post("/Call/GetUserAgent", { usereid: strTransfer }, function (fjh) { strTransfer = fjh; __Transfer(strFJH, strTransfer); }) } else __Transfer(strFJH, strTransfer); }); } //监听 function funBtnToListen() {//clearTransfer(); $('#btnFJH').unbind("click"); document.all.txtTelNO.value = ""; document.all.btnFJH.value = "监听"; document.all.lfjh.style.display = ""; $("#btnFJH").bind("click", function () { tolisten(); }); } //监听 function tolisten() { var strToLisFJH = document.all.txtTelNO.value.Trim(); if (strToLisFJH == "") { alert('请选择要监听的分机号。'); return; } if (isBC && isBC == "True") { $.post("/Call/GetUserAgent", { usereid: strToLisFJH }, function (fjh) { strToLisFJH = fjh; __Chanspy(strFJH, strToLisFJH); }) } else __Chanspy(strFJH, strToLisFJH); } //监控 function btnAgentmonitor() { ChildAddTab("坐席监控", '/CallRecord/AgentMonitor?strFJH=' + strFJH); } //弹屏 //0呼入,1呼出 function mixcallback(vStrCaller, vStrCallee, vStrSerial, CallType) { if (CallType == 0) {//callin blCallin = true; } funEnabledBtn("btnSoftHook", true); var strCaller = vStrCaller + ","; var arr = vStrCaller.split(','); strCaller = arr[0] + '-'; var arr1 = strCaller.split('-'); strCaller = arr1[0]; var DNIS = vStrCallee; //被叫号码 var Tel = vStrCaller; //主叫号码 var SRID = vStrSerial; //电话流水号 var SRN = vStrCallee; //服务号码 var AGENTID = strGH; //客服工号 var vStrUrl = "/Call/CallLog?State=" + CallType + "&CallType=1&DNIS=" + DNIS + "&Tel=" + Tel + "&SRID=" + SRID + "&SRN=" + SRN + "&AGENTID=" + AGENTID; ShowResDetial(vStrUrl); } //获取分机状态回调 function __getStatusCallback(onstatus, worktype) { try { if (onstatus == -1 || onstatus == -2 || onstatus == 0) {//-2座席不存在,-1离线,0在线 funEnabledBtn("btnDND", false); funEnabledBtn("btnListen", false); funEnabledBtn("btnHangup", false); funEnabledBtn("btnTransfer", false); } if (onstatus == 4) {//0: 空闲 funEnabledBtn("btnTransfer", false); funEnabledBtn("btnHangup", false); funEnabledBtn("btnDND", true); if (strIsAdmin == "1") { funEnabledBtn("btnListen", true); } } if (onstatus == 6) {//6: 工作 funEnabledBtn("btnDND", false); funEnabledBtn("btnHangup", true); funEnabledBtn("btnTransfer", true); funEnabledBtn("btnListen", false); } if (worktype == 8) {//8: 监听 clearToListen(); clearTransfer(); funEnabledBtn("btnDND", false); funEnabledBtn("btnTransfer", false); // funEnabledBtn("btnHangup", true); // funEnabledBtn("btnListen", false); funEnabledBtn("btnHangup", true); } blLogined = true; var lblexstatus = $("#divAction"); var strstats = getstatus(onstatus); lblexstatus.html(strstats); if (Agent.AgentState != -1 && Agent.AgentState != -2) {// document.all.btnLogout.style.display = "block"; document.all.btnLogin.style.display = "none"; funEnabledBtn("btnLogout", true); funEnabledBtn("btnLogin", false); } else { document.all.btnLogout.style.display = "none"; document.all.btnLogin.style.display = "block"; funEnabledBtn("btnLogout", false); funEnabledBtn("btnLogin", true); } __getDNDCallback(); } catch (e) { showstatus("系统错误", "err", e); } } //获取示闲回调 function __getDNDCallback() { try { if (11 != Agent.WorkType) {//离开 document.all.btnDND.value = "示忙"; document.all.btnDND.style.color = 'black'; $('#btnDND').unbind("click").bind("click", function () { __setDND(1); }); } else { document.all.btnDND.value = "示闲"; document.all.btnDND.style.color = 'red'; $('#btnDND').unbind("click").bind("click", function () { __setDND(-1); }); } } catch (e) { showstatus("系统错误", "err", e); } } function getstatus(s) { var rst = ""; switch (s) { case -2: rst = "座席不存在"; break; case -1: rst = "离线"; break; case 0: rst = "在线"; break; case 1: rst = "被闭塞"; break; case 2: rst = "暂停"; break; case 3: rst = "离开"; break; case 4: rst = "空闲"; break; case 5: rst = "振铃"; break; case 6: var call = document.all.txtTelNO.value; call = confusedTel(call); if (call.length > 0) rst = "通话中(" + call + ")"; else rst = "通话中"; break; case 7: rst = "通话暂停"; break; } return rst; } function retMessages(Param1) { var message; switch (Param1) { case -300: message = "其它坐席错误"; break; case -301: message = "无效座席"; break; case -302: message = "未登记的工作站"; break; case -303: message = "座席为无工作站座席"; break; case -304: message = "座席未在线"; break; case -305: message = "座席未签人"; break; case -306: message = "座席未在振铃状态"; break; case -307: message = "座席未在工作状态"; break; case -308: message = "座席未在空闲状态"; break; case -309: message = "座席未就绪"; break; case -310: message = "座席不是预期的状态"; break; case -311: message = "座席忙"; break; case -312: message = "座席工作中"; break; case -313: message = "座席未注销"; break; case -314: message = "工号检查错误"; break; case -315: message = "密码检查错误"; break; case -316: message = "工号已登录"; break; case -317: message = "登录失败"; break; case -318: message = "座席不是软电话模式"; break; case -319: message = "座席电话未摘机"; break; case -320: message = "物理线路挂机,不能摘机"; break; case -321: message = "无该操作的权限"; break; case -322: message = "错误的通知类型"; break; case -323: message = "动作失败"; break; case -324: message = "此项目不能"; break; case -325: message = "已经在录音状态"; break; case -326: message = "调功能失败"; break; case -327: message = "不能对本站操作"; break; case -328: message = "待拨号码为空"; break; case -329: message = "座席正在处理子项目"; break; case -330: message = "无效的参数"; break; case -331: message = "座席未在拨号中"; break; case -332: message = "无效的电话模式"; break; case -333: message = "不允许空闲摘机"; break; case -334: message = "未发现登录座席"; break; case -335: message = "未发现工作会话"; break; case -336: message = "未发现指定会话"; break; case -337: message = "远程座席不能切换话机模式"; break; default: message = Param1; break; } return message; } /// /// 根据 FailReason 参数 获取 连接失败 定义 /// /// /// function ConnectFailReasonString(FailReason) { var FailReasongString; switch (FailReason) { case 0: FailReasongString = "无法连接到主机"; break; case 1: FailReasongString = "已经连接到了主机"; break; case 2: FailReasongString = "主机禁止连接"; break; case 3: FailReasongString = "主机无资源"; break; case 4: FailReasongString = "连接密码错误"; break; case 5: FailReasongString = "没有找到对应该计算机名的AgentId"; break; case 6: FailReasongString = "该AgentId已经登录"; break; default: FailReasongString = "其它未知错误"; break; } return FailReasongString; } var timer2; //设置计时器 function setTimer() { if (!blTimer) return; var nHour = parseInt(nTimer / 3600); var nTmp = nTimer % 3600; var nMintue = parseInt(nTmp / 60); var nSecond = nTmp % 60; var strTimer = funAddZero(nHour) + ":" + funAddZero(nMintue) + ":" + funAddZero(nSecond); var objTimer = document.getElementById('lblTimer'); if (objTimer) objTimer.innerText = strTimer; nTimer++; timer2 = window.setTimeout("setTimer()", 1000); } //设置按钮是否显示 function funDisplayBtn(vStrBtnID, vBlDisplay) { var objBtn = document.getElementById(vStrBtnID); if (objBtn) { if (vBlDisplay) objBtn.style.display = "block"; else objBtn.style.display = "none"; } } // 设置按钮状态 function funEnabledBtn(vStrBtnID, vBlEnabled) { var objBtn = document.getElementById(vStrBtnID); if (objBtn) objBtn.disabled = !vBlEnabled; } function showstatus(errmsg, typ, err) { document.all.divAction.innerHTML = errmsg; if (err) console.log(err); if (typ == "err") document.all.divAction.innerHTML = "" + errmsg + ""; } function funAddZero(vIntValue) { var strRevalue = '0000' + vIntValue; return strRevalue.substr(strRevalue.length - 2, strRevalue.length); } String.prototype.Trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } function confusedTel(tel) { var telstr = tel; if (tel.length >= 4) { telstr = tel.substr(tel.length - 4); telstr = "****" + telstr; if (tel.length < 8) telstr = telstr.substr(telstr.length - tel.length); if (tel.length > 8) telstr = tel.substr(0, tel.length - telstr.length) + telstr; } return telstr; } $.extend({ getUrlVars: function (url) { var vars = [], hash; var hashes = url.slice(url.indexOf('?') + 1).split('&'); for (var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }, getUrlVar: function (url, name) { return $.getUrlVars(url)[name]; } });