Built motion from commit 52c8a02d.|2.6.29
[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 _0xef20=['[%s][INPAUSE][AGENT:%s][QUEUE:%s]','destlinkedid','paused','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','queue','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','stopAcw','getAgent','pauseType','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','prototype','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','attended','[%s][HANGUP:UNIQUEID]','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','deleteChannelAfterTimeout','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../ami','acw','voiceQueues','agents','timers','channels','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','updateAcw','lastPauseAt','timer','uniqueid','then','info','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','mandatoryDisposition','mandatoryDispositionPause','name','Action','voicePause'];(function(_0x65c903,_0x41e920){var _0x23e1d7=function(_0x4279cd){while(--_0x4279cd){_0x65c903['push'](_0x65c903['shift']());}};_0x23e1d7(++_0x41e920);}(_0xef20,0x1df));var _0x0ef2=function(_0x4e9d0c,_0x18d6ee){_0x4e9d0c=_0x4e9d0c-0x0;var _0x1309e5=_0xef20[_0x4e9d0c];return _0x1309e5;};'use strict';var _=require(_0x0ef2('0x0'));var moment=require('moment');var ami=require(_0x0ef2('0x1'));var logger=require('../../../config/logger')(_0x0ef2('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x26b568){this[_0x0ef2('0x3')]=_0x26b568[_0x0ef2('0x3')];this[_0x0ef2('0x4')]=_0x26b568[_0x0ef2('0x4')];this[_0x0ef2('0x5')]=_0x26b568[_0x0ef2('0x5')];this[_0x0ef2('0x6')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0x0ef2('0x7')](this));ami['on'](_0x0ef2('0x8'),this[_0x0ef2('0x9')][_0x0ef2('0x7')](this));ami['on'](_0x0ef2('0xa'),this[_0x0ef2('0xb')][_0x0ef2('0x7')](this));ami['on']('agentringnoanswer',this[_0x0ef2('0xc')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x0ef2('0x7')](this));ami['on'](_0x0ef2('0xd'),this[_0x0ef2('0xe')][_0x0ef2('0x7')](this));ami['on'](_0x0ef2('0xf'),this[_0x0ef2('0x10')][_0x0ef2('0x7')](this));}function getDiff(_0x182678){var _0x59c128=moment()[_0x0ef2('0x11')](0x0);var _0x566db5=moment(_0x182678)[_0x0ef2('0x11')](0x0);return _0x59c128[_0x0ef2('0x12')](_0x566db5,_0x0ef2('0x13'));}Acw['prototype'][_0x0ef2('0x14')]=function(_0x2137c6,_0x2c6a2e){var _0x211118=this;var _0xa52845=getDiff(_0x211118[_0x0ef2('0x5')][_0x2137c6][_0x0ef2('0x15')]);clearTimeout(_0x211118[_0x0ef2('0x5')][_0x2137c6][_0x0ef2('0x16')]);_0x211118[_0x0ef2('0x5')][_0x2137c6][_0x0ef2('0x16')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0xa52845},_0x211118[_0x0ef2('0x5')][_0x2137c6][_0x0ef2('0x17')],_0x2137c6)[_0x0ef2('0x18')](function(_0xa6ca14){logger[_0x0ef2('0x19')]('[%s][UPDATE][ACWTIME:%s]',_0x2c6a2e,_0xa52845,_0xa6ca14);})[_0x0ef2('0x1a')](function(_0x3d1d11){logger[_0x0ef2('0x1b')](_0x0ef2('0x1c'),_0x2c6a2e,_0x3d1d11);})[_0x0ef2('0x1d')](function(){delete _0x211118[_0x0ef2('0x5')][_0x2137c6];});};Acw['prototype'][_0x0ef2('0x1e')]=function(_0x70ef34){try{var _0x431829=this;var _0x2d2836=this[_0x0ef2('0x6')][_0x70ef34][_0x0ef2('0x1f')];var _0x22aaf7=this[_0x0ef2('0x6')][_0x70ef34]['queue'];var _0xc0fa72=this[_0x0ef2('0x3')][_0x22aaf7];var _0x8d6299=![];var _0x154b46='ACW';if(_0xc0fa72[_0x0ef2('0x20')]&&_0xc0fa72[_0x0ef2('0x21')]['name']){_0x8d6299=!![];_0x154b46=_0xc0fa72[_0x0ef2('0x21')][_0x0ef2('0x22')];}return ami[_0x0ef2('0x23')]({'action':'QueuePause','interface':_0x2d2836,'paused':!![],'reason':_0x154b46})[_0x0ef2('0x18')](function(){if(_0x431829[_0x0ef2('0x4')][_0x2d2836]){return RpcUser['getAgent'](_0x431829[_0x0ef2('0x4')][_0x2d2836]['id'])[_0x0ef2('0x18')](function(_0x3926f8){if(!_0x3926f8||_0x3926f8[_0x0ef2('0x24')]){logger['info'](_0x0ef2('0x25'),_0x70ef34,_0x2d2836,_0x22aaf7);return;}logger[_0x0ef2('0x19')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x70ef34,_0x2d2836,_0x22aaf7);var _0x308d49=_0x431829[_0x0ef2('0x6')][_0x70ef34]['attended']&&_0x431829[_0x0ef2('0x6')][_0x70ef34]['destlinkedid']?_0x431829[_0x0ef2('0x6')][_0x70ef34][_0x0ef2('0x26')]:_0x70ef34;return RpcUser['savePause'](_0x431829[_0x0ef2('0x4')][_0x2d2836],_0x154b46,_0x308d49)[_0x0ef2('0x18')](function(_0x5a9d10){_0x431829['voiceQueues'][_0x22aaf7]['available']-=0x1;_0x431829['voiceQueues'][_0x22aaf7][_0x0ef2('0x27')]+=0x1;return _0x5a9d10;});})[_0x0ef2('0x18')](function(_0x16c6ae){if(_0x8d6299||!_0x16c6ae){return;}_0x431829['timers'][_0x2d2836]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x70ef34,_0x431829[_0x0ef2('0x3')][_0x22aaf7]['acwTimeout'],_0x2d2836,_0x22aaf7);_0x431829['timers'][_0x2d2836][_0x0ef2('0x16')]=setTimeout(_0x431829['stopAcw'][_0x0ef2('0x7')](_0x431829,_0x2d2836),_0x431829[_0x0ef2('0x3')][_0x22aaf7][_0x0ef2('0x28')]*0x3e8);_0x431829['timers'][_0x2d2836]['lastPauseAt']=moment()[_0x0ef2('0x29')](_0x0ef2('0x2a'));_0x431829[_0x0ef2('0x5')][_0x2d2836][_0x0ef2('0x17')]=_0x70ef34;_0x431829[_0x0ef2('0x5')][_0x2d2836][_0x0ef2('0x2b')]=_0x22aaf7;_0x431829[_0x0ef2('0x5')][_0x2d2836][_0x0ef2('0x14')]=_0x431829[_0x0ef2('0x14')][_0x0ef2('0x7')](_0x431829,_0x2d2836,_0x70ef34);});}})['catch'](function(){logger['error'](_0x0ef2('0x2c'),_0x70ef34,_0x431829['voiceQueues'][_0x22aaf7]['acwTimeout'],_0x2d2836,_0x22aaf7);})[_0x0ef2('0x1d')](function(){delete _0x431829[_0x0ef2('0x6')][_0x70ef34];});}catch(_0x25c5ee){logger[_0x0ef2('0x1b')](_0x0ef2('0x2d'),_0x25c5ee['message']);}};Acw['prototype'][_0x0ef2('0x2e')]=function(_0x520626){try{var _0x51f12a=this;if(_0x51f12a[_0x0ef2('0x5')][_0x520626]){_0x51f12a[_0x0ef2('0x5')][_0x520626][_0x0ef2('0x16')]=![];var _0x5e16c1=_0x51f12a[_0x0ef2('0x5')][_0x520626][_0x0ef2('0x17')];var _0x353ed0=_0x51f12a[_0x0ef2('0x5')][_0x520626][_0x0ef2('0x2b')];var _0x47433e=_0x51f12a['voiceQueues'][_0x353ed0]['acwTimeout'];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x5e16c1,_0x520626);RpcUser[_0x0ef2('0x2f')](this[_0x0ef2('0x4')][_0x520626]['id'])['then'](function(_0x340136){if(_0x340136[_0x0ef2('0x30')]==='ACW'){return RpcUser[_0x0ef2('0x31')](_0x51f12a['agents'][_0x520626]);}});RpcVoiceAgentReport['update']({'acwtime':_0x47433e,'agentacw':!![]},_0x5e16c1,_0x520626)[_0x0ef2('0x18')](function(_0x2c939b){logger['info'](_0x0ef2('0x32'),_0x5e16c1,_0x47433e,_0x2c939b);})['catch'](function(_0x1145be){logger[_0x0ef2('0x1b')](_0x0ef2('0x1c'),_0x5e16c1,_0x1145be);});}else{logger['error'](_0x0ef2('0x33'),_0x520626);if(_0x51f12a[_0x0ef2('0x5')]){logger[_0x0ef2('0x19')](_0x0ef2('0x34'),JSON[_0x0ef2('0x35')](_0x51f12a['timers']));}}}catch(_0x24d4fb){logger[_0x0ef2('0x1b')](_0x0ef2('0x36'),_0x24d4fb[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0x39')]=function(_0x4a2c54){try{if(this[_0x0ef2('0x3')][_0x4a2c54[_0x0ef2('0x2b')]]&&(this[_0x0ef2('0x3')][_0x4a2c54['queue']][_0x0ef2('0x2')]||this[_0x0ef2('0x3')][_0x4a2c54[_0x0ef2('0x2b')]]['mandatoryDisposition'])){if(this[_0x0ef2('0x4')][_0x4a2c54['interface']]){this[_0x0ef2('0x6')][_0x4a2c54[_0x0ef2('0x17')]]={'queue':_0x4a2c54[_0x0ef2('0x2b')],'interface':_0x4a2c54[_0x0ef2('0x1f')],'destlinkedid':_0x4a2c54['destlinkedid']};}}}catch(_0x32e826){logger[_0x0ef2('0x1b')](_0x0ef2('0x3a'),_0x32e826[_0x0ef2('0x37')]);}};Acw['prototype'][_0x0ef2('0x10')]=function(_0x121d3e){try{if(this[_0x0ef2('0x3')][_0x121d3e[_0x0ef2('0x2b')]]&&(this[_0x0ef2('0x3')][_0x121d3e[_0x0ef2('0x2b')]][_0x0ef2('0x2')]||this[_0x0ef2('0x3')][_0x121d3e['queue']]['mandatoryDisposition'])){if(this[_0x0ef2('0x4')][_0x121d3e[_0x0ef2('0x1f')]]){this['channels'][_0x121d3e['uniqueid']]={'queue':_0x121d3e[_0x0ef2('0x2b')],'interface':_0x121d3e[_0x0ef2('0x1f')]};}}}catch(_0x528aba){logger['error'](_0x0ef2('0x3b'),_0x528aba[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0x9')]=function(_0x41ae92){try{if(this[_0x0ef2('0x6')][_0x41ae92[_0x0ef2('0x17')]]&&_['isUndefined'](this[_0x0ef2('0x6')][_0x41ae92[_0x0ef2('0x17')]][_0x0ef2('0x3c')])){logger['info'](_0x0ef2('0x3d'),_0x41ae92[_0x0ef2('0x17')]);this['startAcw'](_0x41ae92[_0x0ef2('0x17')]);}else if(this[_0x0ef2('0x6')][_0x41ae92['linkedid']]&&_[_0x0ef2('0x3e')](this[_0x0ef2('0x6')][_0x41ae92[_0x0ef2('0x3f')]]['attended'])){logger[_0x0ef2('0x19')](_0x0ef2('0x40'),_0x41ae92['linkedid']);this[_0x0ef2('0x1e')](_0x41ae92[_0x0ef2('0x3f')]);}}catch(_0x29a4db){logger[_0x0ef2('0x1b')](_0x0ef2('0x41'),_0x29a4db[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0xb')]=function(_0x2ea883){try{if(this[_0x0ef2('0x6')][_0x2ea883['uniqueid']]&&this[_0x0ef2('0x6')][_0x2ea883['uniqueid']][_0x0ef2('0x3c')]){logger[_0x0ef2('0x19')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x2ea883[_0x0ef2('0x17')]);this[_0x0ef2('0x1e')](_0x2ea883[_0x0ef2('0x17')]);}else if(this[_0x0ef2('0x6')][_0x2ea883[_0x0ef2('0x3f')]]&&this[_0x0ef2('0x6')][_0x2ea883[_0x0ef2('0x3f')]][_0x0ef2('0x3c')]){logger['info'](_0x0ef2('0x42'),_0x2ea883[_0x0ef2('0x3f')]);this['startAcw'](_0x2ea883[_0x0ef2('0x3f')]);}}catch(_0x235a54){logger[_0x0ef2('0x1b')]('[ACW][syncHangup]\x20%s',_0x235a54['message']);}};Acw['prototype'][_0x0ef2('0x43')]=function(_0x30cc20){try{if(!_[_0x0ef2('0x44')](this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x45')]])){this[_0x0ef2('0x1e')](_0x30cc20[_0x0ef2('0x45')]);if(this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x46')]]){this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x46')]][_0x0ef2('0x3c')]=!![];this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x47')]]=this[_0x0ef2('0x6')][_0x30cc20['secondtransfereruniqueid']];this[_0x0ef2('0x48')](_0x30cc20['secondtransfereruniqueid']);}}else if(!_['isNil'](this[_0x0ef2('0x6')][_0x30cc20['transfertargetuniqueid']])){this[_0x0ef2('0x1e')](_0x30cc20[_0x0ef2('0x47')]);if(this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x49')]]){this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x49')]][_0x0ef2('0x3c')]=!![];this['channels'][_0x30cc20[_0x0ef2('0x45')]]=this[_0x0ef2('0x6')][_0x30cc20[_0x0ef2('0x49')]];this[_0x0ef2('0x48')](_0x30cc20[_0x0ef2('0x49')]);}}}catch(_0xa58736){logger[_0x0ef2('0x1b')](_0x0ef2('0x4a'),_0xa58736[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0xe')]=function(_0x39c96c){try{if(this[_0x0ef2('0x6')][_0x39c96c[_0x0ef2('0x4b')]]){logger['info'](_0x0ef2('0x4c'),JSON[_0x0ef2('0x35')](_0x39c96c[_0x0ef2('0x4b')]));this[_0x0ef2('0x1e')](_0x39c96c[_0x0ef2('0x4b')]);}else if(this[_0x0ef2('0x6')][_0x39c96c['transfererlinkedid']]){logger[_0x0ef2('0x19')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x0ef2('0x35')](_0x39c96c[_0x0ef2('0x4d')]));this[_0x0ef2('0x1e')](_0x39c96c['transfererlinkedid']);}}catch(_0x2cc2b1){logger[_0x0ef2('0x1b')](_0x0ef2('0x4e'),_0x2cc2b1[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0xc')]=function(_0x620133){try{if(this[_0x0ef2('0x3')][_0x620133[_0x0ef2('0x2b')]]&&this[_0x0ef2('0x3')][_0x620133['queue']][_0x0ef2('0x4f')]===_0x0ef2('0x50')){if(this['agents'][_0x620133[_0x0ef2('0x1f')]]){logger['info'](_0x0ef2('0x51'),_0x620133['uniqueid'],_0x620133[_0x0ef2('0x1f')],_0x620133[_0x0ef2('0x2b')]);return RpcUser[_0x0ef2('0x52')](this[_0x0ef2('0x4')][_0x620133['interface']],_0x0ef2('0x53'),_0x620133[_0x0ef2('0x17')]);}}}catch(_0x2fd05f){logger[_0x0ef2('0x1b')](_0x0ef2('0x54'),_0x2fd05f[_0x0ef2('0x37')]);}};Acw[_0x0ef2('0x38')][_0x0ef2('0x48')]=function(_0xc28109,_0x1ee8d7=0x2710){if(this[_0x0ef2('0x6')][_0xc28109]){setTimeout(()=>{delete this[_0x0ef2('0x6')][_0xc28109];},_0x1ee8d7);}};module[_0x0ef2('0x55')]=Acw;