Built motion from commit 746c7d2a.|2.5.35
[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 _0x0e26=['voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','timer','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','message','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','agents','timers','channels','agentconnect','syncAgentConnect','syncHangupRequest','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','milliseconds','diff','startAcw','interface','queue','voiceQueues','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','then'];(function(_0x458b5a,_0x5b0e18){var _0x202d59=function(_0x59f72d){while(--_0x59f72d){_0x458b5a['push'](_0x458b5a['shift']());}};_0x202d59(++_0x5b0e18);}(_0x0e26,0x90));var _0x60e2=function(_0x30e247,_0x320e76){_0x30e247=_0x30e247-0x0;var _0x1dbe5d=_0x0e26[_0x30e247];return _0x1dbe5d;};'use strict';var util=require(_0x60e2('0x0'));var _=require(_0x60e2('0x1'));var moment=require(_0x60e2('0x2'));var ami=require(_0x60e2('0x3'));var logger=require(_0x60e2('0x4'))(_0x60e2('0x5'));var RpcUser=require(_0x60e2('0x6'));var RpcVoiceAgentReport=require(_0x60e2('0x7'));function Acw(_0x2afee8){this['voiceQueues']=_0x2afee8['voiceQueues'];this[_0x60e2('0x8')]=_0x2afee8['agents'];this[_0x60e2('0x9')]=_0x2afee8[_0x60e2('0x9')];this[_0x60e2('0xa')]={};ami['on'](_0x60e2('0xb'),this[_0x60e2('0xc')]['bind'](this));ami['on']('hanguprequest',this[_0x60e2('0xd')]['bind'](this));ami['on']('hangup',this[_0x60e2('0xe')][_0x60e2('0xf')](this));ami['on'](_0x60e2('0x10'),this[_0x60e2('0x11')][_0x60e2('0xf')](this));ami['on'](_0x60e2('0x12'),this[_0x60e2('0x13')][_0x60e2('0xf')](this));ami['on'](_0x60e2('0x14'),this['syncBlindTransfer'][_0x60e2('0xf')](this));ami['on'](_0x60e2('0x15'),this['syncAgentConnectPreview'][_0x60e2('0xf')](this));}function getDiff(_0x26abce){var _0x4c3216=moment()[_0x60e2('0x16')](0x0);var _0x3badc0=moment(_0x26abce)[_0x60e2('0x16')](0x0);return _0x4c3216[_0x60e2('0x17')](_0x3badc0,'seconds');}Acw['prototype'][_0x60e2('0x18')]=function(_0x47bb2d){try{var _0x3302ce=this;var _0x5c4ce0=this[_0x60e2('0xa')][_0x47bb2d][_0x60e2('0x19')];var _0x391b00=this[_0x60e2('0xa')][_0x47bb2d][_0x60e2('0x1a')];var _0x1efc6f=this[_0x60e2('0x1b')][_0x391b00];var _0x514160=![];var _0xb66ab5=_0x60e2('0x1c');if(_0x1efc6f[_0x60e2('0x1d')]){if(_0x1efc6f[_0x60e2('0x1e')][_0x60e2('0x1f')]){_0x514160=!![];_0xb66ab5=_0x1efc6f[_0x60e2('0x1e')][_0x60e2('0x1f')];}}ami[_0x60e2('0x20')]({'action':_0x60e2('0x21'),'interface':_0x5c4ce0,'paused':!![],'reason':_0xb66ab5})['then'](function(_0x38e13b){if(_0x3302ce['agents'][_0x5c4ce0]){return RpcUser[_0x60e2('0x22')](_0x3302ce[_0x60e2('0x8')][_0x5c4ce0]['id'])[_0x60e2('0x23')](function(_0x2bf8f3){if(_0x2bf8f3&&!_0x2bf8f3[_0x60e2('0x24')]){logger[_0x60e2('0x25')](_0x60e2('0x26'),_0x47bb2d,_0x5c4ce0,_0x391b00);var _0x229acc=_0x3302ce[_0x60e2('0xa')][_0x47bb2d][_0x60e2('0x27')]&&_0x3302ce[_0x60e2('0xa')][_0x47bb2d][_0x60e2('0x28')]?_0x3302ce[_0x60e2('0xa')][_0x47bb2d][_0x60e2('0x28')]:_0x47bb2d;return RpcUser['savePause'](_0x3302ce[_0x60e2('0x8')][_0x5c4ce0],_0xb66ab5,_0x229acc)['then'](function(_0xf19a36){if(!_0x514160){_0x3302ce[_0x60e2('0x9')][_0x5c4ce0]={};logger[_0x60e2('0x25')](_0x60e2('0x29'),_0x47bb2d,_0x3302ce['voiceQueues'][_0x391b00][_0x60e2('0x2a')],_0x5c4ce0,_0x391b00);_0x3302ce[_0x60e2('0x9')][_0x5c4ce0]['timer']=setTimeout(_0x3302ce[_0x60e2('0x2b')][_0x60e2('0xf')](_0x3302ce,_0x5c4ce0),_0x3302ce[_0x60e2('0x1b')][_0x391b00][_0x60e2('0x2a')]*0x3e8);_0x3302ce[_0x60e2('0x9')][_0x5c4ce0][_0x60e2('0x2c')]=moment()[_0x60e2('0x2d')](_0x60e2('0x2e'));_0x3302ce[_0x60e2('0x9')][_0x5c4ce0][_0x60e2('0x2f')]=_0x47bb2d;_0x3302ce['timers'][_0x5c4ce0][_0x60e2('0x1a')]=_0x391b00;_0x3302ce[_0x60e2('0x9')][_0x5c4ce0]['updateAcw']=function(){var _0x1c6a89=getDiff(_0x3302ce['timers'][_0x5c4ce0][_0x60e2('0x2c')]);clearTimeout(_0x3302ce[_0x60e2('0x9')][_0x5c4ce0]['timer']);_0x3302ce['timers'][_0x5c4ce0][_0x60e2('0x30')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x1c6a89},_0x3302ce[_0x60e2('0x9')][_0x5c4ce0][_0x60e2('0x2f')],_0x5c4ce0)[_0x60e2('0x23')](function(_0x386f15){logger[_0x60e2('0x25')](_0x60e2('0x31'),_0x47bb2d,_0x1c6a89,_0x386f15);})[_0x60e2('0x32')](function(_0x362dbf){logger[_0x60e2('0x33')]('[%s][UPDATE][ERRORS:%s]',_0x47bb2d,_0x362dbf);});delete _0x3302ce['timers'][_0x5c4ce0];};}});}else{logger['info'](_0x60e2('0x34'),_0x47bb2d,_0x5c4ce0,_0x391b00);}});}})[_0x60e2('0x32')](function(_0x14f1e4){logger[_0x60e2('0x33')](_0x60e2('0x29'),_0x47bb2d,_0x3302ce[_0x60e2('0x1b')][_0x391b00][_0x60e2('0x2a')],_0x5c4ce0,_0x391b00);})[_0x60e2('0x35')](function(){delete _0x3302ce['channels'][_0x47bb2d];});}catch(_0x38b474){logger[_0x60e2('0x33')](_0x60e2('0x36'),_0x38b474['message']);}};Acw[_0x60e2('0x37')][_0x60e2('0x2b')]=function(_0x1a218a){try{var _0x566268=this;if(_0x566268[_0x60e2('0x9')][_0x1a218a]){_0x566268[_0x60e2('0x9')][_0x1a218a]['timer']=![];var _0x289913=_0x566268[_0x60e2('0x9')][_0x1a218a][_0x60e2('0x2f')];var _0xec27ea=_0x566268[_0x60e2('0x9')][_0x1a218a][_0x60e2('0x1a')];var _0x48a72b=_0x566268[_0x60e2('0x1b')][_0xec27ea][_0x60e2('0x2a')];logger[_0x60e2('0x25')](_0x60e2('0x38'),_0x289913,_0x1a218a);RpcUser[_0x60e2('0x39')](this[_0x60e2('0x8')][_0x1a218a]);RpcVoiceAgentReport[_0x60e2('0x3a')]({'acwtime':_0x48a72b,'agentacw':!![]},_0x289913,_0x1a218a)[_0x60e2('0x23')](function(_0x26eb68){logger[_0x60e2('0x25')](_0x60e2('0x31'),_0x289913,_0x48a72b,_0x26eb68);})['catch'](function(_0x3a6ddc){logger[_0x60e2('0x33')](_0x60e2('0x3b'),_0x289913,_0x3a6ddc);});}else{logger['error'](_0x60e2('0x3c'),_0x1a218a);if(_0x566268[_0x60e2('0x9')]){logger[_0x60e2('0x25')](_0x60e2('0x3d'),JSON[_0x60e2('0x3e')](_0x566268[_0x60e2('0x9')]));}}}catch(_0x3bb9ab){logger[_0x60e2('0x33')]('[ACW][STOP]\x20%s',_0x3bb9ab[_0x60e2('0x3f')]);}};Acw[_0x60e2('0x37')]['syncAgentConnect']=function(_0x5aaec1){try{if(this['voiceQueues'][_0x5aaec1['queue']]&&(this[_0x60e2('0x1b')][_0x5aaec1[_0x60e2('0x1a')]][_0x60e2('0x5')]||this[_0x60e2('0x1b')][_0x5aaec1['queue']][_0x60e2('0x1d')])){if(this[_0x60e2('0x8')][_0x5aaec1[_0x60e2('0x19')]]){this['channels'][_0x5aaec1[_0x60e2('0x2f')]]={'queue':_0x5aaec1[_0x60e2('0x1a')],'interface':_0x5aaec1[_0x60e2('0x19')],'destlinkedid':_0x5aaec1[_0x60e2('0x28')]};}}}catch(_0x334cf4){logger[_0x60e2('0x33')](_0x60e2('0x40'),_0x334cf4[_0x60e2('0x3f')]);}};Acw['prototype'][_0x60e2('0x41')]=function(_0x1c730b){try{if(this['voiceQueues'][_0x1c730b[_0x60e2('0x1a')]]&&(this[_0x60e2('0x1b')][_0x1c730b['queue']][_0x60e2('0x5')]||this[_0x60e2('0x1b')][_0x1c730b['queue']][_0x60e2('0x1d')])){if(this[_0x60e2('0x8')][_0x1c730b[_0x60e2('0x19')]]){this[_0x60e2('0xa')][_0x1c730b['uniqueid']]={'queue':_0x1c730b[_0x60e2('0x1a')],'interface':_0x1c730b['interface']};}}}catch(_0x50aa1e){logger[_0x60e2('0x33')](_0x60e2('0x42'),_0x50aa1e['message']);}};Acw[_0x60e2('0x37')][_0x60e2('0xd')]=function(_0x51037e){try{if(this['channels'][_0x51037e['uniqueid']]&&_[_0x60e2('0x43')](this[_0x60e2('0xa')][_0x51037e['uniqueid']][_0x60e2('0x27')])){logger[_0x60e2('0x25')](_0x60e2('0x44'),_0x51037e['uniqueid']);this[_0x60e2('0x18')](_0x51037e[_0x60e2('0x2f')]);}else if(this['channels'][_0x51037e[_0x60e2('0x45')]]&&_[_0x60e2('0x43')](this[_0x60e2('0xa')][_0x51037e['linkedid']][_0x60e2('0x27')])){logger['info']('[%s][HANGUP:LINKEDID]',_0x51037e['linkedid']);this['startAcw'](_0x51037e[_0x60e2('0x45')]);}}catch(_0xd3be4c){logger[_0x60e2('0x33')](_0x60e2('0x46'),_0xd3be4c[_0x60e2('0x3f')]);}};Acw[_0x60e2('0x37')][_0x60e2('0xe')]=function(_0x55496b){try{if(this[_0x60e2('0xa')][_0x55496b[_0x60e2('0x2f')]]&&this['channels'][_0x55496b[_0x60e2('0x2f')]]['attended']){logger[_0x60e2('0x25')](_0x60e2('0x47'),_0x55496b[_0x60e2('0x2f')]);this['startAcw'](_0x55496b[_0x60e2('0x2f')]);}else if(this[_0x60e2('0xa')][_0x55496b['linkedid']]&&this[_0x60e2('0xa')][_0x55496b['linkedid']]['attended']){logger[_0x60e2('0x25')](_0x60e2('0x48'),_0x55496b[_0x60e2('0x45')]);this[_0x60e2('0x18')](_0x55496b['linkedid']);}}catch(_0xe72671){logger[_0x60e2('0x33')](_0x60e2('0x49'),_0xe72671['message']);}};Acw[_0x60e2('0x37')]['syncAttendedTransfer']=function(_0x234cde){try{if(!_[_0x60e2('0x4a')](this['channels'][_0x234cde[_0x60e2('0x4b')]])){this[_0x60e2('0x18')](_0x234cde['transfereeuniqueid']);if(this[_0x60e2('0xa')][_0x234cde['secondtransfereruniqueid']]){this['channels'][_0x234cde['secondtransfereruniqueid']][_0x60e2('0x27')]=!![];this[_0x60e2('0xa')][_0x234cde['transfertargetuniqueid']]=this[_0x60e2('0xa')][_0x234cde['secondtransfereruniqueid']];delete this[_0x60e2('0xa')][_0x234cde[_0x60e2('0x4c')]];}}else if(!_[_0x60e2('0x4a')](this['channels'][_0x234cde[_0x60e2('0x4d')]])){this[_0x60e2('0x18')](_0x234cde[_0x60e2('0x4d')]);if(this[_0x60e2('0xa')][_0x234cde[_0x60e2('0x4e')]]){this[_0x60e2('0xa')][_0x234cde[_0x60e2('0x4e')]][_0x60e2('0x27')]=!![];this[_0x60e2('0xa')][_0x234cde[_0x60e2('0x4b')]]=this[_0x60e2('0xa')][_0x234cde['origtransfereruniqueid']];delete this['channels'][_0x234cde[_0x60e2('0x4e')]];}}}catch(_0x40eac3){logger[_0x60e2('0x33')]('[ACW][syncAttendedTransfer]\x20%s',_0x40eac3[_0x60e2('0x3f')]);}};Acw[_0x60e2('0x37')][_0x60e2('0x4f')]=function(_0x3f895b){try{if(this['channels'][_0x3f895b[_0x60e2('0x50')]]){logger[_0x60e2('0x25')](_0x60e2('0x51'),JSON[_0x60e2('0x3e')](_0x3f895b['transfereruniqueid']));this['startAcw'](_0x3f895b[_0x60e2('0x50')]);}else if(this[_0x60e2('0xa')][_0x3f895b[_0x60e2('0x52')]]){logger[_0x60e2('0x25')](_0x60e2('0x53'),JSON[_0x60e2('0x3e')](_0x3f895b[_0x60e2('0x52')]));this[_0x60e2('0x18')](_0x3f895b['transfererlinkedid']);}}catch(_0xde2af9){logger['error'](_0x60e2('0x54'),_0xde2af9[_0x60e2('0x3f')]);}};Acw[_0x60e2('0x37')][_0x60e2('0x11')]=function(_0x3bf62c){try{if(this['voiceQueues'][_0x3bf62c[_0x60e2('0x1a')]]&&this['voiceQueues'][_0x3bf62c['queue']]['autopause']===_0x60e2('0x55')){if(this['agents'][_0x3bf62c[_0x60e2('0x19')]]){logger[_0x60e2('0x25')](_0x60e2('0x56'),_0x3bf62c[_0x60e2('0x2f')],_0x3bf62c[_0x60e2('0x19')],_0x3bf62c[_0x60e2('0x1a')]);return RpcUser[_0x60e2('0x57')](this[_0x60e2('0x8')][_0x3bf62c[_0x60e2('0x19')]],_0x60e2('0x58'),_0x3bf62c[_0x60e2('0x2f')]);}}}catch(_0x5e48aa){logger[_0x60e2('0x33')](_0x60e2('0x59'),_0x5e48aa[_0x60e2('0x3f')]);}};module['exports']=Acw;