1e44a2879ea5ffa236b07bf72b8e29b6e5a10fd8
[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 _0x5334=['[%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','updateAcw','catch','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','timers','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','lastPauseAt','timer','update','uniqueid','info','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','finally','prototype','startAcw','channels','interface','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','agents','resolve','getAgent','then','[%s][INPAUSE][AGENT:%s][QUEUE:%s]'];(function(_0xba0394,_0x2c6844){var _0x1789dd=function(_0x437c00){while(--_0x437c00){_0xba0394['push'](_0xba0394['shift']());}};_0x1789dd(++_0x2c6844);}(_0x5334,0x84));var _0x4533=function(_0x5c10b7,_0x5a7049){_0x5c10b7=_0x5c10b7-0x0;var _0xdb8e8d=_0x5334[_0x5c10b7];return _0xdb8e8d;};'use strict';var _=require(_0x4533('0x0'));var moment=require(_0x4533('0x1'));var ami=require(_0x4533('0x2'));var logger=require(_0x4533('0x3'))(_0x4533('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x4533('0x5'));function Acw(_0x5176b5){this[_0x4533('0x6')]=_0x5176b5[_0x4533('0x6')];this['agents']=_0x5176b5['agents'];this['timers']=_0x5176b5[_0x4533('0x7')];this['channels']={};ami['on']('agentconnect',this['syncAgentConnect'][_0x4533('0x8')](this));ami['on'](_0x4533('0x9'),this[_0x4533('0xa')][_0x4533('0x8')](this));ami['on'](_0x4533('0xb'),this[_0x4533('0xc')][_0x4533('0x8')](this));ami['on']('agentringnoanswer',this[_0x4533('0xd')][_0x4533('0x8')](this));ami['on'](_0x4533('0xe'),this[_0x4533('0xf')]['bind'](this));ami['on'](_0x4533('0x10'),this['syncBlindTransfer'][_0x4533('0x8')](this));ami['on'](_0x4533('0x11'),this[_0x4533('0x12')][_0x4533('0x8')](this));}function getDiff(_0x57ff74){var _0xdd4757=moment()[_0x4533('0x13')](0x0);var _0x187f05=moment(_0x57ff74)[_0x4533('0x13')](0x0);return _0xdd4757['diff'](_0x187f05,_0x4533('0x14'));}Acw['prototype']['updateAcw']=function(_0x466545,_0x34dea9){var _0x5da8b8=this;var _0x30c68c=getDiff(_0x5da8b8[_0x4533('0x7')][_0x466545][_0x4533('0x15')]);clearTimeout(_0x5da8b8['timers'][_0x466545][_0x4533('0x16')]);_0x5da8b8['timers'][_0x466545][_0x4533('0x16')]=![];return RpcVoiceAgentReport[_0x4533('0x17')]({'acwtime':_0x30c68c},_0x5da8b8['timers'][_0x466545][_0x4533('0x18')],_0x466545)['then'](function(_0x5c2c9c){logger[_0x4533('0x19')](_0x4533('0x1a'),_0x34dea9,_0x30c68c,_0x5c2c9c);})['catch'](function(_0x53fe43){logger[_0x4533('0x1b')](_0x4533('0x1c'),_0x34dea9,_0x53fe43);})[_0x4533('0x1d')](function(){delete _0x5da8b8[_0x4533('0x7')][_0x466545];});};Acw[_0x4533('0x1e')][_0x4533('0x1f')]=function(_0x12adde){try{var _0x5c3abb=this;var _0x231bae=this[_0x4533('0x20')][_0x12adde][_0x4533('0x21')];var _0x4aa438=this['channels'][_0x12adde][_0x4533('0x22')];var _0x11e93a=this['voiceQueues'][_0x4aa438];var _0x5dcfd2=![];var _0x307bdd=_0x4533('0x23');if(_0x11e93a[_0x4533('0x24')]&&_0x11e93a['mandatoryDispositionPause'][_0x4533('0x25')]){_0x5dcfd2=!![];_0x307bdd=_0x11e93a[_0x4533('0x26')][_0x4533('0x25')];}if(!_0x5c3abb[_0x4533('0x27')][_0x231bae]){return Promise[_0x4533('0x28')]();}return RpcUser[_0x4533('0x29')](_0x5c3abb[_0x4533('0x27')][_0x231bae]['id'])[_0x4533('0x2a')](function(_0x45ad98){if(!_0x45ad98||_0x45ad98['voicePause']){logger['info'](_0x4533('0x2b'),_0x12adde,_0x231bae,_0x4aa438);return;}logger['info'](_0x4533('0x2c'),_0x12adde,_0x231bae,_0x4aa438);var _0x4e2b80=_0x5c3abb[_0x4533('0x20')][_0x12adde][_0x4533('0x2d')]&&_0x5c3abb[_0x4533('0x20')][_0x12adde][_0x4533('0x2e')]?_0x5c3abb[_0x4533('0x20')][_0x12adde][_0x4533('0x2e')]:_0x12adde;return RpcUser[_0x4533('0x2f')](_0x5c3abb[_0x4533('0x27')][_0x231bae],_0x307bdd,_0x4e2b80);})[_0x4533('0x2a')](function(_0x43682f){if(_0x5dcfd2||!_0x43682f){return;}_0x5c3abb[_0x4533('0x7')][_0x231bae]={};logger[_0x4533('0x19')](_0x4533('0x30'),_0x12adde,_0x5c3abb['voiceQueues'][_0x4aa438][_0x4533('0x31')],_0x231bae,_0x4aa438);_0x5c3abb['timers'][_0x231bae][_0x4533('0x16')]=setTimeout(_0x5c3abb[_0x4533('0x32')][_0x4533('0x8')](_0x5c3abb,_0x231bae),_0x5c3abb[_0x4533('0x6')][_0x4aa438][_0x4533('0x31')]*0x3e8);_0x5c3abb[_0x4533('0x7')][_0x231bae][_0x4533('0x15')]=moment()[_0x4533('0x33')](_0x4533('0x34'));_0x5c3abb[_0x4533('0x7')][_0x231bae][_0x4533('0x18')]=_0x12adde;_0x5c3abb[_0x4533('0x7')][_0x231bae]['queue']=_0x4aa438;_0x5c3abb[_0x4533('0x7')][_0x231bae][_0x4533('0x35')]=_0x5c3abb[_0x4533('0x35')][_0x4533('0x8')](_0x5c3abb,_0x231bae,_0x12adde);})[_0x4533('0x36')](function(){logger['error'](_0x4533('0x30'),_0x12adde,_0x5c3abb[_0x4533('0x6')][_0x4aa438][_0x4533('0x31')],_0x231bae,_0x4aa438);})[_0x4533('0x1d')](function(){delete _0x5c3abb[_0x4533('0x20')][_0x12adde];});}catch(_0x171fc5){logger['error'](_0x4533('0x37'),_0x171fc5[_0x4533('0x38')]);}};Acw['prototype'][_0x4533('0x32')]=function(_0x1e028a){try{var _0x42807e=this;if(_0x42807e[_0x4533('0x7')][_0x1e028a]){_0x42807e[_0x4533('0x7')][_0x1e028a][_0x4533('0x16')]=![];var _0x424924=_0x42807e[_0x4533('0x7')][_0x1e028a][_0x4533('0x18')];var _0x1041d1=_0x42807e['timers'][_0x1e028a][_0x4533('0x22')];var _0x3373a8=_0x42807e[_0x4533('0x6')][_0x1041d1][_0x4533('0x31')];logger[_0x4533('0x19')](_0x4533('0x39'),_0x424924,_0x1e028a);RpcUser[_0x4533('0x3a')](this[_0x4533('0x27')][_0x1e028a]);RpcVoiceAgentReport[_0x4533('0x17')]({'acwtime':_0x3373a8,'agentacw':!![]},_0x424924,_0x1e028a)[_0x4533('0x2a')](function(_0x1890ad){logger[_0x4533('0x19')]('[%s][UPDATE][ACWTIME:%s]',_0x424924,_0x3373a8,_0x1890ad);})['catch'](function(_0x451e1b){logger['error'](_0x4533('0x1c'),_0x424924,_0x451e1b);});}else{logger[_0x4533('0x1b')](_0x4533('0x3b'),_0x1e028a);if(_0x42807e[_0x4533('0x7')]){logger[_0x4533('0x19')](_0x4533('0x3c'),JSON[_0x4533('0x3d')](_0x42807e[_0x4533('0x7')]));}}}catch(_0x11bc6b){logger[_0x4533('0x1b')](_0x4533('0x3e'),_0x11bc6b[_0x4533('0x38')]);}};Acw[_0x4533('0x1e')]['syncAgentConnect']=function(_0x1aaedc){try{if(this['voiceQueues'][_0x1aaedc['queue']]&&(this['voiceQueues'][_0x1aaedc['queue']][_0x4533('0x4')]||this[_0x4533('0x6')][_0x1aaedc[_0x4533('0x22')]][_0x4533('0x24')])){if(this['agents'][_0x1aaedc[_0x4533('0x21')]]){this[_0x4533('0x20')][_0x1aaedc[_0x4533('0x18')]]={'queue':_0x1aaedc[_0x4533('0x22')],'interface':_0x1aaedc[_0x4533('0x21')],'destlinkedid':_0x1aaedc[_0x4533('0x2e')]};}}}catch(_0x46b45c){logger['error'](_0x4533('0x3f'),_0x46b45c['message']);}};Acw['prototype'][_0x4533('0x12')]=function(_0x8cb52f){try{if(this[_0x4533('0x6')][_0x8cb52f[_0x4533('0x22')]]&&(this['voiceQueues'][_0x8cb52f['queue']][_0x4533('0x4')]||this['voiceQueues'][_0x8cb52f[_0x4533('0x22')]][_0x4533('0x24')])){if(this['agents'][_0x8cb52f['interface']]){this['channels'][_0x8cb52f['uniqueid']]={'queue':_0x8cb52f['queue'],'interface':_0x8cb52f[_0x4533('0x21')]};}}}catch(_0x4797a3){logger[_0x4533('0x1b')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4797a3[_0x4533('0x38')]);}};Acw['prototype']['syncHangupRequest']=function(_0xb46cca){try{if(this['channels'][_0xb46cca[_0x4533('0x18')]]&&_['isUndefined'](this[_0x4533('0x20')][_0xb46cca[_0x4533('0x18')]]['attended'])){logger[_0x4533('0x19')](_0x4533('0x40'),_0xb46cca[_0x4533('0x18')]);this[_0x4533('0x1f')](_0xb46cca[_0x4533('0x18')]);}else if(this['channels'][_0xb46cca[_0x4533('0x41')]]&&_[_0x4533('0x42')](this['channels'][_0xb46cca[_0x4533('0x41')]][_0x4533('0x2d')])){logger[_0x4533('0x19')](_0x4533('0x43'),_0xb46cca[_0x4533('0x41')]);this[_0x4533('0x1f')](_0xb46cca[_0x4533('0x41')]);}}catch(_0x2ce254){logger[_0x4533('0x1b')](_0x4533('0x44'),_0x2ce254[_0x4533('0x38')]);}};Acw[_0x4533('0x1e')][_0x4533('0xc')]=function(_0x36297a){try{if(this[_0x4533('0x20')][_0x36297a[_0x4533('0x18')]]&&this['channels'][_0x36297a[_0x4533('0x18')]]['attended']){logger['info'](_0x4533('0x45'),_0x36297a[_0x4533('0x18')]);this[_0x4533('0x1f')](_0x36297a[_0x4533('0x18')]);}else if(this['channels'][_0x36297a[_0x4533('0x41')]]&&this['channels'][_0x36297a['linkedid']][_0x4533('0x2d')]){logger['info'](_0x4533('0x46'),_0x36297a['linkedid']);this[_0x4533('0x1f')](_0x36297a[_0x4533('0x41')]);}}catch(_0x3847cb){logger[_0x4533('0x1b')](_0x4533('0x47'),_0x3847cb['message']);}};Acw[_0x4533('0x1e')][_0x4533('0xf')]=function(_0x3caa6d){try{if(!_['isNil'](this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x48')]])){this['startAcw'](_0x3caa6d[_0x4533('0x48')]);if(this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x49')]]){this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x49')]]['attended']=!![];this[_0x4533('0x20')][_0x3caa6d['transfertargetuniqueid']]=this['channels'][_0x3caa6d[_0x4533('0x49')]];delete this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x49')]];}}else if(!_[_0x4533('0x4a')](this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x4b')]])){this[_0x4533('0x1f')](_0x3caa6d[_0x4533('0x4b')]);if(this[_0x4533('0x20')][_0x3caa6d[_0x4533('0x4c')]]){this[_0x4533('0x20')][_0x3caa6d['origtransfereruniqueid']][_0x4533('0x2d')]=!![];this['channels'][_0x3caa6d[_0x4533('0x48')]]=this['channels'][_0x3caa6d[_0x4533('0x4c')]];delete this['channels'][_0x3caa6d[_0x4533('0x4c')]];}}}catch(_0xb55728){logger[_0x4533('0x1b')](_0x4533('0x4d'),_0xb55728[_0x4533('0x38')]);}};Acw[_0x4533('0x1e')][_0x4533('0x4e')]=function(_0xef36a6){try{if(this['channels'][_0xef36a6['transfereruniqueid']]){logger[_0x4533('0x19')](_0x4533('0x4f'),JSON['stringify'](_0xef36a6[_0x4533('0x50')]));this[_0x4533('0x1f')](_0xef36a6['transfereruniqueid']);}else if(this['channels'][_0xef36a6['transfererlinkedid']]){logger['info'](_0x4533('0x51'),JSON[_0x4533('0x3d')](_0xef36a6[_0x4533('0x52')]));this[_0x4533('0x1f')](_0xef36a6[_0x4533('0x52')]);}}catch(_0xbf35f7){logger[_0x4533('0x1b')](_0x4533('0x53'),_0xbf35f7['message']);}};Acw[_0x4533('0x1e')][_0x4533('0xd')]=function(_0x1b0414){try{if(this[_0x4533('0x6')][_0x1b0414['queue']]&&this['voiceQueues'][_0x1b0414['queue']][_0x4533('0x54')]==='all'){if(this[_0x4533('0x27')][_0x1b0414[_0x4533('0x21')]]){logger[_0x4533('0x19')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x1b0414[_0x4533('0x18')],_0x1b0414['interface'],_0x1b0414[_0x4533('0x22')]);return RpcUser['savePause'](this[_0x4533('0x27')][_0x1b0414[_0x4533('0x21')]],_0x4533('0x55'),_0x1b0414[_0x4533('0x18')]);}}}catch(_0x6f6025){logger['error'](_0x4533('0x56'),_0x6f6025['message']);}};module[_0x4533('0x57')]=Acw;