e14d5dfd646726baff071288d847470dc0d172f8
[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 _0x6b1b=['voiceQueues','agents','timers','channels','agentconnect','bind','syncHangup','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timer','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','mandatoryDisposition','name','resolve','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','error','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport'];(function(_0x2d3622,_0x41ca4a){var _0x14b9ab=function(_0x39712d){while(--_0x39712d){_0x2d3622['push'](_0x2d3622['shift']());}};_0x14b9ab(++_0x41ca4a);}(_0x6b1b,0x1e7));var _0xb6b1=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x6b1b[_0x2a6809];return _0x11c371;};'use strict';var _=require('lodash');var moment=require(_0xb6b1('0x0'));var ami=require(_0xb6b1('0x1'));var logger=require(_0xb6b1('0x2'))('acw');var RpcUser=require(_0xb6b1('0x3'));var RpcVoiceAgentReport=require(_0xb6b1('0x4'));function Acw(_0x28daf9){this[_0xb6b1('0x5')]=_0x28daf9[_0xb6b1('0x5')];this[_0xb6b1('0x6')]=_0x28daf9[_0xb6b1('0x6')];this[_0xb6b1('0x7')]=_0x28daf9[_0xb6b1('0x7')];this[_0xb6b1('0x8')]={};ami['on'](_0xb6b1('0x9'),this['syncAgentConnect'][_0xb6b1('0xa')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0xb6b1('0xa')](this));ami['on']('hangup',this[_0xb6b1('0xb')]['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer']['bind'](this));ami['on'](_0xb6b1('0xc'),this[_0xb6b1('0xd')]['bind'](this));ami['on'](_0xb6b1('0xe'),this['syncBlindTransfer']['bind'](this));ami['on'](_0xb6b1('0xf'),this[_0xb6b1('0x10')][_0xb6b1('0xa')](this));}function getDiff(_0x327eee){var _0x23881d=moment()[_0xb6b1('0x11')](0x0);var _0x360fc7=moment(_0x327eee)[_0xb6b1('0x11')](0x0);return _0x23881d[_0xb6b1('0x12')](_0x360fc7,_0xb6b1('0x13'));}Acw[_0xb6b1('0x14')][_0xb6b1('0x15')]=function(_0x4f770a,_0x57572a){var _0x513207=this;var _0x51f25f=getDiff(_0x513207[_0xb6b1('0x7')][_0x4f770a][_0xb6b1('0x16')]);clearTimeout(_0x513207[_0xb6b1('0x7')][_0x4f770a][_0xb6b1('0x17')]);_0x513207[_0xb6b1('0x7')][_0x4f770a][_0xb6b1('0x17')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x51f25f},_0x513207['timers'][_0x4f770a][_0xb6b1('0x18')],_0x4f770a)[_0xb6b1('0x19')](function(_0x16d969){logger[_0xb6b1('0x1a')](_0xb6b1('0x1b'),_0x57572a,_0x51f25f,_0x16d969);})[_0xb6b1('0x1c')](function(_0x5ba14d){logger['error'](_0xb6b1('0x1d'),_0x57572a,_0x5ba14d);})[_0xb6b1('0x1e')](function(){delete _0x513207['timers'][_0x4f770a];});};Acw['prototype'][_0xb6b1('0x1f')]=function(_0x5c8529){try{var _0x509c55=this;var _0x232157=this[_0xb6b1('0x8')][_0x5c8529][_0xb6b1('0x20')];var _0x305865=this[_0xb6b1('0x8')][_0x5c8529][_0xb6b1('0x21')];var _0x1eb1b2=this[_0xb6b1('0x5')][_0x305865];var _0x472585=![];var _0x20066f='ACW';if(_0x1eb1b2[_0xb6b1('0x22')]&&_0x1eb1b2['mandatoryDispositionPause'][_0xb6b1('0x23')]){_0x472585=!![];_0x20066f=_0x1eb1b2['mandatoryDispositionPause'][_0xb6b1('0x23')];}if(!_0x509c55['agents'][_0x232157]){return Promise[_0xb6b1('0x24')]();}return RpcUser[_0xb6b1('0x25')](_0x509c55[_0xb6b1('0x6')][_0x232157]['id'])[_0xb6b1('0x19')](function(_0x13e841){if(!_0x13e841||_0x13e841[_0xb6b1('0x26')]){logger[_0xb6b1('0x1a')](_0xb6b1('0x27'),_0x5c8529,_0x232157,_0x305865);return;}logger[_0xb6b1('0x1a')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x5c8529,_0x232157,_0x305865);var _0xf40426=_0x509c55['channels'][_0x5c8529][_0xb6b1('0x28')]&&_0x509c55[_0xb6b1('0x8')][_0x5c8529][_0xb6b1('0x29')]?_0x509c55[_0xb6b1('0x8')][_0x5c8529][_0xb6b1('0x29')]:_0x5c8529;return RpcUser[_0xb6b1('0x2a')](_0x509c55[_0xb6b1('0x6')][_0x232157],_0x20066f,_0xf40426);})['then'](function(_0x427797){if(_0x472585||!_0x427797){return;}_0x509c55[_0xb6b1('0x7')][_0x232157]={};logger[_0xb6b1('0x1a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x5c8529,_0x509c55[_0xb6b1('0x5')][_0x305865][_0xb6b1('0x2b')],_0x232157,_0x305865);_0x509c55['timers'][_0x232157][_0xb6b1('0x17')]=setTimeout(_0x509c55[_0xb6b1('0x2c')][_0xb6b1('0xa')](_0x509c55,_0x232157),_0x509c55[_0xb6b1('0x5')][_0x305865][_0xb6b1('0x2b')]*0x3e8);_0x509c55[_0xb6b1('0x7')][_0x232157]['lastPauseAt']=moment()[_0xb6b1('0x2d')](_0xb6b1('0x2e'));_0x509c55['timers'][_0x232157][_0xb6b1('0x18')]=_0x5c8529;_0x509c55['timers'][_0x232157][_0xb6b1('0x21')]=_0x305865;_0x509c55[_0xb6b1('0x7')][_0x232157][_0xb6b1('0x15')]=_0x509c55[_0xb6b1('0x15')][_0xb6b1('0xa')](_0x509c55,_0x232157,_0x5c8529);})[_0xb6b1('0x1c')](function(){logger['error'](_0xb6b1('0x2f'),_0x5c8529,_0x509c55[_0xb6b1('0x5')][_0x305865][_0xb6b1('0x2b')],_0x232157,_0x305865);})[_0xb6b1('0x1e')](function(){delete _0x509c55['channels'][_0x5c8529];});}catch(_0x56f1ff){logger['error'](_0xb6b1('0x30'),_0x56f1ff[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')][_0xb6b1('0x2c')]=function(_0x1c83c4){try{var _0x15cace=this;if(_0x15cace[_0xb6b1('0x7')][_0x1c83c4]){_0x15cace[_0xb6b1('0x7')][_0x1c83c4][_0xb6b1('0x17')]=![];var _0x25d6a2=_0x15cace[_0xb6b1('0x7')][_0x1c83c4][_0xb6b1('0x18')];var _0x5b8a57=_0x15cace[_0xb6b1('0x7')][_0x1c83c4][_0xb6b1('0x21')];var _0x2f0427=_0x15cace[_0xb6b1('0x5')][_0x5b8a57][_0xb6b1('0x2b')];logger[_0xb6b1('0x1a')](_0xb6b1('0x32'),_0x25d6a2,_0x1c83c4);RpcUser[_0xb6b1('0x33')](this[_0xb6b1('0x6')][_0x1c83c4]);RpcVoiceAgentReport[_0xb6b1('0x34')]({'acwtime':_0x2f0427,'agentacw':!![]},_0x25d6a2,_0x1c83c4)[_0xb6b1('0x19')](function(_0x56470a){logger[_0xb6b1('0x1a')](_0xb6b1('0x1b'),_0x25d6a2,_0x2f0427,_0x56470a);})[_0xb6b1('0x1c')](function(_0x2d6b2b){logger[_0xb6b1('0x35')](_0xb6b1('0x1d'),_0x25d6a2,_0x2d6b2b);});}else{logger[_0xb6b1('0x35')](_0xb6b1('0x36'),_0x1c83c4);if(_0x15cace['timers']){logger['info'](_0xb6b1('0x37'),JSON[_0xb6b1('0x38')](_0x15cace[_0xb6b1('0x7')]));}}}catch(_0x541eb5){logger[_0xb6b1('0x35')](_0xb6b1('0x39'),_0x541eb5[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')][_0xb6b1('0x3a')]=function(_0x3c2780){try{if(this[_0xb6b1('0x5')][_0x3c2780[_0xb6b1('0x21')]]&&(this['voiceQueues'][_0x3c2780[_0xb6b1('0x21')]]['acw']||this[_0xb6b1('0x5')][_0x3c2780[_0xb6b1('0x21')]][_0xb6b1('0x22')])){if(this[_0xb6b1('0x6')][_0x3c2780[_0xb6b1('0x20')]]){this[_0xb6b1('0x8')][_0x3c2780['uniqueid']]={'queue':_0x3c2780[_0xb6b1('0x21')],'interface':_0x3c2780[_0xb6b1('0x20')],'destlinkedid':_0x3c2780['destlinkedid']};}}}catch(_0x27bf19){logger['error'](_0xb6b1('0x3b'),_0x27bf19[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')][_0xb6b1('0x10')]=function(_0x2016a1){try{if(this[_0xb6b1('0x5')][_0x2016a1[_0xb6b1('0x21')]]&&(this[_0xb6b1('0x5')][_0x2016a1[_0xb6b1('0x21')]]['acw']||this['voiceQueues'][_0x2016a1[_0xb6b1('0x21')]][_0xb6b1('0x22')])){if(this['agents'][_0x2016a1[_0xb6b1('0x20')]]){this[_0xb6b1('0x8')][_0x2016a1[_0xb6b1('0x18')]]={'queue':_0x2016a1[_0xb6b1('0x21')],'interface':_0x2016a1[_0xb6b1('0x20')]};}}}catch(_0x505a80){logger[_0xb6b1('0x35')](_0xb6b1('0x3c'),_0x505a80[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')]['syncHangupRequest']=function(_0x5bfd0e){try{if(this[_0xb6b1('0x8')][_0x5bfd0e['uniqueid']]&&_[_0xb6b1('0x3d')](this[_0xb6b1('0x8')][_0x5bfd0e['uniqueid']][_0xb6b1('0x28')])){logger['info'](_0xb6b1('0x3e'),_0x5bfd0e[_0xb6b1('0x18')]);this[_0xb6b1('0x1f')](_0x5bfd0e[_0xb6b1('0x18')]);}else if(this[_0xb6b1('0x8')][_0x5bfd0e[_0xb6b1('0x3f')]]&&_[_0xb6b1('0x3d')](this[_0xb6b1('0x8')][_0x5bfd0e[_0xb6b1('0x3f')]][_0xb6b1('0x28')])){logger['info'](_0xb6b1('0x40'),_0x5bfd0e[_0xb6b1('0x3f')]);this[_0xb6b1('0x1f')](_0x5bfd0e[_0xb6b1('0x3f')]);}}catch(_0x46c4ef){logger[_0xb6b1('0x35')](_0xb6b1('0x41'),_0x46c4ef[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')]['syncHangup']=function(_0x16e0be){try{if(this['channels'][_0x16e0be['uniqueid']]&&this[_0xb6b1('0x8')][_0x16e0be[_0xb6b1('0x18')]]['attended']){logger[_0xb6b1('0x1a')](_0xb6b1('0x42'),_0x16e0be[_0xb6b1('0x18')]);this['startAcw'](_0x16e0be[_0xb6b1('0x18')]);}else if(this['channels'][_0x16e0be['linkedid']]&&this[_0xb6b1('0x8')][_0x16e0be[_0xb6b1('0x3f')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x16e0be[_0xb6b1('0x3f')]);this['startAcw'](_0x16e0be['linkedid']);}}catch(_0x47e64e){logger[_0xb6b1('0x35')](_0xb6b1('0x43'),_0x47e64e[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')][_0xb6b1('0xd')]=function(_0x3e441e){try{if(!_['isNil'](this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x44')]])){this['startAcw'](_0x3e441e['transfereeuniqueid']);if(this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x45')]]){this['channels'][_0x3e441e['secondtransfereruniqueid']][_0xb6b1('0x28')]=!![];this['channels'][_0x3e441e[_0xb6b1('0x46')]]=this[_0xb6b1('0x8')][_0x3e441e['secondtransfereruniqueid']];delete this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x45')]];}}else if(!_[_0xb6b1('0x47')](this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x46')]])){this[_0xb6b1('0x1f')](_0x3e441e[_0xb6b1('0x46')]);if(this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x48')]]){this[_0xb6b1('0x8')][_0x3e441e['origtransfereruniqueid']][_0xb6b1('0x28')]=!![];this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x44')]]=this[_0xb6b1('0x8')][_0x3e441e['origtransfereruniqueid']];delete this[_0xb6b1('0x8')][_0x3e441e[_0xb6b1('0x48')]];}}}catch(_0x2da39e){logger[_0xb6b1('0x35')](_0xb6b1('0x49'),_0x2da39e[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')]['syncBlindTransfer']=function(_0x485800){try{if(this[_0xb6b1('0x8')][_0x485800['transfereruniqueid']]){logger[_0xb6b1('0x1a')](_0xb6b1('0x4a'),JSON[_0xb6b1('0x38')](_0x485800['transfereruniqueid']));this[_0xb6b1('0x1f')](_0x485800[_0xb6b1('0x4b')]);}else if(this[_0xb6b1('0x8')][_0x485800[_0xb6b1('0x4c')]]){logger[_0xb6b1('0x1a')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x485800[_0xb6b1('0x4c')]));this[_0xb6b1('0x1f')](_0x485800[_0xb6b1('0x4c')]);}}catch(_0x28b4c9){logger[_0xb6b1('0x35')](_0xb6b1('0x4d'),_0x28b4c9[_0xb6b1('0x31')]);}};Acw[_0xb6b1('0x14')][_0xb6b1('0x4e')]=function(_0x3634a8){try{if(this[_0xb6b1('0x5')][_0x3634a8[_0xb6b1('0x21')]]&&this['voiceQueues'][_0x3634a8[_0xb6b1('0x21')]]['autopause']===_0xb6b1('0x4f')){if(this[_0xb6b1('0x6')][_0x3634a8[_0xb6b1('0x20')]]){logger['info'](_0xb6b1('0x50'),_0x3634a8['uniqueid'],_0x3634a8['interface'],_0x3634a8[_0xb6b1('0x21')]);return RpcUser['savePause'](this[_0xb6b1('0x6')][_0x3634a8[_0xb6b1('0x20')]],'Auto-Pause',_0x3634a8[_0xb6b1('0x18')]);}}}catch(_0x58fddf){logger[_0xb6b1('0x35')](_0xb6b1('0x51'),_0x58fddf[_0xb6b1('0x31')]);}};module['exports']=Acw;