8fe6f898795b2c82ec7a1cf135001953115416f2
[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 _0x8b9b=['syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','updateAcw','lastPauseAt','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','channels','queue','ACW','name','Action','QueuePause','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','[ACW][START]\x20%s','message','stopAcw','pauseType','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','syncHangupRequest','bind','agentringnoanswer','syncAgentRingNoAnswer'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x8b9b,0x14d));var _0xb8b9=function(_0x1966f3,_0x210ea3){_0x1966f3=_0x1966f3-0x0;var _0x17575f=_0x8b9b[_0x1966f3];return _0x17575f;};'use strict';var _=require(_0xb8b9('0x0'));var moment=require(_0xb8b9('0x1'));var ami=require(_0xb8b9('0x2'));var logger=require('../../../config/logger')(_0xb8b9('0x3'));var RpcUser=require(_0xb8b9('0x4'));var RpcVoiceAgentReport=require(_0xb8b9('0x5'));function Acw(_0x50a867){this['voiceQueues']=_0x50a867[_0xb8b9('0x6')];this[_0xb8b9('0x7')]=_0x50a867[_0xb8b9('0x7')];this[_0xb8b9('0x8')]=_0x50a867['timers'];this['channels']={};ami['on'](_0xb8b9('0x9'),this[_0xb8b9('0xa')]['bind'](this));ami['on']('hanguprequest',this[_0xb8b9('0xb')][_0xb8b9('0xc')](this));ami['on']('hangup',this['syncHangup'][_0xb8b9('0xc')](this));ami['on'](_0xb8b9('0xd'),this[_0xb8b9('0xe')]['bind'](this));ami['on']('attendedtransfer',this[_0xb8b9('0xf')][_0xb8b9('0xc')](this));ami['on'](_0xb8b9('0x10'),this[_0xb8b9('0x11')]['bind'](this));ami['on'](_0xb8b9('0x12'),this[_0xb8b9('0x13')][_0xb8b9('0xc')](this));}function getDiff(_0x5bb868){var _0x359384=moment()[_0xb8b9('0x14')](0x0);var _0x45f3c5=moment(_0x5bb868)[_0xb8b9('0x14')](0x0);return _0x359384['diff'](_0x45f3c5,_0xb8b9('0x15'));}Acw[_0xb8b9('0x16')][_0xb8b9('0x17')]=function(_0x4a7285,_0x2a50ef){var _0x20c291=this;var _0x4c4bb5=getDiff(_0x20c291[_0xb8b9('0x8')][_0x4a7285][_0xb8b9('0x18')]);clearTimeout(_0x20c291[_0xb8b9('0x8')][_0x4a7285]['timer']);_0x20c291[_0xb8b9('0x8')][_0x4a7285][_0xb8b9('0x19')]=![];return RpcVoiceAgentReport[_0xb8b9('0x1a')]({'acwtime':_0x4c4bb5},_0x20c291[_0xb8b9('0x8')][_0x4a7285][_0xb8b9('0x1b')],_0x4a7285)[_0xb8b9('0x1c')](function(_0x369b6b){logger[_0xb8b9('0x1d')](_0xb8b9('0x1e'),_0x2a50ef,_0x4c4bb5,_0x369b6b);})[_0xb8b9('0x1f')](function(_0xe5bd4d){logger[_0xb8b9('0x20')](_0xb8b9('0x21'),_0x2a50ef,_0xe5bd4d);})[_0xb8b9('0x22')](function(){delete _0x20c291[_0xb8b9('0x8')][_0x4a7285];});};Acw[_0xb8b9('0x16')]['startAcw']=function(_0x38c0ee){try{var _0x2a1431=this;var _0x495794=this[_0xb8b9('0x23')][_0x38c0ee]['interface'];var _0x4487e5=this[_0xb8b9('0x23')][_0x38c0ee][_0xb8b9('0x24')];var _0x22afc2=this[_0xb8b9('0x6')][_0x4487e5];var _0x9f4c90=![];var _0x4e1efb=_0xb8b9('0x25');if(_0x22afc2['mandatoryDisposition']&&_0x22afc2['mandatoryDispositionPause'][_0xb8b9('0x26')]){_0x9f4c90=!![];_0x4e1efb=_0x22afc2['mandatoryDispositionPause'][_0xb8b9('0x26')];}return ami[_0xb8b9('0x27')]({'action':_0xb8b9('0x28'),'interface':_0x495794,'paused':!![],'reason':_0x4e1efb})['then'](function(){if(_0x2a1431[_0xb8b9('0x7')][_0x495794]){return RpcUser[_0xb8b9('0x29')](_0x2a1431[_0xb8b9('0x7')][_0x495794]['id'])[_0xb8b9('0x1c')](function(_0x1586aa){if(!_0x1586aa||_0x1586aa[_0xb8b9('0x2a')]){logger[_0xb8b9('0x1d')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x38c0ee,_0x495794,_0x4487e5);return;}logger[_0xb8b9('0x1d')](_0xb8b9('0x2b'),_0x38c0ee,_0x495794,_0x4487e5);var _0x373ff0=_0x2a1431[_0xb8b9('0x23')][_0x38c0ee][_0xb8b9('0x2c')]&&_0x2a1431[_0xb8b9('0x23')][_0x38c0ee][_0xb8b9('0x2d')]?_0x2a1431[_0xb8b9('0x23')][_0x38c0ee][_0xb8b9('0x2d')]:_0x38c0ee;return RpcUser[_0xb8b9('0x2e')](_0x2a1431[_0xb8b9('0x7')][_0x495794],_0x4e1efb,_0x373ff0)[_0xb8b9('0x1c')](function(_0x28bf90){_0x2a1431['voiceQueues'][_0x4487e5][_0xb8b9('0x2f')]-=0x1;_0x2a1431[_0xb8b9('0x6')][_0x4487e5][_0xb8b9('0x30')]+=0x1;return _0x28bf90;});})['then'](function(_0x57a706){if(_0x9f4c90||!_0x57a706){return;}_0x2a1431[_0xb8b9('0x8')][_0x495794]={};logger['info'](_0xb8b9('0x31'),_0x38c0ee,_0x2a1431[_0xb8b9('0x6')][_0x4487e5][_0xb8b9('0x32')],_0x495794,_0x4487e5);_0x2a1431['timers'][_0x495794][_0xb8b9('0x19')]=setTimeout(_0x2a1431['stopAcw'][_0xb8b9('0xc')](_0x2a1431,_0x495794),_0x2a1431[_0xb8b9('0x6')][_0x4487e5][_0xb8b9('0x32')]*0x3e8);_0x2a1431[_0xb8b9('0x8')][_0x495794][_0xb8b9('0x18')]=moment()[_0xb8b9('0x33')](_0xb8b9('0x34'));_0x2a1431['timers'][_0x495794][_0xb8b9('0x1b')]=_0x38c0ee;_0x2a1431[_0xb8b9('0x8')][_0x495794][_0xb8b9('0x24')]=_0x4487e5;_0x2a1431['timers'][_0x495794][_0xb8b9('0x17')]=_0x2a1431[_0xb8b9('0x17')][_0xb8b9('0xc')](_0x2a1431,_0x495794,_0x38c0ee);});}})[_0xb8b9('0x1f')](function(){logger[_0xb8b9('0x20')](_0xb8b9('0x31'),_0x38c0ee,_0x2a1431['voiceQueues'][_0x4487e5][_0xb8b9('0x32')],_0x495794,_0x4487e5);})[_0xb8b9('0x22')](function(){delete _0x2a1431[_0xb8b9('0x23')][_0x38c0ee];});}catch(_0x485bf0){logger['error'](_0xb8b9('0x35'),_0x485bf0[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')][_0xb8b9('0x37')]=function(_0xddb7cd){try{var _0x4dbd4b=this;if(_0x4dbd4b['timers'][_0xddb7cd]){_0x4dbd4b[_0xb8b9('0x8')][_0xddb7cd][_0xb8b9('0x19')]=![];var _0x5d5ad3=_0x4dbd4b[_0xb8b9('0x8')][_0xddb7cd]['uniqueid'];var _0xc5ff8d=_0x4dbd4b['timers'][_0xddb7cd][_0xb8b9('0x24')];var _0x22d9fe=_0x4dbd4b[_0xb8b9('0x6')][_0xc5ff8d]['acwTimeout'];logger[_0xb8b9('0x1d')]('[%s][TIMER][STOP][AGENT:%s]',_0x5d5ad3,_0xddb7cd);RpcUser[_0xb8b9('0x29')](this[_0xb8b9('0x7')][_0xddb7cd]['id'])[_0xb8b9('0x1c')](function(_0x1058fe){if(_0x1058fe[_0xb8b9('0x38')]===_0xb8b9('0x25')){return RpcUser[_0xb8b9('0x39')](_0x4dbd4b['agents'][_0xddb7cd]);}});RpcVoiceAgentReport[_0xb8b9('0x1a')]({'acwtime':_0x22d9fe,'agentacw':!![]},_0x5d5ad3,_0xddb7cd)[_0xb8b9('0x1c')](function(_0xe7033a){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x5d5ad3,_0x22d9fe,_0xe7033a);})[_0xb8b9('0x1f')](function(_0x5692b0){logger['error'](_0xb8b9('0x21'),_0x5d5ad3,_0x5692b0);});}else{logger[_0xb8b9('0x20')](_0xb8b9('0x3a'),_0xddb7cd);if(_0x4dbd4b[_0xb8b9('0x8')]){logger['info']('[ACW][TIMERS]',JSON['stringify'](_0x4dbd4b[_0xb8b9('0x8')]));}}}catch(_0x54d0fd){logger['error']('[ACW][STOP]\x20%s',_0x54d0fd[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')]['syncAgentConnect']=function(_0x2d82d7){try{if(this[_0xb8b9('0x6')][_0x2d82d7[_0xb8b9('0x24')]]&&(this[_0xb8b9('0x6')][_0x2d82d7[_0xb8b9('0x24')]][_0xb8b9('0x3')]||this['voiceQueues'][_0x2d82d7[_0xb8b9('0x24')]][_0xb8b9('0x3b')])){if(this[_0xb8b9('0x7')][_0x2d82d7['interface']]){this[_0xb8b9('0x23')][_0x2d82d7[_0xb8b9('0x1b')]]={'queue':_0x2d82d7[_0xb8b9('0x24')],'interface':_0x2d82d7[_0xb8b9('0x3c')],'destlinkedid':_0x2d82d7[_0xb8b9('0x2d')]};}}}catch(_0x557605){logger['error'](_0xb8b9('0x3d'),_0x557605[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')][_0xb8b9('0x13')]=function(_0x5cf83f){try{if(this[_0xb8b9('0x6')][_0x5cf83f[_0xb8b9('0x24')]]&&(this[_0xb8b9('0x6')][_0x5cf83f['queue']][_0xb8b9('0x3')]||this[_0xb8b9('0x6')][_0x5cf83f[_0xb8b9('0x24')]]['mandatoryDisposition'])){if(this[_0xb8b9('0x7')][_0x5cf83f[_0xb8b9('0x3c')]]){this[_0xb8b9('0x23')][_0x5cf83f[_0xb8b9('0x1b')]]={'queue':_0x5cf83f['queue'],'interface':_0x5cf83f['interface']};}}}catch(_0x445014){logger[_0xb8b9('0x20')](_0xb8b9('0x3e'),_0x445014['message']);}};Acw[_0xb8b9('0x16')]['syncHangupRequest']=function(_0x14db00){try{if(this['channels'][_0x14db00[_0xb8b9('0x1b')]]&&_[_0xb8b9('0x3f')](this[_0xb8b9('0x23')][_0x14db00['uniqueid']][_0xb8b9('0x2c')])){logger[_0xb8b9('0x1d')](_0xb8b9('0x40'),_0x14db00[_0xb8b9('0x1b')]);this[_0xb8b9('0x41')](_0x14db00[_0xb8b9('0x1b')]);}else if(this[_0xb8b9('0x23')][_0x14db00[_0xb8b9('0x42')]]&&_[_0xb8b9('0x3f')](this[_0xb8b9('0x23')][_0x14db00[_0xb8b9('0x42')]][_0xb8b9('0x2c')])){logger[_0xb8b9('0x1d')]('[%s][HANGUP:LINKEDID]',_0x14db00[_0xb8b9('0x42')]);this[_0xb8b9('0x41')](_0x14db00[_0xb8b9('0x42')]);}}catch(_0x53afcc){logger[_0xb8b9('0x20')](_0xb8b9('0x43'),_0x53afcc[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')][_0xb8b9('0x44')]=function(_0x27dc51){try{if(this[_0xb8b9('0x23')][_0x27dc51[_0xb8b9('0x1b')]]&&this[_0xb8b9('0x23')][_0x27dc51[_0xb8b9('0x1b')]][_0xb8b9('0x2c')]){logger[_0xb8b9('0x1d')](_0xb8b9('0x45'),_0x27dc51['uniqueid']);this[_0xb8b9('0x41')](_0x27dc51['uniqueid']);}else if(this[_0xb8b9('0x23')][_0x27dc51[_0xb8b9('0x42')]]&&this['channels'][_0x27dc51['linkedid']]['attended']){logger[_0xb8b9('0x1d')](_0xb8b9('0x46'),_0x27dc51[_0xb8b9('0x42')]);this[_0xb8b9('0x41')](_0x27dc51[_0xb8b9('0x42')]);}}catch(_0xc55281){logger[_0xb8b9('0x20')](_0xb8b9('0x47'),_0xc55281[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')][_0xb8b9('0xf')]=function(_0x45fe7b){try{if(!_[_0xb8b9('0x48')](this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x49')]])){this[_0xb8b9('0x41')](_0x45fe7b[_0xb8b9('0x49')]);if(this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x4a')]]){this[_0xb8b9('0x23')][_0x45fe7b['secondtransfereruniqueid']][_0xb8b9('0x2c')]=!![];this['channels'][_0x45fe7b['transfertargetuniqueid']]=this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x4a')]];delete this['channels'][_0x45fe7b[_0xb8b9('0x4a')]];}}else if(!_[_0xb8b9('0x48')](this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x4b')]])){this[_0xb8b9('0x41')](_0x45fe7b[_0xb8b9('0x4b')]);if(this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x4c')]]){this['channels'][_0x45fe7b[_0xb8b9('0x4c')]]['attended']=!![];this['channels'][_0x45fe7b[_0xb8b9('0x49')]]=this[_0xb8b9('0x23')][_0x45fe7b['origtransfereruniqueid']];delete this[_0xb8b9('0x23')][_0x45fe7b[_0xb8b9('0x4c')]];}}}catch(_0x41a6ef){logger[_0xb8b9('0x20')]('[ACW][syncAttendedTransfer]\x20%s',_0x41a6ef[_0xb8b9('0x36')]);}};Acw['prototype'][_0xb8b9('0x11')]=function(_0x381d92){try{if(this[_0xb8b9('0x23')][_0x381d92['transfereruniqueid']]){logger[_0xb8b9('0x1d')](_0xb8b9('0x4d'),JSON[_0xb8b9('0x4e')](_0x381d92[_0xb8b9('0x4f')]));this['startAcw'](_0x381d92[_0xb8b9('0x4f')]);}else if(this[_0xb8b9('0x23')][_0x381d92['transfererlinkedid']]){logger[_0xb8b9('0x1d')](_0xb8b9('0x50'),JSON[_0xb8b9('0x4e')](_0x381d92[_0xb8b9('0x51')]));this['startAcw'](_0x381d92[_0xb8b9('0x51')]);}}catch(_0x53a595){logger[_0xb8b9('0x20')]('[ACW][syncBlindTransfer]\x20%s',_0x53a595[_0xb8b9('0x36')]);}};Acw[_0xb8b9('0x16')]['syncAgentRingNoAnswer']=function(_0x2f89b6){try{if(this[_0xb8b9('0x6')][_0x2f89b6[_0xb8b9('0x24')]]&&this[_0xb8b9('0x6')][_0x2f89b6[_0xb8b9('0x24')]][_0xb8b9('0x52')]==='all'){if(this[_0xb8b9('0x7')][_0x2f89b6[_0xb8b9('0x3c')]]){logger['info'](_0xb8b9('0x53'),_0x2f89b6[_0xb8b9('0x1b')],_0x2f89b6[_0xb8b9('0x3c')],_0x2f89b6[_0xb8b9('0x24')]);return RpcUser[_0xb8b9('0x2e')](this[_0xb8b9('0x7')][_0x2f89b6[_0xb8b9('0x3c')]],_0xb8b9('0x54'),_0x2f89b6['uniqueid']);}}}catch(_0x54f947){logger[_0xb8b9('0x20')](_0xb8b9('0x55'),_0x54f947[_0xb8b9('0x36')]);}};module[_0xb8b9('0x56')]=Acw;