3318a475b76569fa0e41935a1549f1b37fd32a0b
[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 _0x415a=['all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timer','update','info','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','channels','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','agents','getAgent','then','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','YYYY-MM-DD\x20HH:mm:ss','uniqueid','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','deleteChannelAfterTimeout','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','syncAgentRingNoAnswer','autopause'];(function(_0x3fdb9f,_0x5d986e){var _0x198ea4=function(_0x3e99cf){while(--_0x3e99cf){_0x3fdb9f['push'](_0x3fdb9f['shift']());}};_0x198ea4(++_0x5d986e);}(_0x415a,0xb2));var _0xa415=function(_0x3d7d28,_0x24c791){_0x3d7d28=_0x3d7d28-0x0;var _0x40d440=_0x415a[_0x3d7d28];return _0x40d440;};'use strict';var _=require(_0xa415('0x0'));var moment=require(_0xa415('0x1'));var ami=require(_0xa415('0x2'));var logger=require(_0xa415('0x3'))(_0xa415('0x4'));var RpcUser=require(_0xa415('0x5'));var RpcVoiceAgentReport=require(_0xa415('0x6'));function Acw(_0x5bb8b4){this[_0xa415('0x7')]=_0x5bb8b4[_0xa415('0x7')];this['agents']=_0x5bb8b4['agents'];this[_0xa415('0x8')]=_0x5bb8b4[_0xa415('0x8')];this['channels']={};ami['on'](_0xa415('0x9'),this[_0xa415('0xa')][_0xa415('0xb')](this));ami['on'](_0xa415('0xc'),this[_0xa415('0xd')][_0xa415('0xb')](this));ami['on'](_0xa415('0xe'),this['syncHangup']['bind'](this));ami['on'](_0xa415('0xf'),this['syncAgentRingNoAnswer'][_0xa415('0xb')](this));ami['on']('attendedtransfer',this[_0xa415('0x10')][_0xa415('0xb')](this));ami['on'](_0xa415('0x11'),this[_0xa415('0x12')][_0xa415('0xb')](this));ami['on'](_0xa415('0x13'),this[_0xa415('0x14')][_0xa415('0xb')](this));}function getDiff(_0x313326){var _0x4313b8=moment()[_0xa415('0x15')](0x0);var _0x15c764=moment(_0x313326)['milliseconds'](0x0);return _0x4313b8[_0xa415('0x16')](_0x15c764,_0xa415('0x17'));}Acw[_0xa415('0x18')][_0xa415('0x19')]=function(_0x47b2bf,_0x31a128){var _0x4d2283=this;var _0x2a8f63=getDiff(_0x4d2283[_0xa415('0x8')][_0x47b2bf][_0xa415('0x1a')]);clearTimeout(_0x4d2283[_0xa415('0x8')][_0x47b2bf][_0xa415('0x1b')]);_0x4d2283['timers'][_0x47b2bf][_0xa415('0x1b')]=![];return RpcVoiceAgentReport[_0xa415('0x1c')]({'acwtime':_0x2a8f63},_0x4d2283[_0xa415('0x8')][_0x47b2bf]['uniqueid'],_0x47b2bf)['then'](function(_0x1b47df){logger[_0xa415('0x1d')]('[%s][UPDATE][ACWTIME:%s]',_0x31a128,_0x2a8f63,_0x1b47df);})[_0xa415('0x1e')](function(_0x3cdd87){logger[_0xa415('0x1f')](_0xa415('0x20'),_0x31a128,_0x3cdd87);})[_0xa415('0x21')](function(){delete _0x4d2283[_0xa415('0x8')][_0x47b2bf];});};Acw[_0xa415('0x18')][_0xa415('0x22')]=function(_0x40a047){try{var _0x5dadcc=this;var _0x1073d3=this[_0xa415('0x23')][_0x40a047][_0xa415('0x24')];var _0x275811=this[_0xa415('0x23')][_0x40a047][_0xa415('0x25')];var _0x4f473d=this[_0xa415('0x7')][_0x275811];var _0x1e8763=![];var _0x5eed51='ACW';if(_0x4f473d[_0xa415('0x26')]&&_0x4f473d[_0xa415('0x27')][_0xa415('0x28')]){_0x1e8763=!![];_0x5eed51=_0x4f473d[_0xa415('0x27')][_0xa415('0x28')];}return ami[_0xa415('0x29')]({'action':_0xa415('0x2a'),'interface':_0x1073d3,'paused':!![],'reason':_0x5eed51})['then'](function(){if(_0x5dadcc[_0xa415('0x2b')][_0x1073d3]){return RpcUser[_0xa415('0x2c')](_0x5dadcc[_0xa415('0x2b')][_0x1073d3]['id'])[_0xa415('0x2d')](function(_0x46f6b1){if(!_0x46f6b1||_0x46f6b1[_0xa415('0x2e')]){logger['info'](_0xa415('0x2f'),_0x40a047,_0x1073d3,_0x275811);return;}logger[_0xa415('0x1d')](_0xa415('0x30'),_0x40a047,_0x1073d3,_0x275811);var _0x5c2e33=_0x5dadcc['channels'][_0x40a047][_0xa415('0x31')]&&_0x5dadcc['channels'][_0x40a047][_0xa415('0x32')]?_0x5dadcc[_0xa415('0x23')][_0x40a047][_0xa415('0x32')]:_0x40a047;return RpcUser[_0xa415('0x33')](_0x5dadcc[_0xa415('0x2b')][_0x1073d3],_0x5eed51,_0x5c2e33)[_0xa415('0x2d')](function(_0x3a1283){_0x5dadcc[_0xa415('0x7')][_0x275811][_0xa415('0x34')]-=0x1;_0x5dadcc[_0xa415('0x7')][_0x275811][_0xa415('0x35')]+=0x1;return _0x3a1283;});})[_0xa415('0x2d')](function(_0x46fea6){if(_0x1e8763||!_0x46fea6){return;}_0x5dadcc[_0xa415('0x8')][_0x1073d3]={};logger['info'](_0xa415('0x36'),_0x40a047,_0x5dadcc[_0xa415('0x7')][_0x275811][_0xa415('0x37')],_0x1073d3,_0x275811);_0x5dadcc[_0xa415('0x8')][_0x1073d3][_0xa415('0x1b')]=setTimeout(_0x5dadcc['stopAcw']['bind'](_0x5dadcc,_0x1073d3),_0x5dadcc[_0xa415('0x7')][_0x275811][_0xa415('0x37')]*0x3e8);_0x5dadcc[_0xa415('0x8')][_0x1073d3][_0xa415('0x1a')]=moment()['format'](_0xa415('0x38'));_0x5dadcc[_0xa415('0x8')][_0x1073d3][_0xa415('0x39')]=_0x40a047;_0x5dadcc[_0xa415('0x8')][_0x1073d3][_0xa415('0x25')]=_0x275811;_0x5dadcc['timers'][_0x1073d3][_0xa415('0x19')]=_0x5dadcc[_0xa415('0x19')][_0xa415('0xb')](_0x5dadcc,_0x1073d3,_0x40a047);});}})[_0xa415('0x1e')](function(){logger[_0xa415('0x1f')](_0xa415('0x36'),_0x40a047,_0x5dadcc['voiceQueues'][_0x275811][_0xa415('0x37')],_0x1073d3,_0x275811);})['finally'](function(){delete _0x5dadcc[_0xa415('0x23')][_0x40a047];});}catch(_0x361cef){logger[_0xa415('0x1f')](_0xa415('0x3a'),_0x361cef[_0xa415('0x3b')]);}};Acw[_0xa415('0x18')]['stopAcw']=function(_0x15f874){try{var _0x5e719d=this;if(_0x5e719d[_0xa415('0x8')][_0x15f874]){_0x5e719d[_0xa415('0x8')][_0x15f874][_0xa415('0x1b')]=![];var _0x1d5ed7=_0x5e719d[_0xa415('0x8')][_0x15f874][_0xa415('0x39')];var _0x54b8ca=_0x5e719d[_0xa415('0x8')][_0x15f874][_0xa415('0x25')];var _0x308c7e=_0x5e719d[_0xa415('0x7')][_0x54b8ca]['acwTimeout'];logger[_0xa415('0x1d')](_0xa415('0x3c'),_0x1d5ed7,_0x15f874);RpcUser[_0xa415('0x2c')](this[_0xa415('0x2b')][_0x15f874]['id'])['then'](function(_0x467c7a){if(_0x467c7a['pauseType']==='ACW'){return RpcUser[_0xa415('0x3d')](_0x5e719d[_0xa415('0x2b')][_0x15f874]);}});RpcVoiceAgentReport[_0xa415('0x1c')]({'acwtime':_0x308c7e,'agentacw':!![]},_0x1d5ed7,_0x15f874)['then'](function(_0x4321be){logger[_0xa415('0x1d')]('[%s][UPDATE][ACWTIME:%s]',_0x1d5ed7,_0x308c7e,_0x4321be);})[_0xa415('0x1e')](function(_0x4eef30){logger[_0xa415('0x1f')](_0xa415('0x20'),_0x1d5ed7,_0x4eef30);});}else{logger[_0xa415('0x1f')](_0xa415('0x3e'),_0x15f874);if(_0x5e719d[_0xa415('0x8')]){logger[_0xa415('0x1d')]('[ACW][TIMERS]',JSON[_0xa415('0x3f')](_0x5e719d['timers']));}}}catch(_0x19cca5){logger[_0xa415('0x1f')](_0xa415('0x40'),_0x19cca5[_0xa415('0x3b')]);}};Acw[_0xa415('0x18')][_0xa415('0xa')]=function(_0x2360e6){try{if(this['voiceQueues'][_0x2360e6[_0xa415('0x25')]]&&(this['voiceQueues'][_0x2360e6[_0xa415('0x25')]]['acw']||this[_0xa415('0x7')][_0x2360e6[_0xa415('0x25')]][_0xa415('0x26')])){if(this[_0xa415('0x2b')][_0x2360e6[_0xa415('0x24')]]){this['channels'][_0x2360e6[_0xa415('0x39')]]={'queue':_0x2360e6[_0xa415('0x25')],'interface':_0x2360e6[_0xa415('0x24')],'destlinkedid':_0x2360e6[_0xa415('0x32')]};}}}catch(_0x108a68){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x108a68[_0xa415('0x3b')]);}};Acw[_0xa415('0x18')][_0xa415('0x14')]=function(_0x51aebb){try{if(this[_0xa415('0x7')][_0x51aebb[_0xa415('0x25')]]&&(this['voiceQueues'][_0x51aebb[_0xa415('0x25')]][_0xa415('0x4')]||this[_0xa415('0x7')][_0x51aebb[_0xa415('0x25')]][_0xa415('0x26')])){if(this[_0xa415('0x2b')][_0x51aebb[_0xa415('0x24')]]){this[_0xa415('0x23')][_0x51aebb[_0xa415('0x39')]]={'queue':_0x51aebb[_0xa415('0x25')],'interface':_0x51aebb[_0xa415('0x24')]};}}}catch(_0x2a2c71){logger[_0xa415('0x1f')](_0xa415('0x41'),_0x2a2c71['message']);}};Acw['prototype'][_0xa415('0xd')]=function(_0x2007a5){try{if(this['channels'][_0x2007a5['uniqueid']]&&_[_0xa415('0x42')](this[_0xa415('0x23')][_0x2007a5[_0xa415('0x39')]][_0xa415('0x31')])){logger[_0xa415('0x1d')](_0xa415('0x43'),_0x2007a5['uniqueid']);this[_0xa415('0x22')](_0x2007a5[_0xa415('0x39')]);}else if(this['channels'][_0x2007a5['linkedid']]&&_[_0xa415('0x42')](this[_0xa415('0x23')][_0x2007a5['linkedid']][_0xa415('0x31')])){logger[_0xa415('0x1d')](_0xa415('0x44'),_0x2007a5['linkedid']);this[_0xa415('0x22')](_0x2007a5[_0xa415('0x45')]);}}catch(_0x51dbd4){logger[_0xa415('0x1f')](_0xa415('0x46'),_0x51dbd4[_0xa415('0x3b')]);}};Acw[_0xa415('0x18')]['syncHangup']=function(_0x367dff){try{if(this['channels'][_0x367dff[_0xa415('0x39')]]&&this[_0xa415('0x23')][_0x367dff[_0xa415('0x39')]][_0xa415('0x31')]){logger[_0xa415('0x1d')](_0xa415('0x47'),_0x367dff[_0xa415('0x39')]);this['startAcw'](_0x367dff[_0xa415('0x39')]);}else if(this[_0xa415('0x23')][_0x367dff[_0xa415('0x45')]]&&this[_0xa415('0x23')][_0x367dff['linkedid']][_0xa415('0x31')]){logger[_0xa415('0x1d')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x367dff[_0xa415('0x45')]);this[_0xa415('0x22')](_0x367dff[_0xa415('0x45')]);}}catch(_0x4e604a){logger[_0xa415('0x1f')]('[ACW][syncHangup]\x20%s',_0x4e604a['message']);}};Acw[_0xa415('0x18')][_0xa415('0x10')]=function(_0x59f427){try{if(!_[_0xa415('0x48')](this[_0xa415('0x23')][_0x59f427[_0xa415('0x49')]])){this[_0xa415('0x22')](_0x59f427[_0xa415('0x49')]);if(this['channels'][_0x59f427[_0xa415('0x4a')]]){this['channels'][_0x59f427[_0xa415('0x4a')]]['attended']=!![];this[_0xa415('0x23')][_0x59f427[_0xa415('0x4b')]]=this[_0xa415('0x23')][_0x59f427[_0xa415('0x4a')]];this[_0xa415('0x4c')](_0x59f427[_0xa415('0x4a')]);}}else if(!_[_0xa415('0x48')](this[_0xa415('0x23')][_0x59f427[_0xa415('0x4b')]])){this['startAcw'](_0x59f427['transfertargetuniqueid']);if(this[_0xa415('0x23')][_0x59f427['origtransfereruniqueid']]){this[_0xa415('0x23')][_0x59f427[_0xa415('0x4d')]][_0xa415('0x31')]=!![];this[_0xa415('0x23')][_0x59f427[_0xa415('0x49')]]=this[_0xa415('0x23')][_0x59f427[_0xa415('0x4d')]];this[_0xa415('0x4c')](_0x59f427['origtransfereruniqueid']);}}}catch(_0x2b9c49){logger[_0xa415('0x1f')](_0xa415('0x4e'),_0x2b9c49[_0xa415('0x3b')]);}};Acw['prototype']['syncBlindTransfer']=function(_0x558143){try{if(this[_0xa415('0x23')][_0x558143['transfereruniqueid']]){logger[_0xa415('0x1d')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x558143[_0xa415('0x4f')]));this[_0xa415('0x22')](_0x558143[_0xa415('0x4f')]);}else if(this[_0xa415('0x23')][_0x558143[_0xa415('0x50')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xa415('0x3f')](_0x558143[_0xa415('0x50')]));this[_0xa415('0x22')](_0x558143[_0xa415('0x50')]);}}catch(_0x5797fb){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x5797fb[_0xa415('0x3b')]);}};Acw[_0xa415('0x18')][_0xa415('0x51')]=function(_0x4609f7){try{if(this[_0xa415('0x7')][_0x4609f7['queue']]&&this['voiceQueues'][_0x4609f7[_0xa415('0x25')]][_0xa415('0x52')]===_0xa415('0x53')){if(this[_0xa415('0x2b')][_0x4609f7[_0xa415('0x24')]]){logger['info'](_0xa415('0x54'),_0x4609f7['uniqueid'],_0x4609f7[_0xa415('0x24')],_0x4609f7[_0xa415('0x25')]);return RpcUser[_0xa415('0x33')](this['agents'][_0x4609f7[_0xa415('0x24')]],'Auto-Pause',_0x4609f7[_0xa415('0x39')]);}}}catch(_0x2054df){logger[_0xa415('0x1f')](_0xa415('0x55'),_0x2054df[_0xa415('0x3b')]);}};Acw['prototype'][_0xa415('0x4c')]=function(_0xacf0c9,_0x13ccdb=0x2710){if(this[_0xa415('0x23')][_0xacf0c9]){setTimeout(()=>{delete this[_0xa415('0x23')][_0xacf0c9];},_0x13ccdb);}};module[_0xa415('0x56')]=Acw;