d24da3552d926f430b9b7f3d634072fba8fe9437
[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 _0xbd50=['syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','queue','voiceQueues','ACW','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','finally','prototype','[TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','syncAgentConnect','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','agents','timers','channels','agentconnect','hanguprequest','syncHangupRequest','bind','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xbd50,0x196));var _0x0bd5=function(_0x526caa,_0x1924ab){_0x526caa=_0x526caa-0x0;var _0x260d50=_0xbd50[_0x526caa];return _0x260d50;};'use strict';var util=require(_0x0bd5('0x0'));var _=require(_0x0bd5('0x1'));var moment=require(_0x0bd5('0x2'));var ami=require('../ami');var logger=require(_0x0bd5('0x3'))(_0x0bd5('0x4'));var RpcUser=require(_0x0bd5('0x5'));var RpcVoiceAgentReport=require(_0x0bd5('0x6'));function Acw(_0x15620d){this['voiceQueues']=_0x15620d['voiceQueues'];this['agents']=_0x15620d[_0x0bd5('0x7')];this[_0x0bd5('0x8')]=_0x15620d[_0x0bd5('0x8')];this[_0x0bd5('0x9')]={};ami['on'](_0x0bd5('0xa'),this['syncAgentConnect']['bind'](this));ami['on'](_0x0bd5('0xb'),this[_0x0bd5('0xc')][_0x0bd5('0xd')](this));ami['on']('hangup',this[_0x0bd5('0xe')][_0x0bd5('0xd')](this));ami['on']('agentringnoanswer',this[_0x0bd5('0xf')][_0x0bd5('0xd')](this));ami['on']('attendedtransfer',this[_0x0bd5('0x10')][_0x0bd5('0xd')](this));ami['on'](_0x0bd5('0x11'),this['syncBlindTransfer'][_0x0bd5('0xd')](this));ami['on'](_0x0bd5('0x12'),this[_0x0bd5('0x13')][_0x0bd5('0xd')](this));}function getDiff(_0xfa1eed){var _0x557be0=moment()[_0x0bd5('0x14')](0x0);var _0x1e961d=moment(_0xfa1eed)['milliseconds'](0x0);return _0x557be0[_0x0bd5('0x15')](_0x1e961d,_0x0bd5('0x16'));}Acw['prototype'][_0x0bd5('0x17')]=function(_0x23ef4e){try{var _0x3a34e4=this;var _0xc22553=this['channels'][_0x23ef4e][_0x0bd5('0x18')];var _0x2e4f36=this[_0x0bd5('0x9')][_0x23ef4e][_0x0bd5('0x19')];var _0x833c14=this[_0x0bd5('0x1a')][_0x2e4f36];var _0xc58e12=![];var _0x19fe20=_0x0bd5('0x1b');if(_0x833c14[_0x0bd5('0x1c')]){if(_0x833c14[_0x0bd5('0x1d')][_0x0bd5('0x1e')]){_0xc58e12=!![];_0x19fe20=_0x833c14[_0x0bd5('0x1d')][_0x0bd5('0x1e')];}}ami['Action']({'action':'QueuePause','interface':_0xc22553,'paused':!![],'reason':_0x19fe20})['then'](function(_0x4ed64e){if(_0x3a34e4['agents'][_0xc22553]){return RpcUser[_0x0bd5('0x1f')](_0x3a34e4[_0x0bd5('0x7')][_0xc22553]['id'])[_0x0bd5('0x20')](function(_0x4a6910){if(_0x4a6910&&!_0x4a6910[_0x0bd5('0x21')]){logger['info'](_0x0bd5('0x22'),_0x23ef4e,_0xc22553,_0x2e4f36);var _0x3b235b=_0x3a34e4[_0x0bd5('0x9')][_0x23ef4e]['attended']&&_0x3a34e4[_0x0bd5('0x9')][_0x23ef4e]['destlinkedid']?_0x3a34e4['channels'][_0x23ef4e][_0x0bd5('0x23')]:_0x23ef4e;return RpcUser[_0x0bd5('0x24')](_0x3a34e4[_0x0bd5('0x7')][_0xc22553],_0x19fe20,_0x3b235b)['then'](function(_0x42428c){if(!_0xc58e12){_0x3a34e4['timers'][_0xc22553]={};logger[_0x0bd5('0x25')](_0x0bd5('0x26'),_0x23ef4e,_0x3a34e4[_0x0bd5('0x1a')][_0x2e4f36][_0x0bd5('0x27')],_0xc22553,_0x2e4f36);_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x28')]=setTimeout(_0x3a34e4[_0x0bd5('0x29')][_0x0bd5('0xd')](_0x3a34e4,_0xc22553),_0x3a34e4[_0x0bd5('0x1a')][_0x2e4f36][_0x0bd5('0x27')]*0x3e8);_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x2a')]=moment()[_0x0bd5('0x2b')](_0x0bd5('0x2c'));_0x3a34e4['timers'][_0xc22553][_0x0bd5('0x2d')]=_0x23ef4e;_0x3a34e4[_0x0bd5('0x8')][_0xc22553]['queue']=_0x2e4f36;_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x2e')]=function(){var _0x5d9d20=getDiff(_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x2a')]);clearTimeout(_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x28')]);_0x3a34e4['timers'][_0xc22553][_0x0bd5('0x28')]=![];RpcVoiceAgentReport[_0x0bd5('0x2f')]({'acwtime':_0x5d9d20},_0x3a34e4[_0x0bd5('0x8')][_0xc22553][_0x0bd5('0x2d')],_0xc22553)[_0x0bd5('0x20')](function(_0x386baa){logger['info'](_0x0bd5('0x30'),_0x23ef4e,_0x5d9d20,_0x386baa);})['catch'](function(_0x398362){logger[_0x0bd5('0x31')](_0x0bd5('0x32'),_0x23ef4e,_0x398362);});delete _0x3a34e4[_0x0bd5('0x8')][_0xc22553];};}});}else{logger[_0x0bd5('0x25')](_0x0bd5('0x33'),_0x23ef4e,_0xc22553,_0x2e4f36);}});}})[_0x0bd5('0x34')](function(_0x24f7d5){logger[_0x0bd5('0x31')](_0x0bd5('0x26'),_0x23ef4e,_0x3a34e4[_0x0bd5('0x1a')][_0x2e4f36][_0x0bd5('0x27')],_0xc22553,_0x2e4f36);})[_0x0bd5('0x35')](function(){delete _0x3a34e4['channels'][_0x23ef4e];});}catch(_0x3e153a){logger[_0x0bd5('0x31')]('[ACW][START]\x20%s',_0x3e153a['message']);}};Acw[_0x0bd5('0x36')][_0x0bd5('0x29')]=function(_0x8a6edc){try{var _0x3155c5=this;if(_0x3155c5[_0x0bd5('0x8')][_0x8a6edc]){_0x3155c5[_0x0bd5('0x8')][_0x8a6edc][_0x0bd5('0x28')]=![];var _0x1a0c0c=_0x3155c5[_0x0bd5('0x8')][_0x8a6edc][_0x0bd5('0x2d')];var _0x311bbe=_0x3155c5[_0x0bd5('0x8')][_0x8a6edc][_0x0bd5('0x19')];var _0x4c4fd4=_0x3155c5[_0x0bd5('0x1a')][_0x311bbe]['acwTimeout'];logger[_0x0bd5('0x25')](_0x0bd5('0x37'),_0x8a6edc);RpcUser[_0x0bd5('0x38')](this[_0x0bd5('0x7')][_0x8a6edc]);RpcVoiceAgentReport[_0x0bd5('0x2f')]({'acwtime':_0x4c4fd4,'agentacw':!![]},_0x1a0c0c,_0x8a6edc)[_0x0bd5('0x20')](function(_0x53a682){logger[_0x0bd5('0x25')](_0x0bd5('0x30'),_0x1a0c0c,_0x4c4fd4,_0x53a682);})[_0x0bd5('0x34')](function(_0x1a9dda){logger[_0x0bd5('0x31')](_0x0bd5('0x32'),_0x1a0c0c,_0x1a9dda);});}else{logger[_0x0bd5('0x31')](_0x0bd5('0x39'),_0x8a6edc);if(_0x3155c5[_0x0bd5('0x8')]){logger['info'](_0x0bd5('0x3a'),JSON['stringify'](_0x3155c5[_0x0bd5('0x8')]));}}}catch(_0xc17464){logger['error'](_0x0bd5('0x3b'),_0xc17464[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')][_0x0bd5('0x3d')]=function(_0x1eff38){try{if(this[_0x0bd5('0x1a')][_0x1eff38[_0x0bd5('0x19')]]&&(this['voiceQueues'][_0x1eff38['queue']][_0x0bd5('0x4')]||this['voiceQueues'][_0x1eff38['queue']][_0x0bd5('0x1c')])){if(this[_0x0bd5('0x7')][_0x1eff38['interface']]){this['channels'][_0x1eff38['uniqueid']]={'queue':_0x1eff38[_0x0bd5('0x19')],'interface':_0x1eff38['interface'],'destlinkedid':_0x1eff38['destlinkedid']};}}}catch(_0x28d252){logger[_0x0bd5('0x31')]('[ACW][syncAgentConnect]\x20%s',_0x28d252['message']);}};Acw[_0x0bd5('0x36')][_0x0bd5('0x13')]=function(_0x238fc7){try{if(this[_0x0bd5('0x1a')][_0x238fc7['queue']]&&(this[_0x0bd5('0x1a')][_0x238fc7[_0x0bd5('0x19')]][_0x0bd5('0x4')]||this[_0x0bd5('0x1a')][_0x238fc7[_0x0bd5('0x19')]][_0x0bd5('0x1c')])){if(this['agents'][_0x238fc7[_0x0bd5('0x18')]]){this[_0x0bd5('0x9')][_0x238fc7[_0x0bd5('0x2d')]]={'queue':_0x238fc7['queue'],'interface':_0x238fc7[_0x0bd5('0x18')]};}}}catch(_0x2628b5){logger[_0x0bd5('0x31')]('[ACW][syncAgentConnectPreview]\x20%s',_0x2628b5[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')][_0x0bd5('0xc')]=function(_0x18c7c7){try{if(this[_0x0bd5('0x9')][_0x18c7c7['uniqueid']]&&_[_0x0bd5('0x3e')](this[_0x0bd5('0x9')][_0x18c7c7['uniqueid']][_0x0bd5('0x3f')])){logger[_0x0bd5('0x25')](_0x0bd5('0x40'),_0x18c7c7[_0x0bd5('0x2d')]);this[_0x0bd5('0x17')](_0x18c7c7['uniqueid']);}else if(this[_0x0bd5('0x9')][_0x18c7c7[_0x0bd5('0x41')]]&&_['isUndefined'](this[_0x0bd5('0x9')][_0x18c7c7['linkedid']][_0x0bd5('0x3f')])){logger[_0x0bd5('0x25')](_0x0bd5('0x42'),_0x18c7c7[_0x0bd5('0x41')]);this['startAcw'](_0x18c7c7[_0x0bd5('0x41')]);}}catch(_0x4cb674){logger['error'](_0x0bd5('0x43'),_0x4cb674[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')]['syncHangup']=function(_0x424187){try{if(this['channels'][_0x424187[_0x0bd5('0x2d')]]&&this[_0x0bd5('0x9')][_0x424187[_0x0bd5('0x2d')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x424187[_0x0bd5('0x2d')]);this[_0x0bd5('0x17')](_0x424187[_0x0bd5('0x2d')]);}else if(this['channels'][_0x424187[_0x0bd5('0x41')]]&&this[_0x0bd5('0x9')][_0x424187['linkedid']][_0x0bd5('0x3f')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x424187[_0x0bd5('0x41')]);this[_0x0bd5('0x17')](_0x424187[_0x0bd5('0x41')]);}}catch(_0xb09083){logger['error'](_0x0bd5('0x44'),_0xb09083[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')]['syncAttendedTransfer']=function(_0x504e46){try{if(!_[_0x0bd5('0x45')](this[_0x0bd5('0x9')][_0x504e46['transfereeuniqueid']])){this['startAcw'](_0x504e46[_0x0bd5('0x46')]);if(this['channels'][_0x504e46[_0x0bd5('0x47')]]){this[_0x0bd5('0x9')][_0x504e46[_0x0bd5('0x47')]]['attended']=!![];this[_0x0bd5('0x9')][_0x504e46[_0x0bd5('0x48')]]=this[_0x0bd5('0x9')][_0x504e46[_0x0bd5('0x47')]];delete this['channels'][_0x504e46[_0x0bd5('0x47')]];}}else if(!_[_0x0bd5('0x45')](this[_0x0bd5('0x9')][_0x504e46[_0x0bd5('0x48')]])){this[_0x0bd5('0x17')](_0x504e46['transfertargetuniqueid']);if(this[_0x0bd5('0x9')][_0x504e46['origtransfereruniqueid']]){this[_0x0bd5('0x9')][_0x504e46['origtransfereruniqueid']]['attended']=!![];this[_0x0bd5('0x9')][_0x504e46['transfereeuniqueid']]=this[_0x0bd5('0x9')][_0x504e46[_0x0bd5('0x49')]];delete this[_0x0bd5('0x9')][_0x504e46['origtransfereruniqueid']];}}}catch(_0x4f7e86){logger[_0x0bd5('0x31')]('[ACW][syncAttendedTransfer]\x20%s',_0x4f7e86[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')]['syncBlindTransfer']=function(_0x460ebb){try{if(this['channels'][_0x460ebb[_0x0bd5('0x4a')]]){logger[_0x0bd5('0x25')](_0x0bd5('0x4b'),JSON[_0x0bd5('0x4c')](_0x460ebb[_0x0bd5('0x4a')]));this[_0x0bd5('0x17')](_0x460ebb[_0x0bd5('0x4a')]);}else if(this['channels'][_0x460ebb[_0x0bd5('0x4d')]]){logger[_0x0bd5('0x25')](_0x0bd5('0x4e'),JSON['stringify'](_0x460ebb['transfererlinkedid']));this[_0x0bd5('0x17')](_0x460ebb[_0x0bd5('0x4d')]);}}catch(_0x2d7d01){logger[_0x0bd5('0x31')](_0x0bd5('0x4f'),_0x2d7d01[_0x0bd5('0x3c')]);}};Acw[_0x0bd5('0x36')][_0x0bd5('0xf')]=function(_0x38687d){try{if(this[_0x0bd5('0x1a')][_0x38687d[_0x0bd5('0x19')]]&&this[_0x0bd5('0x1a')][_0x38687d[_0x0bd5('0x19')]][_0x0bd5('0x50')]===_0x0bd5('0x51')){if(this[_0x0bd5('0x7')][_0x38687d[_0x0bd5('0x18')]]){logger[_0x0bd5('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x38687d[_0x0bd5('0x2d')],_0x38687d[_0x0bd5('0x18')],_0x38687d['queue']);return RpcUser[_0x0bd5('0x24')](this['agents'][_0x38687d[_0x0bd5('0x18')]],_0x0bd5('0x52'),_0x38687d['uniqueid']);}}}catch(_0x35fc98){logger[_0x0bd5('0x31')](_0x0bd5('0x53'),_0x35fc98[_0x0bd5('0x3c')]);}};module[_0x0bd5('0x54')]=Acw;