Built motion from commit 8c034dcd.|2.6.31
[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 _0xee75=['uniqueid','[%s][TIMER][STOP][AGENT:%s]','pauseType','saveUnpause','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','deleteChannelAfterTimeout','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','paused','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','[ACW][START]\x20%s','message'];(function(_0xc700b9,_0x5527b4){var _0x3c592d=function(_0x190e1b){while(--_0x190e1b){_0xc700b9['push'](_0xc700b9['shift']());}};_0x3c592d(++_0x5527b4);}(_0xee75,0x79));var _0x5ee7=function(_0x29f901,_0x10ea8b){_0x29f901=_0x29f901-0x0;var _0x2ccb28=_0xee75[_0x29f901];return _0x2ccb28;};'use strict';var _=require('lodash');var moment=require(_0x5ee7('0x0'));var ami=require(_0x5ee7('0x1'));var logger=require(_0x5ee7('0x2'))(_0x5ee7('0x3'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x5ee7('0x4'));function Acw(_0x10d92a){this[_0x5ee7('0x5')]=_0x10d92a['voiceQueues'];this[_0x5ee7('0x6')]=_0x10d92a[_0x5ee7('0x6')];this['timers']=_0x10d92a[_0x5ee7('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x5ee7('0x8')][_0x5ee7('0x9')](this));ami['on'](_0x5ee7('0xa'),this[_0x5ee7('0xb')][_0x5ee7('0x9')](this));ami['on']('hangup',this[_0x5ee7('0xc')]['bind'](this));ami['on']('agentringnoanswer',this[_0x5ee7('0xd')][_0x5ee7('0x9')](this));ami['on']('attendedtransfer',this[_0x5ee7('0xe')][_0x5ee7('0x9')](this));ami['on'](_0x5ee7('0xf'),this['syncBlindTransfer'][_0x5ee7('0x9')](this));ami['on'](_0x5ee7('0x10'),this[_0x5ee7('0x11')][_0x5ee7('0x9')](this));}function getDiff(_0x54e12c){var _0x429e48=moment()['milliseconds'](0x0);var _0x1a961d=moment(_0x54e12c)[_0x5ee7('0x12')](0x0);return _0x429e48[_0x5ee7('0x13')](_0x1a961d,_0x5ee7('0x14'));}Acw[_0x5ee7('0x15')][_0x5ee7('0x16')]=function(_0x327fd5,_0x3b224c){var _0x525b95=this;var _0x617954=getDiff(_0x525b95[_0x5ee7('0x7')][_0x327fd5]['lastPauseAt']);clearTimeout(_0x525b95[_0x5ee7('0x7')][_0x327fd5][_0x5ee7('0x17')]);_0x525b95['timers'][_0x327fd5]['timer']=![];return RpcVoiceAgentReport[_0x5ee7('0x18')]({'acwtime':_0x617954},_0x525b95[_0x5ee7('0x7')][_0x327fd5]['uniqueid'],_0x327fd5)[_0x5ee7('0x19')](function(_0x482722){logger[_0x5ee7('0x1a')](_0x5ee7('0x1b'),_0x3b224c,_0x617954,_0x482722);})[_0x5ee7('0x1c')](function(_0x18ea0d){logger[_0x5ee7('0x1d')](_0x5ee7('0x1e'),_0x3b224c,_0x18ea0d);})[_0x5ee7('0x1f')](function(){delete _0x525b95[_0x5ee7('0x7')][_0x327fd5];});};Acw[_0x5ee7('0x15')]['startAcw']=function(_0x2c4a51){try{var _0x1308f8=this;var _0x38765f=this[_0x5ee7('0x20')][_0x2c4a51][_0x5ee7('0x21')];var _0x4d34bb=this[_0x5ee7('0x20')][_0x2c4a51][_0x5ee7('0x22')];var _0x29d9ab=this[_0x5ee7('0x5')][_0x4d34bb];var _0x11c4f9=![];var _0x3af971=_0x5ee7('0x23');if(_0x29d9ab[_0x5ee7('0x24')]&&_0x29d9ab[_0x5ee7('0x25')][_0x5ee7('0x26')]){_0x11c4f9=!![];_0x3af971=_0x29d9ab[_0x5ee7('0x25')][_0x5ee7('0x26')];}return ami[_0x5ee7('0x27')]({'action':_0x5ee7('0x28'),'interface':_0x38765f,'paused':!![],'reason':_0x3af971})[_0x5ee7('0x19')](function(){if(_0x1308f8[_0x5ee7('0x6')][_0x38765f]){return RpcUser[_0x5ee7('0x29')](_0x1308f8[_0x5ee7('0x6')][_0x38765f]['id'])['then'](function(_0x4a000c){if(!_0x4a000c||_0x4a000c[_0x5ee7('0x2a')]){logger[_0x5ee7('0x1a')](_0x5ee7('0x2b'),_0x2c4a51,_0x38765f,_0x4d34bb);return;}logger[_0x5ee7('0x1a')](_0x5ee7('0x2c'),_0x2c4a51,_0x38765f,_0x4d34bb);var _0xdb5105=_0x1308f8[_0x5ee7('0x20')][_0x2c4a51][_0x5ee7('0x2d')]&&_0x1308f8['channels'][_0x2c4a51][_0x5ee7('0x2e')]?_0x1308f8[_0x5ee7('0x20')][_0x2c4a51][_0x5ee7('0x2e')]:_0x2c4a51;return RpcUser[_0x5ee7('0x2f')](_0x1308f8[_0x5ee7('0x6')][_0x38765f],_0x3af971,_0xdb5105)['then'](function(_0x3a2929){_0x1308f8[_0x5ee7('0x5')][_0x4d34bb]['available']-=0x1;_0x1308f8['voiceQueues'][_0x4d34bb][_0x5ee7('0x30')]+=0x1;return _0x3a2929;});})[_0x5ee7('0x19')](function(_0x22d29e){if(_0x11c4f9||!_0x22d29e){return;}_0x1308f8['timers'][_0x38765f]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2c4a51,_0x1308f8['voiceQueues'][_0x4d34bb][_0x5ee7('0x31')],_0x38765f,_0x4d34bb);_0x1308f8[_0x5ee7('0x7')][_0x38765f][_0x5ee7('0x17')]=setTimeout(_0x1308f8[_0x5ee7('0x32')][_0x5ee7('0x9')](_0x1308f8,_0x38765f),_0x1308f8[_0x5ee7('0x5')][_0x4d34bb][_0x5ee7('0x31')]*0x3e8);_0x1308f8[_0x5ee7('0x7')][_0x38765f]['lastPauseAt']=moment()[_0x5ee7('0x33')](_0x5ee7('0x34'));_0x1308f8['timers'][_0x38765f]['uniqueid']=_0x2c4a51;_0x1308f8[_0x5ee7('0x7')][_0x38765f][_0x5ee7('0x22')]=_0x4d34bb;_0x1308f8['timers'][_0x38765f]['updateAcw']=_0x1308f8[_0x5ee7('0x16')][_0x5ee7('0x9')](_0x1308f8,_0x38765f,_0x2c4a51);});}})[_0x5ee7('0x1c')](function(){logger[_0x5ee7('0x1d')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2c4a51,_0x1308f8[_0x5ee7('0x5')][_0x4d34bb]['acwTimeout'],_0x38765f,_0x4d34bb);})['finally'](function(){delete _0x1308f8[_0x5ee7('0x20')][_0x2c4a51];});}catch(_0x4234de){logger[_0x5ee7('0x1d')](_0x5ee7('0x35'),_0x4234de[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')][_0x5ee7('0x32')]=function(_0x21cdc3){try{var _0x1b2e10=this;if(_0x1b2e10[_0x5ee7('0x7')][_0x21cdc3]){_0x1b2e10[_0x5ee7('0x7')][_0x21cdc3][_0x5ee7('0x17')]=![];var _0x4aad90=_0x1b2e10[_0x5ee7('0x7')][_0x21cdc3][_0x5ee7('0x37')];var _0xea40b3=_0x1b2e10[_0x5ee7('0x7')][_0x21cdc3][_0x5ee7('0x22')];var _0x5c0a4a=_0x1b2e10[_0x5ee7('0x5')][_0xea40b3][_0x5ee7('0x31')];logger['info'](_0x5ee7('0x38'),_0x4aad90,_0x21cdc3);RpcUser[_0x5ee7('0x29')](this[_0x5ee7('0x6')][_0x21cdc3]['id'])[_0x5ee7('0x19')](function(_0x41cb4d){if(_0x41cb4d[_0x5ee7('0x39')]===_0x5ee7('0x23')){return RpcUser[_0x5ee7('0x3a')](_0x1b2e10[_0x5ee7('0x6')][_0x21cdc3]);}});RpcVoiceAgentReport[_0x5ee7('0x18')]({'acwtime':_0x5c0a4a,'agentacw':!![]},_0x4aad90,_0x21cdc3)[_0x5ee7('0x19')](function(_0x4ccdcf){logger[_0x5ee7('0x1a')](_0x5ee7('0x1b'),_0x4aad90,_0x5c0a4a,_0x4ccdcf);})['catch'](function(_0x13e2f2){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x4aad90,_0x13e2f2);});}else{logger[_0x5ee7('0x1d')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x21cdc3);if(_0x1b2e10['timers']){logger[_0x5ee7('0x1a')]('[ACW][TIMERS]',JSON[_0x5ee7('0x3b')](_0x1b2e10[_0x5ee7('0x7')]));}}}catch(_0x1c5df3){logger['error'](_0x5ee7('0x3c'),_0x1c5df3['message']);}};Acw['prototype'][_0x5ee7('0x8')]=function(_0x1feb31){try{if(this[_0x5ee7('0x5')][_0x1feb31['queue']]&&(this[_0x5ee7('0x5')][_0x1feb31[_0x5ee7('0x22')]][_0x5ee7('0x3')]||this[_0x5ee7('0x5')][_0x1feb31['queue']][_0x5ee7('0x24')])){if(this['agents'][_0x1feb31[_0x5ee7('0x21')]]){this['channels'][_0x1feb31['uniqueid']]={'queue':_0x1feb31['queue'],'interface':_0x1feb31[_0x5ee7('0x21')],'destlinkedid':_0x1feb31[_0x5ee7('0x2e')]};}}}catch(_0x346ad2){logger['error'](_0x5ee7('0x3d'),_0x346ad2[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')]['syncAgentConnectPreview']=function(_0x2ff3e0){try{if(this['voiceQueues'][_0x2ff3e0['queue']]&&(this[_0x5ee7('0x5')][_0x2ff3e0[_0x5ee7('0x22')]]['acw']||this[_0x5ee7('0x5')][_0x2ff3e0[_0x5ee7('0x22')]][_0x5ee7('0x24')])){if(this['agents'][_0x2ff3e0[_0x5ee7('0x21')]]){this['channels'][_0x2ff3e0['uniqueid']]={'queue':_0x2ff3e0[_0x5ee7('0x22')],'interface':_0x2ff3e0['interface']};}}}catch(_0x1eaf27){logger[_0x5ee7('0x1d')](_0x5ee7('0x3e'),_0x1eaf27[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')][_0x5ee7('0xb')]=function(_0x185d0d){try{if(this[_0x5ee7('0x20')][_0x185d0d[_0x5ee7('0x37')]]&&_[_0x5ee7('0x3f')](this[_0x5ee7('0x20')][_0x185d0d['uniqueid']]['attended'])){logger[_0x5ee7('0x1a')](_0x5ee7('0x40'),_0x185d0d[_0x5ee7('0x37')]);this[_0x5ee7('0x41')](_0x185d0d[_0x5ee7('0x37')]);}else if(this[_0x5ee7('0x20')][_0x185d0d[_0x5ee7('0x42')]]&&_['isUndefined'](this['channels'][_0x185d0d[_0x5ee7('0x42')]]['attended'])){logger[_0x5ee7('0x1a')]('[%s][HANGUP:LINKEDID]',_0x185d0d[_0x5ee7('0x42')]);this[_0x5ee7('0x41')](_0x185d0d['linkedid']);}}catch(_0x457a1c){logger[_0x5ee7('0x1d')](_0x5ee7('0x43'),_0x457a1c['message']);}};Acw[_0x5ee7('0x15')][_0x5ee7('0xc')]=function(_0x50ade1){try{if(this['channels'][_0x50ade1[_0x5ee7('0x37')]]&&this[_0x5ee7('0x20')][_0x50ade1[_0x5ee7('0x37')]][_0x5ee7('0x2d')]){logger[_0x5ee7('0x1a')](_0x5ee7('0x44'),_0x50ade1['uniqueid']);this[_0x5ee7('0x41')](_0x50ade1['uniqueid']);}else if(this[_0x5ee7('0x20')][_0x50ade1[_0x5ee7('0x42')]]&&this['channels'][_0x50ade1['linkedid']][_0x5ee7('0x2d')]){logger[_0x5ee7('0x1a')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x50ade1[_0x5ee7('0x42')]);this['startAcw'](_0x50ade1['linkedid']);}}catch(_0x3e195b){logger[_0x5ee7('0x1d')](_0x5ee7('0x45'),_0x3e195b[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')]['syncAttendedTransfer']=function(_0x5070d3){try{if(!_[_0x5ee7('0x46')](this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x47')]])){this[_0x5ee7('0x41')](_0x5070d3[_0x5ee7('0x47')]);if(this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x48')]]){this['channels'][_0x5070d3[_0x5ee7('0x48')]][_0x5ee7('0x2d')]=!![];this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x49')]]=this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x48')]];this[_0x5ee7('0x4a')](_0x5070d3[_0x5ee7('0x48')]);}}else if(!_[_0x5ee7('0x46')](this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x49')]])){this[_0x5ee7('0x41')](_0x5070d3['transfertargetuniqueid']);if(this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x4b')]]){this['channels'][_0x5070d3['origtransfereruniqueid']][_0x5ee7('0x2d')]=!![];this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x47')]]=this[_0x5ee7('0x20')][_0x5070d3[_0x5ee7('0x4b')]];this[_0x5ee7('0x4a')](_0x5070d3[_0x5ee7('0x4b')]);}}}catch(_0x2d6834){logger[_0x5ee7('0x1d')]('[ACW][syncAttendedTransfer]\x20%s',_0x2d6834[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')][_0x5ee7('0x4c')]=function(_0x13da3b){try{if(this[_0x5ee7('0x20')][_0x13da3b[_0x5ee7('0x4d')]]){logger[_0x5ee7('0x1a')](_0x5ee7('0x4e'),JSON['stringify'](_0x13da3b[_0x5ee7('0x4d')]));this['startAcw'](_0x13da3b[_0x5ee7('0x4d')]);}else if(this[_0x5ee7('0x20')][_0x13da3b['transfererlinkedid']]){logger[_0x5ee7('0x1a')](_0x5ee7('0x4f'),JSON['stringify'](_0x13da3b[_0x5ee7('0x50')]));this[_0x5ee7('0x41')](_0x13da3b[_0x5ee7('0x50')]);}}catch(_0x317b38){logger[_0x5ee7('0x1d')](_0x5ee7('0x51'),_0x317b38[_0x5ee7('0x36')]);}};Acw[_0x5ee7('0x15')][_0x5ee7('0xd')]=function(_0x49f1f2){try{if(this[_0x5ee7('0x5')][_0x49f1f2[_0x5ee7('0x22')]]&&this[_0x5ee7('0x5')][_0x49f1f2['queue']][_0x5ee7('0x52')]===_0x5ee7('0x53')){if(this[_0x5ee7('0x6')][_0x49f1f2['interface']]){logger[_0x5ee7('0x1a')](_0x5ee7('0x54'),_0x49f1f2[_0x5ee7('0x37')],_0x49f1f2[_0x5ee7('0x21')],_0x49f1f2[_0x5ee7('0x22')]);return RpcUser['savePause'](this[_0x5ee7('0x6')][_0x49f1f2[_0x5ee7('0x21')]],_0x5ee7('0x55'),_0x49f1f2['uniqueid']);}}}catch(_0x110638){logger['error'](_0x5ee7('0x56'),_0x110638['message']);}};Acw[_0x5ee7('0x15')][_0x5ee7('0x4a')]=function(_0x1e9fd9,_0x719c45=0x2710){if(this['channels'][_0x1e9fd9]){setTimeout(()=>{delete this[_0x5ee7('0x20')][_0x1e9fd9];},_0x719c45);}};module[_0x5ee7('0x57')]=Acw;