05bddc46a227e4cf26b00e3c8e532a3260845bde
[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 _0x4bc3=['syncHangup','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','prototype','startAcw','channels','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','acwTimeout','finally','[ACW][START]\x20%s','message','[TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','acw','interface','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]'];(function(_0x25ccb6,_0x429ba4){var _0x3c8292=function(_0x15a7cf){while(--_0x15a7cf){_0x25ccb6['push'](_0x25ccb6['shift']());}};_0x3c8292(++_0x429ba4);}(_0x4bc3,0x16e));var _0x34bc=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x4bc3[_0x2e4aa2];return _0x5e6092;};'use strict';var util=require(_0x34bc('0x0'));var _=require(_0x34bc('0x1'));var moment=require('moment');var ami=require(_0x34bc('0x2'));var logger=require(_0x34bc('0x3'))('acw');var RpcUser=require(_0x34bc('0x4'));var RpcVoiceAgentReport=require(_0x34bc('0x5'));function Acw(_0x3ce1c3){this[_0x34bc('0x6')]=_0x3ce1c3[_0x34bc('0x6')];this[_0x34bc('0x7')]=_0x3ce1c3[_0x34bc('0x7')];this['timers']=_0x3ce1c3[_0x34bc('0x8')];this['channels']={};ami['on']('agentconnect',this[_0x34bc('0x9')][_0x34bc('0xa')](this));ami['on'](_0x34bc('0xb'),this[_0x34bc('0xc')][_0x34bc('0xa')](this));ami['on'](_0x34bc('0xd'),this['syncHangup']['bind'](this));ami['on'](_0x34bc('0xe'),this[_0x34bc('0xf')][_0x34bc('0xa')](this));ami['on']('attendedtransfer',this[_0x34bc('0x10')]['bind'](this));ami['on'](_0x34bc('0x11'),this[_0x34bc('0x12')][_0x34bc('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0x34bc('0x13')]['bind'](this));}function getDiff(_0x12cf72){var _0x43ff68=moment()[_0x34bc('0x14')](0x0);var _0x5a22a3=moment(_0x12cf72)['milliseconds'](0x0);return _0x43ff68[_0x34bc('0x15')](_0x5a22a3,'seconds');}Acw[_0x34bc('0x16')][_0x34bc('0x17')]=function(_0x1da8eb){try{var _0x25da29=this;var _0x2db2dd=this[_0x34bc('0x18')][_0x1da8eb]['interface'];var _0x4fa0ab=this['channels'][_0x1da8eb][_0x34bc('0x19')];var _0x3eaedf=this[_0x34bc('0x6')][_0x4fa0ab];var _0x239e6c=![];var _0x567eee=_0x34bc('0x1a');if(_0x3eaedf[_0x34bc('0x1b')]){if(_0x3eaedf['mandatoryDispositionPause'][_0x34bc('0x1c')]){_0x239e6c=!![];_0x567eee=_0x3eaedf[_0x34bc('0x1d')]['name'];}}ami[_0x34bc('0x1e')]({'action':_0x34bc('0x1f'),'interface':_0x2db2dd,'paused':!![],'reason':_0x567eee})[_0x34bc('0x20')](function(_0x120bd3){if(_0x25da29[_0x34bc('0x7')][_0x2db2dd]){return RpcUser[_0x34bc('0x21')](_0x25da29['agents'][_0x2db2dd]['id'])[_0x34bc('0x20')](function(_0x3c9939){if(_0x3c9939&&!_0x3c9939[_0x34bc('0x22')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x1da8eb,_0x2db2dd,_0x4fa0ab);var _0x358d51=_0x25da29[_0x34bc('0x18')][_0x1da8eb][_0x34bc('0x23')]&&_0x25da29[_0x34bc('0x18')][_0x1da8eb][_0x34bc('0x24')]?_0x25da29[_0x34bc('0x18')][_0x1da8eb][_0x34bc('0x24')]:_0x1da8eb;return RpcUser[_0x34bc('0x25')](_0x25da29[_0x34bc('0x7')][_0x2db2dd],_0x567eee,_0x358d51)[_0x34bc('0x20')](function(_0x2de017){if(!_0x239e6c){_0x25da29[_0x34bc('0x8')][_0x2db2dd]={};logger['info'](_0x34bc('0x26'),_0x1da8eb,_0x25da29['voiceQueues'][_0x4fa0ab]['acwTimeout'],_0x2db2dd,_0x4fa0ab);_0x25da29[_0x34bc('0x8')][_0x2db2dd]['timer']=setTimeout(_0x25da29[_0x34bc('0x27')][_0x34bc('0xa')](_0x25da29,_0x2db2dd),_0x25da29[_0x34bc('0x6')][_0x4fa0ab]['acwTimeout']*0x3e8);_0x25da29[_0x34bc('0x8')][_0x2db2dd][_0x34bc('0x28')]=moment()[_0x34bc('0x29')](_0x34bc('0x2a'));_0x25da29[_0x34bc('0x8')][_0x2db2dd][_0x34bc('0x2b')]=_0x1da8eb;_0x25da29['timers'][_0x2db2dd][_0x34bc('0x19')]=_0x4fa0ab;_0x25da29[_0x34bc('0x8')][_0x2db2dd][_0x34bc('0x2c')]=function(){var _0x407831=getDiff(_0x25da29[_0x34bc('0x8')][_0x2db2dd][_0x34bc('0x28')]);clearTimeout(_0x25da29['timers'][_0x2db2dd][_0x34bc('0x2d')]);_0x25da29['timers'][_0x2db2dd]['timer']=![];RpcVoiceAgentReport[_0x34bc('0x2e')]({'acwtime':_0x407831},_0x25da29['timers'][_0x2db2dd][_0x34bc('0x2b')],_0x2db2dd)[_0x34bc('0x20')](function(_0xb446f4){logger[_0x34bc('0x2f')](_0x34bc('0x30'),_0x1da8eb,_0x407831,_0xb446f4);})[_0x34bc('0x31')](function(_0x2f0ce5){logger['error'](_0x34bc('0x32'),_0x1da8eb,_0x2f0ce5);});delete _0x25da29[_0x34bc('0x8')][_0x2db2dd];};}});}else{logger[_0x34bc('0x2f')](_0x34bc('0x33'),_0x1da8eb,_0x2db2dd,_0x4fa0ab);}});}})[_0x34bc('0x31')](function(_0x5c7e56){logger[_0x34bc('0x34')](_0x34bc('0x26'),_0x1da8eb,_0x25da29[_0x34bc('0x6')][_0x4fa0ab][_0x34bc('0x35')],_0x2db2dd,_0x4fa0ab);})[_0x34bc('0x36')](function(){delete _0x25da29['channels'][_0x1da8eb];});}catch(_0x4ad3c7){logger[_0x34bc('0x34')](_0x34bc('0x37'),_0x4ad3c7[_0x34bc('0x38')]);}};Acw[_0x34bc('0x16')]['stopAcw']=function(_0x3a523c){try{var _0x4477bd=this;if(_0x4477bd[_0x34bc('0x8')][_0x3a523c]){_0x4477bd['timers'][_0x3a523c][_0x34bc('0x2d')]=![];var _0x42d1eb=_0x4477bd[_0x34bc('0x8')][_0x3a523c][_0x34bc('0x2b')];var _0x53a43a=_0x4477bd[_0x34bc('0x8')][_0x3a523c][_0x34bc('0x19')];var _0x25f612=_0x4477bd['voiceQueues'][_0x53a43a][_0x34bc('0x35')];logger[_0x34bc('0x2f')](_0x34bc('0x39'),_0x3a523c);RpcUser[_0x34bc('0x3a')](this[_0x34bc('0x7')][_0x3a523c]);RpcVoiceAgentReport['update']({'acwtime':_0x25f612,'agentacw':!![]},_0x42d1eb,_0x3a523c)[_0x34bc('0x20')](function(_0x281e81){logger[_0x34bc('0x2f')](_0x34bc('0x30'),_0x42d1eb,_0x25f612,_0x281e81);})[_0x34bc('0x31')](function(_0x4bf331){logger[_0x34bc('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x42d1eb,_0x4bf331);});}else{logger[_0x34bc('0x34')](_0x34bc('0x3b'),_0x3a523c);if(_0x4477bd[_0x34bc('0x8')]){logger[_0x34bc('0x2f')]('[ACW][TIMERS]',JSON[_0x34bc('0x3c')](_0x4477bd[_0x34bc('0x8')]));}}}catch(_0x5671fa){logger[_0x34bc('0x34')](_0x34bc('0x3d'),_0x5671fa[_0x34bc('0x38')]);}};Acw['prototype'][_0x34bc('0x9')]=function(_0xbf2127){try{if(this[_0x34bc('0x6')][_0xbf2127[_0x34bc('0x19')]]&&(this[_0x34bc('0x6')][_0xbf2127[_0x34bc('0x19')]][_0x34bc('0x3e')]||this[_0x34bc('0x6')][_0xbf2127[_0x34bc('0x19')]][_0x34bc('0x1b')])){if(this[_0x34bc('0x7')][_0xbf2127['interface']]){this['channels'][_0xbf2127[_0x34bc('0x2b')]]={'queue':_0xbf2127[_0x34bc('0x19')],'interface':_0xbf2127[_0x34bc('0x3f')],'destlinkedid':_0xbf2127[_0x34bc('0x24')]};}}}catch(_0x7d6195){logger[_0x34bc('0x34')]('[ACW][syncAgentConnect]\x20%s',_0x7d6195[_0x34bc('0x38')]);}};Acw['prototype'][_0x34bc('0x13')]=function(_0x2a21b4){try{if(this[_0x34bc('0x6')][_0x2a21b4['queue']]&&(this[_0x34bc('0x6')][_0x2a21b4[_0x34bc('0x19')]][_0x34bc('0x3e')]||this[_0x34bc('0x6')][_0x2a21b4[_0x34bc('0x19')]][_0x34bc('0x1b')])){if(this[_0x34bc('0x7')][_0x2a21b4[_0x34bc('0x3f')]]){this[_0x34bc('0x18')][_0x2a21b4[_0x34bc('0x2b')]]={'queue':_0x2a21b4[_0x34bc('0x19')],'interface':_0x2a21b4[_0x34bc('0x3f')]};}}}catch(_0x48296c){logger['error'](_0x34bc('0x40'),_0x48296c[_0x34bc('0x38')]);}};Acw[_0x34bc('0x16')]['syncHangupRequest']=function(_0x4aafd4){try{if(this[_0x34bc('0x18')][_0x4aafd4[_0x34bc('0x2b')]]&&_[_0x34bc('0x41')](this['channels'][_0x4aafd4[_0x34bc('0x2b')]][_0x34bc('0x23')])){logger['info'](_0x34bc('0x42'),_0x4aafd4['uniqueid']);this[_0x34bc('0x17')](_0x4aafd4['uniqueid']);}else if(this[_0x34bc('0x18')][_0x4aafd4[_0x34bc('0x43')]]&&_[_0x34bc('0x41')](this[_0x34bc('0x18')][_0x4aafd4['linkedid']][_0x34bc('0x23')])){logger[_0x34bc('0x2f')](_0x34bc('0x44'),_0x4aafd4[_0x34bc('0x43')]);this[_0x34bc('0x17')](_0x4aafd4[_0x34bc('0x43')]);}}catch(_0x18eadd){logger[_0x34bc('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x18eadd['message']);}};Acw['prototype'][_0x34bc('0x45')]=function(_0x1ed088){try{if(this['channels'][_0x1ed088[_0x34bc('0x2b')]]&&this[_0x34bc('0x18')][_0x1ed088[_0x34bc('0x2b')]][_0x34bc('0x23')]){logger[_0x34bc('0x2f')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x1ed088['uniqueid']);this['startAcw'](_0x1ed088[_0x34bc('0x2b')]);}else if(this[_0x34bc('0x18')][_0x1ed088[_0x34bc('0x43')]]&&this[_0x34bc('0x18')][_0x1ed088[_0x34bc('0x43')]]['attended']){logger[_0x34bc('0x2f')](_0x34bc('0x46'),_0x1ed088[_0x34bc('0x43')]);this[_0x34bc('0x17')](_0x1ed088['linkedid']);}}catch(_0x1a2cf2){logger[_0x34bc('0x34')](_0x34bc('0x47'),_0x1a2cf2[_0x34bc('0x38')]);}};Acw[_0x34bc('0x16')][_0x34bc('0x10')]=function(_0x21de42){try{if(!_[_0x34bc('0x48')](this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x49')]])){this[_0x34bc('0x17')](_0x21de42[_0x34bc('0x49')]);if(this[_0x34bc('0x18')][_0x21de42['secondtransfereruniqueid']]){this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4a')]][_0x34bc('0x23')]=!![];this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4b')]]=this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4a')]];delete this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4a')]];}}else if(!_[_0x34bc('0x48')](this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4b')]])){this[_0x34bc('0x17')](_0x21de42[_0x34bc('0x4b')]);if(this['channels'][_0x21de42[_0x34bc('0x4c')]]){this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4c')]][_0x34bc('0x23')]=!![];this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x49')]]=this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4c')]];delete this[_0x34bc('0x18')][_0x21de42[_0x34bc('0x4c')]];}}}catch(_0x5ba13a){logger[_0x34bc('0x34')](_0x34bc('0x4d'),_0x5ba13a[_0x34bc('0x38')]);}};Acw['prototype'][_0x34bc('0x12')]=function(_0x295420){try{if(this[_0x34bc('0x18')][_0x295420[_0x34bc('0x4e')]]){logger['info'](_0x34bc('0x4f'),JSON[_0x34bc('0x3c')](_0x295420[_0x34bc('0x4e')]));this[_0x34bc('0x17')](_0x295420[_0x34bc('0x4e')]);}else if(this[_0x34bc('0x18')][_0x295420[_0x34bc('0x50')]]){logger[_0x34bc('0x2f')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x295420[_0x34bc('0x50')]));this[_0x34bc('0x17')](_0x295420[_0x34bc('0x50')]);}}catch(_0x1aad17){logger[_0x34bc('0x34')](_0x34bc('0x51'),_0x1aad17[_0x34bc('0x38')]);}};Acw[_0x34bc('0x16')][_0x34bc('0xf')]=function(_0x3b1eb9){try{if(this[_0x34bc('0x6')][_0x3b1eb9[_0x34bc('0x19')]]&&this[_0x34bc('0x6')][_0x3b1eb9[_0x34bc('0x19')]]['autopause']===_0x34bc('0x52')){if(this[_0x34bc('0x7')][_0x3b1eb9[_0x34bc('0x3f')]]){logger['info'](_0x34bc('0x53'),_0x3b1eb9[_0x34bc('0x2b')],_0x3b1eb9[_0x34bc('0x3f')],_0x3b1eb9[_0x34bc('0x19')]);return RpcUser['savePause'](this[_0x34bc('0x7')][_0x3b1eb9[_0x34bc('0x3f')]],_0x34bc('0x54'),_0x3b1eb9[_0x34bc('0x2b')]);}}}catch(_0x422537){logger['error'](_0x34bc('0x55'),_0x422537[_0x34bc('0x38')]);}};module[_0x34bc('0x56')]=Acw;