Built motion from commit b0a9a629.|2.6.33
[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 _0x5080=['Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../../../config/logger','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','lastPauseAt','timer','update','uniqueid','then','info','error','[%s][UPDATE][ERRORS:%s]','startAcw','interface','queue','ACW','mandatoryDisposition','Action','QueuePause','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','finally','[ACW][START]\x20%s','pauseType','saveUnpause','[%s][UPDATE][ACWTIME:%s]','catch','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','deleteChannelAfterTimeout','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all'];(function(_0x5165a7,_0x5d2161){var _0x3fa052=function(_0x546ad8){while(--_0x546ad8){_0x5165a7['push'](_0x5165a7['shift']());}};_0x3fa052(++_0x5d2161);}(_0x5080,0x15b));var _0x0508=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x5080[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x0508('0x0'));var moment=require(_0x0508('0x1'));var ami=require('../ami');var logger=require(_0x0508('0x2'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x0508('0x3'));function Acw(_0x4a50c3){this[_0x0508('0x4')]=_0x4a50c3[_0x0508('0x4')];this[_0x0508('0x5')]=_0x4a50c3['agents'];this[_0x0508('0x6')]=_0x4a50c3[_0x0508('0x6')];this[_0x0508('0x7')]={};ami['on'](_0x0508('0x8'),this[_0x0508('0x9')][_0x0508('0xa')](this));ami['on'](_0x0508('0xb'),this[_0x0508('0xc')]['bind'](this));ami['on']('hangup',this[_0x0508('0xd')]['bind'](this));ami['on'](_0x0508('0xe'),this[_0x0508('0xf')][_0x0508('0xa')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x0508('0xa')](this));ami['on'](_0x0508('0x10'),this[_0x0508('0x11')][_0x0508('0xa')](this));ami['on'](_0x0508('0x12'),this[_0x0508('0x13')][_0x0508('0xa')](this));}function getDiff(_0x215711){var _0x38d100=moment()[_0x0508('0x14')](0x0);var _0x4c8b6e=moment(_0x215711)['milliseconds'](0x0);return _0x38d100['diff'](_0x4c8b6e,_0x0508('0x15'));}Acw[_0x0508('0x16')]['updateAcw']=function(_0x2a78f9,_0x3f542b){var _0x1a2d12=this;var _0x46117b=getDiff(_0x1a2d12['timers'][_0x2a78f9][_0x0508('0x17')]);clearTimeout(_0x1a2d12[_0x0508('0x6')][_0x2a78f9][_0x0508('0x18')]);_0x1a2d12[_0x0508('0x6')][_0x2a78f9]['timer']=![];return RpcVoiceAgentReport[_0x0508('0x19')]({'acwtime':_0x46117b},_0x1a2d12['timers'][_0x2a78f9][_0x0508('0x1a')],_0x2a78f9)[_0x0508('0x1b')](function(_0x4d2f2d){logger[_0x0508('0x1c')]('[%s][UPDATE][ACWTIME:%s]',_0x3f542b,_0x46117b,_0x4d2f2d);})['catch'](function(_0x1850f2){logger[_0x0508('0x1d')](_0x0508('0x1e'),_0x3f542b,_0x1850f2);})['finally'](function(){delete _0x1a2d12[_0x0508('0x6')][_0x2a78f9];});};Acw[_0x0508('0x16')][_0x0508('0x1f')]=function(_0x10172e){try{var _0x29b1e8=this;var _0x365b7d=this[_0x0508('0x7')][_0x10172e][_0x0508('0x20')];var _0x3352f0=this[_0x0508('0x7')][_0x10172e][_0x0508('0x21')];var _0x524794=this[_0x0508('0x4')][_0x3352f0];var _0x3ddfc3=![];var _0x51a6b8=_0x0508('0x22');if(_0x524794[_0x0508('0x23')]&&_0x524794['mandatoryDispositionPause']['name']){_0x3ddfc3=!![];_0x51a6b8=_0x524794['mandatoryDispositionPause']['name'];}return ami[_0x0508('0x24')]({'action':_0x0508('0x25'),'interface':_0x365b7d,'paused':!![],'reason':_0x51a6b8})[_0x0508('0x1b')](function(){if(_0x29b1e8[_0x0508('0x5')][_0x365b7d]){return RpcUser[_0x0508('0x26')](_0x29b1e8[_0x0508('0x5')][_0x365b7d]['id'])[_0x0508('0x1b')](function(_0x238a90){if(!_0x238a90||_0x238a90[_0x0508('0x27')]){logger[_0x0508('0x1c')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x10172e,_0x365b7d,_0x3352f0);return;}logger[_0x0508('0x1c')](_0x0508('0x28'),_0x10172e,_0x365b7d,_0x3352f0);var _0x2ff04a=_0x29b1e8[_0x0508('0x7')][_0x10172e][_0x0508('0x29')]&&_0x29b1e8[_0x0508('0x7')][_0x10172e]['destlinkedid']?_0x29b1e8[_0x0508('0x7')][_0x10172e][_0x0508('0x2a')]:_0x10172e;return RpcUser['savePause'](_0x29b1e8['agents'][_0x365b7d],_0x51a6b8,_0x2ff04a)[_0x0508('0x1b')](function(_0x74fc){_0x29b1e8['voiceQueues'][_0x3352f0][_0x0508('0x2b')]-=0x1;_0x29b1e8[_0x0508('0x4')][_0x3352f0][_0x0508('0x2c')]+=0x1;return _0x74fc;});})['then'](function(_0xfce377){if(_0x3ddfc3||!_0xfce377){return;}_0x29b1e8[_0x0508('0x6')][_0x365b7d]={};logger['info'](_0x0508('0x2d'),_0x10172e,_0x29b1e8[_0x0508('0x4')][_0x3352f0][_0x0508('0x2e')],_0x365b7d,_0x3352f0);_0x29b1e8[_0x0508('0x6')][_0x365b7d][_0x0508('0x18')]=setTimeout(_0x29b1e8[_0x0508('0x2f')][_0x0508('0xa')](_0x29b1e8,_0x365b7d),_0x29b1e8['voiceQueues'][_0x3352f0][_0x0508('0x2e')]*0x3e8);_0x29b1e8['timers'][_0x365b7d]['lastPauseAt']=moment()[_0x0508('0x30')](_0x0508('0x31'));_0x29b1e8[_0x0508('0x6')][_0x365b7d]['uniqueid']=_0x10172e;_0x29b1e8[_0x0508('0x6')][_0x365b7d][_0x0508('0x21')]=_0x3352f0;_0x29b1e8['timers'][_0x365b7d][_0x0508('0x32')]=_0x29b1e8[_0x0508('0x32')][_0x0508('0xa')](_0x29b1e8,_0x365b7d,_0x10172e);});}})['catch'](function(){logger[_0x0508('0x1d')](_0x0508('0x2d'),_0x10172e,_0x29b1e8['voiceQueues'][_0x3352f0][_0x0508('0x2e')],_0x365b7d,_0x3352f0);})[_0x0508('0x33')](function(){delete _0x29b1e8[_0x0508('0x7')][_0x10172e];});}catch(_0x399a86){logger[_0x0508('0x1d')](_0x0508('0x34'),_0x399a86['message']);}};Acw['prototype'][_0x0508('0x2f')]=function(_0x20d7de){try{var _0x1a7a32=this;if(_0x1a7a32[_0x0508('0x6')][_0x20d7de]){_0x1a7a32[_0x0508('0x6')][_0x20d7de][_0x0508('0x18')]=![];var _0x524568=_0x1a7a32[_0x0508('0x6')][_0x20d7de]['uniqueid'];var _0x34e5fd=_0x1a7a32[_0x0508('0x6')][_0x20d7de][_0x0508('0x21')];var _0x4774d9=_0x1a7a32[_0x0508('0x4')][_0x34e5fd][_0x0508('0x2e')];logger[_0x0508('0x1c')]('[%s][TIMER][STOP][AGENT:%s]',_0x524568,_0x20d7de);RpcUser[_0x0508('0x26')](this[_0x0508('0x5')][_0x20d7de]['id'])[_0x0508('0x1b')](function(_0x438123){if(_0x438123[_0x0508('0x35')]===_0x0508('0x22')){return RpcUser[_0x0508('0x36')](_0x1a7a32[_0x0508('0x5')][_0x20d7de]);}});RpcVoiceAgentReport[_0x0508('0x19')]({'acwtime':_0x4774d9,'agentacw':!![]},_0x524568,_0x20d7de)['then'](function(_0x15e568){logger[_0x0508('0x1c')](_0x0508('0x37'),_0x524568,_0x4774d9,_0x15e568);})[_0x0508('0x38')](function(_0x2dc0cb){logger[_0x0508('0x1d')]('[%s][UPDATE][ERRORS:%s]',_0x524568,_0x2dc0cb);});}else{logger[_0x0508('0x1d')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x20d7de);if(_0x1a7a32[_0x0508('0x6')]){logger[_0x0508('0x1c')](_0x0508('0x39'),JSON[_0x0508('0x3a')](_0x1a7a32['timers']));}}}catch(_0x3a8dc6){logger['error'](_0x0508('0x3b'),_0x3a8dc6[_0x0508('0x3c')]);}};Acw[_0x0508('0x16')]['syncAgentConnect']=function(_0x86a002){try{if(this[_0x0508('0x4')][_0x86a002[_0x0508('0x21')]]&&(this[_0x0508('0x4')][_0x86a002[_0x0508('0x21')]][_0x0508('0x3d')]||this[_0x0508('0x4')][_0x86a002['queue']][_0x0508('0x23')])){if(this[_0x0508('0x5')][_0x86a002[_0x0508('0x20')]]){this['channels'][_0x86a002[_0x0508('0x1a')]]={'queue':_0x86a002[_0x0508('0x21')],'interface':_0x86a002[_0x0508('0x20')],'destlinkedid':_0x86a002[_0x0508('0x2a')]};}}}catch(_0x3c8137){logger[_0x0508('0x1d')](_0x0508('0x3e'),_0x3c8137[_0x0508('0x3c')]);}};Acw[_0x0508('0x16')][_0x0508('0x13')]=function(_0x4b0340){try{if(this[_0x0508('0x4')][_0x4b0340[_0x0508('0x21')]]&&(this[_0x0508('0x4')][_0x4b0340['queue']][_0x0508('0x3d')]||this[_0x0508('0x4')][_0x4b0340[_0x0508('0x21')]][_0x0508('0x23')])){if(this[_0x0508('0x5')][_0x4b0340['interface']]){this[_0x0508('0x7')][_0x4b0340[_0x0508('0x1a')]]={'queue':_0x4b0340[_0x0508('0x21')],'interface':_0x4b0340[_0x0508('0x20')]};}}}catch(_0x2fbcc6){logger[_0x0508('0x1d')](_0x0508('0x3f'),_0x2fbcc6['message']);}};Acw[_0x0508('0x16')][_0x0508('0xc')]=function(_0xf79b55){try{if(this['channels'][_0xf79b55['uniqueid']]&&_['isUndefined'](this[_0x0508('0x7')][_0xf79b55[_0x0508('0x1a')]]['attended'])){logger[_0x0508('0x1c')](_0x0508('0x40'),_0xf79b55['uniqueid']);this[_0x0508('0x1f')](_0xf79b55[_0x0508('0x1a')]);}else if(this[_0x0508('0x7')][_0xf79b55[_0x0508('0x41')]]&&_[_0x0508('0x42')](this[_0x0508('0x7')][_0xf79b55[_0x0508('0x41')]]['attended'])){logger[_0x0508('0x1c')](_0x0508('0x43'),_0xf79b55['linkedid']);this['startAcw'](_0xf79b55[_0x0508('0x41')]);}}catch(_0x27148b){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x27148b[_0x0508('0x3c')]);}};Acw[_0x0508('0x16')]['syncHangup']=function(_0x4a5495){try{if(this[_0x0508('0x7')][_0x4a5495[_0x0508('0x1a')]]&&this[_0x0508('0x7')][_0x4a5495[_0x0508('0x1a')]]['attended']){logger[_0x0508('0x1c')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x4a5495[_0x0508('0x1a')]);this[_0x0508('0x1f')](_0x4a5495[_0x0508('0x1a')]);}else if(this[_0x0508('0x7')][_0x4a5495[_0x0508('0x41')]]&&this[_0x0508('0x7')][_0x4a5495[_0x0508('0x41')]][_0x0508('0x29')]){logger[_0x0508('0x1c')](_0x0508('0x44'),_0x4a5495[_0x0508('0x41')]);this[_0x0508('0x1f')](_0x4a5495[_0x0508('0x41')]);}}catch(_0x532bd6){logger[_0x0508('0x1d')](_0x0508('0x45'),_0x532bd6[_0x0508('0x3c')]);}};Acw[_0x0508('0x16')][_0x0508('0x46')]=function(_0x22e4e6){try{if(!_[_0x0508('0x47')](this[_0x0508('0x7')][_0x22e4e6['transfereeuniqueid']])){this[_0x0508('0x1f')](_0x22e4e6[_0x0508('0x48')]);if(this[_0x0508('0x7')][_0x22e4e6[_0x0508('0x49')]]){this[_0x0508('0x7')][_0x22e4e6['secondtransfereruniqueid']][_0x0508('0x29')]=!![];this[_0x0508('0x7')][_0x22e4e6[_0x0508('0x4a')]]=this['channels'][_0x22e4e6[_0x0508('0x49')]];this[_0x0508('0x4b')](_0x22e4e6[_0x0508('0x49')]);}}else if(!_[_0x0508('0x47')](this['channels'][_0x22e4e6[_0x0508('0x4a')]])){this[_0x0508('0x1f')](_0x22e4e6['transfertargetuniqueid']);if(this[_0x0508('0x7')][_0x22e4e6[_0x0508('0x4c')]]){this[_0x0508('0x7')][_0x22e4e6[_0x0508('0x4c')]]['attended']=!![];this[_0x0508('0x7')][_0x22e4e6['transfereeuniqueid']]=this[_0x0508('0x7')][_0x22e4e6['origtransfereruniqueid']];this[_0x0508('0x4b')](_0x22e4e6[_0x0508('0x4c')]);}}}catch(_0x263217){logger[_0x0508('0x1d')](_0x0508('0x4d'),_0x263217['message']);}};Acw[_0x0508('0x16')][_0x0508('0x11')]=function(_0x5b14c7){try{if(this[_0x0508('0x7')][_0x5b14c7[_0x0508('0x4e')]]){logger[_0x0508('0x1c')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x5b14c7[_0x0508('0x4e')]));this['startAcw'](_0x5b14c7[_0x0508('0x4e')]);}else if(this['channels'][_0x5b14c7[_0x0508('0x4f')]]){logger[_0x0508('0x1c')](_0x0508('0x50'),JSON['stringify'](_0x5b14c7[_0x0508('0x4f')]));this[_0x0508('0x1f')](_0x5b14c7[_0x0508('0x4f')]);}}catch(_0x1e7829){logger[_0x0508('0x1d')](_0x0508('0x51'),_0x1e7829[_0x0508('0x3c')]);}};Acw[_0x0508('0x16')][_0x0508('0xf')]=function(_0x5e9a1d){try{if(this['voiceQueues'][_0x5e9a1d[_0x0508('0x21')]]&&this[_0x0508('0x4')][_0x5e9a1d[_0x0508('0x21')]]['autopause']===_0x0508('0x52')){if(this[_0x0508('0x5')][_0x5e9a1d['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5e9a1d['uniqueid'],_0x5e9a1d[_0x0508('0x20')],_0x5e9a1d[_0x0508('0x21')]);return RpcUser['savePause'](this['agents'][_0x5e9a1d['interface']],_0x0508('0x53'),_0x5e9a1d[_0x0508('0x1a')]);}}}catch(_0x306a9e){logger[_0x0508('0x1d')](_0x0508('0x54'),_0x306a9e[_0x0508('0x3c')]);}};Acw['prototype'][_0x0508('0x4b')]=function(_0x38aef2,_0x17ff73=0x2710){if(this[_0x0508('0x7')][_0x38aef2]){setTimeout(()=>{delete this[_0x0508('0x7')][_0x38aef2];},_0x17ff73);}};module[_0x0508('0x55')]=Acw;