var data = {}; <#if inviteData??> !function(e,t,n){"use strict";"undefined"!=typeof window&&"function"==typeof define&&define.amd?define(n):"undefined"!=typeof module&&module.exports?module.exports=n():t.exports?t.exports=n():t.Fingerprint2=n()}(0,this,function(){"use strict";function d(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var n=[0,0,0,0];return n[3]+=e[3]+t[3],n[2]+=n[3]>>>16,n[3]&=65535,n[2]+=e[2]+t[2],n[1]+=n[2]>>>16,n[2]&=65535,n[1]+=e[1]+t[1],n[0]+=n[1]>>>16,n[1]&=65535,n[0]+=e[0]+t[0],n[0]&=65535,[n[0]<<16|n[1],n[2]<<16|n[3]]}function g(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var n=[0,0,0,0];return n[3]+=e[3]*t[3],n[2]+=n[3]>>>16,n[3]&=65535,n[2]+=e[2]*t[3],n[1]+=n[2]>>>16,n[2]&=65535,n[2]+=e[3]*t[2],n[1]+=n[2]>>>16,n[2]&=65535,n[1]+=e[1]*t[3],n[0]+=n[1]>>>16,n[1]&=65535,n[1]+=e[2]*t[2],n[0]+=n[1]>>>16,n[1]&=65535,n[1]+=e[3]*t[1],n[0]+=n[1]>>>16,n[1]&=65535,n[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],n[0]&=65535,[n[0]<<16|n[1],n[2]<<16|n[3]]}function f(e,t){return 32===(t%=64)?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])}function h(e,t){return 0===(t%=64)?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=g(e,[4283543511,3981806797]),e=m(e,[0,e[0]>>>1]),e=g(e,[3301882366,444984403]),e=m(e,[0,e[0]>>>1])}function l(e,t){t=t||0;for(var n=(e=e||"").length%16,a=e.length-n,r=[0,t],i=[0,t],o=[0,0],l=[0,0],s=[2277735313,289559509],c=[1291169091,658871167],u=0;u>>0).toString(16)).slice(-8)+("00000000"+(r[1]>>>0).toString(16)).slice(-8)+("00000000"+(i[0]>>>0).toString(16)).slice(-8)+("00000000"+(i[1]>>>0).toString(16)).slice(-8)}function c(e,t){if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t);else if(e.length===+e.length)for(var n=0,a=e.length;nt.name?1:e.name=n.components.length)a(r.data);else{var t=n.components[i];if(n.excludes[t.key])o(!1);else{if(!e&&t.pauseBefore)return i-=1,void setTimeout(function(){o(!0)},1);try{t.getData(function(e){r.addPreprocessedComponent(t.key,e),o(!1)},n)}catch(e){r.addPreprocessedComponent(t.key,String(e)),o(!1)}}}};o(!1)},a.getPromise=function(n){return new Promise(function(e,t){a.get(n,e)})},a.getV18=function(i,o){return null==o&&(o=i,i={}),a.get(i,function(e){for(var t=[],n=0;n= 200 && status < 300 ){ options.success && options.success(xhr.responseText,xhr.responseXML); }else{ options.fail && options.fail(status); } } }; if (options.type == 'GET'){ xhr.open("GET",options.url + '?' + params ,options.async); xhr.send(null) }else if (options.type == 'POST'){ xhr.open('POST',options.url,options.async); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(params); } } function getParams(data) { var arr = []; for (var param in data){ arr.push(encodeURIComponent(param) + '=' +encodeURIComponent(data[param])); } arr.push(('randomNumber=' + Math.random()).replace('.')); return arr.join('&'); } var protocol = "${schema!''}" document.cookie="" function chatoperaInit(info) { ajax({ url: protocol + "://${hostname!''}<#if port?? && port != 80>:${port!''}/im/chatoperainit.html?sessionid=${sessionid!''}", type: "POST", data: { <#if inviteData.whitelist_mode == true > whitelist_mode: ${inviteData.whitelist_mode}, <#else> whitelist_mode: false, userid: cskefuOnlineUserId, uid: info.uid, username: info.username, cid: info.cid, company_name: info.company_name, sid: info.sid, system_name: info.system_name }, dataType: "json", contentType: "application/json", async: false, success: function(res) { <#if inviteData.whitelist_mode == true > if(res == 'usc'){ document.getElementById("ukefu-point").style.display = "block" ; } } }); } <#assign style = 'text-align:center;height: 150px;border-radius: 30px;width: 40px;margin: 0px 5px 0 0; float:left ; word-wrap: break-word;overflow: hidden;font-size:15px;color:#FFFFFF;text-align: center;padding-top: 15px;border: 1px solid #DCDCDC;background-color:#008df3;'> <#if inviteData.consult_vsitorbtn_model?? && inviteData.consult_vsitorbtn_model == "2"> <#assign style = 'height: 70px;border-radius: 3px; width: 70px;margin: 40px auto;word-wrap:break-word;overflow:hidden;font-size: 22px;color:#FFFFFF;text-align:center;padding-top:10px;border: 1px solid #DCDCDC;background-color:#dddddd;'> <#elseif inviteData.consult_vsitorbtn_model?? && inviteData.consult_vsitorbtn_model == "3"> <#assign style = 'height: 70px;border-radius: 70px; width: 70px;margin: 40px auto;word-wrap:break-word;overflow:hidden;font-size: 22px;color:#FFFFFF;text-align:center;padding-top:5px;border: 1px solid #DCDCDC;background-color:#dddddd;'> <#assign text = 'width:25px;'> <#if inviteData.consult_vsitorbtn_model?? && inviteData.consult_vsitorbtn_model == "2"> <#assign text = 'width:100%;'> <#elseif inviteData.consult_vsitorbtn_model?? && inviteData.consult_vsitorbtn_model == "3"> <#assign text = 'width:100%;'> <#assign theme = 'background-color: #377FED !important;border-color: #377FED !important;'> <#if inviteData.consult_vsitorbtn_color?? && inviteData.consult_vsitorbtn_color == "2"> <#assign theme = 'background-color: #67CAFF !important;'> <#elseif inviteData.consult_vsitorbtn_color?? && inviteData.consult_vsitorbtn_color == "3"> <#assign theme = 'background-color: #8E8E8E !important;'> <#elseif inviteData.consult_vsitorbtn_color?? && inviteData.consult_vsitorbtn_color == "4"> <#assign theme = 'background-color: #32c24d !important;'> <#elseif inviteData.consult_vsitorbtn_color?? && inviteData.consult_vsitorbtn_color == "5"> <#assign theme = 'background-color: #E45DB3 !important;'> <#elseif inviteData.consult_vsitorbtn_color?? && inviteData.consult_vsitorbtn_color == "6"> <#assign theme = 'background-color: #FF626F !important;'> <#assign position = "right:10px;top:40%;"> <#if inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "right,top"> <#assign position = "right:10px;top:10px;"> <#elseif inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "right,bottom"> <#assign position = "right:10px;bottom:10px;"> <#elseif inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "right,middle"> <#assign position = "right:10px;top:40%;"> <#elseif inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "left,top"> <#assign position = "left:10px;top:10px;"> <#elseif inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "left,middle"> <#assign position = "left:10px;top:40%;"> <#elseif inviteData.consult_vsitorbtn_position?? && inviteData.consult_vsitorbtn_position == "left,bottom"> <#assign position = "left:10px;bottom:10px;"> <#assign invitetheme = 'background-color: #377FED !important;'> <#if inviteData.consult_invite_color?? && inviteData.consult_invite_color == "2"> <#assign invitetheme = 'background-color: #67CAFF !important;'> <#elseif inviteData.consult_invite_color?? && inviteData.consult_invite_color == "3"> <#assign invitetheme = 'background-color: #8E8E8E !important;'> <#elseif inviteData.consult_invite_color?? && inviteData.consult_invite_color == "4"> <#assign invitetheme = 'background-color: #32c24d !important;'> <#elseif inviteData.consult_invite_color?? && inviteData.consult_invite_color == "5"> <#assign invitetheme = 'background-color: #E45DB3 !important;'> <#elseif inviteData.consult_invite_color?? && inviteData.consult_invite_color == "6"> <#assign invitetheme = 'background-color: #FF626F !important;'> var signal = 0 ; function append(parent, text) { if (typeof text === 'string') { var temp = document.createElement('div'); temp.innerHTML = text; parent.appendChild(temp); } else { parent.appendChild(text); } } function closerefresh(){ location.reload(); } var cskefu = { service: {agentno: null}, time : new Date().getTime(), in: protocol + "://${hostname!''}<#if port?? && port != 80>:${port!''}/im/${appid!''}/userlist.html?appid=${appid!''}<#if aiid??>&aiid=${aiid}&orgi=${orgi!''}&client=${client}" , url: protocol + "://${hostname!''}<#if port?? && port != 80>:${port!''}/im/online?appid=${appid!''}&orgi=${orgi!''}<#if aiid??>&aiid=${aiid}&client=${client}" , chat: protocol + "://${hostname!''}<#if port?? && port != 80>:${port!''}/im/index.html?&appid=${appid!''}<#if aiid??>&aiid=${aiid}&orgi=${orgi!''}&client=${client}" , refuse: protocol + "://${hostname!''}<#if port?? && port != 80>:${port!''}/im/refuse.html?appid=${appid!''}<#if aiid??>&aiid=${aiid}&orgi=${orgi!''}&client=${client}", config: function(d){ data = d ; if(d.id != null && d.id != ''){ cskefuOnlineUserId = d.id ; } } , ajax:function(url , success , error) { var xhr = false; signal = signal + 1 ; try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); // ie msxml3.0+(IE7.0及以上) } catch (e) { try{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); //ie msxml2.6(IE5/6) }catch (e2) { xhr = false; } } if (!xhr && typeof XMLHttpRequest != 'undefined') {// Firefox, Opera 8.0+, Safari xhr = new XMLHttpRequest(); } xhr.onreadystatechange = function (data) { if (xhr.readyState == 4) { var status = xhr.status; if (status >= 200 && status < 300) { var event = xhr.responseText; if(event && event.indexOf('invite') >= 0){ var agentno = event.substring(event.lastIndexOf(":") + 1).trim(); cskefu.service.agentno = agentno; cskefu.writeinvite(); }else if(event && event.indexOf('refuse') >= 0){ cskefu.refuseInvite() ; }else if(event && event.indexOf('accept') >= 0){ cskefu.acceptInvite(); } if(success){ success(event); } } else { // if(error){ error(); } } xhr.abort(); signal = signal - 1 ; } } xhr.open("GET", url , true); try{ xhr.send(null); }catch(e){} }, ping : function(){ var url = cskefu.url ; if(data){ if(data.id){ url = url + "&id="+data.id ; } if(data.name){ url = url + "&name="+encodeURIComponent(data.name); } if(data.email){ url = url + "&email="+encodeURIComponent(data.email); } if(data.phone){ url = url + "&phone="+encodeURIComponent(data.phone); } url = url + "&title="+encodeURIComponent(document.title); <#if traceid??> url = url+"&traceid=${traceid}" url = url+"&url="+encodeURIComponent(location.href) } cskefu.ajax(url + "&userid="+cskefuOnlineUserId+"&sessionid=${sessionid!''}&sign="+cskefuOnlineUserId+"&t="+new Date().getTime() , function(){cskefu.ping();}); }, writepoint:function(){ var skillHtml = "<#if inviteData?? && inviteData.skill == true && inviteData.consult_skill_fixed == false>
" + "
:${port!''}/images/logo-icon.png' style='height:20px;vertical-align: middle;'/> <#if inviteData.consult_skill_title??>${inviteData.consult_skill_title!''}
"+ "
"+ <#if pointAd??> <#if pointAd.adtype =="image"> ":${port!''}${pointAd.imgurl!''}' style='max-width:140px;max-height:90px;margin:0 5px;vertical-align: middle;'/>"+ <#else> ""+ <#else> ":${port!''}/images/title.jpg' style='width:140px;margin:0 5px;vertical-align: middle;'/>"+ "
<#if inviteData?? && inviteData.skill == true && inviteData.consult_skill_fixed == false && inviteData.consult_skill_msg??>${(inviteData.consult_skill_msg!'')?no_esc}
"+ <#if skillGroups?? && skillGroups?size gt 0> <#list skillGroups as skill> <#if inviteData.consult_skill_numbers == 0 || skill_index lt inviteData.consult_skill_numbers > <#assign skillNum = 0 > <#list agentList as agent> <#if agent.organ?? && agent.organ == skill.id> <#assign skillNum = skillNum+1 > ""+ <#if inviteData.consult_skill_agent?? && inviteData.consult_skill_agent == true> ""+ <#elseif inviteData.onlyareaskill && inviteData.areaskilltipmsg??> "
${(inviteData.areaskilltipmsg!'')?no_esc}
"+ "
"+ "
<#if inviteData.consult_skill_bottomtitle??>${inviteData.consult_skill_bottomtitle!''}
"+ "
" ; append(document.body, ''); append(document.body, ""); <#if inviteData?? && inviteData.skill == true && inviteData.consult_skill_fixed == false> document.getElementById("ukefu-im-point-text").onclick=function(){ if(document.getElementById("ichatContent").style.display == "none"){ document.getElementById("ichatContent").style.display = 'block'; }else{ document.getElementById("ichatContent").style.display = 'none'; } } <#else> document.getElementById("ukefu-point").onclick=function(){ cskefu.openChatDialog(); } var inviteDialog = document.getElementById('ukefu-invite-dialog'); <#if phone?? && mobile == true> inviteDialog.style.bottom = 0 ; <#else> var height = document.documentElement.clientHeight ; var width = document.documentElement.clientWidth ; var top = (50 - 92*100/height)+"%"; var left = (50 - 210*100/width)+"%" ; inviteDialog.style.top = top ; inviteDialog.style.left = left ; <#if inviteAd??> var inviteAdHtml = <#if inviteAd.adtype =="image"> ":${port!''}${inviteAd.imgurl!''}' style='max-width:420px;max-height:178px;margin:0px;vertical-align: middle;'/>" <#else> "" var inviteBody = document.getElementById('ukefu_consult_body'); if(inviteBody){ inviteBody.innerHTML = inviteAdHtml ; } ; }, openChatDialog:function(){ cskefu.openChatDialogWithURL(cskefu.chat); }, openChatDialogWithURL:function(url){ url = url + "&userid="+cskefuOnlineUserId+"&sessionid=${sessionid!''}" if(data){ if(data.id){ url = url + "&id="+data.id ; } if(data.name){ url = url + "&name="+encodeURIComponent(data.name); } if(data.email){ url = url + "&email="+encodeURIComponent(data.email); } if(data.phone){ url = url + "&phone="+encodeURIComponent(data.phone); } } <#if inviteData?? && inviteData.skill == true && inviteData.consult_skill_fixed == true> url = url + "&skill=${inviteData.consult_skill_fixed_id}"; url = url + "&title="+encodeURIComponent(document.title); <#if traceid??> url = url+"&traceid=${traceid}" url = url+"&url="+encodeURIComponent(location.href) ; try{ window.open(url+"&t="+new Date().getTime(), "ukefu-chat", "height=600, width=850, top="+ (window.screen.availHeight - 30 - 600) /2+", left="+(window.screen.availWidth - 10 - 750)/2+",toolbar=no, menubar=no, scrollbars=no, resizable=no, directories=no,location=no, status=no"); }catch(e){} return false; }, display:function(){ cskefu.writepoint(); <#if !(inviteData.consult_vsitorbtn_display??) || (inviteData.consult_vsitorbtn_display?? && inviteData.consult_vsitorbtn_display == 0)> <#if inviteData?? && inviteData.consult_vsitorbtn_model != '9' && inviteData.whitelist_mode == false> document.getElementById("ukefu-point").style.display = "block" ; <#if inviteData.consult_invite_enable> <#if inviteData.consult_invite_delay?? && inviteData.consult_invite_delay == 0> cskefu.writeinvite() ; <#else> setTimeout(function(){ cskefu.writeinvite() ; } , ${inviteData.consult_invite_delay}); <#else> setTimeout(function(){ document.getElementById("ukefu-point").style.display = "block" ; <#if inviteData.consult_invite_enable> <#if inviteData.consult_invite_delay?? && inviteData.consult_invite_delay == 0> cskefu.writeinvite() ; <#else> setTimeout(function(){ cskefu.writeinvite() ; } , ${inviteData.consult_invite_delay}); }, ${inviteData.consult_vsitorbtn_display}); //延时显示 访客入口 }, writeinvite:function(){ document.getElementById('ukefu-invite-dialog').style.display = "block" ; }, refuseInvite:function(){ document.getElementById('ukefu-invite-dialog').style.display = "none" ; cskefu.ajax(cskefu.refuse + "&userid="+cskefuOnlineUserId+"&sessionid=${sessionid!''}&t="+new Date().getTime()); }, acceptInvite:function(){ document.getElementById('ukefu-invite-dialog').style.display = "none" ; }, check:function(){ var checkTimes = 0 ; setInterval(function(){ if(signal <= 0){ checkTimes++ ; }else{ checkTimes = 0 ; } if(checkTimes >= 3){ //检查当前的 Keep-Alive是否存活,检查3次都处于未存活状态,则启动 // signal = 0 ; checkTimes = 0 ; cskefu.ping(); console.log("春松客服客户端信息校对"); } },5000) ; } } // 邀请聊天 function openInviteChatDialog(){ var url = cskefu.chat + "&agent=" + cskefu.service.agentno + "&isInvite=true"; return cskefu.openChatDialogWithURL(url); } // 技能组或坐席聊天 function openAgentChatDialog(url){ return cskefu.openChatDialogWithURL(url); } <#if webimexist == true > Fingerprint2.get({extraComponents: [<#if channelVisitorSeparate?? && channelVisitorSeparate == true>{key: "cskefuAppId", getData: function(done, options){done("${appid!''}")}}, { key: "rndId", getData(done, options){ var rnd = ''; if(localStorage){ rnd = localStorage.finger; if(!rnd){ rnd = Math.random(); localStorage.finger = rnd; } } done(rnd); } } ]}, function(components){ var glue = components.map(function (component) { return component.value }) cskefuOnlineUserId = Fingerprint2.x64hash128(glue.join(''), 31); cskefu.ajax(cskefu.in+"&userid="+cskefuOnlineUserId+"&t="+new Date().getTime() , function(data){ if(data == "in"){}else{ cskefu.display(); cskefu.ping(); cskefu.check(); } }); }); var onlineAddress = protocol + "://${hostname!''}<#if port?? && port != 80 && port != 443>:${port!''}"; var newscript = document.createElement('script'); newscript.setAttribute('src',onlineAddress+'/im/js/html2canvas.js'); var head = document.getElementsByTagName('head')[0]; head.appendChild(newscript); window.addEventListener( 'message', function(event) { if(event.origin === onlineAddress && event.data === "screenshots" ){ html2canvas(document.body).then(function(canvas) { var dataurl = canvas.toDataURL('image/png'); event.source.postMessage(dataurl, '*'); }); } }, false );