ff91d5d926c715928b6c00bb910712ad1d28d1fe
[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 _0x2542=['transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','exports','lodash','moment','../ami','../../../config/logger','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timer','update','info','[%s][UPDATE][ACWTIME:%s]','catch','error','finally','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','resolve','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','queue','[ACW][START]\x20%s','message','uniqueid','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid'];(function(_0x21e171,_0x5d4b9c){var _0x359aa0=function(_0x20f191){while(--_0x20f191){_0x21e171['push'](_0x21e171['shift']());}};_0x359aa0(++_0x5d4b9c);}(_0x2542,0x169));var _0x2254=function(_0x35c2a9,_0x4e8953){_0x35c2a9=_0x35c2a9-0x0;var _0x5ab481=_0x2542[_0x35c2a9];return _0x5ab481;};'use strict';var _=require(_0x2254('0x0'));var moment=require(_0x2254('0x1'));var ami=require(_0x2254('0x2'));var logger=require(_0x2254('0x3'))('acw');var RpcUser=require(_0x2254('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x4059d1){this[_0x2254('0x5')]=_0x4059d1[_0x2254('0x5')];this[_0x2254('0x6')]=_0x4059d1[_0x2254('0x6')];this['timers']=_0x4059d1[_0x2254('0x7')];this[_0x2254('0x8')]={};ami['on'](_0x2254('0x9'),this[_0x2254('0xa')][_0x2254('0xb')](this));ami['on'](_0x2254('0xc'),this[_0x2254('0xd')][_0x2254('0xb')](this));ami['on'](_0x2254('0xe'),this[_0x2254('0xf')][_0x2254('0xb')](this));ami['on']('agentringnoanswer',this[_0x2254('0x10')][_0x2254('0xb')](this));ami['on'](_0x2254('0x11'),this[_0x2254('0x12')]['bind'](this));ami['on']('blindtransfer',this[_0x2254('0x13')][_0x2254('0xb')](this));ami['on'](_0x2254('0x14'),this[_0x2254('0x15')][_0x2254('0xb')](this));}function getDiff(_0x381efe){var _0x592a4f=moment()[_0x2254('0x16')](0x0);var _0x7c7ab0=moment(_0x381efe)['milliseconds'](0x0);return _0x592a4f[_0x2254('0x17')](_0x7c7ab0,_0x2254('0x18'));}Acw[_0x2254('0x19')][_0x2254('0x1a')]=function(_0x26285a,_0xbc5548){var _0x50f137=this;var _0x18baf4=getDiff(_0x50f137['timers'][_0x26285a][_0x2254('0x1b')]);clearTimeout(_0x50f137[_0x2254('0x7')][_0x26285a][_0x2254('0x1c')]);_0x50f137[_0x2254('0x7')][_0x26285a][_0x2254('0x1c')]=![];return RpcVoiceAgentReport[_0x2254('0x1d')]({'acwtime':_0x18baf4},_0x50f137['timers'][_0x26285a]['uniqueid'],_0x26285a)['then'](function(_0xb05559){logger[_0x2254('0x1e')](_0x2254('0x1f'),_0xbc5548,_0x18baf4,_0xb05559);})[_0x2254('0x20')](function(_0x2801d9){logger[_0x2254('0x21')]('[%s][UPDATE][ERRORS:%s]',_0xbc5548,_0x2801d9);})[_0x2254('0x22')](function(){delete _0x50f137[_0x2254('0x7')][_0x26285a];});};Acw[_0x2254('0x19')]['startAcw']=function(_0x52fedc){try{var _0x5bd982=this;var _0x1e8a98=this[_0x2254('0x8')][_0x52fedc][_0x2254('0x23')];var _0x56b91e=this['channels'][_0x52fedc]['queue'];var _0x540020=this['voiceQueues'][_0x56b91e];var _0x4f797d=![];var _0x1aa71f=_0x2254('0x24');if(_0x540020[_0x2254('0x25')]&&_0x540020[_0x2254('0x26')][_0x2254('0x27')]){_0x4f797d=!![];_0x1aa71f=_0x540020[_0x2254('0x26')]['name'];}if(!_0x5bd982['agents'][_0x1e8a98]){return Promise[_0x2254('0x28')]();}return RpcUser['getAgent'](_0x5bd982[_0x2254('0x6')][_0x1e8a98]['id'])[_0x2254('0x29')](function(_0x31a543){if(!_0x31a543||_0x31a543[_0x2254('0x2a')]){logger[_0x2254('0x1e')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x52fedc,_0x1e8a98,_0x56b91e);return;}logger[_0x2254('0x1e')](_0x2254('0x2b'),_0x52fedc,_0x1e8a98,_0x56b91e);var _0x21285d=_0x5bd982[_0x2254('0x8')][_0x52fedc][_0x2254('0x2c')]&&_0x5bd982[_0x2254('0x8')][_0x52fedc][_0x2254('0x2d')]?_0x5bd982[_0x2254('0x8')][_0x52fedc][_0x2254('0x2d')]:_0x52fedc;return RpcUser[_0x2254('0x2e')](_0x5bd982[_0x2254('0x6')][_0x1e8a98],_0x1aa71f,_0x21285d);})[_0x2254('0x29')](function(_0x220f2a){if(_0x4f797d||!_0x220f2a){return;}_0x5bd982[_0x2254('0x7')][_0x1e8a98]={};logger[_0x2254('0x1e')](_0x2254('0x2f'),_0x52fedc,_0x5bd982[_0x2254('0x5')][_0x56b91e][_0x2254('0x30')],_0x1e8a98,_0x56b91e);_0x5bd982[_0x2254('0x7')][_0x1e8a98]['timer']=setTimeout(_0x5bd982[_0x2254('0x31')][_0x2254('0xb')](_0x5bd982,_0x1e8a98),_0x5bd982[_0x2254('0x5')][_0x56b91e][_0x2254('0x30')]*0x3e8);_0x5bd982[_0x2254('0x7')][_0x1e8a98][_0x2254('0x1b')]=moment()[_0x2254('0x32')](_0x2254('0x33'));_0x5bd982[_0x2254('0x7')][_0x1e8a98]['uniqueid']=_0x52fedc;_0x5bd982[_0x2254('0x7')][_0x1e8a98][_0x2254('0x34')]=_0x56b91e;_0x5bd982['timers'][_0x1e8a98][_0x2254('0x1a')]=_0x5bd982[_0x2254('0x1a')][_0x2254('0xb')](_0x5bd982,_0x1e8a98,_0x52fedc);})[_0x2254('0x20')](function(){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x52fedc,_0x5bd982[_0x2254('0x5')][_0x56b91e]['acwTimeout'],_0x1e8a98,_0x56b91e);})[_0x2254('0x22')](function(){delete _0x5bd982[_0x2254('0x8')][_0x52fedc];});}catch(_0x2ba6a1){logger[_0x2254('0x21')](_0x2254('0x35'),_0x2ba6a1[_0x2254('0x36')]);}};Acw[_0x2254('0x19')]['stopAcw']=function(_0x3234d4){try{var _0x192e9f=this;if(_0x192e9f[_0x2254('0x7')][_0x3234d4]){_0x192e9f[_0x2254('0x7')][_0x3234d4][_0x2254('0x1c')]=![];var _0x3f6007=_0x192e9f[_0x2254('0x7')][_0x3234d4][_0x2254('0x37')];var _0x122314=_0x192e9f[_0x2254('0x7')][_0x3234d4]['queue'];var _0x2ce9bf=_0x192e9f[_0x2254('0x5')][_0x122314][_0x2254('0x30')];logger[_0x2254('0x1e')]('[%s][TIMER][STOP][AGENT:%s]',_0x3f6007,_0x3234d4);RpcUser[_0x2254('0x38')](this[_0x2254('0x6')][_0x3234d4]);RpcVoiceAgentReport[_0x2254('0x1d')]({'acwtime':_0x2ce9bf,'agentacw':!![]},_0x3f6007,_0x3234d4)[_0x2254('0x29')](function(_0x216199){logger[_0x2254('0x1e')](_0x2254('0x1f'),_0x3f6007,_0x2ce9bf,_0x216199);})[_0x2254('0x20')](function(_0x4db9a8){logger[_0x2254('0x21')]('[%s][UPDATE][ERRORS:%s]',_0x3f6007,_0x4db9a8);});}else{logger[_0x2254('0x21')](_0x2254('0x39'),_0x3234d4);if(_0x192e9f[_0x2254('0x7')]){logger[_0x2254('0x1e')](_0x2254('0x3a'),JSON[_0x2254('0x3b')](_0x192e9f[_0x2254('0x7')]));}}}catch(_0x568ec9){logger[_0x2254('0x21')](_0x2254('0x3c'),_0x568ec9[_0x2254('0x36')]);}};Acw[_0x2254('0x19')][_0x2254('0xa')]=function(_0x57cda2){try{if(this[_0x2254('0x5')][_0x57cda2[_0x2254('0x34')]]&&(this[_0x2254('0x5')][_0x57cda2[_0x2254('0x34')]][_0x2254('0x3d')]||this['voiceQueues'][_0x57cda2[_0x2254('0x34')]]['mandatoryDisposition'])){if(this[_0x2254('0x6')][_0x57cda2[_0x2254('0x23')]]){this[_0x2254('0x8')][_0x57cda2[_0x2254('0x37')]]={'queue':_0x57cda2[_0x2254('0x34')],'interface':_0x57cda2[_0x2254('0x23')],'destlinkedid':_0x57cda2[_0x2254('0x2d')]};}}}catch(_0x132ef2){logger[_0x2254('0x21')](_0x2254('0x3e'),_0x132ef2[_0x2254('0x36')]);}};Acw[_0x2254('0x19')][_0x2254('0x15')]=function(_0x4a2e6d){try{if(this[_0x2254('0x5')][_0x4a2e6d[_0x2254('0x34')]]&&(this[_0x2254('0x5')][_0x4a2e6d['queue']][_0x2254('0x3d')]||this[_0x2254('0x5')][_0x4a2e6d[_0x2254('0x34')]][_0x2254('0x25')])){if(this[_0x2254('0x6')][_0x4a2e6d[_0x2254('0x23')]]){this[_0x2254('0x8')][_0x4a2e6d[_0x2254('0x37')]]={'queue':_0x4a2e6d[_0x2254('0x34')],'interface':_0x4a2e6d['interface']};}}}catch(_0x239ba0){logger[_0x2254('0x21')](_0x2254('0x3f'),_0x239ba0[_0x2254('0x36')]);}};Acw[_0x2254('0x19')][_0x2254('0xd')]=function(_0x3396c2){try{if(this[_0x2254('0x8')][_0x3396c2[_0x2254('0x37')]]&&_[_0x2254('0x40')](this['channels'][_0x3396c2[_0x2254('0x37')]][_0x2254('0x2c')])){logger['info'](_0x2254('0x41'),_0x3396c2[_0x2254('0x37')]);this[_0x2254('0x42')](_0x3396c2[_0x2254('0x37')]);}else if(this['channels'][_0x3396c2[_0x2254('0x43')]]&&_[_0x2254('0x40')](this['channels'][_0x3396c2[_0x2254('0x43')]][_0x2254('0x2c')])){logger[_0x2254('0x1e')](_0x2254('0x44'),_0x3396c2['linkedid']);this[_0x2254('0x42')](_0x3396c2[_0x2254('0x43')]);}}catch(_0x222a4e){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x222a4e[_0x2254('0x36')]);}};Acw[_0x2254('0x19')]['syncHangup']=function(_0x1cf2a0){try{if(this['channels'][_0x1cf2a0['uniqueid']]&&this[_0x2254('0x8')][_0x1cf2a0[_0x2254('0x37')]][_0x2254('0x2c')]){logger[_0x2254('0x1e')](_0x2254('0x45'),_0x1cf2a0['uniqueid']);this['startAcw'](_0x1cf2a0[_0x2254('0x37')]);}else if(this['channels'][_0x1cf2a0[_0x2254('0x43')]]&&this[_0x2254('0x8')][_0x1cf2a0[_0x2254('0x43')]][_0x2254('0x2c')]){logger['info'](_0x2254('0x46'),_0x1cf2a0[_0x2254('0x43')]);this['startAcw'](_0x1cf2a0['linkedid']);}}catch(_0x1a2973){logger['error'](_0x2254('0x47'),_0x1a2973[_0x2254('0x36')]);}};Acw[_0x2254('0x19')][_0x2254('0x12')]=function(_0x301a12){try{if(!_['isNil'](this['channels'][_0x301a12[_0x2254('0x48')]])){this['startAcw'](_0x301a12[_0x2254('0x48')]);if(this['channels'][_0x301a12['secondtransfereruniqueid']]){this['channels'][_0x301a12[_0x2254('0x49')]][_0x2254('0x2c')]=!![];this[_0x2254('0x8')][_0x301a12[_0x2254('0x4a')]]=this[_0x2254('0x8')][_0x301a12[_0x2254('0x49')]];delete this[_0x2254('0x8')][_0x301a12[_0x2254('0x49')]];}}else if(!_[_0x2254('0x4b')](this[_0x2254('0x8')][_0x301a12[_0x2254('0x4a')]])){this[_0x2254('0x42')](_0x301a12[_0x2254('0x4a')]);if(this[_0x2254('0x8')][_0x301a12[_0x2254('0x4c')]]){this[_0x2254('0x8')][_0x301a12[_0x2254('0x4c')]][_0x2254('0x2c')]=!![];this[_0x2254('0x8')][_0x301a12['transfereeuniqueid']]=this[_0x2254('0x8')][_0x301a12[_0x2254('0x4c')]];delete this[_0x2254('0x8')][_0x301a12[_0x2254('0x4c')]];}}}catch(_0x4c966a){logger['error'](_0x2254('0x4d'),_0x4c966a[_0x2254('0x36')]);}};Acw[_0x2254('0x19')][_0x2254('0x13')]=function(_0x1021b2){try{if(this['channels'][_0x1021b2[_0x2254('0x4e')]]){logger[_0x2254('0x1e')](_0x2254('0x4f'),JSON['stringify'](_0x1021b2['transfereruniqueid']));this[_0x2254('0x42')](_0x1021b2['transfereruniqueid']);}else if(this[_0x2254('0x8')][_0x1021b2[_0x2254('0x50')]]){logger['info'](_0x2254('0x51'),JSON[_0x2254('0x3b')](_0x1021b2['transfererlinkedid']));this[_0x2254('0x42')](_0x1021b2[_0x2254('0x50')]);}}catch(_0x4c6104){logger['error'](_0x2254('0x52'),_0x4c6104[_0x2254('0x36')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x48406e){try{if(this['voiceQueues'][_0x48406e[_0x2254('0x34')]]&&this['voiceQueues'][_0x48406e[_0x2254('0x34')]][_0x2254('0x53')]===_0x2254('0x54')){if(this[_0x2254('0x6')][_0x48406e['interface']]){logger[_0x2254('0x1e')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x48406e[_0x2254('0x37')],_0x48406e[_0x2254('0x23')],_0x48406e['queue']);return RpcUser[_0x2254('0x2e')](this[_0x2254('0x6')][_0x48406e['interface']],_0x2254('0x55'),_0x48406e[_0x2254('0x37')]);}}}catch(_0x28ef48){logger[_0x2254('0x21')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x28ef48[_0x2254('0x36')]);}};module[_0x2254('0x56')]=Acw;