609452adc7c2597f019e700b9dc5a080bce09245
[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 _0x00bb=['transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','interface','ACW','mandatoryDispositionPause','name','Action','then','agents','getAgent','voicePause','info','destlinkedid','savePause','timer','stopAcw','acwTimeout','format','uniqueid','updateAcw','lastPauseAt','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','queue','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','mandatoryDisposition','acw','[ACW][syncAgentConnectPreview]\x20%s','linkedid','isUndefined','attended','startAcw','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil'];(function(_0x3a7382,_0x417165){var _0x4ba1b2=function(_0x206bab){while(--_0x206bab){_0x3a7382['push'](_0x3a7382['shift']());}};_0x4ba1b2(++_0x417165);}(_0x00bb,0x1d8));var _0xb00b=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x00bb[_0x5ddb1c];return _0x354adc;};'use strict';var util=require(_0xb00b('0x0'));var _=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var ami=require('../ami');var logger=require(_0xb00b('0x3'))('acw');var RpcUser=require(_0xb00b('0x4'));var RpcVoiceAgentReport=require(_0xb00b('0x5'));function Acw(_0x582ef9){this[_0xb00b('0x6')]=_0x582ef9[_0xb00b('0x6')];this['agents']=_0x582ef9['agents'];this['timers']=_0x582ef9[_0xb00b('0x7')];this[_0xb00b('0x8')]={};ami['on'](_0xb00b('0x9'),this[_0xb00b('0xa')][_0xb00b('0xb')](this));ami['on'](_0xb00b('0xc'),this['syncHangupRequest']['bind'](this));ami['on'](_0xb00b('0xd'),this[_0xb00b('0xe')][_0xb00b('0xb')](this));ami['on'](_0xb00b('0xf'),this[_0xb00b('0x10')]['bind'](this));ami['on'](_0xb00b('0x11'),this['syncAttendedTransfer']['bind'](this));ami['on']('blindtransfer',this[_0xb00b('0x12')][_0xb00b('0xb')](this));ami['on'](_0xb00b('0x13'),this[_0xb00b('0x14')][_0xb00b('0xb')](this));}function getDiff(_0x1f1c1d){var _0x4ada81=moment()[_0xb00b('0x15')](0x0);var _0xb0d42e=moment(_0x1f1c1d)['milliseconds'](0x0);return _0x4ada81[_0xb00b('0x16')](_0xb0d42e,_0xb00b('0x17'));}Acw['prototype']['startAcw']=function(_0x9b471e){try{var _0x4dcd45=this;var _0x51d136=this[_0xb00b('0x8')][_0x9b471e][_0xb00b('0x18')];var _0x387d97=this[_0xb00b('0x8')][_0x9b471e]['queue'];var _0x2a7231=this['voiceQueues'][_0x387d97];var _0x415f91=![];var _0x5aa9a0=_0xb00b('0x19');if(_0x2a7231['mandatoryDisposition']){if(_0x2a7231[_0xb00b('0x1a')][_0xb00b('0x1b')]){_0x415f91=!![];_0x5aa9a0=_0x2a7231['mandatoryDispositionPause']['name'];}}ami[_0xb00b('0x1c')]({'action':'QueuePause','interface':_0x51d136,'paused':!![],'reason':_0x5aa9a0})[_0xb00b('0x1d')](function(_0x43da66){if(_0x4dcd45[_0xb00b('0x1e')][_0x51d136]){return RpcUser[_0xb00b('0x1f')](_0x4dcd45['agents'][_0x51d136]['id'])[_0xb00b('0x1d')](function(_0x4df284){if(_0x4df284&&!_0x4df284[_0xb00b('0x20')]){logger[_0xb00b('0x21')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x9b471e,_0x51d136,_0x387d97);var _0x231293=_0x4dcd45[_0xb00b('0x8')][_0x9b471e]['attended']&&_0x4dcd45[_0xb00b('0x8')][_0x9b471e][_0xb00b('0x22')]?_0x4dcd45['channels'][_0x9b471e][_0xb00b('0x22')]:_0x9b471e;return RpcUser[_0xb00b('0x23')](_0x4dcd45[_0xb00b('0x1e')][_0x51d136],_0x5aa9a0,_0x231293)[_0xb00b('0x1d')](function(_0x520e55){if(!_0x415f91){_0x4dcd45['timers'][_0x51d136]={};logger[_0xb00b('0x21')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x9b471e,_0x4dcd45['voiceQueues'][_0x387d97]['acwTimeout'],_0x51d136,_0x387d97);_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x24')]=setTimeout(_0x4dcd45[_0xb00b('0x25')][_0xb00b('0xb')](_0x4dcd45,_0x51d136),_0x4dcd45[_0xb00b('0x6')][_0x387d97][_0xb00b('0x26')]*0x3e8);_0x4dcd45[_0xb00b('0x7')][_0x51d136]['lastPauseAt']=moment()[_0xb00b('0x27')]('YYYY-MM-DD\x20HH:mm:ss');_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x28')]=_0x9b471e;_0x4dcd45[_0xb00b('0x7')][_0x51d136]['queue']=_0x387d97;_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x29')]=function(){var _0x16fbd5=getDiff(_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x2a')]);clearTimeout(_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x24')]);_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x24')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x16fbd5},_0x4dcd45[_0xb00b('0x7')][_0x51d136][_0xb00b('0x28')],_0x51d136)['then'](function(_0x593659){logger[_0xb00b('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x9b471e,_0x16fbd5,_0x593659);})[_0xb00b('0x2b')](function(_0x4d2ee5){logger[_0xb00b('0x2c')](_0xb00b('0x2d'),_0x9b471e,_0x4d2ee5);});delete _0x4dcd45[_0xb00b('0x7')][_0x51d136];};}});}else{logger[_0xb00b('0x21')](_0xb00b('0x2e'),_0x9b471e,_0x51d136,_0x387d97);}});}})[_0xb00b('0x2b')](function(_0x17f613){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x9b471e,_0x4dcd45['voiceQueues'][_0x387d97][_0xb00b('0x26')],_0x51d136,_0x387d97);})[_0xb00b('0x2f')](function(){delete _0x4dcd45[_0xb00b('0x8')][_0x9b471e];});}catch(_0x2589cb){logger['error'](_0xb00b('0x30'),_0x2589cb[_0xb00b('0x31')]);}};Acw[_0xb00b('0x32')][_0xb00b('0x25')]=function(_0x261c80){try{var _0x39da49=this;if(_0x39da49[_0xb00b('0x7')][_0x261c80]){_0x39da49[_0xb00b('0x7')][_0x261c80]['timer']=![];var _0x55451e=_0x39da49[_0xb00b('0x7')][_0x261c80]['uniqueid'];var _0x1c8258=_0x39da49[_0xb00b('0x7')][_0x261c80][_0xb00b('0x33')];var _0x45ca74=_0x39da49[_0xb00b('0x6')][_0x1c8258][_0xb00b('0x26')];logger[_0xb00b('0x21')]('[TIMER][STOP][AGENT:%s]',_0x261c80);RpcUser[_0xb00b('0x34')](this[_0xb00b('0x1e')][_0x261c80]);RpcVoiceAgentReport[_0xb00b('0x35')]({'acwtime':_0x45ca74,'agentacw':!![]},_0x55451e,_0x261c80)[_0xb00b('0x1d')](function(_0x2496e2){logger[_0xb00b('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x55451e,_0x45ca74,_0x2496e2);})[_0xb00b('0x2b')](function(_0x3beb8f){logger['error'](_0xb00b('0x2d'),_0x55451e,_0x3beb8f);});}else{logger[_0xb00b('0x2c')](_0xb00b('0x36'),_0x261c80);if(_0x39da49[_0xb00b('0x7')]){logger[_0xb00b('0x21')]('[ACW][TIMERS]',JSON[_0xb00b('0x37')](_0x39da49[_0xb00b('0x7')]));}}}catch(_0xb76ede){logger[_0xb00b('0x2c')]('[ACW][STOP]\x20%s',_0xb76ede['message']);}};Acw[_0xb00b('0x32')][_0xb00b('0xa')]=function(_0x10a348){try{if(this[_0xb00b('0x6')][_0x10a348[_0xb00b('0x33')]]&&(this[_0xb00b('0x6')][_0x10a348[_0xb00b('0x33')]]['acw']||this[_0xb00b('0x6')][_0x10a348[_0xb00b('0x33')]][_0xb00b('0x38')])){if(this[_0xb00b('0x1e')][_0x10a348[_0xb00b('0x18')]]){this[_0xb00b('0x8')][_0x10a348[_0xb00b('0x28')]]={'queue':_0x10a348[_0xb00b('0x33')],'interface':_0x10a348[_0xb00b('0x18')],'destlinkedid':_0x10a348[_0xb00b('0x22')]};}}}catch(_0xc0dddd){logger[_0xb00b('0x2c')]('[ACW][syncAgentConnect]\x20%s',_0xc0dddd[_0xb00b('0x31')]);}};Acw[_0xb00b('0x32')][_0xb00b('0x14')]=function(_0x44afa0){try{if(this[_0xb00b('0x6')][_0x44afa0[_0xb00b('0x33')]]&&(this[_0xb00b('0x6')][_0x44afa0[_0xb00b('0x33')]][_0xb00b('0x39')]||this[_0xb00b('0x6')][_0x44afa0[_0xb00b('0x33')]][_0xb00b('0x38')])){if(this['agents'][_0x44afa0['interface']]){this['channels'][_0x44afa0[_0xb00b('0x28')]]={'queue':_0x44afa0[_0xb00b('0x33')],'interface':_0x44afa0['interface']};}}}catch(_0x31cee1){logger[_0xb00b('0x2c')](_0xb00b('0x3a'),_0x31cee1[_0xb00b('0x31')]);}};Acw['prototype']['syncHangupRequest']=function(_0x172729){try{if(this[_0xb00b('0x8')][_0x172729['uniqueid']]&&_['isUndefined'](this[_0xb00b('0x8')][_0x172729[_0xb00b('0x28')]]['attended'])){logger[_0xb00b('0x21')]('[%s][HANGUP:UNIQUEID]',_0x172729['uniqueid']);this['startAcw'](_0x172729[_0xb00b('0x28')]);}else if(this['channels'][_0x172729[_0xb00b('0x3b')]]&&_[_0xb00b('0x3c')](this[_0xb00b('0x8')][_0x172729[_0xb00b('0x3b')]][_0xb00b('0x3d')])){logger[_0xb00b('0x21')]('[%s][HANGUP:LINKEDID]',_0x172729['linkedid']);this[_0xb00b('0x3e')](_0x172729[_0xb00b('0x3b')]);}}catch(_0x559357){logger[_0xb00b('0x2c')](_0xb00b('0x3f'),_0x559357['message']);}};Acw[_0xb00b('0x32')][_0xb00b('0xe')]=function(_0x3b5d82){try{if(this['channels'][_0x3b5d82['uniqueid']]&&this[_0xb00b('0x8')][_0x3b5d82[_0xb00b('0x28')]][_0xb00b('0x3d')]){logger[_0xb00b('0x21')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x3b5d82[_0xb00b('0x28')]);this[_0xb00b('0x3e')](_0x3b5d82['uniqueid']);}else if(this['channels'][_0x3b5d82[_0xb00b('0x3b')]]&&this['channels'][_0x3b5d82[_0xb00b('0x3b')]][_0xb00b('0x3d')]){logger[_0xb00b('0x21')](_0xb00b('0x40'),_0x3b5d82[_0xb00b('0x3b')]);this[_0xb00b('0x3e')](_0x3b5d82['linkedid']);}}catch(_0x5d52a5){logger['error'](_0xb00b('0x41'),_0x5d52a5[_0xb00b('0x31')]);}};Acw[_0xb00b('0x32')]['syncAttendedTransfer']=function(_0x248335){try{if(!_[_0xb00b('0x42')](this[_0xb00b('0x8')][_0x248335['transfereeuniqueid']])){this[_0xb00b('0x3e')](_0x248335[_0xb00b('0x43')]);if(this[_0xb00b('0x8')][_0x248335[_0xb00b('0x44')]]){this[_0xb00b('0x8')][_0x248335[_0xb00b('0x44')]][_0xb00b('0x3d')]=!![];this[_0xb00b('0x8')][_0x248335['transfertargetuniqueid']]=this[_0xb00b('0x8')][_0x248335[_0xb00b('0x44')]];delete this[_0xb00b('0x8')][_0x248335['secondtransfereruniqueid']];}}else if(!_[_0xb00b('0x42')](this[_0xb00b('0x8')][_0x248335[_0xb00b('0x45')]])){this[_0xb00b('0x3e')](_0x248335[_0xb00b('0x45')]);if(this['channels'][_0x248335[_0xb00b('0x46')]]){this[_0xb00b('0x8')][_0x248335[_0xb00b('0x46')]][_0xb00b('0x3d')]=!![];this['channels'][_0x248335[_0xb00b('0x43')]]=this[_0xb00b('0x8')][_0x248335[_0xb00b('0x46')]];delete this[_0xb00b('0x8')][_0x248335[_0xb00b('0x46')]];}}}catch(_0x1e5ed8){logger[_0xb00b('0x2c')]('[ACW][syncAttendedTransfer]\x20%s',_0x1e5ed8[_0xb00b('0x31')]);}};Acw['prototype'][_0xb00b('0x12')]=function(_0x4c2186){try{if(this[_0xb00b('0x8')][_0x4c2186['transfereruniqueid']]){logger[_0xb00b('0x21')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xb00b('0x37')](_0x4c2186[_0xb00b('0x47')]));this[_0xb00b('0x3e')](_0x4c2186['transfereruniqueid']);}else if(this['channels'][_0x4c2186['transfererlinkedid']]){logger[_0xb00b('0x21')](_0xb00b('0x48'),JSON[_0xb00b('0x37')](_0x4c2186['transfererlinkedid']));this[_0xb00b('0x3e')](_0x4c2186[_0xb00b('0x49')]);}}catch(_0xca87d4){logger[_0xb00b('0x2c')](_0xb00b('0x4a'),_0xca87d4['message']);}};Acw[_0xb00b('0x32')][_0xb00b('0x10')]=function(_0x5622a4){try{if(this[_0xb00b('0x6')][_0x5622a4[_0xb00b('0x33')]]&&this[_0xb00b('0x6')][_0x5622a4['queue']]['autopause']===_0xb00b('0x4b')){if(this[_0xb00b('0x1e')][_0x5622a4[_0xb00b('0x18')]]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5622a4['uniqueid'],_0x5622a4['interface'],_0x5622a4[_0xb00b('0x33')]);return RpcUser['savePause'](this[_0xb00b('0x1e')][_0x5622a4[_0xb00b('0x18')]],'Auto-Pause',_0x5622a4[_0xb00b('0x28')]);}}}catch(_0x1e7f3a){logger[_0xb00b('0x2c')](_0xb00b('0x4c'),_0x1e7f3a[_0xb00b('0x31')]);}};module['exports']=Acw;