729b77337e4467a3fa046de893c4327a2525da0e
[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 _0x107a=['acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','updateAcw','lastPauseAt','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','queue','ACW','mandatoryDispositionPause','name','QueuePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','pauseType','saveUnpause','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','deleteChannelAfterTimeout','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','../ami','../../../config/logger'];(function(_0x148ec6,_0x3850b9){var _0x36af60=function(_0x4db9dd){while(--_0x4db9dd){_0x148ec6['push'](_0x148ec6['shift']());}};_0x36af60(++_0x3850b9);}(_0x107a,0xaa));var _0xa107=function(_0x6ce8f9,_0x10c159){_0x6ce8f9=_0x6ce8f9-0x0;var _0x121141=_0x107a[_0x6ce8f9];return _0x121141;};'use strict';var _=require('lodash');var moment=require('moment');var ami=require(_0xa107('0x0'));var logger=require(_0xa107('0x1'))(_0xa107('0x2'));var RpcUser=require(_0xa107('0x3'));var RpcVoiceAgentReport=require(_0xa107('0x4'));function Acw(_0x10c3f6){this[_0xa107('0x5')]=_0x10c3f6[_0xa107('0x5')];this[_0xa107('0x6')]=_0x10c3f6[_0xa107('0x6')];this[_0xa107('0x7')]=_0x10c3f6[_0xa107('0x7')];this[_0xa107('0x8')]={};ami['on']('agentconnect',this[_0xa107('0x9')][_0xa107('0xa')](this));ami['on'](_0xa107('0xb'),this['syncHangupRequest'][_0xa107('0xa')](this));ami['on'](_0xa107('0xc'),this[_0xa107('0xd')]['bind'](this));ami['on'](_0xa107('0xe'),this[_0xa107('0xf')][_0xa107('0xa')](this));ami['on'](_0xa107('0x10'),this[_0xa107('0x11')][_0xa107('0xa')](this));ami['on'](_0xa107('0x12'),this['syncBlindTransfer']['bind'](this));ami['on'](_0xa107('0x13'),this[_0xa107('0x14')][_0xa107('0xa')](this));}function getDiff(_0x4f97d1){var _0x19745b=moment()[_0xa107('0x15')](0x0);var _0x3104af=moment(_0x4f97d1)['milliseconds'](0x0);return _0x19745b[_0xa107('0x16')](_0x3104af,'seconds');}Acw[_0xa107('0x17')][_0xa107('0x18')]=function(_0x1d94d5,_0x13bfa5){var _0x2b023e=this;var _0x14f583=getDiff(_0x2b023e[_0xa107('0x7')][_0x1d94d5][_0xa107('0x19')]);clearTimeout(_0x2b023e[_0xa107('0x7')][_0x1d94d5][_0xa107('0x1a')]);_0x2b023e[_0xa107('0x7')][_0x1d94d5]['timer']=![];return RpcVoiceAgentReport[_0xa107('0x1b')]({'acwtime':_0x14f583},_0x2b023e['timers'][_0x1d94d5]['uniqueid'],_0x1d94d5)[_0xa107('0x1c')](function(_0x2c68bc){logger[_0xa107('0x1d')](_0xa107('0x1e'),_0x13bfa5,_0x14f583,_0x2c68bc);})[_0xa107('0x1f')](function(_0x562239){logger[_0xa107('0x20')](_0xa107('0x21'),_0x13bfa5,_0x562239);})[_0xa107('0x22')](function(){delete _0x2b023e['timers'][_0x1d94d5];});};Acw['prototype'][_0xa107('0x23')]=function(_0x47b4c9){try{var _0x530380=this;var _0x3c40cc=this[_0xa107('0x8')][_0x47b4c9]['interface'];var _0x552486=this[_0xa107('0x8')][_0x47b4c9][_0xa107('0x24')];var _0x17d044=this[_0xa107('0x5')][_0x552486];var _0x3a155d=![];var _0x33ba29=_0xa107('0x25');if(_0x17d044['mandatoryDisposition']&&_0x17d044[_0xa107('0x26')][_0xa107('0x27')]){_0x3a155d=!![];_0x33ba29=_0x17d044['mandatoryDispositionPause']['name'];}return ami['Action']({'action':_0xa107('0x28'),'interface':_0x3c40cc,'paused':!![],'reason':_0x33ba29})[_0xa107('0x1c')](function(){if(_0x530380['agents'][_0x3c40cc]){return RpcUser['getAgent'](_0x530380[_0xa107('0x6')][_0x3c40cc]['id'])[_0xa107('0x1c')](function(_0x543aba){if(!_0x543aba||_0x543aba['voicePause']){logger[_0xa107('0x1d')](_0xa107('0x29'),_0x47b4c9,_0x3c40cc,_0x552486);return;}logger[_0xa107('0x1d')](_0xa107('0x2a'),_0x47b4c9,_0x3c40cc,_0x552486);var _0x31d8e3=_0x530380[_0xa107('0x8')][_0x47b4c9]['attended']&&_0x530380[_0xa107('0x8')][_0x47b4c9]['destlinkedid']?_0x530380['channels'][_0x47b4c9][_0xa107('0x2b')]:_0x47b4c9;return RpcUser['savePause'](_0x530380['agents'][_0x3c40cc],_0x33ba29,_0x31d8e3)[_0xa107('0x1c')](function(_0x36867a){_0x530380[_0xa107('0x5')][_0x552486]['available']-=0x1;_0x530380[_0xa107('0x5')][_0x552486][_0xa107('0x2c')]+=0x1;return _0x36867a;});})[_0xa107('0x1c')](function(_0x568a71){if(_0x3a155d||!_0x568a71){return;}_0x530380[_0xa107('0x7')][_0x3c40cc]={};logger[_0xa107('0x1d')](_0xa107('0x2d'),_0x47b4c9,_0x530380[_0xa107('0x5')][_0x552486][_0xa107('0x2e')],_0x3c40cc,_0x552486);_0x530380[_0xa107('0x7')][_0x3c40cc][_0xa107('0x1a')]=setTimeout(_0x530380[_0xa107('0x2f')]['bind'](_0x530380,_0x3c40cc),_0x530380[_0xa107('0x5')][_0x552486][_0xa107('0x2e')]*0x3e8);_0x530380[_0xa107('0x7')][_0x3c40cc][_0xa107('0x19')]=moment()[_0xa107('0x30')](_0xa107('0x31'));_0x530380[_0xa107('0x7')][_0x3c40cc][_0xa107('0x32')]=_0x47b4c9;_0x530380['timers'][_0x3c40cc]['queue']=_0x552486;_0x530380[_0xa107('0x7')][_0x3c40cc][_0xa107('0x18')]=_0x530380[_0xa107('0x18')]['bind'](_0x530380,_0x3c40cc,_0x47b4c9);});}})[_0xa107('0x1f')](function(){logger[_0xa107('0x20')](_0xa107('0x2d'),_0x47b4c9,_0x530380['voiceQueues'][_0x552486][_0xa107('0x2e')],_0x3c40cc,_0x552486);})[_0xa107('0x22')](function(){delete _0x530380[_0xa107('0x8')][_0x47b4c9];});}catch(_0x32a77a){logger[_0xa107('0x20')](_0xa107('0x33'),_0x32a77a[_0xa107('0x34')]);}};Acw['prototype'][_0xa107('0x2f')]=function(_0x13ea1d){try{var _0x55c032=this;if(_0x55c032[_0xa107('0x7')][_0x13ea1d]){_0x55c032['timers'][_0x13ea1d][_0xa107('0x1a')]=![];var _0x58e853=_0x55c032[_0xa107('0x7')][_0x13ea1d]['uniqueid'];var _0x1a2bf9=_0x55c032[_0xa107('0x7')][_0x13ea1d][_0xa107('0x24')];var _0x260187=_0x55c032[_0xa107('0x5')][_0x1a2bf9]['acwTimeout'];logger[_0xa107('0x1d')](_0xa107('0x35'),_0x58e853,_0x13ea1d);RpcUser['getAgent'](this['agents'][_0x13ea1d]['id'])['then'](function(_0x280f68){if(_0x280f68[_0xa107('0x36')]===_0xa107('0x25')){return RpcUser[_0xa107('0x37')](_0x55c032['agents'][_0x13ea1d]);}});RpcVoiceAgentReport[_0xa107('0x1b')]({'acwtime':_0x260187,'agentacw':!![]},_0x58e853,_0x13ea1d)[_0xa107('0x1c')](function(_0x24835d){logger[_0xa107('0x1d')](_0xa107('0x1e'),_0x58e853,_0x260187,_0x24835d);})['catch'](function(_0x21ddda){logger[_0xa107('0x20')](_0xa107('0x21'),_0x58e853,_0x21ddda);});}else{logger[_0xa107('0x20')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x13ea1d);if(_0x55c032[_0xa107('0x7')]){logger[_0xa107('0x1d')](_0xa107('0x38'),JSON[_0xa107('0x39')](_0x55c032[_0xa107('0x7')]));}}}catch(_0x18a11c){logger[_0xa107('0x20')](_0xa107('0x3a'),_0x18a11c['message']);}};Acw['prototype'][_0xa107('0x9')]=function(_0x33285a){try{if(this['voiceQueues'][_0x33285a[_0xa107('0x24')]]&&(this[_0xa107('0x5')][_0x33285a[_0xa107('0x24')]][_0xa107('0x2')]||this['voiceQueues'][_0x33285a[_0xa107('0x24')]][_0xa107('0x3b')])){if(this['agents'][_0x33285a[_0xa107('0x3c')]]){this[_0xa107('0x8')][_0x33285a[_0xa107('0x32')]]={'queue':_0x33285a[_0xa107('0x24')],'interface':_0x33285a[_0xa107('0x3c')],'destlinkedid':_0x33285a[_0xa107('0x2b')]};}}}catch(_0x2249fd){logger[_0xa107('0x20')](_0xa107('0x3d'),_0x2249fd['message']);}};Acw[_0xa107('0x17')][_0xa107('0x14')]=function(_0x2cdd81){try{if(this[_0xa107('0x5')][_0x2cdd81['queue']]&&(this[_0xa107('0x5')][_0x2cdd81[_0xa107('0x24')]][_0xa107('0x2')]||this[_0xa107('0x5')][_0x2cdd81[_0xa107('0x24')]]['mandatoryDisposition'])){if(this[_0xa107('0x6')][_0x2cdd81[_0xa107('0x3c')]]){this[_0xa107('0x8')][_0x2cdd81[_0xa107('0x32')]]={'queue':_0x2cdd81[_0xa107('0x24')],'interface':_0x2cdd81['interface']};}}}catch(_0x38f314){logger['error'](_0xa107('0x3e'),_0x38f314[_0xa107('0x34')]);}};Acw['prototype'][_0xa107('0x3f')]=function(_0x50ed4c){try{if(this[_0xa107('0x8')][_0x50ed4c['uniqueid']]&&_[_0xa107('0x40')](this[_0xa107('0x8')][_0x50ed4c['uniqueid']][_0xa107('0x41')])){logger[_0xa107('0x1d')](_0xa107('0x42'),_0x50ed4c[_0xa107('0x32')]);this[_0xa107('0x23')](_0x50ed4c[_0xa107('0x32')]);}else if(this['channels'][_0x50ed4c[_0xa107('0x43')]]&&_[_0xa107('0x40')](this[_0xa107('0x8')][_0x50ed4c[_0xa107('0x43')]][_0xa107('0x41')])){logger[_0xa107('0x1d')](_0xa107('0x44'),_0x50ed4c[_0xa107('0x43')]);this['startAcw'](_0x50ed4c[_0xa107('0x43')]);}}catch(_0x102b6c){logger['error'](_0xa107('0x45'),_0x102b6c['message']);}};Acw[_0xa107('0x17')][_0xa107('0xd')]=function(_0x327dc1){try{if(this['channels'][_0x327dc1[_0xa107('0x32')]]&&this[_0xa107('0x8')][_0x327dc1[_0xa107('0x32')]][_0xa107('0x41')]){logger[_0xa107('0x1d')](_0xa107('0x46'),_0x327dc1[_0xa107('0x32')]);this[_0xa107('0x23')](_0x327dc1[_0xa107('0x32')]);}else if(this[_0xa107('0x8')][_0x327dc1[_0xa107('0x43')]]&&this[_0xa107('0x8')][_0x327dc1[_0xa107('0x43')]]['attended']){logger[_0xa107('0x1d')](_0xa107('0x47'),_0x327dc1[_0xa107('0x43')]);this[_0xa107('0x23')](_0x327dc1[_0xa107('0x43')]);}}catch(_0x25eb34){logger[_0xa107('0x20')]('[ACW][syncHangup]\x20%s',_0x25eb34[_0xa107('0x34')]);}};Acw[_0xa107('0x17')][_0xa107('0x11')]=function(_0x5a7518){try{if(!_[_0xa107('0x48')](this['channels'][_0x5a7518['transfereeuniqueid']])){this['startAcw'](_0x5a7518[_0xa107('0x49')]);if(this[_0xa107('0x8')][_0x5a7518[_0xa107('0x4a')]]){this['channels'][_0x5a7518[_0xa107('0x4a')]]['attended']=!![];this[_0xa107('0x8')][_0x5a7518['transfertargetuniqueid']]=this[_0xa107('0x8')][_0x5a7518[_0xa107('0x4a')]];this[_0xa107('0x4b')](_0x5a7518[_0xa107('0x4a')]);}}else if(!_['isNil'](this[_0xa107('0x8')][_0x5a7518[_0xa107('0x4c')]])){this[_0xa107('0x23')](_0x5a7518[_0xa107('0x4c')]);if(this[_0xa107('0x8')][_0x5a7518['origtransfereruniqueid']]){this['channels'][_0x5a7518[_0xa107('0x4d')]][_0xa107('0x41')]=!![];this[_0xa107('0x8')][_0x5a7518[_0xa107('0x49')]]=this[_0xa107('0x8')][_0x5a7518[_0xa107('0x4d')]];this['deleteChannelAfterTimeout'](_0x5a7518[_0xa107('0x4d')]);}}}catch(_0x1c5b79){logger[_0xa107('0x20')]('[ACW][syncAttendedTransfer]\x20%s',_0x1c5b79[_0xa107('0x34')]);}};Acw[_0xa107('0x17')][_0xa107('0x4e')]=function(_0x13fff8){try{if(this[_0xa107('0x8')][_0x13fff8[_0xa107('0x4f')]]){logger[_0xa107('0x1d')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x13fff8[_0xa107('0x4f')]));this[_0xa107('0x23')](_0x13fff8[_0xa107('0x4f')]);}else if(this['channels'][_0x13fff8[_0xa107('0x50')]]){logger[_0xa107('0x1d')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xa107('0x39')](_0x13fff8[_0xa107('0x50')]));this['startAcw'](_0x13fff8[_0xa107('0x50')]);}}catch(_0x3f4c54){logger[_0xa107('0x20')](_0xa107('0x51'),_0x3f4c54[_0xa107('0x34')]);}};Acw[_0xa107('0x17')]['syncAgentRingNoAnswer']=function(_0x4f4cf6){try{if(this[_0xa107('0x5')][_0x4f4cf6[_0xa107('0x24')]]&&this[_0xa107('0x5')][_0x4f4cf6[_0xa107('0x24')]]['autopause']==='all'){if(this['agents'][_0x4f4cf6[_0xa107('0x3c')]]){logger[_0xa107('0x1d')](_0xa107('0x52'),_0x4f4cf6[_0xa107('0x32')],_0x4f4cf6[_0xa107('0x3c')],_0x4f4cf6[_0xa107('0x24')]);return RpcUser['savePause'](this[_0xa107('0x6')][_0x4f4cf6[_0xa107('0x3c')]],_0xa107('0x53'),_0x4f4cf6[_0xa107('0x32')]);}}}catch(_0x4edad4){logger['error'](_0xa107('0x54'),_0x4edad4['message']);}};Acw[_0xa107('0x17')][_0xa107('0x4b')]=function(_0x2fd7b5,_0x297af0=0x2710){if(this[_0xa107('0x8')][_0x2fd7b5]){setTimeout(()=>{delete this[_0xa107('0x8')][_0x2fd7b5];},_0x297af0);}};module[_0xa107('0x55')]=Acw;