Built motion from commit da617fac.|2.6.6
[motion2.git] / server / services / ami / acw / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x6a02=['QueuePause','then','voicePause','destlinkedid','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','finally','[ACW][START]\x20%s','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20%s','message','syncHangupRequest','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause'];(function(_0x2a9d6b,_0x4fb63d){var _0x302af2=function(_0x250a33){while(--_0x250a33){_0x2a9d6b['push'](_0x2a9d6b['shift']());}};_0x302af2(++_0x4fb63d);}(_0x6a02,0xd6));var _0x26a0=function(_0xcd0ce5,_0x88e357){_0xcd0ce5=_0xcd0ce5-0x0;var _0x5b22cd=_0x6a02[_0xcd0ce5];return _0x5b22cd;};'use strict';var util=require(_0x26a0('0x0'));var _=require(_0x26a0('0x1'));var moment=require(_0x26a0('0x2'));var ami=require(_0x26a0('0x3'));var logger=require(_0x26a0('0x4'))(_0x26a0('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x26a0('0x6'));function Acw(_0x3f9bbf){this[_0x26a0('0x7')]=_0x3f9bbf['voiceQueues'];this[_0x26a0('0x8')]=_0x3f9bbf['agents'];this[_0x26a0('0x9')]=_0x3f9bbf[_0x26a0('0x9')];this[_0x26a0('0xa')]={};ami['on']('agentconnect',this[_0x26a0('0xb')][_0x26a0('0xc')](this));ami['on'](_0x26a0('0xd'),this['syncHangupRequest'][_0x26a0('0xc')](this));ami['on'](_0x26a0('0xe'),this[_0x26a0('0xf')][_0x26a0('0xc')](this));ami['on'](_0x26a0('0x10'),this['syncAgentRingNoAnswer'][_0x26a0('0xc')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x26a0('0xc')](this));ami['on']('blindtransfer',this[_0x26a0('0x11')]['bind'](this));ami['on'](_0x26a0('0x12'),this[_0x26a0('0x13')][_0x26a0('0xc')](this));}function getDiff(_0x3f167b){var _0x5b1ed8=moment()[_0x26a0('0x14')](0x0);var _0x33b2b3=moment(_0x3f167b)[_0x26a0('0x14')](0x0);return _0x5b1ed8[_0x26a0('0x15')](_0x33b2b3,_0x26a0('0x16'));}Acw['prototype'][_0x26a0('0x17')]=function(_0x12c2b7){try{var _0x1f7ac8=this;var _0x5a842c=this[_0x26a0('0xa')][_0x12c2b7][_0x26a0('0x18')];var _0x44f37a=this['channels'][_0x12c2b7][_0x26a0('0x19')];var _0x1370ae=this[_0x26a0('0x7')][_0x44f37a];var _0x35b391=![];var _0x363b0b=_0x26a0('0x1a');if(_0x1370ae[_0x26a0('0x1b')]){if(_0x1370ae[_0x26a0('0x1c')]['name']){_0x35b391=!![];_0x363b0b=_0x1370ae[_0x26a0('0x1c')]['name'];}}ami['Action']({'action':_0x26a0('0x1d'),'interface':_0x5a842c,'paused':!![],'reason':_0x363b0b})[_0x26a0('0x1e')](function(_0xab1cdf){if(_0x1f7ac8[_0x26a0('0x8')][_0x5a842c]){return RpcUser['getAgent'](_0x1f7ac8[_0x26a0('0x8')][_0x5a842c]['id'])[_0x26a0('0x1e')](function(_0x3cd235){if(_0x3cd235&&!_0x3cd235[_0x26a0('0x1f')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x12c2b7,_0x5a842c,_0x44f37a);var _0x1e461d=_0x1f7ac8[_0x26a0('0xa')][_0x12c2b7]['attended']&&_0x1f7ac8[_0x26a0('0xa')][_0x12c2b7]['destlinkedid']?_0x1f7ac8[_0x26a0('0xa')][_0x12c2b7][_0x26a0('0x20')]:_0x12c2b7;return RpcUser['savePause'](_0x1f7ac8[_0x26a0('0x8')][_0x5a842c],_0x363b0b,_0x1e461d)[_0x26a0('0x1e')](function(_0x1d4496){if(!_0x35b391){_0x1f7ac8['timers'][_0x5a842c]={};logger[_0x26a0('0x21')](_0x26a0('0x22'),_0x12c2b7,_0x1f7ac8['voiceQueues'][_0x44f37a][_0x26a0('0x23')],_0x5a842c,_0x44f37a);_0x1f7ac8[_0x26a0('0x9')][_0x5a842c]['timer']=setTimeout(_0x1f7ac8[_0x26a0('0x24')][_0x26a0('0xc')](_0x1f7ac8,_0x5a842c),_0x1f7ac8[_0x26a0('0x7')][_0x44f37a][_0x26a0('0x23')]*0x3e8);_0x1f7ac8[_0x26a0('0x9')][_0x5a842c][_0x26a0('0x25')]=moment()[_0x26a0('0x26')](_0x26a0('0x27'));_0x1f7ac8[_0x26a0('0x9')][_0x5a842c][_0x26a0('0x28')]=_0x12c2b7;_0x1f7ac8['timers'][_0x5a842c][_0x26a0('0x19')]=_0x44f37a;_0x1f7ac8['timers'][_0x5a842c][_0x26a0('0x29')]=function(){var _0x4907e1=getDiff(_0x1f7ac8[_0x26a0('0x9')][_0x5a842c]['lastPauseAt']);clearTimeout(_0x1f7ac8[_0x26a0('0x9')][_0x5a842c]['timer']);_0x1f7ac8[_0x26a0('0x9')][_0x5a842c][_0x26a0('0x2a')]=![];RpcVoiceAgentReport[_0x26a0('0x2b')]({'acwtime':_0x4907e1},_0x1f7ac8[_0x26a0('0x9')][_0x5a842c][_0x26a0('0x28')],_0x5a842c)['then'](function(_0x1772ef){logger[_0x26a0('0x21')](_0x26a0('0x2c'),_0x12c2b7,_0x4907e1,_0x1772ef);})['catch'](function(_0x4646a0){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x12c2b7,_0x4646a0);});delete _0x1f7ac8[_0x26a0('0x9')][_0x5a842c];};}});}else{logger[_0x26a0('0x21')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x12c2b7,_0x5a842c,_0x44f37a);}});}})[_0x26a0('0x2d')](function(_0x5d10bd){logger[_0x26a0('0x2e')](_0x26a0('0x22'),_0x12c2b7,_0x1f7ac8[_0x26a0('0x7')][_0x44f37a]['acwTimeout'],_0x5a842c,_0x44f37a);})[_0x26a0('0x2f')](function(){delete _0x1f7ac8[_0x26a0('0xa')][_0x12c2b7];});}catch(_0x40a4bf){logger['error'](_0x26a0('0x30'),_0x40a4bf['message']);}};Acw[_0x26a0('0x31')][_0x26a0('0x24')]=function(_0x4f7849){try{var _0x355a6c=this;if(_0x355a6c[_0x26a0('0x9')][_0x4f7849]){_0x355a6c[_0x26a0('0x9')][_0x4f7849][_0x26a0('0x2a')]=![];var _0x2775a7=_0x355a6c[_0x26a0('0x9')][_0x4f7849][_0x26a0('0x28')];var _0x16d1c1=_0x355a6c[_0x26a0('0x9')][_0x4f7849][_0x26a0('0x19')];var _0x2e05cb=_0x355a6c[_0x26a0('0x7')][_0x16d1c1][_0x26a0('0x23')];logger[_0x26a0('0x21')](_0x26a0('0x32'),_0x2775a7,_0x4f7849);RpcUser[_0x26a0('0x33')](this[_0x26a0('0x8')][_0x4f7849]);RpcVoiceAgentReport[_0x26a0('0x2b')]({'acwtime':_0x2e05cb,'agentacw':!![]},_0x2775a7,_0x4f7849)[_0x26a0('0x1e')](function(_0x8f55a0){logger['info'](_0x26a0('0x2c'),_0x2775a7,_0x2e05cb,_0x8f55a0);})['catch'](function(_0x363474){logger[_0x26a0('0x2e')](_0x26a0('0x34'),_0x2775a7,_0x363474);});}else{logger[_0x26a0('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x4f7849);if(_0x355a6c[_0x26a0('0x9')]){logger[_0x26a0('0x21')]('[ACW][TIMERS]',JSON['stringify'](_0x355a6c[_0x26a0('0x9')]));}}}catch(_0x358633){logger[_0x26a0('0x2e')](_0x26a0('0x35'),_0x358633['message']);}};Acw['prototype'][_0x26a0('0xb')]=function(_0x32f809){try{if(this[_0x26a0('0x7')][_0x32f809[_0x26a0('0x19')]]&&(this[_0x26a0('0x7')][_0x32f809[_0x26a0('0x19')]][_0x26a0('0x5')]||this['voiceQueues'][_0x32f809[_0x26a0('0x19')]][_0x26a0('0x1b')])){if(this[_0x26a0('0x8')][_0x32f809[_0x26a0('0x18')]]){this[_0x26a0('0xa')][_0x32f809['uniqueid']]={'queue':_0x32f809['queue'],'interface':_0x32f809[_0x26a0('0x18')],'destlinkedid':_0x32f809[_0x26a0('0x20')]};}}}catch(_0x2567cb){logger[_0x26a0('0x2e')]('[ACW][syncAgentConnect]\x20%s',_0x2567cb[_0x26a0('0x36')]);}};Acw[_0x26a0('0x31')][_0x26a0('0x13')]=function(_0x3c23e5){try{if(this[_0x26a0('0x7')][_0x3c23e5[_0x26a0('0x19')]]&&(this[_0x26a0('0x7')][_0x3c23e5[_0x26a0('0x19')]][_0x26a0('0x5')]||this[_0x26a0('0x7')][_0x3c23e5[_0x26a0('0x19')]][_0x26a0('0x1b')])){if(this['agents'][_0x3c23e5[_0x26a0('0x18')]]){this['channels'][_0x3c23e5['uniqueid']]={'queue':_0x3c23e5[_0x26a0('0x19')],'interface':_0x3c23e5[_0x26a0('0x18')]};}}}catch(_0x20e2a5){logger[_0x26a0('0x2e')]('[ACW][syncAgentConnectPreview]\x20%s',_0x20e2a5[_0x26a0('0x36')]);}};Acw[_0x26a0('0x31')][_0x26a0('0x37')]=function(_0x38c131){try{if(this[_0x26a0('0xa')][_0x38c131[_0x26a0('0x28')]]&&_[_0x26a0('0x38')](this[_0x26a0('0xa')][_0x38c131[_0x26a0('0x28')]][_0x26a0('0x39')])){logger[_0x26a0('0x21')](_0x26a0('0x3a'),_0x38c131[_0x26a0('0x28')]);this[_0x26a0('0x17')](_0x38c131[_0x26a0('0x28')]);}else if(this['channels'][_0x38c131[_0x26a0('0x3b')]]&&_[_0x26a0('0x38')](this[_0x26a0('0xa')][_0x38c131[_0x26a0('0x3b')]][_0x26a0('0x39')])){logger[_0x26a0('0x21')](_0x26a0('0x3c'),_0x38c131['linkedid']);this[_0x26a0('0x17')](_0x38c131['linkedid']);}}catch(_0x317780){logger[_0x26a0('0x2e')]('[ACW][syncHangupRequest]\x20%s',_0x317780[_0x26a0('0x36')]);}};Acw['prototype'][_0x26a0('0xf')]=function(_0x4faf63){try{if(this['channels'][_0x4faf63['uniqueid']]&&this[_0x26a0('0xa')][_0x4faf63[_0x26a0('0x28')]]['attended']){logger[_0x26a0('0x21')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x4faf63[_0x26a0('0x28')]);this[_0x26a0('0x17')](_0x4faf63[_0x26a0('0x28')]);}else if(this['channels'][_0x4faf63['linkedid']]&&this['channels'][_0x4faf63[_0x26a0('0x3b')]][_0x26a0('0x39')]){logger[_0x26a0('0x21')](_0x26a0('0x3d'),_0x4faf63['linkedid']);this[_0x26a0('0x17')](_0x4faf63[_0x26a0('0x3b')]);}}catch(_0x15007a){logger[_0x26a0('0x2e')](_0x26a0('0x3e'),_0x15007a[_0x26a0('0x36')]);}};Acw[_0x26a0('0x31')][_0x26a0('0x3f')]=function(_0x4a8841){try{if(!_['isNil'](this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x40')]])){this['startAcw'](_0x4a8841[_0x26a0('0x40')]);if(this['channels'][_0x4a8841[_0x26a0('0x41')]]){this['channels'][_0x4a8841[_0x26a0('0x41')]][_0x26a0('0x39')]=!![];this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x42')]]=this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x41')]];delete this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x41')]];}}else if(!_[_0x26a0('0x43')](this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x42')]])){this[_0x26a0('0x17')](_0x4a8841[_0x26a0('0x42')]);if(this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x44')]]){this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x44')]]['attended']=!![];this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x40')]]=this['channels'][_0x4a8841[_0x26a0('0x44')]];delete this[_0x26a0('0xa')][_0x4a8841[_0x26a0('0x44')]];}}}catch(_0x5c6fc7){logger[_0x26a0('0x2e')]('[ACW][syncAttendedTransfer]\x20%s',_0x5c6fc7[_0x26a0('0x36')]);}};Acw[_0x26a0('0x31')][_0x26a0('0x11')]=function(_0x23d75b){try{if(this[_0x26a0('0xa')][_0x23d75b[_0x26a0('0x45')]]){logger[_0x26a0('0x21')](_0x26a0('0x46'),JSON[_0x26a0('0x47')](_0x23d75b[_0x26a0('0x45')]));this[_0x26a0('0x17')](_0x23d75b[_0x26a0('0x45')]);}else if(this[_0x26a0('0xa')][_0x23d75b[_0x26a0('0x48')]]){logger['info'](_0x26a0('0x49'),JSON[_0x26a0('0x47')](_0x23d75b[_0x26a0('0x48')]));this['startAcw'](_0x23d75b[_0x26a0('0x48')]);}}catch(_0x201a09){logger[_0x26a0('0x2e')](_0x26a0('0x4a'),_0x201a09[_0x26a0('0x36')]);}};Acw[_0x26a0('0x31')][_0x26a0('0x4b')]=function(_0x1a128e){try{if(this[_0x26a0('0x7')][_0x1a128e[_0x26a0('0x19')]]&&this[_0x26a0('0x7')][_0x1a128e[_0x26a0('0x19')]]['autopause']===_0x26a0('0x4c')){if(this[_0x26a0('0x8')][_0x1a128e[_0x26a0('0x18')]]){logger[_0x26a0('0x21')](_0x26a0('0x4d'),_0x1a128e['uniqueid'],_0x1a128e[_0x26a0('0x18')],_0x1a128e[_0x26a0('0x19')]);return RpcUser['savePause'](this[_0x26a0('0x8')][_0x1a128e[_0x26a0('0x18')]],_0x26a0('0x4e'),_0x1a128e[_0x26a0('0x28')]);}}}catch(_0x25c93c){logger['error'](_0x26a0('0x4f'),_0x25c93c['message']);}};module[_0x26a0('0x50')]=Acw;