//客户端选项
var option = {
"ServerUri": huayi.config.socket_ip, //mqqt_port
"ServerPort": huayi.config.mqqt_port,
"extenSet": $.cookie("extno"),
"ClientId": $.cookie("User"),
"TimeOut": 5,
"KeepAlive": 100,
"CleanSession": false,
"SSL": false
}
var obj = {};
//连接mqqt
function Connect() {
client = new Paho.Client(huayi.config.socket_ip, huayi.config.mqqt_port,$.cookie("User"), )
client.onConnectionLost = onConnectionLost; //连接断开
client.onMessageArrived = onMessageArrived; //接收消息
client.connect({
invocationContext: {
host: option.ServerUri, //IP地址
port: option.ServerPort, //端口号
path: client.path,
clientId: option.ClientId //标识
},
timeout: option.TimeOut, //连接超时时间
keepAliveInterval: option.KeepAlive, //心跳间隔
cleanSession: option.CleanSession, //是否清理Session
useSSL: option.SSL, //是否启用SSL
onSuccess: onConnect, //连接成功回调事件
onFailure: onError //连接失败回调事件
});
}
//发送
function Send() {
var message = new Paho.Message(JSON.stringify(obj));
message.destinationName = "TopicServer"; //"TopicServer"; currentTopic.Topic
client.send(message);
console.log(message);
WriteToStatus("发布了主题为TopicServer的消息:" + message);
}
//连接成功事件
function onConnect() {
WriteToStatus("连接成功!");
client.subscribe(option.ClientId);
WriteToStatus("成功订阅主题:" + option.ClientId);
}
//连接失败事件
function onError(e) {
WriteToStatus("连接失败:" + JSON.stringify(e))
}
//连接断开事件
function onConnectionLost(e) {
if(e.errorCode !== 0) {
WriteToStatus("连接异常断开:" + e.errorMessage);
}
}
//状态输出
function WriteToStatus(data) {
var now = new Date();
var message = '[' + now.toLocaleTimeString() + ']' + data;
console.log(message);
}
//接收消息事件
function onMessageArrived(data) {
console.log(data.payloadString)
var data = JSON.parse(data.payloadString)[0];
if(data) {
var rlt = data.Result;
if(rlt == true) {
var type = data.Type;
switch(type.toLowerCase()) {
case "login":
LoginBack();
break; //签入
case "logout":
LogoutBack();
break; //签出
case "dropcall":
DropCallBack();
break; //挂断
case "makecall": //MakeCall
MakeCallBack(data);
break; //外呼
case "setstate":
SetState(data);
break; //置忙置闲
//case "saybusy": SayBusyBack(data); break;
//case "sayfree": SayFreeBack(data); break;
case "meeting":
MeetingBack();
break; //多方通话
case "transfer":
TransferBack();
break; //转移
case "hold":
HoldBack();
break; //保持
case "retrieve":
RetrieveBack();
break; //接回
case "incoming":
IncomingBack(data);
break; //来电
case "subscribe":
SubScribeBack();
break; //监测
case "subscribecancel":
SubScribeCancelBack();
break; //停止监测
case "agentstate":
AgentStateBack(data);
break; //坐席状态
case "linestate":
LineStateBack(data);
break; //线路状态
case "motorsetstate":
SayFreeBack();
break; //班长置闲
case "linestateagent":
LineStateAgentBack(data);
break; //线路状态通知
case "callid":
CallIDBack(data);
break; //获取callid
case "recordpath":
RecordPathBack(data);
break; //录音返回
}
} else {
if(rlt == false) {
//$(".hwzt").text('操作失败!');
//外呼失败的文字展示
if(data.Type.toLowerCase() == "makecall") {
switch(data.ErrorCode) {
case 1:
$(".hwzt").text(' 挂机,请重试!');
break;
case 2:
$(".hwzt").text(' FS外呼命令失败,请重试!');
break;
case 3:
$(".hwzt").text(' 外呼获取座席失败,请重试!');
break;
case 4:
$(".hwzt").text(' 座席置忙禁止座席外呼,请重试!');
break;
case 5:
$(".hwzt").text(' 主叫座席分机非空闲或摘机拨号,请重试!');
break;
case 6:
$(".hwzt").text(' 为外呼设置座席状态失败,请重试!');
break;
case 7:
$(".hwzt").text(' 被叫座席非空闲,请重试!');
break;
case 8:
$(".hwzt").text(' 执行分机呼叫失败, 未找到分机通道,请重试!');
break;
case 9:
$(".hwzt").text(' 执行分机呼叫失败, 无法绑定分机通道,请重试!');
break;
case 10:
$(".hwzt").text(' 禁止分机自呼,请重试!');
break;
case 11:
$(".hwzt").text(' 发送分机呼叫Esl命令失败,请重试!');
break;
case 12:
$(".hwzt").text(' 目标分机非空闲,请重试!');
break;
case 13:
$(".hwzt").text(' 主控通道非空闲,请重试!');
break;
case 14:
$(".hwzt").text(' 校验不通过绑定本端逻辑线路失败,请重试!');
break;
case 15:
$(".hwzt").text(' 校验不通过本端当前线路忙,请重试!');
break;
case 16:
$(".hwzt").text(' 校验不通过对端线路状态忙,请重试!');
break;
case 17:
$(".hwzt").text(' 被叫关机,请重试!');
break;
case 18:
$(".hwzt").text(' 无效号码,请重试!');
break;
case 19:
$(".hwzt").text(' 无人接听,请重试!');
break;
case 20:
$(".hwzt").text(' 交换机错误(用户无法接通),请重试!');
break;
case 21:
$(".hwzt").text(' 话机外呼执行数据交换操作失败未找到分机通道,请重试!');
break;
case 22:
$(".hwzt").text(' 话机外呼执行数据交换操作失败分机通道未绑定任务,请重试!');
break;
case 23:
$(".hwzt").text(' 执行设备外呼任务失败无法获取对应线路,请重试!');
break;
}
}
if(data.Type == 'AcdConnectNotify') {
$("#top-search li i").removeClass("active");
$(".hwzt").text('Acd未连接');
}
} else {
$(".hwzt").text(rlt);
}
}
}
}
//签入
function LoginBack() {
$("#top-search li i").removeClass("active");
$(".Logout").addClass("active");
$(".SayBusy").addClass("active");
$(".MakeCall").addClass("active");
$(".zxzt").removeClass("br").addClass("bl");
$(".fwzt").removeClass("br").addClass("bl");
$(".hwzt").text('空闲');
}
//签出
function LogoutBack() {
$("#top-search li i").removeClass("active");
$(".Login").addClass("active");
$(".zxzt").removeClass("bl").addClass("br");
$(".fwzt").removeClass("bl").addClass("br");
$(".hwzt").text('');
}
//来电
function IncomingBack(data) {
if(data.CallID!=0){
var p = '';
$(".J_menuTab").removeClass("active");
var nif = '';
$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
$(".J_menuTabs .page-tabs-content").append(p);
hidTel=data.Number;
hidCallID=data.CallID;
hidActionID=data.ActionID;
}else{
var timestamp = Date.parse(new Date());
var p = '';
$(".J_menuTab").removeClass("active");
var nif = '';
$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
$(".J_menuTabs .page-tabs-content").append(p);
hidTel=data.Number;
hidCallID=timestamp;
}
}
//***************************************************
function CallIDBack(data) {
//$(".hidCallID").val(data.CurrID);
}
//挂断
function DropCallBack() {
$("#top-search li i").removeClass("active");
$(".Logout").addClass("active");
$(".SayBusy").addClass("active");
$(".MakeCall").addClass("active");
var obj = $("iframe:visible")
if(window.frames['iframe'+ hidCallID +'']){
window.frames['iframe'+ hidCallID +''].$(".td-call").hide();
}
}
//线路状态通知
function LineStateAgentBack(data) {
var objiframe = $("iframe:visible")
//0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,9通话保持中
if(data.State == '0') {
$(".hwzt").text('分机不可用'); //左下角状态显示
$(".fwzt").removeClass("bl").addClass("br");//20180509 by fanlongfei 增加话机状态灯
$(".zxzt").removeClass("bl").addClass("br");//20180509 by fanlongfei 增加坐席状态灯
}
if(data.State == '1') {
// var isml=0;
if($("#isml").val()==1){
// isml=1;
$(".hwzt").text('置忙'); //左下角状态显示
$(".zxzt").removeClass("bl").addClass("br");
}
else{
$(".hwzt").text('空闲'); //左下角状态显示
$(".zxzt").removeClass("br").addClass("bl");
}
$(".fwzt").removeClass("br").addClass("bl");
// $(".zxzt").removeClass("br").addClass("bl");//20180509 by fanlongfei 增加坐席状态灯
if(window.frames['iframe'+ hidCallID +'']){
window.frames['iframe'+ hidCallID +''].clearInter();
}
if (hidTel && hidCallID) {
$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateGJ', {
callid: hidTel,
"token": $.cookie("token")
}, function (result) {
result = JSON.parse(result);
if (result.state.toLowerCase() == "success") { }
})
}
$("#top-search li i").removeClass("active");
$(".Logout").addClass("active");
if($("#isml").val()==0){
$(".SayBusy").addClass("active");
}
else{
$(".SayFree").addClass("active");
}
$(".MakeCall").addClass("active");
if(window.frames['iframe'+ hidCallID +'']){
window.frames['iframe'+ hidCallID +''].$(".td-call").hide();
}
}
if(data.State == '2') {
$(".hwzt").text('摘机等待拨号'); //左下角状态显示
}
if(data.State == '3') {
$(".hwzt").text('正在拨号'); //左下角状态显示
}
if(data.State == '4') {
$(".hwzt").text('呼出振铃'); //左下角状态显示
}
if(data.State == '5') {
$(".hwzt").text('来电振铃'); //左下角状态显示
$(".fwzt").removeClass("br").addClass("bl");//20180509 by fanlongfei 增加话机状态灯
$(".zxzt").removeClass("bl").addClass("br");//20180509 by fanlongfei 增加坐席状态灯
if (hidTel && hidCallID) {
$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZL', {
callid: hidCallID,
"token": $.cookie("token")
}, function (result) {
result = JSON.parse(result);
if (result.state.toLowerCase() == "success") { }
})
}
}
if(data.State == '6') {
$(".hwzt").text('通话中'); //左下角状态显示
$(".fwzt").removeClass("bl").addClass("br");
$(".zxzt").removeClass("bl").addClass("br");//20180509 by fanlongfei 增加坐席状态灯
if(hidTel && hidCallID) {
$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZJ', {
callid: hidCallID,
"token": $.cookie("token")
}, function(result) {
result = JSON.parse(result);
if(result.state.toLowerCase() == "success") {}
})
}
$("#top-search li i").removeClass("active");
$(".DropCall").addClass("active");
$(".Hold").addClass("active");
$(".Transfer").addClass("active");
$(".Meeting").addClass("active");
if(data.CallDirection=="in"){
etTimeout (window.frames['iframe'+ hidCallID +''].calling(),500);/*2018-05-19 zhangshuangnan 修改 ps: 因软电话设置为 自动应答 通话时间不计时问题*/
}
}
if(data.State == '7') {
$(".hwzt").text('播放忙音中'); //左下角状态显示
}
if(data.State == '8') {
$(".hwzt").text('移除IP分机'); //左下角状态显示
}
if(data.State == '9') {
$(".hwzt").text('通话保持中'); //左下角状态显示
}
}
function toDub(i) {
return i < 10 ? "0" + i : "" + i;
}
//外呼
function MakeCallBack(data) {
var makeCallPhone = $.cookie("makeCallPhone");
$("#top-search li i").removeClass("active");
$(".DropCall").addClass("active");
//外呼弹屏
if(data.CallID!=0){
var p = '';
$(".J_menuTab").removeClass("active");
var nif = '';
$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
$(".J_menuTabs .page-tabs-content").append(p);
hidTel=makeCallPhone;
hidCallID=makeCallId;
hidActionID=data.ActionID;
}else{
var timestamp = Date.parse(new Date());
var p = '';
$(".J_menuTab").removeClass("active");
var nif = '';
$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(nif);
$(".J_menuTabs .page-tabs-content").append(p);
hidTel=makeCallPhone;
hidCallID=timestamp;
}
setTimeout (window.frames['iframe'+ hidCallID +''].calling(),500);
}
//置忙置闲
function SetState(obj) {
if(obj.State == '5') {
$(".SayBusy").removeClass("active");
$(".SayFree").addClass("active");
$(".zxzt").removeClass("bl").addClass("br");
$(".hwzt").text('置忙');
$("#isml").val(1)
}
if(obj.State == '2') {
$(".SayBusy").addClass("active");
$(".SayFree").removeClass("active");
$(".zxzt").removeClass("br").addClass("bl");
$(".hwzt").text('空闲');
$("#isml").val(0)
}
}
//置忙
function SayBusyBack() {
$(".SayBusy").removeClass("active");
$(".SayFree").addClass("active");
$("#isml").val(1)
}
//坐席班长置闲
function SayFreeBack() {
$(".SayBusy").addClass("active");
$(".SayFree").removeClass("active");
$(".zxzt").removeClass("br").addClass("bl"); // 2018/05/09 by fanlongfei 增加坐席状态指示
$(".hwzt").text('空闲');// 2018/05/09 by fanlongfei 增加坐席状态指示
$("#isml").val(0)
}
//多方通话
function MeetingBack() {
}
//转移
function TransferBack() {
$("#top-search li i").removeClass("active");
$(".Logout").addClass("active");
$(".SayBusy").addClass("active");
$(".MakeCall").addClass("active");
}
//保持
function HoldBack() {
$(".Hold").removeClass("active");
$(".Retrieve").addClass("active");
}
//接回
function RetrieveBack() {
$(".Hold").addClass("active");
$(".Retrieve").removeClass("active");
}
//监测
function SubScribeBack() {
$('#content-main .J_iframeNew').each(function(i,n){
if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
window.frames[$(this).attr("name")].Start();
}
})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//取消监测
function SubScribeCancelBack() {
// var obj = $("iframe:visible")
// if(obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
// window.frames[obj.attr("name")].();
// }
$('#content-main .J_iframeNew').each(function(i,n){
if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
window.frames[$(this).attr("name")].Stop();
}
})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//班长监测返回状态
//坐席状态
function AgentStateBack(data) {
$('#content-main .J_iframeNew').each(function(i,n){
if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
window.frames[$(this).attr("name")].UpdateAgentState(data.AgentID, data.State);
}
})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//线路状态
function LineStateBack(data) {
$('#content-main .J_iframeNew').each(function(i,n){
if($(this).attr('data-id') == "./TelCall/SeatMonitor.html"){
window.frames[$(this).attr("name")].UpdateLineState(data.AgentID, data.State);
}
})/*2018-05-24 zhangshuangnan 修改 解决通话中时 坐席监控状态不改变的问题*/
}
//录音返回
function RecordPathBack(data) {
$(".hidCallID").val(data.CallID);
// 外呼返回CallId
makeCallId = data.CallID;
if(hidTel) {
$.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', {
callid: data.CallID,
path: data.RecPath,
"token": $.cookie("token")
}, function(result) {
result = JSON.parse(result);
if(result.state.toLowerCase() == "success") {}
})
}
}
//获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if(month >= 1 && month <= 9) {
month = "0" + month;
}
if(strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate +
" " + date.getHours() + seperator2 + date.getMinutes() +
seperator2 + date.getSeconds();
return currentdate;
}