0ac9e12c6953c899023ad4586c3ec5c72ef0ceaa
[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 _0x368e=['[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','info','acwTimeout','timer','lastPauseAt','format','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','stopAcw','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','syncHangup','attended','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','milliseconds','seconds','startAcw','interface','queue','mandatoryDispositionPause','Action','QueuePause','then','getAgent'];(function(_0x2cec77,_0x3d9a50){var _0x4f777d=function(_0x10754c){while(--_0x10754c){_0x2cec77['push'](_0x2cec77['shift']());}};_0x4f777d(++_0x3d9a50);}(_0x368e,0xc9));var _0xe368=function(_0x2b1cdd,_0x1c47ef){_0x2b1cdd=_0x2b1cdd-0x0;var _0xc554f2=_0x368e[_0x2b1cdd];return _0xc554f2;};'use strict';var util=require(_0xe368('0x0'));var _=require(_0xe368('0x1'));var moment=require(_0xe368('0x2'));var ami=require(_0xe368('0x3'));var logger=require('../../../config/logger')(_0xe368('0x4'));var RpcUser=require(_0xe368('0x5'));var RpcVoiceAgentReport=require(_0xe368('0x6'));function Acw(_0xfd380e){this[_0xe368('0x7')]=_0xfd380e[_0xe368('0x7')];this[_0xe368('0x8')]=_0xfd380e[_0xe368('0x8')];this['timers']=_0xfd380e[_0xe368('0x9')];this[_0xe368('0xa')]={};ami['on']('agentconnect',this[_0xe368('0xb')][_0xe368('0xc')](this));ami['on'](_0xe368('0xd'),this[_0xe368('0xe')][_0xe368('0xc')](this));ami['on']('hangup',this['syncHangup'][_0xe368('0xc')](this));ami['on'](_0xe368('0xf'),this[_0xe368('0x10')]['bind'](this));ami['on'](_0xe368('0x11'),this[_0xe368('0x12')][_0xe368('0xc')](this));ami['on']('blindtransfer',this[_0xe368('0x13')][_0xe368('0xc')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0xe368('0xc')](this));}function getDiff(_0x323b83){var _0xa9d705=moment()[_0xe368('0x14')](0x0);var _0xa76244=moment(_0x323b83)[_0xe368('0x14')](0x0);return _0xa9d705['diff'](_0xa76244,_0xe368('0x15'));}Acw['prototype'][_0xe368('0x16')]=function(_0x36ec62){try{var _0x2753ac=this;var _0x2d6d29=this[_0xe368('0xa')][_0x36ec62][_0xe368('0x17')];var _0x548317=this[_0xe368('0xa')][_0x36ec62][_0xe368('0x18')];var _0x123ec0=this[_0xe368('0x7')][_0x548317];var _0x346bb7=![];var _0x1d59d4='ACW';if(_0x123ec0['mandatoryDisposition']){if(_0x123ec0['mandatoryDispositionPause']['name']){_0x346bb7=!![];_0x1d59d4=_0x123ec0[_0xe368('0x19')]['name'];}}ami[_0xe368('0x1a')]({'action':_0xe368('0x1b'),'interface':_0x2d6d29,'paused':!![],'reason':_0x1d59d4})[_0xe368('0x1c')](function(_0x2055e5){if(_0x2753ac[_0xe368('0x8')][_0x2d6d29]){return RpcUser[_0xe368('0x1d')](_0x2753ac[_0xe368('0x8')][_0x2d6d29]['id'])[_0xe368('0x1c')](function(_0x50de31){if(_0x50de31&&!_0x50de31['voicePause']){logger['info'](_0xe368('0x1e'),_0x36ec62,_0x2d6d29,_0x548317);var _0x447ffa=_0x2753ac['channels'][_0x36ec62]['attended']&&_0x2753ac['channels'][_0x36ec62]['destlinkedid']?_0x2753ac['channels'][_0x36ec62][_0xe368('0x1f')]:_0x36ec62;return RpcUser['savePause'](_0x2753ac[_0xe368('0x8')][_0x2d6d29],_0x1d59d4,_0x447ffa)[_0xe368('0x1c')](function(_0x169aed){if(!_0x346bb7){_0x2753ac[_0xe368('0x9')][_0x2d6d29]={};logger[_0xe368('0x20')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x36ec62,_0x2753ac[_0xe368('0x7')][_0x548317][_0xe368('0x21')],_0x2d6d29,_0x548317);_0x2753ac[_0xe368('0x9')][_0x2d6d29][_0xe368('0x22')]=setTimeout(_0x2753ac['stopAcw'][_0xe368('0xc')](_0x2753ac,_0x2d6d29),_0x2753ac[_0xe368('0x7')][_0x548317][_0xe368('0x21')]*0x3e8);_0x2753ac['timers'][_0x2d6d29][_0xe368('0x23')]=moment()[_0xe368('0x24')]('YYYY-MM-DD\x20HH:mm:ss');_0x2753ac[_0xe368('0x9')][_0x2d6d29][_0xe368('0x25')]=_0x36ec62;_0x2753ac[_0xe368('0x9')][_0x2d6d29][_0xe368('0x18')]=_0x548317;_0x2753ac[_0xe368('0x9')][_0x2d6d29]['updateAcw']=function(){var _0x4d3486=getDiff(_0x2753ac[_0xe368('0x9')][_0x2d6d29]['lastPauseAt']);clearTimeout(_0x2753ac[_0xe368('0x9')][_0x2d6d29]['timer']);_0x2753ac[_0xe368('0x9')][_0x2d6d29]['timer']=![];RpcVoiceAgentReport[_0xe368('0x26')]({'acwtime':_0x4d3486},_0x2753ac['timers'][_0x2d6d29][_0xe368('0x25')],_0x2d6d29)['then'](function(_0x155237){logger[_0xe368('0x20')](_0xe368('0x27'),_0x36ec62,_0x4d3486,_0x155237);})[_0xe368('0x28')](function(_0x240a3b){logger[_0xe368('0x29')](_0xe368('0x2a'),_0x36ec62,_0x240a3b);});delete _0x2753ac[_0xe368('0x9')][_0x2d6d29];};}});}else{logger[_0xe368('0x20')](_0xe368('0x2b'),_0x36ec62,_0x2d6d29,_0x548317);}});}})[_0xe368('0x28')](function(_0x4a128c){logger['error'](_0xe368('0x2c'),_0x36ec62,_0x2753ac['voiceQueues'][_0x548317][_0xe368('0x21')],_0x2d6d29,_0x548317);})[_0xe368('0x2d')](function(){delete _0x2753ac[_0xe368('0xa')][_0x36ec62];});}catch(_0x4c65c6){logger[_0xe368('0x29')](_0xe368('0x2e'),_0x4c65c6[_0xe368('0x2f')]);}};Acw[_0xe368('0x30')][_0xe368('0x31')]=function(_0x40c6a6){try{var _0x59af88=this;if(_0x59af88[_0xe368('0x9')][_0x40c6a6]){_0x59af88['timers'][_0x40c6a6][_0xe368('0x22')]=![];var _0x39b67d=_0x59af88[_0xe368('0x9')][_0x40c6a6][_0xe368('0x25')];var _0x1016d8=_0x59af88[_0xe368('0x9')][_0x40c6a6][_0xe368('0x18')];var _0x12703c=_0x59af88[_0xe368('0x7')][_0x1016d8][_0xe368('0x21')];logger[_0xe368('0x20')]('[%s][TIMER][STOP][AGENT:%s]',_0x39b67d,_0x40c6a6);RpcUser['saveUnpause'](this['agents'][_0x40c6a6]);RpcVoiceAgentReport[_0xe368('0x26')]({'acwtime':_0x12703c,'agentacw':!![]},_0x39b67d,_0x40c6a6)[_0xe368('0x1c')](function(_0x31e06e){logger[_0xe368('0x20')](_0xe368('0x27'),_0x39b67d,_0x12703c,_0x31e06e);})[_0xe368('0x28')](function(_0x155c3a){logger['error'](_0xe368('0x2a'),_0x39b67d,_0x155c3a);});}else{logger[_0xe368('0x29')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x40c6a6);if(_0x59af88[_0xe368('0x9')]){logger[_0xe368('0x20')](_0xe368('0x32'),JSON[_0xe368('0x33')](_0x59af88[_0xe368('0x9')]));}}}catch(_0xea5660){logger[_0xe368('0x29')](_0xe368('0x34'),_0xea5660[_0xe368('0x2f')]);}};Acw[_0xe368('0x30')][_0xe368('0xb')]=function(_0x385338){try{if(this['voiceQueues'][_0x385338[_0xe368('0x18')]]&&(this['voiceQueues'][_0x385338[_0xe368('0x18')]][_0xe368('0x4')]||this[_0xe368('0x7')][_0x385338[_0xe368('0x18')]][_0xe368('0x35')])){if(this['agents'][_0x385338[_0xe368('0x17')]]){this['channels'][_0x385338[_0xe368('0x25')]]={'queue':_0x385338[_0xe368('0x18')],'interface':_0x385338['interface'],'destlinkedid':_0x385338['destlinkedid']};}}}catch(_0x2bebfb){logger['error'](_0xe368('0x36'),_0x2bebfb['message']);}};Acw['prototype'][_0xe368('0x37')]=function(_0x2275da){try{if(this[_0xe368('0x7')][_0x2275da[_0xe368('0x18')]]&&(this[_0xe368('0x7')][_0x2275da[_0xe368('0x18')]][_0xe368('0x4')]||this['voiceQueues'][_0x2275da[_0xe368('0x18')]][_0xe368('0x35')])){if(this[_0xe368('0x8')][_0x2275da[_0xe368('0x17')]]){this[_0xe368('0xa')][_0x2275da['uniqueid']]={'queue':_0x2275da[_0xe368('0x18')],'interface':_0x2275da['interface']};}}}catch(_0x1a824d){logger[_0xe368('0x29')]('[ACW][syncAgentConnectPreview]\x20%s',_0x1a824d['message']);}};Acw[_0xe368('0x30')][_0xe368('0xe')]=function(_0x3bad85){try{if(this[_0xe368('0xa')][_0x3bad85[_0xe368('0x25')]]&&_[_0xe368('0x38')](this[_0xe368('0xa')][_0x3bad85['uniqueid']]['attended'])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x3bad85[_0xe368('0x25')]);this['startAcw'](_0x3bad85[_0xe368('0x25')]);}else if(this[_0xe368('0xa')][_0x3bad85[_0xe368('0x39')]]&&_[_0xe368('0x38')](this[_0xe368('0xa')][_0x3bad85[_0xe368('0x39')]]['attended'])){logger[_0xe368('0x20')](_0xe368('0x3a'),_0x3bad85[_0xe368('0x39')]);this[_0xe368('0x16')](_0x3bad85[_0xe368('0x39')]);}}catch(_0x39b75a){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x39b75a[_0xe368('0x2f')]);}};Acw['prototype'][_0xe368('0x3b')]=function(_0x434223){try{if(this[_0xe368('0xa')][_0x434223[_0xe368('0x25')]]&&this[_0xe368('0xa')][_0x434223[_0xe368('0x25')]][_0xe368('0x3c')]){logger[_0xe368('0x20')](_0xe368('0x3d'),_0x434223[_0xe368('0x25')]);this[_0xe368('0x16')](_0x434223['uniqueid']);}else if(this[_0xe368('0xa')][_0x434223[_0xe368('0x39')]]&&this[_0xe368('0xa')][_0x434223[_0xe368('0x39')]][_0xe368('0x3c')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x434223['linkedid']);this[_0xe368('0x16')](_0x434223[_0xe368('0x39')]);}}catch(_0x162864){logger[_0xe368('0x29')](_0xe368('0x3e'),_0x162864[_0xe368('0x2f')]);}};Acw[_0xe368('0x30')][_0xe368('0x12')]=function(_0x1c437f){try{if(!_[_0xe368('0x3f')](this[_0xe368('0xa')][_0x1c437f[_0xe368('0x40')]])){this[_0xe368('0x16')](_0x1c437f[_0xe368('0x40')]);if(this['channels'][_0x1c437f[_0xe368('0x41')]]){this[_0xe368('0xa')][_0x1c437f[_0xe368('0x41')]]['attended']=!![];this[_0xe368('0xa')][_0x1c437f['transfertargetuniqueid']]=this[_0xe368('0xa')][_0x1c437f[_0xe368('0x41')]];delete this[_0xe368('0xa')][_0x1c437f[_0xe368('0x41')]];}}else if(!_['isNil'](this[_0xe368('0xa')][_0x1c437f[_0xe368('0x42')]])){this['startAcw'](_0x1c437f['transfertargetuniqueid']);if(this['channels'][_0x1c437f[_0xe368('0x43')]]){this[_0xe368('0xa')][_0x1c437f[_0xe368('0x43')]][_0xe368('0x3c')]=!![];this[_0xe368('0xa')][_0x1c437f['transfereeuniqueid']]=this[_0xe368('0xa')][_0x1c437f['origtransfereruniqueid']];delete this[_0xe368('0xa')][_0x1c437f[_0xe368('0x43')]];}}}catch(_0x15fca2){logger[_0xe368('0x29')](_0xe368('0x44'),_0x15fca2[_0xe368('0x2f')]);}};Acw[_0xe368('0x30')]['syncBlindTransfer']=function(_0x3098ac){try{if(this[_0xe368('0xa')][_0x3098ac[_0xe368('0x45')]]){logger['info'](_0xe368('0x46'),JSON[_0xe368('0x33')](_0x3098ac[_0xe368('0x45')]));this['startAcw'](_0x3098ac[_0xe368('0x45')]);}else if(this[_0xe368('0xa')][_0x3098ac[_0xe368('0x47')]]){logger[_0xe368('0x20')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xe368('0x33')](_0x3098ac[_0xe368('0x47')]));this['startAcw'](_0x3098ac[_0xe368('0x47')]);}}catch(_0x598a4c){logger[_0xe368('0x29')](_0xe368('0x48'),_0x598a4c[_0xe368('0x2f')]);}};Acw[_0xe368('0x30')][_0xe368('0x10')]=function(_0x32c52b){try{if(this[_0xe368('0x7')][_0x32c52b[_0xe368('0x18')]]&&this['voiceQueues'][_0x32c52b[_0xe368('0x18')]]['autopause']===_0xe368('0x49')){if(this[_0xe368('0x8')][_0x32c52b[_0xe368('0x17')]]){logger[_0xe368('0x20')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x32c52b[_0xe368('0x25')],_0x32c52b[_0xe368('0x17')],_0x32c52b[_0xe368('0x18')]);return RpcUser[_0xe368('0x4a')](this[_0xe368('0x8')][_0x32c52b[_0xe368('0x17')]],'Auto-Pause',_0x32c52b['uniqueid']);}}}catch(_0x3323ee){logger[_0xe368('0x29')](_0xe368('0x4b'),_0x3323ee[_0xe368('0x2f')]);}};module[_0xe368('0x4c')]=Acw;