beb2eae297d9555fc024b426d35e9a207e4ce3ff
[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 _0x4fad=['hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','prototype','updateAcw','lastPauseAt','timer','uniqueid','info','[%s][UPDATE][ACWTIME:%s]','catch','error','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','paused','stopAcw','acwTimeout','YYYY-MM-DD\x20HH:mm:ss','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','destlinkedid','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest'];(function(_0x337d5d,_0x359b4d){var _0x3c2a16=function(_0x1d7e7e){while(--_0x1d7e7e){_0x337d5d['push'](_0x337d5d['shift']());}};_0x3c2a16(++_0x359b4d);}(_0x4fad,0x14a));var _0xd4fa=function(_0x435ee6,_0xdd164e){_0x435ee6=_0x435ee6-0x0;var _0x4d2878=_0x4fad[_0x435ee6];return _0x4d2878;};'use strict';var _=require(_0xd4fa('0x0'));var moment=require(_0xd4fa('0x1'));var ami=require(_0xd4fa('0x2'));var logger=require(_0xd4fa('0x3'))(_0xd4fa('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xd4fa('0x5'));function Acw(_0x2598fd){this['voiceQueues']=_0x2598fd[_0xd4fa('0x6')];this['agents']=_0x2598fd[_0xd4fa('0x7')];this[_0xd4fa('0x8')]=_0x2598fd[_0xd4fa('0x8')];this[_0xd4fa('0x9')]={};ami['on']('agentconnect',this[_0xd4fa('0xa')][_0xd4fa('0xb')](this));ami['on'](_0xd4fa('0xc'),this[_0xd4fa('0xd')][_0xd4fa('0xb')](this));ami['on'](_0xd4fa('0xe'),this[_0xd4fa('0xf')][_0xd4fa('0xb')](this));ami['on'](_0xd4fa('0x10'),this[_0xd4fa('0x11')][_0xd4fa('0xb')](this));ami['on']('attendedtransfer',this[_0xd4fa('0x12')][_0xd4fa('0xb')](this));ami['on'](_0xd4fa('0x13'),this[_0xd4fa('0x14')]['bind'](this));ami['on'](_0xd4fa('0x15'),this['syncAgentConnectPreview'][_0xd4fa('0xb')](this));}function getDiff(_0x22806c){var _0x3c0628=moment()[_0xd4fa('0x16')](0x0);var _0x13bdbe=moment(_0x22806c)[_0xd4fa('0x16')](0x0);return _0x3c0628[_0xd4fa('0x17')](_0x13bdbe,'seconds');}Acw[_0xd4fa('0x18')][_0xd4fa('0x19')]=function(_0x44b380,_0x3a9291){var _0x5790d9=this;var _0x3db67f=getDiff(_0x5790d9[_0xd4fa('0x8')][_0x44b380][_0xd4fa('0x1a')]);clearTimeout(_0x5790d9[_0xd4fa('0x8')][_0x44b380][_0xd4fa('0x1b')]);_0x5790d9[_0xd4fa('0x8')][_0x44b380][_0xd4fa('0x1b')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x3db67f},_0x5790d9[_0xd4fa('0x8')][_0x44b380][_0xd4fa('0x1c')],_0x44b380)['then'](function(_0x2ed63e){logger[_0xd4fa('0x1d')](_0xd4fa('0x1e'),_0x3a9291,_0x3db67f,_0x2ed63e);})[_0xd4fa('0x1f')](function(_0x16551a){logger[_0xd4fa('0x20')]('[%s][UPDATE][ERRORS:%s]',_0x3a9291,_0x16551a);})['finally'](function(){delete _0x5790d9[_0xd4fa('0x8')][_0x44b380];});};Acw[_0xd4fa('0x18')][_0xd4fa('0x21')]=function(_0x325463){try{var _0x1b88c7=this;var _0x516e01=this[_0xd4fa('0x9')][_0x325463][_0xd4fa('0x22')];var _0x25280c=this[_0xd4fa('0x9')][_0x325463][_0xd4fa('0x23')];var _0xaef2f4=this[_0xd4fa('0x6')][_0x25280c];var _0x53afdd=![];var _0x1016a8=_0xd4fa('0x24');if(_0xaef2f4[_0xd4fa('0x25')]&&_0xaef2f4[_0xd4fa('0x26')]['name']){_0x53afdd=!![];_0x1016a8=_0xaef2f4[_0xd4fa('0x26')][_0xd4fa('0x27')];}return ami['Action']({'action':_0xd4fa('0x28'),'interface':_0x516e01,'paused':!![],'reason':_0x1016a8})[_0xd4fa('0x29')](function(){if(_0x1b88c7[_0xd4fa('0x7')][_0x516e01]){return RpcUser[_0xd4fa('0x2a')](_0x1b88c7['agents'][_0x516e01]['id'])['then'](function(_0x1f8957){if(!_0x1f8957||_0x1f8957[_0xd4fa('0x2b')]){logger[_0xd4fa('0x1d')](_0xd4fa('0x2c'),_0x325463,_0x516e01,_0x25280c);return;}logger[_0xd4fa('0x1d')](_0xd4fa('0x2d'),_0x325463,_0x516e01,_0x25280c);var _0x361073=_0x1b88c7[_0xd4fa('0x9')][_0x325463][_0xd4fa('0x2e')]&&_0x1b88c7[_0xd4fa('0x9')][_0x325463]['destlinkedid']?_0x1b88c7['channels'][_0x325463]['destlinkedid']:_0x325463;return RpcUser[_0xd4fa('0x2f')](_0x1b88c7['agents'][_0x516e01],_0x1016a8,_0x361073)[_0xd4fa('0x29')](function(_0x543b22){_0x1b88c7['voiceQueues'][_0x25280c]['available']-=0x1;_0x1b88c7[_0xd4fa('0x6')][_0x25280c][_0xd4fa('0x30')]+=0x1;return _0x543b22;});})['then'](function(_0x246e33){if(_0x53afdd||!_0x246e33){return;}_0x1b88c7[_0xd4fa('0x8')][_0x516e01]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x325463,_0x1b88c7['voiceQueues'][_0x25280c]['acwTimeout'],_0x516e01,_0x25280c);_0x1b88c7['timers'][_0x516e01][_0xd4fa('0x1b')]=setTimeout(_0x1b88c7[_0xd4fa('0x31')][_0xd4fa('0xb')](_0x1b88c7,_0x516e01),_0x1b88c7['voiceQueues'][_0x25280c][_0xd4fa('0x32')]*0x3e8);_0x1b88c7[_0xd4fa('0x8')][_0x516e01][_0xd4fa('0x1a')]=moment()['format'](_0xd4fa('0x33'));_0x1b88c7['timers'][_0x516e01][_0xd4fa('0x1c')]=_0x325463;_0x1b88c7[_0xd4fa('0x8')][_0x516e01][_0xd4fa('0x23')]=_0x25280c;_0x1b88c7[_0xd4fa('0x8')][_0x516e01][_0xd4fa('0x19')]=_0x1b88c7[_0xd4fa('0x19')][_0xd4fa('0xb')](_0x1b88c7,_0x516e01,_0x325463);});}})['catch'](function(){logger[_0xd4fa('0x20')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x325463,_0x1b88c7[_0xd4fa('0x6')][_0x25280c][_0xd4fa('0x32')],_0x516e01,_0x25280c);})[_0xd4fa('0x34')](function(){delete _0x1b88c7['channels'][_0x325463];});}catch(_0x458595){logger[_0xd4fa('0x20')](_0xd4fa('0x35'),_0x458595[_0xd4fa('0x36')]);}};Acw['prototype'][_0xd4fa('0x31')]=function(_0x5f3401){try{var _0x250841=this;if(_0x250841[_0xd4fa('0x8')][_0x5f3401]){_0x250841['timers'][_0x5f3401][_0xd4fa('0x1b')]=![];var _0x5edd43=_0x250841[_0xd4fa('0x8')][_0x5f3401][_0xd4fa('0x1c')];var _0x2bb77f=_0x250841[_0xd4fa('0x8')][_0x5f3401][_0xd4fa('0x23')];var _0x343890=_0x250841[_0xd4fa('0x6')][_0x2bb77f][_0xd4fa('0x32')];logger[_0xd4fa('0x1d')](_0xd4fa('0x37'),_0x5edd43,_0x5f3401);RpcUser[_0xd4fa('0x2a')](this[_0xd4fa('0x7')][_0x5f3401]['id'])[_0xd4fa('0x29')](function(_0x115ddc){if(_0x115ddc['pauseType']===_0xd4fa('0x24')){return RpcUser[_0xd4fa('0x38')](_0x250841['agents'][_0x5f3401]);}});RpcVoiceAgentReport['update']({'acwtime':_0x343890,'agentacw':!![]},_0x5edd43,_0x5f3401)[_0xd4fa('0x29')](function(_0x2cf7a1){logger[_0xd4fa('0x1d')](_0xd4fa('0x1e'),_0x5edd43,_0x343890,_0x2cf7a1);})[_0xd4fa('0x1f')](function(_0x4ad8b1){logger[_0xd4fa('0x20')](_0xd4fa('0x39'),_0x5edd43,_0x4ad8b1);});}else{logger[_0xd4fa('0x20')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x5f3401);if(_0x250841[_0xd4fa('0x8')]){logger[_0xd4fa('0x1d')](_0xd4fa('0x3a'),JSON[_0xd4fa('0x3b')](_0x250841['timers']));}}}catch(_0x2160f6){logger[_0xd4fa('0x20')](_0xd4fa('0x3c'),_0x2160f6[_0xd4fa('0x36')]);}};Acw[_0xd4fa('0x18')]['syncAgentConnect']=function(_0x179111){try{if(this['voiceQueues'][_0x179111['queue']]&&(this['voiceQueues'][_0x179111[_0xd4fa('0x23')]]['acw']||this[_0xd4fa('0x6')][_0x179111[_0xd4fa('0x23')]][_0xd4fa('0x25')])){if(this[_0xd4fa('0x7')][_0x179111[_0xd4fa('0x22')]]){this[_0xd4fa('0x9')][_0x179111[_0xd4fa('0x1c')]]={'queue':_0x179111[_0xd4fa('0x23')],'interface':_0x179111[_0xd4fa('0x22')],'destlinkedid':_0x179111[_0xd4fa('0x3d')]};}}}catch(_0xdd7fb5){logger[_0xd4fa('0x20')](_0xd4fa('0x3e'),_0xdd7fb5['message']);}};Acw[_0xd4fa('0x18')][_0xd4fa('0x3f')]=function(_0x25cac6){try{if(this[_0xd4fa('0x6')][_0x25cac6[_0xd4fa('0x23')]]&&(this[_0xd4fa('0x6')][_0x25cac6[_0xd4fa('0x23')]]['acw']||this['voiceQueues'][_0x25cac6[_0xd4fa('0x23')]][_0xd4fa('0x25')])){if(this[_0xd4fa('0x7')][_0x25cac6[_0xd4fa('0x22')]]){this[_0xd4fa('0x9')][_0x25cac6[_0xd4fa('0x1c')]]={'queue':_0x25cac6[_0xd4fa('0x23')],'interface':_0x25cac6[_0xd4fa('0x22')]};}}}catch(_0x4739ff){logger['error'](_0xd4fa('0x40'),_0x4739ff[_0xd4fa('0x36')]);}};Acw[_0xd4fa('0x18')][_0xd4fa('0xd')]=function(_0x551b4a){try{if(this[_0xd4fa('0x9')][_0x551b4a[_0xd4fa('0x1c')]]&&_[_0xd4fa('0x41')](this[_0xd4fa('0x9')][_0x551b4a[_0xd4fa('0x1c')]][_0xd4fa('0x2e')])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x551b4a['uniqueid']);this[_0xd4fa('0x21')](_0x551b4a[_0xd4fa('0x1c')]);}else if(this['channels'][_0x551b4a['linkedid']]&&_[_0xd4fa('0x41')](this[_0xd4fa('0x9')][_0x551b4a[_0xd4fa('0x42')]]['attended'])){logger[_0xd4fa('0x1d')](_0xd4fa('0x43'),_0x551b4a[_0xd4fa('0x42')]);this[_0xd4fa('0x21')](_0x551b4a[_0xd4fa('0x42')]);}}catch(_0x20d428){logger['error'](_0xd4fa('0x44'),_0x20d428[_0xd4fa('0x36')]);}};Acw[_0xd4fa('0x18')][_0xd4fa('0xf')]=function(_0x5a522f){try{if(this[_0xd4fa('0x9')][_0x5a522f['uniqueid']]&&this['channels'][_0x5a522f['uniqueid']][_0xd4fa('0x2e')]){logger[_0xd4fa('0x1d')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5a522f[_0xd4fa('0x1c')]);this['startAcw'](_0x5a522f[_0xd4fa('0x1c')]);}else if(this[_0xd4fa('0x9')][_0x5a522f[_0xd4fa('0x42')]]&&this['channels'][_0x5a522f['linkedid']]['attended']){logger['info'](_0xd4fa('0x45'),_0x5a522f[_0xd4fa('0x42')]);this['startAcw'](_0x5a522f[_0xd4fa('0x42')]);}}catch(_0x315e22){logger[_0xd4fa('0x20')]('[ACW][syncHangup]\x20%s',_0x315e22['message']);}};Acw[_0xd4fa('0x18')][_0xd4fa('0x12')]=function(_0x268a9c){try{if(!_[_0xd4fa('0x46')](this[_0xd4fa('0x9')][_0x268a9c['transfereeuniqueid']])){this[_0xd4fa('0x21')](_0x268a9c[_0xd4fa('0x47')]);if(this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x48')]]){this['channels'][_0x268a9c['secondtransfereruniqueid']]['attended']=!![];this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x49')]]=this[_0xd4fa('0x9')][_0x268a9c['secondtransfereruniqueid']];delete this['channels'][_0x268a9c[_0xd4fa('0x48')]];}}else if(!_[_0xd4fa('0x46')](this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x49')]])){this[_0xd4fa('0x21')](_0x268a9c[_0xd4fa('0x49')]);if(this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x4a')]]){this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x4a')]][_0xd4fa('0x2e')]=!![];this['channels'][_0x268a9c[_0xd4fa('0x47')]]=this['channels'][_0x268a9c['origtransfereruniqueid']];delete this[_0xd4fa('0x9')][_0x268a9c[_0xd4fa('0x4a')]];}}}catch(_0x2e52a3){logger[_0xd4fa('0x20')](_0xd4fa('0x4b'),_0x2e52a3[_0xd4fa('0x36')]);}};Acw[_0xd4fa('0x18')][_0xd4fa('0x14')]=function(_0x17a98d){try{if(this['channels'][_0x17a98d[_0xd4fa('0x4c')]]){logger[_0xd4fa('0x1d')](_0xd4fa('0x4d'),JSON[_0xd4fa('0x3b')](_0x17a98d[_0xd4fa('0x4c')]));this[_0xd4fa('0x21')](_0x17a98d[_0xd4fa('0x4c')]);}else if(this[_0xd4fa('0x9')][_0x17a98d[_0xd4fa('0x4e')]]){logger[_0xd4fa('0x1d')](_0xd4fa('0x4f'),JSON[_0xd4fa('0x3b')](_0x17a98d['transfererlinkedid']));this[_0xd4fa('0x21')](_0x17a98d['transfererlinkedid']);}}catch(_0x49f522){logger[_0xd4fa('0x20')](_0xd4fa('0x50'),_0x49f522[_0xd4fa('0x36')]);}};Acw[_0xd4fa('0x18')][_0xd4fa('0x11')]=function(_0x559310){try{if(this[_0xd4fa('0x6')][_0x559310[_0xd4fa('0x23')]]&&this[_0xd4fa('0x6')][_0x559310[_0xd4fa('0x23')]]['autopause']===_0xd4fa('0x51')){if(this['agents'][_0x559310[_0xd4fa('0x22')]]){logger[_0xd4fa('0x1d')](_0xd4fa('0x52'),_0x559310[_0xd4fa('0x1c')],_0x559310[_0xd4fa('0x22')],_0x559310[_0xd4fa('0x23')]);return RpcUser['savePause'](this[_0xd4fa('0x7')][_0x559310[_0xd4fa('0x22')]],_0xd4fa('0x53'),_0x559310[_0xd4fa('0x1c')]);}}}catch(_0x38f4b3){logger[_0xd4fa('0x20')](_0xd4fa('0x54'),_0x38f4b3[_0xd4fa('0x36')]);}};module[_0xd4fa('0x55')]=Acw;