Built motion from commit 3e059bc2.|2.5.32
[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 _0xe39a=['syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','milliseconds','seconds','prototype','startAcw','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[ACW][START]\x20%s','message','stopAcw','acwTimeout','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','hangup','syncHangup','attendedtransfer'];(function(_0x438018,_0x389973){var _0x45a5ce=function(_0x181259){while(--_0x181259){_0x438018['push'](_0x438018['shift']());}};_0x45a5ce(++_0x389973);}(_0xe39a,0x9c));var _0xae39=function(_0x3a018a,_0x348145){_0x3a018a=_0x3a018a-0x0;var _0x454c69=_0xe39a[_0x3a018a];return _0x454c69;};'use strict';var util=require(_0xae39('0x0'));var _=require(_0xae39('0x1'));var moment=require(_0xae39('0x2'));var ami=require(_0xae39('0x3'));var logger=require(_0xae39('0x4'))(_0xae39('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x95ca36){this[_0xae39('0x6')]=_0x95ca36[_0xae39('0x6')];this[_0xae39('0x7')]=_0x95ca36[_0xae39('0x7')];this[_0xae39('0x8')]=_0x95ca36[_0xae39('0x8')];this[_0xae39('0x9')]={};ami['on'](_0xae39('0xa'),this['syncAgentConnect'][_0xae39('0xb')](this));ami['on'](_0xae39('0xc'),this['syncHangupRequest'][_0xae39('0xb')](this));ami['on'](_0xae39('0xd'),this[_0xae39('0xe')][_0xae39('0xb')](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0xae39('0xb')](this));ami['on'](_0xae39('0xf'),this[_0xae39('0x10')][_0xae39('0xb')](this));ami['on'](_0xae39('0x11'),this['syncBlindTransfer'][_0xae39('0xb')](this));ami['on'](_0xae39('0x12'),this['syncAgentConnectPreview'][_0xae39('0xb')](this));}function getDiff(_0x3fea98){var _0x512cf1=moment()[_0xae39('0x13')](0x0);var _0x59bebf=moment(_0x3fea98)['milliseconds'](0x0);return _0x512cf1['diff'](_0x59bebf,_0xae39('0x14'));}Acw[_0xae39('0x15')][_0xae39('0x16')]=function(_0x2b5e03){try{var _0x40275b=this;var _0x1efd32=this[_0xae39('0x9')][_0x2b5e03][_0xae39('0x17')];var _0x50aca6=this[_0xae39('0x9')][_0x2b5e03]['queue'];var _0x648c46=this[_0xae39('0x6')][_0x50aca6];var _0x4336f6=![];var _0x3aaaac=_0xae39('0x18');if(_0x648c46[_0xae39('0x19')]){if(_0x648c46['mandatoryDispositionPause']['name']){_0x4336f6=!![];_0x3aaaac=_0x648c46[_0xae39('0x1a')]['name'];}}ami[_0xae39('0x1b')]({'action':_0xae39('0x1c'),'interface':_0x1efd32,'paused':!![],'reason':_0x3aaaac})[_0xae39('0x1d')](function(_0x19de43){if(_0x40275b[_0xae39('0x7')][_0x1efd32]){return RpcUser[_0xae39('0x1e')](_0x40275b[_0xae39('0x7')][_0x1efd32]['id'])['then'](function(_0xebead9){if(_0xebead9&&!_0xebead9[_0xae39('0x1f')]){logger[_0xae39('0x20')](_0xae39('0x21'),_0x2b5e03,_0x1efd32,_0x50aca6);var _0x10cb55=_0x40275b[_0xae39('0x9')][_0x2b5e03][_0xae39('0x22')]&&_0x40275b[_0xae39('0x9')][_0x2b5e03]['destlinkedid']?_0x40275b[_0xae39('0x9')][_0x2b5e03][_0xae39('0x23')]:_0x2b5e03;return RpcUser[_0xae39('0x24')](_0x40275b[_0xae39('0x7')][_0x1efd32],_0x3aaaac,_0x10cb55)[_0xae39('0x1d')](function(_0x58d514){if(!_0x4336f6){_0x40275b[_0xae39('0x8')][_0x1efd32]={};logger[_0xae39('0x20')](_0xae39('0x25'),_0x2b5e03,_0x40275b[_0xae39('0x6')][_0x50aca6]['acwTimeout'],_0x1efd32,_0x50aca6);_0x40275b[_0xae39('0x8')][_0x1efd32][_0xae39('0x26')]=setTimeout(_0x40275b['stopAcw'][_0xae39('0xb')](_0x40275b,_0x1efd32),_0x40275b[_0xae39('0x6')][_0x50aca6]['acwTimeout']*0x3e8);_0x40275b[_0xae39('0x8')][_0x1efd32]['lastPauseAt']=moment()[_0xae39('0x27')](_0xae39('0x28'));_0x40275b[_0xae39('0x8')][_0x1efd32][_0xae39('0x29')]=_0x2b5e03;_0x40275b[_0xae39('0x8')][_0x1efd32][_0xae39('0x2a')]=_0x50aca6;_0x40275b['timers'][_0x1efd32][_0xae39('0x2b')]=function(){var _0x529710=getDiff(_0x40275b[_0xae39('0x8')][_0x1efd32]['lastPauseAt']);clearTimeout(_0x40275b['timers'][_0x1efd32]['timer']);_0x40275b['timers'][_0x1efd32][_0xae39('0x26')]=![];RpcVoiceAgentReport[_0xae39('0x2c')]({'acwtime':_0x529710},_0x40275b[_0xae39('0x8')][_0x1efd32][_0xae39('0x29')],_0x1efd32)[_0xae39('0x1d')](function(_0x1e63f5){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x2b5e03,_0x529710,_0x1e63f5);})[_0xae39('0x2d')](function(_0x27d18a){logger[_0xae39('0x2e')](_0xae39('0x2f'),_0x2b5e03,_0x27d18a);});delete _0x40275b[_0xae39('0x8')][_0x1efd32];};}});}else{logger[_0xae39('0x20')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x2b5e03,_0x1efd32,_0x50aca6);}});}})[_0xae39('0x2d')](function(_0x52bbf3){logger['error'](_0xae39('0x25'),_0x2b5e03,_0x40275b[_0xae39('0x6')][_0x50aca6]['acwTimeout'],_0x1efd32,_0x50aca6);})['finally'](function(){delete _0x40275b['channels'][_0x2b5e03];});}catch(_0x5ec244){logger[_0xae39('0x2e')](_0xae39('0x30'),_0x5ec244[_0xae39('0x31')]);}};Acw['prototype'][_0xae39('0x32')]=function(_0x939c7c){try{var _0x5bb8f4=this;if(_0x5bb8f4[_0xae39('0x8')][_0x939c7c]){_0x5bb8f4[_0xae39('0x8')][_0x939c7c][_0xae39('0x26')]=![];var _0x31080e=_0x5bb8f4['timers'][_0x939c7c]['uniqueid'];var _0x563156=_0x5bb8f4[_0xae39('0x8')][_0x939c7c]['queue'];var _0x563686=_0x5bb8f4[_0xae39('0x6')][_0x563156][_0xae39('0x33')];logger[_0xae39('0x20')](_0xae39('0x34'),_0x31080e,_0x939c7c);RpcUser['saveUnpause'](this[_0xae39('0x7')][_0x939c7c]);RpcVoiceAgentReport[_0xae39('0x2c')]({'acwtime':_0x563686,'agentacw':!![]},_0x31080e,_0x939c7c)['then'](function(_0x2f8cd0){logger[_0xae39('0x20')](_0xae39('0x35'),_0x31080e,_0x563686,_0x2f8cd0);})[_0xae39('0x2d')](function(_0x2a392a){logger[_0xae39('0x2e')]('[%s][UPDATE][ERRORS:%s]',_0x31080e,_0x2a392a);});}else{logger['error'](_0xae39('0x36'),_0x939c7c);if(_0x5bb8f4['timers']){logger['info'](_0xae39('0x37'),JSON[_0xae39('0x38')](_0x5bb8f4['timers']));}}}catch(_0x410e03){logger['error'](_0xae39('0x39'),_0x410e03[_0xae39('0x31')]);}};Acw[_0xae39('0x15')][_0xae39('0x3a')]=function(_0x2fd432){try{if(this[_0xae39('0x6')][_0x2fd432[_0xae39('0x2a')]]&&(this[_0xae39('0x6')][_0x2fd432[_0xae39('0x2a')]][_0xae39('0x5')]||this[_0xae39('0x6')][_0x2fd432['queue']][_0xae39('0x19')])){if(this['agents'][_0x2fd432[_0xae39('0x17')]]){this[_0xae39('0x9')][_0x2fd432[_0xae39('0x29')]]={'queue':_0x2fd432[_0xae39('0x2a')],'interface':_0x2fd432[_0xae39('0x17')],'destlinkedid':_0x2fd432['destlinkedid']};}}}catch(_0x34cf28){logger[_0xae39('0x2e')](_0xae39('0x3b'),_0x34cf28['message']);}};Acw[_0xae39('0x15')][_0xae39('0x3c')]=function(_0x3f133a){try{if(this[_0xae39('0x6')][_0x3f133a[_0xae39('0x2a')]]&&(this['voiceQueues'][_0x3f133a[_0xae39('0x2a')]][_0xae39('0x5')]||this[_0xae39('0x6')][_0x3f133a[_0xae39('0x2a')]][_0xae39('0x19')])){if(this['agents'][_0x3f133a[_0xae39('0x17')]]){this[_0xae39('0x9')][_0x3f133a[_0xae39('0x29')]]={'queue':_0x3f133a[_0xae39('0x2a')],'interface':_0x3f133a[_0xae39('0x17')]};}}}catch(_0x1c0e4f){logger[_0xae39('0x2e')](_0xae39('0x3d'),_0x1c0e4f['message']);}};Acw['prototype'][_0xae39('0x3e')]=function(_0x66b370){try{if(this[_0xae39('0x9')][_0x66b370[_0xae39('0x29')]]&&_[_0xae39('0x3f')](this[_0xae39('0x9')][_0x66b370['uniqueid']][_0xae39('0x22')])){logger[_0xae39('0x20')]('[%s][HANGUP:UNIQUEID]',_0x66b370[_0xae39('0x29')]);this[_0xae39('0x16')](_0x66b370[_0xae39('0x29')]);}else if(this[_0xae39('0x9')][_0x66b370[_0xae39('0x40')]]&&_['isUndefined'](this[_0xae39('0x9')][_0x66b370[_0xae39('0x40')]][_0xae39('0x22')])){logger[_0xae39('0x20')](_0xae39('0x41'),_0x66b370[_0xae39('0x40')]);this[_0xae39('0x16')](_0x66b370[_0xae39('0x40')]);}}catch(_0x1ae610){logger[_0xae39('0x2e')](_0xae39('0x42'),_0x1ae610[_0xae39('0x31')]);}};Acw[_0xae39('0x15')]['syncHangup']=function(_0x29afea){try{if(this[_0xae39('0x9')][_0x29afea[_0xae39('0x29')]]&&this[_0xae39('0x9')][_0x29afea[_0xae39('0x29')]][_0xae39('0x22')]){logger[_0xae39('0x20')](_0xae39('0x43'),_0x29afea[_0xae39('0x29')]);this['startAcw'](_0x29afea[_0xae39('0x29')]);}else if(this[_0xae39('0x9')][_0x29afea[_0xae39('0x40')]]&&this[_0xae39('0x9')][_0x29afea['linkedid']][_0xae39('0x22')]){logger[_0xae39('0x20')](_0xae39('0x44'),_0x29afea[_0xae39('0x40')]);this[_0xae39('0x16')](_0x29afea[_0xae39('0x40')]);}}catch(_0x202745){logger['error'](_0xae39('0x45'),_0x202745[_0xae39('0x31')]);}};Acw['prototype'][_0xae39('0x10')]=function(_0x471358){try{if(!_[_0xae39('0x46')](this['channels'][_0x471358[_0xae39('0x47')]])){this[_0xae39('0x16')](_0x471358[_0xae39('0x47')]);if(this['channels'][_0x471358['secondtransfereruniqueid']]){this['channels'][_0x471358[_0xae39('0x48')]]['attended']=!![];this[_0xae39('0x9')][_0x471358[_0xae39('0x49')]]=this['channels'][_0x471358[_0xae39('0x48')]];delete this[_0xae39('0x9')][_0x471358['secondtransfereruniqueid']];}}else if(!_[_0xae39('0x46')](this[_0xae39('0x9')][_0x471358[_0xae39('0x49')]])){this[_0xae39('0x16')](_0x471358[_0xae39('0x49')]);if(this[_0xae39('0x9')][_0x471358[_0xae39('0x4a')]]){this[_0xae39('0x9')][_0x471358[_0xae39('0x4a')]][_0xae39('0x22')]=!![];this[_0xae39('0x9')][_0x471358[_0xae39('0x47')]]=this['channels'][_0x471358['origtransfereruniqueid']];delete this[_0xae39('0x9')][_0x471358[_0xae39('0x4a')]];}}}catch(_0x5264b5){logger['error'](_0xae39('0x4b'),_0x5264b5[_0xae39('0x31')]);}};Acw['prototype'][_0xae39('0x4c')]=function(_0x556a28){try{if(this[_0xae39('0x9')][_0x556a28[_0xae39('0x4d')]]){logger[_0xae39('0x20')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xae39('0x38')](_0x556a28[_0xae39('0x4d')]));this[_0xae39('0x16')](_0x556a28[_0xae39('0x4d')]);}else if(this[_0xae39('0x9')][_0x556a28[_0xae39('0x4e')]]){logger[_0xae39('0x20')](_0xae39('0x4f'),JSON[_0xae39('0x38')](_0x556a28[_0xae39('0x4e')]));this[_0xae39('0x16')](_0x556a28['transfererlinkedid']);}}catch(_0x390332){logger[_0xae39('0x2e')](_0xae39('0x50'),_0x390332['message']);}};Acw[_0xae39('0x15')][_0xae39('0x51')]=function(_0x4f6fb1){try{if(this['voiceQueues'][_0x4f6fb1[_0xae39('0x2a')]]&&this[_0xae39('0x6')][_0x4f6fb1[_0xae39('0x2a')]]['autopause']===_0xae39('0x52')){if(this[_0xae39('0x7')][_0x4f6fb1['interface']]){logger[_0xae39('0x20')](_0xae39('0x53'),_0x4f6fb1[_0xae39('0x29')],_0x4f6fb1[_0xae39('0x17')],_0x4f6fb1['queue']);return RpcUser[_0xae39('0x24')](this[_0xae39('0x7')][_0x4f6fb1['interface']],'Auto-Pause',_0x4f6fb1['uniqueid']);}}}catch(_0x4b5ce3){logger[_0xae39('0x2e')](_0xae39('0x54'),_0x4b5ce3[_0xae39('0x31')]);}};module[_0xae39('0x55')]=Acw;