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];
}
});