c7285d2ffe1f9fd2e47ecc5e7ec59f45add791ae
[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 _0x43f5=['acw','../rpc/user','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','lastPauseAt','timer','update','uniqueid','info','[%s][UPDATE][ACWTIME:%s]','catch','error','finally','prototype','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','resolve','getAgent','then','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','format','updateAcw','message','stopAcw','queue','[%s][TIMER][STOP][AGENT:%s]','pauseType','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','startAcw','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../../../config/logger'];(function(_0x26d6d9,_0x431cb8){var _0x1b4875=function(_0x41111f){while(--_0x41111f){_0x26d6d9['push'](_0x26d6d9['shift']());}};_0x1b4875(++_0x431cb8);}(_0x43f5,0x9d));var _0x543f=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x43f5[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x543f('0x0'));var moment=require(_0x543f('0x1'));var ami=require('../ami');var logger=require(_0x543f('0x2'))(_0x543f('0x3'));var RpcUser=require(_0x543f('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x3302cb){this[_0x543f('0x5')]=_0x3302cb[_0x543f('0x5')];this[_0x543f('0x6')]=_0x3302cb[_0x543f('0x6')];this[_0x543f('0x7')]=_0x3302cb[_0x543f('0x7')];this[_0x543f('0x8')]={};ami['on']('agentconnect',this[_0x543f('0x9')][_0x543f('0xa')](this));ami['on'](_0x543f('0xb'),this[_0x543f('0xc')][_0x543f('0xa')](this));ami['on']('hangup',this[_0x543f('0xd')]['bind'](this));ami['on']('agentringnoanswer',this[_0x543f('0xe')]['bind'](this));ami['on']('attendedtransfer',this[_0x543f('0xf')][_0x543f('0xa')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on'](_0x543f('0x10'),this[_0x543f('0x11')][_0x543f('0xa')](this));}function getDiff(_0x539eaa){var _0x343a39=moment()[_0x543f('0x12')](0x0);var _0x1eb1c=moment(_0x539eaa)['milliseconds'](0x0);return _0x343a39[_0x543f('0x13')](_0x1eb1c,_0x543f('0x14'));}Acw['prototype']['updateAcw']=function(_0xe6c6d1,_0x5e879d){var _0x17b54c=this;var _0x3f85cd=getDiff(_0x17b54c[_0x543f('0x7')][_0xe6c6d1][_0x543f('0x15')]);clearTimeout(_0x17b54c['timers'][_0xe6c6d1][_0x543f('0x16')]);_0x17b54c[_0x543f('0x7')][_0xe6c6d1][_0x543f('0x16')]=![];return RpcVoiceAgentReport[_0x543f('0x17')]({'acwtime':_0x3f85cd},_0x17b54c[_0x543f('0x7')][_0xe6c6d1][_0x543f('0x18')],_0xe6c6d1)['then'](function(_0x5bde7f){logger[_0x543f('0x19')](_0x543f('0x1a'),_0x5e879d,_0x3f85cd,_0x5bde7f);})[_0x543f('0x1b')](function(_0xf2d182){logger[_0x543f('0x1c')]('[%s][UPDATE][ERRORS:%s]',_0x5e879d,_0xf2d182);})[_0x543f('0x1d')](function(){delete _0x17b54c[_0x543f('0x7')][_0xe6c6d1];});};Acw[_0x543f('0x1e')]['startAcw']=function(_0x2fd57f){try{var _0x18fbaf=this;var _0xd3a0a1=this['channels'][_0x2fd57f][_0x543f('0x1f')];var _0x5f21f5=this[_0x543f('0x8')][_0x2fd57f]['queue'];var _0x3914d3=this['voiceQueues'][_0x5f21f5];var _0x45f567=![];var _0x3866f4=_0x543f('0x20');if(_0x3914d3[_0x543f('0x21')]&&_0x3914d3[_0x543f('0x22')][_0x543f('0x23')]){_0x45f567=!![];_0x3866f4=_0x3914d3[_0x543f('0x22')][_0x543f('0x23')];}if(!_0x18fbaf[_0x543f('0x6')][_0xd3a0a1]){return Promise[_0x543f('0x24')]();}return RpcUser[_0x543f('0x25')](_0x18fbaf[_0x543f('0x6')][_0xd3a0a1]['id'])[_0x543f('0x26')](function(_0x4f7730){if(!_0x4f7730||_0x4f7730[_0x543f('0x27')]){logger[_0x543f('0x19')](_0x543f('0x28'),_0x2fd57f,_0xd3a0a1,_0x5f21f5);return;}logger[_0x543f('0x19')](_0x543f('0x29'),_0x2fd57f,_0xd3a0a1,_0x5f21f5);var _0x7f9c7b=_0x18fbaf[_0x543f('0x8')][_0x2fd57f]['attended']&&_0x18fbaf[_0x543f('0x8')][_0x2fd57f][_0x543f('0x2a')]?_0x18fbaf['channels'][_0x2fd57f][_0x543f('0x2a')]:_0x2fd57f;return RpcUser['savePause'](_0x18fbaf['agents'][_0xd3a0a1],_0x3866f4,_0x7f9c7b);})[_0x543f('0x26')](function(_0xa35162){if(_0x45f567||!_0xa35162){return;}_0x18fbaf[_0x543f('0x7')][_0xd3a0a1]={};logger['info'](_0x543f('0x2b'),_0x2fd57f,_0x18fbaf[_0x543f('0x5')][_0x5f21f5][_0x543f('0x2c')],_0xd3a0a1,_0x5f21f5);_0x18fbaf[_0x543f('0x7')][_0xd3a0a1][_0x543f('0x16')]=setTimeout(_0x18fbaf['stopAcw']['bind'](_0x18fbaf,_0xd3a0a1),_0x18fbaf[_0x543f('0x5')][_0x5f21f5]['acwTimeout']*0x3e8);_0x18fbaf[_0x543f('0x7')][_0xd3a0a1]['lastPauseAt']=moment()[_0x543f('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');_0x18fbaf[_0x543f('0x7')][_0xd3a0a1][_0x543f('0x18')]=_0x2fd57f;_0x18fbaf[_0x543f('0x7')][_0xd3a0a1]['queue']=_0x5f21f5;_0x18fbaf[_0x543f('0x7')][_0xd3a0a1]['updateAcw']=_0x18fbaf[_0x543f('0x2e')][_0x543f('0xa')](_0x18fbaf,_0xd3a0a1,_0x2fd57f);})[_0x543f('0x1b')](function(){logger[_0x543f('0x1c')](_0x543f('0x2b'),_0x2fd57f,_0x18fbaf[_0x543f('0x5')][_0x5f21f5][_0x543f('0x2c')],_0xd3a0a1,_0x5f21f5);})[_0x543f('0x1d')](function(){delete _0x18fbaf[_0x543f('0x8')][_0x2fd57f];});}catch(_0x5cfb7e){logger[_0x543f('0x1c')]('[ACW][START]\x20%s',_0x5cfb7e[_0x543f('0x2f')]);}};Acw[_0x543f('0x1e')][_0x543f('0x30')]=function(_0x5d52c2){try{var _0x48d1d0=this;if(_0x48d1d0['timers'][_0x5d52c2]){_0x48d1d0[_0x543f('0x7')][_0x5d52c2][_0x543f('0x16')]=![];var _0xf24195=_0x48d1d0[_0x543f('0x7')][_0x5d52c2]['uniqueid'];var _0x20fc31=_0x48d1d0[_0x543f('0x7')][_0x5d52c2][_0x543f('0x31')];var _0xcbb3f2=_0x48d1d0[_0x543f('0x5')][_0x20fc31]['acwTimeout'];logger[_0x543f('0x19')](_0x543f('0x32'),_0xf24195,_0x5d52c2);RpcUser[_0x543f('0x25')](this[_0x543f('0x6')][_0x5d52c2]['id'])['then'](function(_0xe76e39){if(_0xe76e39[_0x543f('0x33')]===_0x543f('0x20')){return RpcUser['saveUnpause'](_0x48d1d0[_0x543f('0x6')][_0x5d52c2]);}});RpcVoiceAgentReport[_0x543f('0x17')]({'acwtime':_0xcbb3f2,'agentacw':!![]},_0xf24195,_0x5d52c2)[_0x543f('0x26')](function(_0x5da661){logger[_0x543f('0x19')](_0x543f('0x1a'),_0xf24195,_0xcbb3f2,_0x5da661);})[_0x543f('0x1b')](function(_0x15bad6){logger[_0x543f('0x1c')](_0x543f('0x34'),_0xf24195,_0x15bad6);});}else{logger[_0x543f('0x1c')](_0x543f('0x35'),_0x5d52c2);if(_0x48d1d0['timers']){logger[_0x543f('0x19')]('[ACW][TIMERS]',JSON[_0x543f('0x36')](_0x48d1d0[_0x543f('0x7')]));}}}catch(_0x31bf58){logger[_0x543f('0x1c')](_0x543f('0x37'),_0x31bf58[_0x543f('0x2f')]);}};Acw['prototype'][_0x543f('0x9')]=function(_0x215772){try{if(this[_0x543f('0x5')][_0x215772[_0x543f('0x31')]]&&(this[_0x543f('0x5')][_0x215772[_0x543f('0x31')]][_0x543f('0x3')]||this[_0x543f('0x5')][_0x215772[_0x543f('0x31')]][_0x543f('0x21')])){if(this[_0x543f('0x6')][_0x215772[_0x543f('0x1f')]]){this[_0x543f('0x8')][_0x215772[_0x543f('0x18')]]={'queue':_0x215772[_0x543f('0x31')],'interface':_0x215772['interface'],'destlinkedid':_0x215772[_0x543f('0x2a')]};}}}catch(_0x3a363c){logger[_0x543f('0x1c')](_0x543f('0x38'),_0x3a363c['message']);}};Acw[_0x543f('0x1e')][_0x543f('0x11')]=function(_0x4c4470){try{if(this[_0x543f('0x5')][_0x4c4470[_0x543f('0x31')]]&&(this['voiceQueues'][_0x4c4470[_0x543f('0x31')]][_0x543f('0x3')]||this[_0x543f('0x5')][_0x4c4470['queue']]['mandatoryDisposition'])){if(this[_0x543f('0x6')][_0x4c4470[_0x543f('0x1f')]]){this[_0x543f('0x8')][_0x4c4470[_0x543f('0x18')]]={'queue':_0x4c4470[_0x543f('0x31')],'interface':_0x4c4470[_0x543f('0x1f')]};}}}catch(_0xb21dd8){logger[_0x543f('0x1c')](_0x543f('0x39'),_0xb21dd8[_0x543f('0x2f')]);}};Acw[_0x543f('0x1e')][_0x543f('0xc')]=function(_0x10f80e){try{if(this['channels'][_0x10f80e[_0x543f('0x18')]]&&_[_0x543f('0x3a')](this[_0x543f('0x8')][_0x10f80e[_0x543f('0x18')]][_0x543f('0x3b')])){logger[_0x543f('0x19')]('[%s][HANGUP:UNIQUEID]',_0x10f80e['uniqueid']);this['startAcw'](_0x10f80e[_0x543f('0x18')]);}else if(this[_0x543f('0x8')][_0x10f80e[_0x543f('0x3c')]]&&_['isUndefined'](this[_0x543f('0x8')][_0x10f80e[_0x543f('0x3c')]][_0x543f('0x3b')])){logger[_0x543f('0x19')]('[%s][HANGUP:LINKEDID]',_0x10f80e[_0x543f('0x3c')]);this['startAcw'](_0x10f80e[_0x543f('0x3c')]);}}catch(_0x36decc){logger[_0x543f('0x1c')](_0x543f('0x3d'),_0x36decc[_0x543f('0x2f')]);}};Acw[_0x543f('0x1e')][_0x543f('0xd')]=function(_0x12e589){try{if(this['channels'][_0x12e589['uniqueid']]&&this[_0x543f('0x8')][_0x12e589[_0x543f('0x18')]][_0x543f('0x3b')]){logger[_0x543f('0x19')](_0x543f('0x3e'),_0x12e589[_0x543f('0x18')]);this[_0x543f('0x3f')](_0x12e589[_0x543f('0x18')]);}else if(this[_0x543f('0x8')][_0x12e589[_0x543f('0x3c')]]&&this['channels'][_0x12e589[_0x543f('0x3c')]][_0x543f('0x3b')]){logger[_0x543f('0x19')](_0x543f('0x40'),_0x12e589[_0x543f('0x3c')]);this[_0x543f('0x3f')](_0x12e589[_0x543f('0x3c')]);}}catch(_0x1ae328){logger[_0x543f('0x1c')](_0x543f('0x41'),_0x1ae328[_0x543f('0x2f')]);}};Acw[_0x543f('0x1e')][_0x543f('0xf')]=function(_0x971fdd){try{if(!_['isNil'](this[_0x543f('0x8')][_0x971fdd['transfereeuniqueid']])){this[_0x543f('0x3f')](_0x971fdd[_0x543f('0x42')]);if(this['channels'][_0x971fdd[_0x543f('0x43')]]){this[_0x543f('0x8')][_0x971fdd[_0x543f('0x43')]][_0x543f('0x3b')]=!![];this[_0x543f('0x8')][_0x971fdd[_0x543f('0x44')]]=this['channels'][_0x971fdd[_0x543f('0x43')]];delete this['channels'][_0x971fdd[_0x543f('0x43')]];}}else if(!_['isNil'](this[_0x543f('0x8')][_0x971fdd['transfertargetuniqueid']])){this[_0x543f('0x3f')](_0x971fdd['transfertargetuniqueid']);if(this[_0x543f('0x8')][_0x971fdd[_0x543f('0x45')]]){this['channels'][_0x971fdd['origtransfereruniqueid']][_0x543f('0x3b')]=!![];this[_0x543f('0x8')][_0x971fdd[_0x543f('0x42')]]=this[_0x543f('0x8')][_0x971fdd[_0x543f('0x45')]];delete this[_0x543f('0x8')][_0x971fdd[_0x543f('0x45')]];}}}catch(_0x14dc54){logger[_0x543f('0x1c')](_0x543f('0x46'),_0x14dc54[_0x543f('0x2f')]);}};Acw['prototype'][_0x543f('0x47')]=function(_0x5c2b8b){try{if(this['channels'][_0x5c2b8b['transfereruniqueid']]){logger['info'](_0x543f('0x48'),JSON[_0x543f('0x36')](_0x5c2b8b[_0x543f('0x49')]));this['startAcw'](_0x5c2b8b[_0x543f('0x49')]);}else if(this[_0x543f('0x8')][_0x5c2b8b[_0x543f('0x4a')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x543f('0x36')](_0x5c2b8b['transfererlinkedid']));this[_0x543f('0x3f')](_0x5c2b8b['transfererlinkedid']);}}catch(_0x30cb75){logger[_0x543f('0x1c')](_0x543f('0x4b'),_0x30cb75[_0x543f('0x2f')]);}};Acw['prototype'][_0x543f('0xe')]=function(_0x3a3589){try{if(this[_0x543f('0x5')][_0x3a3589[_0x543f('0x31')]]&&this['voiceQueues'][_0x3a3589[_0x543f('0x31')]][_0x543f('0x4c')]==='all'){if(this['agents'][_0x3a3589[_0x543f('0x1f')]]){logger[_0x543f('0x19')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x3a3589[_0x543f('0x18')],_0x3a3589[_0x543f('0x1f')],_0x3a3589[_0x543f('0x31')]);return RpcUser[_0x543f('0x4d')](this[_0x543f('0x6')][_0x3a3589[_0x543f('0x1f')]],'Auto-Pause',_0x3a3589[_0x543f('0x18')]);}}}catch(_0x3d52c8){logger[_0x543f('0x1c')](_0x543f('0x4e'),_0x3d52c8['message']);}};module[_0x543f('0x4f')]=Acw;