1function Etalk(){ 2 //events from consumer 3 this.ON_CONSUMER_ROUTER_COMPLETE = "onConsumerRouterComplete"; 4 this.ON_CONSUMER_QUEUE_INFO = "onConsumerQueueInfo"; 5 this.ON_CONSUMER_QUEUE_TIMEOUT = "onConsumerQueueTimeout"; 6 this.ON_CONSUMER_LOGIN_FAIL = "onConsumerLoginFail"; 7 this.ON_CONSUMER_TOOLOONTIME_NO_RESPONSE = "onConsumerTooLongTimeNoResponse"; 8 this.ON_CONSUMER_MSG_RECEIVED = "onConsumerMsgReceived"; 9 this.ON_CONSUMER_CMD_RECEIVED = "onConsumerCmdReceived"; 10 this.ON_CONSUMER_EXIT = "onConsumerExit"; 11 12 //events from Agent 13 this.ON_AGENT_RECEIVE_NEWSESSION = "onAgentReceiveNewsession"; 14 this.ON_AGENT_HANGUP = "onAgentHangup"; 15 this.ON_AGENT_SEND_MESSAGE = "onAgentSendMessage"; 16 17 //events from system 18 this.ON_MSG_TRANSFER = "onMsgTransfer"; 19 this.ON_MSG_MEETING = "onMsgMeeting"; 20 21 //events from server 22 this.ON_SERVER_CONNECT = "onServerConnect"; 23 this.ON_SERVER_CLOSE = "onServerClose"; 24 this.ON_SERVER_NOTCONNECT = "onServerNotconnect"; 25 this.ON_SERVER_EMPTYMSG = "onServerEmptymsg"; 26 this.ON_SERVER_TOOLONGMSG = "onServerToolongmsg"; 27 this.ON_MSG_REMOVEBYADMIN = "onMsgRemovebyadmin"; 28 this.ON_MSG_NETWAYCLIENT_CUSTOM = "onMsgNetwayClient"; 29 this.ON_MSG_SATISFACTION = "onMsgSatisfaction"; 30 31 /**socket对象ï¼ç¨äºé讯**/ 32 this.socketObj = null; 33 /**websokcetçurlå°å**/ 34 this.websocketurl = ""; 35 /**åå¸å·¥å·**/ 36 this.consumerId = ""; 37 /**åå¸å§å**/ 38 this.consumerName = ""; 39 /**æè½ç»**/ 40 this.groupNo = ""; 41 /**客æ·**/ 42 this.consumerPoint = 0; 43 /**æ¸ éç±»å**/ 44 this.channelType = ""; 45 /**客æ·å¨ecoreä¸çsessionid**/ 46 this.sessionId = ""; 47 /**客æ·å½åå¨ecoreä¸çç¶æï¼é»è®¤åå§åç¶æ**/ 48 this.status = "inited"; 49 /**å½åä¸ºè¯¥å®¢æ·æå¡çå叿°é**/ 50 this.agentNumber = 0; 51 /**客æ·è®¿é®çsessionä¿¡æ¯**/ 52 this.sessionMap = new Object(); 53 /**æ¯å¦å·²è¿æ¥åå¸**/ 54 this.isConnectedAgent = false; 55 56 /**åå§å对象å¼**/ 57 this.initObj = function(consumerId, consumerName, groupNo, consumerPoint, channelType, websocketurl){ 58 //console.log("consumerId:"+consumerId+",consumerName:"+consumerName+",groupNo:"+groupNo+",consumerPoint:"+consumerPoint+",channelType:"+channelType+",websocketurl:"+websocketurl); 59 this.consumerId = consumerId; 60 this.consumerName = consumerName; 61 this.groupNo = groupNo; 62 this.consumerPoint = consumerPoint; 63 this.channelType = channelType; 64 this.websocketurl = websocketurl; 65 this.socketObj = new WebsocketAdapter(this, websocketurl); 66 }; 67 68 //è¿æ¥åå¸ 69 this.connect = function(){ 70 if(this.consumerId != ""){ 71 obj1={ 72 "optType" : "connect", 73 "consumerId" : this.consumerId, 74 "consumerName" : this.consumerName, 75 "groupNo" : this.groupNo, 76 "channelType" : this.channelType, 77 "consumerPoint" : this.consumerPoint 78 }; 79 this.sendMsgToServer(JSON.stringify(obj1)); 80 }else{ 81 alert("客æ·ä¿¡æ¯ä¸å®æ´ï¼è¯·èç³»ææ¯äººåï¼æ¬æ¬¡è¿æ¥åå¸å¤±è´¥"); 82 } 83 }; 84 //éåºåå¸ 85 this.disconnect = function(){ 86 obj1={ 87 "optType": "disconnect", 88 "consumerId" : this.consumerId, 89 "channelType" : this.channelType 90 }; 91 this.sendMsgToServer(JSON.stringify(obj1)); 92 }; 93 //åéå®¢æ·æ£å¨è¾å ¥çæ¶æ¯ï¼åæ°ï¼æ¶æ¯å å®¹ï¼ 94 this.entering = function(msg){ 95 obj1={ 96 "optType" : "entering", 97 "consumerId" : this.consumerId, 98 "consumerName" : this.consumerName, 99 "groupNo" : this.groupNo, 100 "channelType" : this.channelType, 101 "content" : msg 102 }; 103 this.sendMsgToServer(JSON.stringify(obj1)); 104 }; 105 //客æ·åéææ¬æ¶æ¯ï¼åæ°ï¼æ¶æ¯å å®¹ï¼ 106 this.sendTextMessage = function(msg) { 107 if(this.status == "inqueue" && msg.replace(/(\<br\/?>+)/g,'') == "æ¯"){ 108 obj1={ 109 "optType" : "continueQueue", 110 "consumerId" : this.consumerId, 111 "channelType" : this.channelType 112 }; 113 this.sendMsgToServer(JSON.stringify(obj1)); 114 }else if(this.status == "inqueue" && msg.replace(/(\<br\/?>+)/g,'') == "å¦"){ 115 obj1={ 116 "optType" : "cancelQueue", 117 "consumerId" : this.consumerId, 118 "channelType" : this.channelType 119 }; 120 this.sendMsgToServer(JSON.stringify(obj1)); 121 }else{ 122 obj1={ 123 "optType" : "text", 124 "consumerId" : this.consumerId, 125 "channelType" : this.channelType, 126 "content" : msg 127 }; 128 this.sendMsgToServer(JSON.stringify(obj1)); 129 } 130 }; 131 //客æ·åéè¯é³æ¶æ¯ï¼åæ°ï¼åªä½IDï¼ 132 this.sendVoiceMessage = function(mediaId) { 133 obj1={ 134 "optType" : "voice", 135 "consumerId" : this.consumerId, 136 "channelType" : this.channelType, 137 "media_id" : mediaId 138 }; 139 this.sendMsgToServer(JSON.stringify(obj1)); 140 }; 141 //客æ·åéè§é¢æ¶æ¯ï¼åæ°ï¼åªä½IDï¼ 142 this.sendVideoMessage = function(mediaId) { 143 obj1={ 144 "optType" : "video", 145 "consumerId" : this.consumerId, 146 "channelType" : this.channelType, 147 "media_id" : mediaId 148 }; 149 this.sendMsgToServer(JSON.stringify(obj1)); 150 }; 151 //满æåº¦è¯ä»·ï¼åæ°ï¼è¯åï¼ 152 this.satisfaction = function(evaluation_grade, evaluation_content) { 153 if(this.status == "insession" || this.status == "exit"){ 154 obj1={ 155 "optType" : "satisfaction", 156 "consumerId" : this.consumerId, 157 "consumerName" : this.consumerName, 158 "groupNo" : this.groupNo, 159 "channelType" : this.channelType, 160 "grade" : evaluation_grade, 161 "custMsg": evaluation_content, 162 "sessionId" : this.sessionId 163 }; 164 this.sendMsgToServer(JSON.stringify(obj1)); 165 } 166 }
167 //客æ·åéèªå®ä¹æ¶æ¯ï¼åæ°ï¼æ¶æ¯å å®¹ï¼ 168 this.sendCustomMessage = function(msg) { 169 obj1={ 170 "optType" : "custom", 171 "consumerId" : this.consumerId, 172 "channelType" : this.channelType, 173 "content" : msg 174 }; 175 this.sendMsgToServer(JSON.stringify(obj1)); 176 }; 177 178 this.getSocket = function() { 179 return this.socketObj; 180 }; 181 182 this.resetSocket = function() { 183 this.socketObj.close(); 184 this.socketObj.open(this.websocketurl); 185 }; 186 187 this.probe = function() { 188 this.getSocket().probe(); 189 }; 190 191 this.sendMsgToServer = function(_msg) { 192 this.getSocket().send(_msg); 193 }; 194 195 this.callByObject = function(mapMsg){ 196 //console.log('msg:' + mapMsg); 197 var ret = eval('(' + mapMsg + ')'); 198 var type = ret.type + ""; 199 window.status = 'æ¶æ¯ï¼' + mapMsg; 200 switch(type){ 201 case '1003': //æéä¿¡æ¯ 202 this.status = "inqueue"; 203 this.fireEvent(this.ON_CONSUMER_QUEUE_INFO, ret); 204 break; 205 case '1005': //客æ·ç«¯æ¶æ¯å°è¾¾ 206 this.fireEvent(this.ON_CONSUMER_MSG_RECEIVED, ret); 207 break; 208 case '1010': //客æ·ç«¯èªå®ä¹æ¶æ¯å°è¾¾ 209 this.fireEvent(this.ON_CONSUMER_CMD_RECEIVED, ret); 210 break; 211 case '1011': //æéè¶ æ¶ 212 this.fireEvent(this.ON_CONSUMER_QUEUE_TIMEOUT, ret); 213 //AfterDisConnect(); 214 break; 215 case '10011': //客æ·ç»é失败 (å½åæ å¨çº¿åå¸) 216 this.fireEvent(this.ON_CONSUMER_LOGIN_FAIL, ret); 217 break; 218 case '10021': //客æ·éåº 219 this.isConnectedAgent=false; 220 this.status = "exit"; 221 this.fireEvent(this.ON_CONSUMER_EXIT, ret); 222 break; 223 case '1012': //è·¯ç±æåï¼çå¾ å叿¥èµ· 224 this.status = "waitingforanswer"; 225 this.fireEvent(this.ON_CONSUMER_ROUTER_COMPLETE, ret); 226 break; 227 case '1024': //客æ·å¤ªé¿æ¶é´æªæä½ 228 this.isConnectedAgent=false; 229 this.fireEvent(this.ON_CONSUMER_TOOLOONTIME_NO_RESPONSE, ret); 230 break; 231 case '2007': //åå¸åéçæ¶æ¯ 232 this.fireEvent(this.ON_AGENT_SEND_MESSAGE, ret); 233 break; 234 case '20141': //åº§å¸æ¥èµ·æ°ä¼è¯æå,æ¤æ¶æ¯æ¢è¦åéç»åº§å¸ï¼ä¹è¦åé客æ·ï¼å®¢æ·æ¥å°è¯¥æ¶æ¯åè¿å ¥å°è天çé¢ 235 this.isConnectedAgent = true; 236 this.sessionId = ret.sessionId; 237 this.status = "insession"; 238 this.agentNumber = this.agentNumber + 1; 239 console.log("å½åæå¡å叿°éï¼" + this.agentNumber); 240 this.fireEvent(this.ON_AGENT_RECEIVE_NEWSESSION, ret); 241 break; 242 case '2025': 243 this.fireEvent(this.ON_MSG_SATISFACTION, ret); 244 break; 245 case '2027': 246 this.fireEvent(this.ON_MSG_REVOKE_AGENT, ret); 247 break; 248 case '2036' ://建ç«è¿æ¥ 249 this.fireEvent(this.ON_SERVER_CONNECT, ret); 250 break; 251 case '2037'://䏿å¡å¨æå¼è¿æ¥ 252 this.isConnectedAgent=false; 253 this.fireEvent(this.ON_SERVER_CLOSE, ret); 254 break; 255 case '2038'://å°æªä¸æå¡å¨å»ºç«è¿æ¥ 256 this.fireEvent(this.ON_SERVER_NOTCONNECT, ret); 257 break; 258 case '2039'://æ¶æ¯ä¸è½ä¸ºç©º 259 this.fireEvent(this.ON_SERVER_EMPTYMSG, ret); 260 break; 261 case '2040'://æ¶æ¯è¶ é¿(2048) 262 this.fireEvent(this.ON_SERVER_TOOLONGMSG, ret); 263 break; 264 case '5001'://è½¬æ¥æåç³»ç»æ¶æ¯ 265 this.agentNumber = this.agentNumber + 1; 266 console.log("å½åæå¡å叿°éï¼" + this.agentNumber); 267 this.fireEvent(this.ON_MSG_TRANSFER, ret); 268 break; 269 case '5002'://åº§å¸ææçµè¯ç³»ç»æ¶æ¯ 270 this.isConnectedAgent=false; 271 this.agentNumber = this.agentNumber - 1; 272 console.log("å½åæå¡å叿°éï¼" + this.agentNumber); 273 this.fireEvent(this.ON_AGENT_HANGUP, ret); 274 break; 275 case '5003'://座å¸ä¸æ¹ä¼è®®æåç³»ç»æ¶æ¯ 276 this.agentNumber = this.agentNumber + 1; 277 console.log("å½åæå¡å叿°éï¼" + this.agentNumber); 278 this.fireEvent(this.ON_MSG_MEETING, ret); 279 break; 280 case '5005'://åå¸è¢«ç®¡çå踢åºç³»ç» 281 this.fireEvent(this.ON_MSG_REMOVEBYADMIN, ret); 282 break; 283 case '8888'://netwayèªå®ä¹æ¶æ¯ 284 this.fireEvent(this.ON_MSG_NETWAYCLIENT_CUSTOM, ret); 285 break; 286 case '10000'://å¯ææ¬æ¨¡æ¿æ¶æ¯ 287 //alert("å¯ææ¬æ¨¡æ¿æ¶æ¯ï¼"+mapMsg);
288 showRobotMsg('10000','richTextTemplate',ret); 289 break; 290 case '10001'://æå æ¨¡æ¿æ¶æ¯ 291 //alert("æå æ¨¡æ¿æ¶æ¯ï¼"+mapMsg); 292 showRobotMsg('10001','innerfoldTemplate',ret); 293 break; 294 case '10010'://å¾ææ¨¡æ¿æ¶æ¯ 295 //alert("å¾ææ¨¡æ¿æ¶æ¯ï¼"+mapMsg); 296 break; 297 case '10018'://éæ©æ¨¡æ¿æ¶æ¯ 298 //alert("éæ©æ¨¡æ¿æ¶æ¯ï¼"+mapMsg); 299 break; 300 case '10019'://æµç¨æ¨¡æ¿æ¶æ¯ 301 //alert("æµç¨æ¨¡æ¿æ¶æ¯ï¼"+mapMsg); 302 303 break; 304 case '10016'://å¿«æ·å¡çæ¶æ¯ 305 //alert("å¿«æ·å¡çæ¶æ¯ï¼"+mapMsg); 306 showRobotMsg('10016','quickCardTemplate',ret); 307 break; 308 case '10017'://çä½ æ³é®æ¶æ¯ 309 //alert("çä½ æ³é®æ¶æ¯ï¼"+mapMsg); 310 showRobotMsg('10017','guessCardTemplate',ret); 311 break; 312 case '10005'://å¤©æ°æ¨¡æ¿æ¶æ¯ 313 //alert("æ°æ¨¡æ¿æ¶æ¯ï¼"+mapMsg); 314 break; 315 case '10088'://å¿«æ·å ¥å£æ¶æ¯ 316 //alert("å¿«æ·å ¥å£æ¶æ¯ï¼"+mapMsg); 317 showRobotMsg('10088','quickEntryTemplate',ret); 318 break; 319 case '10099': 320 showRobotMsg('10099','errorTemplate',ret); 321 break; 322 default: 323 alert("æç¨æ²¡ç¨ï¼"+mapMsg); 324 break; 325 } 326 } 327}; 328 329Etalk.prototype = new EtalkEvent(); 330function EtalkEvent(){ 331 this.handlers = {}; 332 this.addListener = function(event, handler) { 333 if(typeof this.handlers[event] == 'undefined'){ 334 this.handlers[event] = new Array(); 335 } 336 this.handlers[event].push(handler); 337 return this; 338 } 339 this.removeListener = function(event,handler){ 340 if(this.handlers[event] instanceof Array){ 341 var handlers = this.handlers[event]; 342 for(var i=0,len=handlers.length; i<len; i++){ 343 if(handler[i]==handler){ 344 handlers.splice(i,1); 345 break; 346 } 347 } 348 } 349 return this; 350 } 351 this.fireEvent = function(event, data){ 352 if(this.handlers[event] instanceof Array){ 353 var handlers = this.handlers[event]; 354 for(var i=0,len=handlers.length; i<len; i++){ 355 handlers[i](data); 356 } 357 } 358 } 359}; 360 361function WebsocketAdapter(obj, url) { 362 if(!WebSocket){ 363 alert('ä½ çæµè§å¨ä¸æ¯æWebSocket');return; 364 } 365 this.conn = new WebSocket(url); 366 this.conn.onopen = function() { 367 this.isOpen = true; 368 obj.callByObject("{type:'2036'}"); 369 370 }; 371 this.conn.onmessage = function(msg) { 372// alert('websocketadapter msg:' + msg); 373 obj.callByObject(msg.data); 374 }; 375 this.conn.onclose = function() { 376 this.isOpen = false; 377 obj.callByObject("{type:2037}") 378 }; 379 this.conn.onerror = function(){ 380// alert('websocket error'); 381 }; 382 this.open = function(websocketurl) { 383 console.log("websocketurl:"+ websocketurl); 384 this.conn = new WebSocket(websocketurl); 385 }; 386 this.send = function(msg) { 387 if(this.conn.isOpen) 388 this.conn.send(msg); 389 else obj.callByObject("{type:2038}"); 390 }; 391 this.close = function() { 392 if(this.conn != null) { 393 this.conn.close(); 394 this.conn = null; 395 } 396 this.isOpen = false; 397 }; 398 399};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.