b570140aaea78d744acca76daa0057b470e8aec6
[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 _0x9b0c=['../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','catch','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','destlinkedid','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami'];(function(_0x560534,_0x1a2815){var _0x3dec01=function(_0x2222dd){while(--_0x2222dd){_0x560534['push'](_0x560534['shift']());}};_0x3dec01(++_0x1a2815);}(_0x9b0c,0x15d));var _0xc9b0=function(_0x48e6fe,_0x580772){_0x48e6fe=_0x48e6fe-0x0;var _0x4ac0ec=_0x9b0c[_0x48e6fe];return _0x4ac0ec;};'use strict';var _=require(_0xc9b0('0x0'));var moment=require(_0xc9b0('0x1'));var ami=require(_0xc9b0('0x2'));var logger=require(_0xc9b0('0x3'))(_0xc9b0('0x4'));var RpcUser=require(_0xc9b0('0x5'));var RpcVoiceAgentReport=require(_0xc9b0('0x6'));function Acw(_0x1a01d2){this[_0xc9b0('0x7')]=_0x1a01d2[_0xc9b0('0x7')];this['agents']=_0x1a01d2[_0xc9b0('0x8')];this[_0xc9b0('0x9')]=_0x1a01d2[_0xc9b0('0x9')];this[_0xc9b0('0xa')]={};ami['on']('agentconnect',this[_0xc9b0('0xb')][_0xc9b0('0xc')](this));ami['on']('hanguprequest',this[_0xc9b0('0xd')][_0xc9b0('0xc')](this));ami['on'](_0xc9b0('0xe'),this[_0xc9b0('0xf')][_0xc9b0('0xc')](this));ami['on'](_0xc9b0('0x10'),this[_0xc9b0('0x11')][_0xc9b0('0xc')](this));ami['on'](_0xc9b0('0x12'),this[_0xc9b0('0x13')][_0xc9b0('0xc')](this));ami['on'](_0xc9b0('0x14'),this[_0xc9b0('0x15')][_0xc9b0('0xc')](this));ami['on'](_0xc9b0('0x16'),this['syncAgentConnectPreview'][_0xc9b0('0xc')](this));}function getDiff(_0xa5306d){var _0x3de1d1=moment()[_0xc9b0('0x17')](0x0);var _0xc5df2a=moment(_0xa5306d)['milliseconds'](0x0);return _0x3de1d1[_0xc9b0('0x18')](_0xc5df2a,_0xc9b0('0x19'));}Acw[_0xc9b0('0x1a')][_0xc9b0('0x1b')]=function(_0x47ac47){try{var _0x5e7ba0=this;var _0x73ae3d=this[_0xc9b0('0xa')][_0x47ac47]['interface'];var _0x1f0d3c=this[_0xc9b0('0xa')][_0x47ac47][_0xc9b0('0x1c')];var _0x490d7b=this[_0xc9b0('0x7')][_0x1f0d3c];var _0x4f76b9=![];var _0x29c654=_0xc9b0('0x1d');if(_0x490d7b[_0xc9b0('0x1e')]){if(_0x490d7b[_0xc9b0('0x1f')][_0xc9b0('0x20')]){_0x4f76b9=!![];_0x29c654=_0x490d7b[_0xc9b0('0x1f')][_0xc9b0('0x20')];}}return ami['Action']({'action':_0xc9b0('0x21'),'interface':_0x73ae3d,'paused':!![],'reason':_0x29c654})[_0xc9b0('0x22')](function(){if(_0x5e7ba0['agents'][_0x73ae3d]){return RpcUser[_0xc9b0('0x23')](_0x5e7ba0[_0xc9b0('0x8')][_0x73ae3d]['id'])[_0xc9b0('0x22')](function(_0x5591b5){if(_0x5591b5&&!_0x5591b5[_0xc9b0('0x24')]){logger[_0xc9b0('0x25')](_0xc9b0('0x26'),_0x47ac47,_0x73ae3d,_0x1f0d3c);var _0x55682a=_0x5e7ba0[_0xc9b0('0xa')][_0x47ac47][_0xc9b0('0x27')]&&_0x5e7ba0[_0xc9b0('0xa')][_0x47ac47]['destlinkedid']?_0x5e7ba0[_0xc9b0('0xa')][_0x47ac47]['destlinkedid']:_0x47ac47;return RpcUser[_0xc9b0('0x28')](_0x5e7ba0[_0xc9b0('0x8')][_0x73ae3d],_0x29c654,_0x55682a)[_0xc9b0('0x22')](function(){if(!_0x4f76b9){_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d]={};logger[_0xc9b0('0x25')](_0xc9b0('0x29'),_0x47ac47,_0x5e7ba0[_0xc9b0('0x7')][_0x1f0d3c][_0xc9b0('0x2a')],_0x73ae3d,_0x1f0d3c);_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d][_0xc9b0('0x2b')]=setTimeout(_0x5e7ba0[_0xc9b0('0x2c')]['bind'](_0x5e7ba0,_0x73ae3d),_0x5e7ba0[_0xc9b0('0x7')][_0x1f0d3c]['acwTimeout']*0x3e8);_0x5e7ba0['timers'][_0x73ae3d][_0xc9b0('0x2d')]=moment()[_0xc9b0('0x2e')](_0xc9b0('0x2f'));_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d][_0xc9b0('0x30')]=_0x47ac47;_0x5e7ba0['timers'][_0x73ae3d][_0xc9b0('0x1c')]=_0x1f0d3c;_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d]['updateAcw']=function(){var _0x71105=getDiff(_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d]['lastPauseAt']);clearTimeout(_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d][_0xc9b0('0x2b')]);_0x5e7ba0['timers'][_0x73ae3d]['timer']=![];RpcVoiceAgentReport[_0xc9b0('0x31')]({'acwtime':_0x71105},_0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d][_0xc9b0('0x30')],_0x73ae3d)[_0xc9b0('0x22')](function(_0x166085){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x47ac47,_0x71105,_0x166085);})[_0xc9b0('0x32')](function(_0xfdf94e){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x47ac47,_0xfdf94e);});delete _0x5e7ba0[_0xc9b0('0x9')][_0x73ae3d];};}});}else{logger[_0xc9b0('0x25')](_0xc9b0('0x33'),_0x47ac47,_0x73ae3d,_0x1f0d3c);}});}})['catch'](function(){logger[_0xc9b0('0x34')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x47ac47,_0x5e7ba0[_0xc9b0('0x7')][_0x1f0d3c][_0xc9b0('0x2a')],_0x73ae3d,_0x1f0d3c);})[_0xc9b0('0x35')](function(){delete _0x5e7ba0[_0xc9b0('0xa')][_0x47ac47];});}catch(_0x59adf2){logger[_0xc9b0('0x34')](_0xc9b0('0x36'),_0x59adf2[_0xc9b0('0x37')]);}};Acw['prototype']['stopAcw']=function(_0x3e3d97){try{var _0x4844d0=this;if(_0x4844d0[_0xc9b0('0x9')][_0x3e3d97]){_0x4844d0[_0xc9b0('0x9')][_0x3e3d97][_0xc9b0('0x2b')]=![];var _0x51c424=_0x4844d0['timers'][_0x3e3d97][_0xc9b0('0x30')];var _0x54aafd=_0x4844d0[_0xc9b0('0x9')][_0x3e3d97][_0xc9b0('0x1c')];var _0x3c4add=_0x4844d0['voiceQueues'][_0x54aafd][_0xc9b0('0x2a')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x51c424,_0x3e3d97);RpcUser[_0xc9b0('0x38')](this['agents'][_0x3e3d97]);RpcVoiceAgentReport['update']({'acwtime':_0x3c4add,'agentacw':!![]},_0x51c424,_0x3e3d97)[_0xc9b0('0x22')](function(_0x37d955){logger[_0xc9b0('0x25')](_0xc9b0('0x39'),_0x51c424,_0x3c4add,_0x37d955);})[_0xc9b0('0x32')](function(_0x4ff383){logger[_0xc9b0('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x51c424,_0x4ff383);});}else{logger[_0xc9b0('0x34')](_0xc9b0('0x3a'),_0x3e3d97);if(_0x4844d0[_0xc9b0('0x9')]){logger['info'](_0xc9b0('0x3b'),JSON[_0xc9b0('0x3c')](_0x4844d0['timers']));}}}catch(_0x2b922b){logger['error'](_0xc9b0('0x3d'),_0x2b922b[_0xc9b0('0x37')]);}};Acw['prototype']['syncAgentConnect']=function(_0x37e248){try{if(this[_0xc9b0('0x7')][_0x37e248['queue']]&&(this[_0xc9b0('0x7')][_0x37e248[_0xc9b0('0x1c')]][_0xc9b0('0x4')]||this[_0xc9b0('0x7')][_0x37e248['queue']]['mandatoryDisposition'])){if(this[_0xc9b0('0x8')][_0x37e248[_0xc9b0('0x3e')]]){this[_0xc9b0('0xa')][_0x37e248[_0xc9b0('0x30')]]={'queue':_0x37e248[_0xc9b0('0x1c')],'interface':_0x37e248[_0xc9b0('0x3e')],'destlinkedid':_0x37e248[_0xc9b0('0x3f')]};}}}catch(_0x2b30b6){logger[_0xc9b0('0x34')](_0xc9b0('0x40'),_0x2b30b6['message']);}};Acw[_0xc9b0('0x1a')]['syncAgentConnectPreview']=function(_0x49fc4f){try{if(this[_0xc9b0('0x7')][_0x49fc4f[_0xc9b0('0x1c')]]&&(this[_0xc9b0('0x7')][_0x49fc4f['queue']][_0xc9b0('0x4')]||this[_0xc9b0('0x7')][_0x49fc4f[_0xc9b0('0x1c')]]['mandatoryDisposition'])){if(this[_0xc9b0('0x8')][_0x49fc4f[_0xc9b0('0x3e')]]){this[_0xc9b0('0xa')][_0x49fc4f[_0xc9b0('0x30')]]={'queue':_0x49fc4f[_0xc9b0('0x1c')],'interface':_0x49fc4f[_0xc9b0('0x3e')]};}}}catch(_0x576dca){logger[_0xc9b0('0x34')](_0xc9b0('0x41'),_0x576dca[_0xc9b0('0x37')]);}};Acw[_0xc9b0('0x1a')][_0xc9b0('0xd')]=function(_0x58c7e9){try{if(this[_0xc9b0('0xa')][_0x58c7e9[_0xc9b0('0x30')]]&&_[_0xc9b0('0x42')](this['channels'][_0x58c7e9[_0xc9b0('0x30')]][_0xc9b0('0x27')])){logger[_0xc9b0('0x25')](_0xc9b0('0x43'),_0x58c7e9[_0xc9b0('0x30')]);this[_0xc9b0('0x1b')](_0x58c7e9[_0xc9b0('0x30')]);}else if(this[_0xc9b0('0xa')][_0x58c7e9[_0xc9b0('0x44')]]&&_[_0xc9b0('0x42')](this[_0xc9b0('0xa')][_0x58c7e9[_0xc9b0('0x44')]]['attended'])){logger['info']('[%s][HANGUP:LINKEDID]',_0x58c7e9['linkedid']);this[_0xc9b0('0x1b')](_0x58c7e9[_0xc9b0('0x44')]);}}catch(_0x1feb41){logger['error'](_0xc9b0('0x45'),_0x1feb41[_0xc9b0('0x37')]);}};Acw[_0xc9b0('0x1a')][_0xc9b0('0xf')]=function(_0xe29f30){try{if(this['channels'][_0xe29f30[_0xc9b0('0x30')]]&&this[_0xc9b0('0xa')][_0xe29f30[_0xc9b0('0x30')]][_0xc9b0('0x27')]){logger[_0xc9b0('0x25')](_0xc9b0('0x46'),_0xe29f30['uniqueid']);this[_0xc9b0('0x1b')](_0xe29f30[_0xc9b0('0x30')]);}else if(this[_0xc9b0('0xa')][_0xe29f30[_0xc9b0('0x44')]]&&this[_0xc9b0('0xa')][_0xe29f30[_0xc9b0('0x44')]]['attended']){logger[_0xc9b0('0x25')](_0xc9b0('0x47'),_0xe29f30[_0xc9b0('0x44')]);this[_0xc9b0('0x1b')](_0xe29f30[_0xc9b0('0x44')]);}}catch(_0x49ab5f){logger[_0xc9b0('0x34')](_0xc9b0('0x48'),_0x49ab5f[_0xc9b0('0x37')]);}};Acw[_0xc9b0('0x1a')][_0xc9b0('0x13')]=function(_0xb779c2){try{if(!_[_0xc9b0('0x49')](this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4a')]])){this['startAcw'](_0xb779c2[_0xc9b0('0x4a')]);if(this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4b')]]){this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4b')]]['attended']=!![];this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4c')]]=this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4b')]];delete this[_0xc9b0('0xa')][_0xb779c2['secondtransfereruniqueid']];}}else if(!_[_0xc9b0('0x49')](this['channels'][_0xb779c2[_0xc9b0('0x4c')]])){this[_0xc9b0('0x1b')](_0xb779c2[_0xc9b0('0x4c')]);if(this[_0xc9b0('0xa')][_0xb779c2['origtransfereruniqueid']]){this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4d')]][_0xc9b0('0x27')]=!![];this[_0xc9b0('0xa')][_0xb779c2[_0xc9b0('0x4a')]]=this['channels'][_0xb779c2['origtransfereruniqueid']];delete this['channels'][_0xb779c2[_0xc9b0('0x4d')]];}}}catch(_0x48ba0a){logger[_0xc9b0('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x48ba0a[_0xc9b0('0x37')]);}};Acw[_0xc9b0('0x1a')][_0xc9b0('0x15')]=function(_0x50548e){try{if(this[_0xc9b0('0xa')][_0x50548e['transfereruniqueid']]){logger[_0xc9b0('0x25')](_0xc9b0('0x4e'),JSON[_0xc9b0('0x3c')](_0x50548e[_0xc9b0('0x4f')]));this[_0xc9b0('0x1b')](_0x50548e['transfereruniqueid']);}else if(this[_0xc9b0('0xa')][_0x50548e['transfererlinkedid']]){logger[_0xc9b0('0x25')](_0xc9b0('0x50'),JSON['stringify'](_0x50548e[_0xc9b0('0x51')]));this[_0xc9b0('0x1b')](_0x50548e[_0xc9b0('0x51')]);}}catch(_0x49d8f3){logger[_0xc9b0('0x34')](_0xc9b0('0x52'),_0x49d8f3[_0xc9b0('0x37')]);}};Acw[_0xc9b0('0x1a')]['syncAgentRingNoAnswer']=function(_0x5db477){try{if(this[_0xc9b0('0x7')][_0x5db477[_0xc9b0('0x1c')]]&&this[_0xc9b0('0x7')][_0x5db477['queue']][_0xc9b0('0x53')]===_0xc9b0('0x54')){if(this[_0xc9b0('0x8')][_0x5db477[_0xc9b0('0x3e')]]){logger[_0xc9b0('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5db477[_0xc9b0('0x30')],_0x5db477[_0xc9b0('0x3e')],_0x5db477['queue']);return RpcUser['savePause'](this['agents'][_0x5db477[_0xc9b0('0x3e')]],_0xc9b0('0x55'),_0x5db477[_0xc9b0('0x30')]);}}}catch(_0x53274e){logger[_0xc9b0('0x34')](_0xc9b0('0x56'),_0x53274e[_0xc9b0('0x37')]);}};module[_0xc9b0('0x57')]=Acw;