3a7937f00a662e3112e313ae9b140389fc46f023
[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 _0x5da4=['info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','available','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','YYYY-MM-DD\x20HH:mm:ss','error','[ACW][START]\x20%s','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','pauseType','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','deleteChannelAfterTimeout','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','../ami','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','updateAcw','lastPauseAt','timer','update','uniqueid','then','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','voicePause'];(function(_0x4b7f4a,_0xefb42c){var _0x39a30d=function(_0x4e3865){while(--_0x4e3865){_0x4b7f4a['push'](_0x4b7f4a['shift']());}};_0x39a30d(++_0xefb42c);}(_0x5da4,0x18c));var _0x45da=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5da4[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var moment=require('moment');var ami=require(_0x45da('0x0'));var logger=require('../../../config/logger')(_0x45da('0x1'));var RpcUser=require(_0x45da('0x2'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x71cc05){this['voiceQueues']=_0x71cc05[_0x45da('0x3')];this['agents']=_0x71cc05[_0x45da('0x4')];this[_0x45da('0x5')]=_0x71cc05[_0x45da('0x5')];this[_0x45da('0x6')]={};ami['on'](_0x45da('0x7'),this[_0x45da('0x8')]['bind'](this));ami['on'](_0x45da('0x9'),this[_0x45da('0xa')][_0x45da('0xb')](this));ami['on'](_0x45da('0xc'),this[_0x45da('0xd')][_0x45da('0xb')](this));ami['on'](_0x45da('0xe'),this[_0x45da('0xf')][_0x45da('0xb')](this));ami['on']('attendedtransfer',this[_0x45da('0x10')][_0x45da('0xb')](this));ami['on'](_0x45da('0x11'),this[_0x45da('0x12')]['bind'](this));ami['on'](_0x45da('0x13'),this[_0x45da('0x14')][_0x45da('0xb')](this));}function getDiff(_0x45a443){var _0x877715=moment()[_0x45da('0x15')](0x0);var _0x3fd438=moment(_0x45a443)[_0x45da('0x15')](0x0);return _0x877715[_0x45da('0x16')](_0x3fd438,'seconds');}Acw[_0x45da('0x17')][_0x45da('0x18')]=function(_0x536dcc,_0x2421c4){var _0x1a7491=this;var _0x4b9ae0=getDiff(_0x1a7491[_0x45da('0x5')][_0x536dcc][_0x45da('0x19')]);clearTimeout(_0x1a7491[_0x45da('0x5')][_0x536dcc][_0x45da('0x1a')]);_0x1a7491[_0x45da('0x5')][_0x536dcc][_0x45da('0x1a')]=![];return RpcVoiceAgentReport[_0x45da('0x1b')]({'acwtime':_0x4b9ae0},_0x1a7491[_0x45da('0x5')][_0x536dcc][_0x45da('0x1c')],_0x536dcc)[_0x45da('0x1d')](function(_0x23e2f5){logger['info'](_0x45da('0x1e'),_0x2421c4,_0x4b9ae0,_0x23e2f5);})[_0x45da('0x1f')](function(_0x274818){logger['error'](_0x45da('0x20'),_0x2421c4,_0x274818);})[_0x45da('0x21')](function(){delete _0x1a7491['timers'][_0x536dcc];});};Acw[_0x45da('0x17')][_0x45da('0x22')]=function(_0x2ab755){try{var _0x9be834=this;var _0x365643=this[_0x45da('0x6')][_0x2ab755][_0x45da('0x23')];var _0x48419b=this['channels'][_0x2ab755][_0x45da('0x24')];var _0x202aab=this[_0x45da('0x3')][_0x48419b];var _0x1e6eee=![];var _0xa78ca7=_0x45da('0x25');if(_0x202aab[_0x45da('0x26')]&&_0x202aab[_0x45da('0x27')][_0x45da('0x28')]){_0x1e6eee=!![];_0xa78ca7=_0x202aab[_0x45da('0x27')][_0x45da('0x28')];}return ami[_0x45da('0x29')]({'action':_0x45da('0x2a'),'interface':_0x365643,'paused':!![],'reason':_0xa78ca7})[_0x45da('0x1d')](function(){if(_0x9be834[_0x45da('0x4')][_0x365643]){return RpcUser['getAgent'](_0x9be834[_0x45da('0x4')][_0x365643]['id'])[_0x45da('0x1d')](function(_0x510d2d){if(!_0x510d2d||_0x510d2d[_0x45da('0x2b')]){logger[_0x45da('0x2c')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x2ab755,_0x365643,_0x48419b);return;}logger[_0x45da('0x2c')](_0x45da('0x2d'),_0x2ab755,_0x365643,_0x48419b);var _0x4d1ba6=_0x9be834['channels'][_0x2ab755][_0x45da('0x2e')]&&_0x9be834['channels'][_0x2ab755][_0x45da('0x2f')]?_0x9be834[_0x45da('0x6')][_0x2ab755][_0x45da('0x2f')]:_0x2ab755;return RpcUser['savePause'](_0x9be834[_0x45da('0x4')][_0x365643],_0xa78ca7,_0x4d1ba6)[_0x45da('0x1d')](function(_0x5e4d2a){_0x9be834[_0x45da('0x3')][_0x48419b][_0x45da('0x30')]-=0x1;_0x9be834['voiceQueues'][_0x48419b]['paused']+=0x1;return _0x5e4d2a;});})[_0x45da('0x1d')](function(_0x10114b){if(_0x1e6eee||!_0x10114b){return;}_0x9be834[_0x45da('0x5')][_0x365643]={};logger['info'](_0x45da('0x31'),_0x2ab755,_0x9be834[_0x45da('0x3')][_0x48419b][_0x45da('0x32')],_0x365643,_0x48419b);_0x9be834['timers'][_0x365643][_0x45da('0x1a')]=setTimeout(_0x9be834['stopAcw'][_0x45da('0xb')](_0x9be834,_0x365643),_0x9be834[_0x45da('0x3')][_0x48419b]['acwTimeout']*0x3e8);_0x9be834[_0x45da('0x5')][_0x365643][_0x45da('0x19')]=moment()['format'](_0x45da('0x33'));_0x9be834[_0x45da('0x5')][_0x365643][_0x45da('0x1c')]=_0x2ab755;_0x9be834['timers'][_0x365643]['queue']=_0x48419b;_0x9be834[_0x45da('0x5')][_0x365643]['updateAcw']=_0x9be834[_0x45da('0x18')][_0x45da('0xb')](_0x9be834,_0x365643,_0x2ab755);});}})[_0x45da('0x1f')](function(){logger[_0x45da('0x34')](_0x45da('0x31'),_0x2ab755,_0x9be834[_0x45da('0x3')][_0x48419b]['acwTimeout'],_0x365643,_0x48419b);})[_0x45da('0x21')](function(){delete _0x9be834[_0x45da('0x6')][_0x2ab755];});}catch(_0x5e31d2){logger[_0x45da('0x34')](_0x45da('0x35'),_0x5e31d2[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0x37')]=function(_0x2016c9){try{var _0xfd7951=this;if(_0xfd7951[_0x45da('0x5')][_0x2016c9]){_0xfd7951['timers'][_0x2016c9][_0x45da('0x1a')]=![];var _0x5f2516=_0xfd7951['timers'][_0x2016c9][_0x45da('0x1c')];var _0x404f2d=_0xfd7951[_0x45da('0x5')][_0x2016c9][_0x45da('0x24')];var _0x518385=_0xfd7951[_0x45da('0x3')][_0x404f2d][_0x45da('0x32')];logger['info'](_0x45da('0x38'),_0x5f2516,_0x2016c9);RpcUser['getAgent'](this['agents'][_0x2016c9]['id'])['then'](function(_0x587007){if(_0x587007[_0x45da('0x39')]===_0x45da('0x25')){return RpcUser[_0x45da('0x3a')](_0xfd7951[_0x45da('0x4')][_0x2016c9]);}});RpcVoiceAgentReport[_0x45da('0x1b')]({'acwtime':_0x518385,'agentacw':!![]},_0x5f2516,_0x2016c9)[_0x45da('0x1d')](function(_0x44dafb){logger[_0x45da('0x2c')](_0x45da('0x1e'),_0x5f2516,_0x518385,_0x44dafb);})[_0x45da('0x1f')](function(_0x1ce6a9){logger[_0x45da('0x34')](_0x45da('0x20'),_0x5f2516,_0x1ce6a9);});}else{logger[_0x45da('0x34')](_0x45da('0x3b'),_0x2016c9);if(_0xfd7951['timers']){logger[_0x45da('0x2c')](_0x45da('0x3c'),JSON[_0x45da('0x3d')](_0xfd7951[_0x45da('0x5')]));}}}catch(_0x12c86c){logger[_0x45da('0x34')](_0x45da('0x3e'),_0x12c86c[_0x45da('0x36')]);}};Acw[_0x45da('0x17')]['syncAgentConnect']=function(_0x4d9554){try{if(this['voiceQueues'][_0x4d9554['queue']]&&(this[_0x45da('0x3')][_0x4d9554[_0x45da('0x24')]]['acw']||this['voiceQueues'][_0x4d9554[_0x45da('0x24')]]['mandatoryDisposition'])){if(this[_0x45da('0x4')][_0x4d9554[_0x45da('0x23')]]){this[_0x45da('0x6')][_0x4d9554[_0x45da('0x1c')]]={'queue':_0x4d9554[_0x45da('0x24')],'interface':_0x4d9554[_0x45da('0x23')],'destlinkedid':_0x4d9554['destlinkedid']};}}}catch(_0x1ae871){logger[_0x45da('0x34')](_0x45da('0x3f'),_0x1ae871[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0x14')]=function(_0x1733b0){try{if(this['voiceQueues'][_0x1733b0[_0x45da('0x24')]]&&(this[_0x45da('0x3')][_0x1733b0[_0x45da('0x24')]]['acw']||this['voiceQueues'][_0x1733b0[_0x45da('0x24')]][_0x45da('0x26')])){if(this[_0x45da('0x4')][_0x1733b0[_0x45da('0x23')]]){this['channels'][_0x1733b0[_0x45da('0x1c')]]={'queue':_0x1733b0[_0x45da('0x24')],'interface':_0x1733b0[_0x45da('0x23')]};}}}catch(_0x177156){logger[_0x45da('0x34')](_0x45da('0x40'),_0x177156[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0xa')]=function(_0x1e5d7f){try{if(this['channels'][_0x1e5d7f[_0x45da('0x1c')]]&&_['isUndefined'](this[_0x45da('0x6')][_0x1e5d7f[_0x45da('0x1c')]][_0x45da('0x2e')])){logger[_0x45da('0x2c')]('[%s][HANGUP:UNIQUEID]',_0x1e5d7f[_0x45da('0x1c')]);this['startAcw'](_0x1e5d7f[_0x45da('0x1c')]);}else if(this[_0x45da('0x6')][_0x1e5d7f['linkedid']]&&_[_0x45da('0x41')](this[_0x45da('0x6')][_0x1e5d7f[_0x45da('0x42')]][_0x45da('0x2e')])){logger[_0x45da('0x2c')](_0x45da('0x43'),_0x1e5d7f[_0x45da('0x42')]);this[_0x45da('0x22')](_0x1e5d7f[_0x45da('0x42')]);}}catch(_0x138a6a){logger[_0x45da('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x138a6a[_0x45da('0x36')]);}};Acw[_0x45da('0x17')]['syncHangup']=function(_0x2745c5){try{if(this[_0x45da('0x6')][_0x2745c5[_0x45da('0x1c')]]&&this[_0x45da('0x6')][_0x2745c5[_0x45da('0x1c')]][_0x45da('0x2e')]){logger['info'](_0x45da('0x44'),_0x2745c5['uniqueid']);this['startAcw'](_0x2745c5[_0x45da('0x1c')]);}else if(this['channels'][_0x2745c5[_0x45da('0x42')]]&&this[_0x45da('0x6')][_0x2745c5[_0x45da('0x42')]][_0x45da('0x2e')]){logger[_0x45da('0x2c')](_0x45da('0x45'),_0x2745c5['linkedid']);this[_0x45da('0x22')](_0x2745c5[_0x45da('0x42')]);}}catch(_0x3425a7){logger[_0x45da('0x34')](_0x45da('0x46'),_0x3425a7['message']);}};Acw[_0x45da('0x17')]['syncAttendedTransfer']=function(_0x2e663d){try{if(!_[_0x45da('0x47')](this[_0x45da('0x6')][_0x2e663d[_0x45da('0x48')]])){this[_0x45da('0x22')](_0x2e663d[_0x45da('0x48')]);if(this['channels'][_0x2e663d[_0x45da('0x49')]]){this['channels'][_0x2e663d[_0x45da('0x49')]][_0x45da('0x2e')]=!![];this[_0x45da('0x6')][_0x2e663d['transfertargetuniqueid']]=this[_0x45da('0x6')][_0x2e663d[_0x45da('0x49')]];this[_0x45da('0x4a')](_0x2e663d[_0x45da('0x49')]);}}else if(!_[_0x45da('0x47')](this[_0x45da('0x6')][_0x2e663d[_0x45da('0x4b')]])){this[_0x45da('0x22')](_0x2e663d['transfertargetuniqueid']);if(this[_0x45da('0x6')][_0x2e663d[_0x45da('0x4c')]]){this[_0x45da('0x6')][_0x2e663d[_0x45da('0x4c')]][_0x45da('0x2e')]=!![];this[_0x45da('0x6')][_0x2e663d['transfereeuniqueid']]=this[_0x45da('0x6')][_0x2e663d[_0x45da('0x4c')]];this[_0x45da('0x4a')](_0x2e663d['origtransfereruniqueid']);}}}catch(_0x219c4e){logger[_0x45da('0x34')](_0x45da('0x4d'),_0x219c4e[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0x12')]=function(_0x30cfd1){try{if(this[_0x45da('0x6')][_0x30cfd1['transfereruniqueid']]){logger[_0x45da('0x2c')](_0x45da('0x4e'),JSON['stringify'](_0x30cfd1[_0x45da('0x4f')]));this[_0x45da('0x22')](_0x30cfd1[_0x45da('0x4f')]);}else if(this[_0x45da('0x6')][_0x30cfd1[_0x45da('0x50')]]){logger[_0x45da('0x2c')](_0x45da('0x51'),JSON['stringify'](_0x30cfd1[_0x45da('0x50')]));this['startAcw'](_0x30cfd1['transfererlinkedid']);}}catch(_0x1fae2c){logger['error'](_0x45da('0x52'),_0x1fae2c[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0xf')]=function(_0x1fa14a){try{if(this[_0x45da('0x3')][_0x1fa14a[_0x45da('0x24')]]&&this['voiceQueues'][_0x1fa14a[_0x45da('0x24')]]['autopause']===_0x45da('0x53')){if(this[_0x45da('0x4')][_0x1fa14a['interface']]){logger[_0x45da('0x2c')](_0x45da('0x54'),_0x1fa14a[_0x45da('0x1c')],_0x1fa14a[_0x45da('0x23')],_0x1fa14a['queue']);return RpcUser[_0x45da('0x55')](this['agents'][_0x1fa14a[_0x45da('0x23')]],'Auto-Pause',_0x1fa14a[_0x45da('0x1c')]);}}}catch(_0x2fd60d){logger[_0x45da('0x34')](_0x45da('0x56'),_0x2fd60d[_0x45da('0x36')]);}};Acw[_0x45da('0x17')][_0x45da('0x4a')]=function(_0x1a2089,_0x5e6a9b=0x2710){if(this[_0x45da('0x6')][_0x1a2089]){setTimeout(()=>{delete this['channels'][_0x1a2089];},_0x5e6a9b);}};module[_0x45da('0x57')]=Acw;