Mini.Crm/Mini.Web/wwwroot/Scripts/cti/bxtcti1.js

543 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
/// <summary>
/// 根据 FailReason 参数 获取 连接失败 定义
/// </summary>
/// <param name="FailReason"></param>
/// <returns></returns>
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 = "<font color='red'>" + errmsg + "</font>";
}
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];
}
});