Built motion from commit d5e4af8c.|2.6.23
[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 _0x24b1=['[%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','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','timers','lastPauseAt','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','resolve','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','available','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','uniqueid','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','pauseType','ACW','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]'];(function(_0x3c5bff,_0x3ba4d2){var _0x4789f3=function(_0x24745c){while(--_0x24745c){_0x3c5bff['push'](_0x3c5bff['shift']());}};_0x4789f3(++_0x3ba4d2);}(_0x24b1,0x11b));var _0x124b=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x24b1[_0x40a045];return _0x1a687c;};'use strict';var _=require('lodash');var moment=require(_0x124b('0x0'));var ami=require('../ami');var logger=require(_0x124b('0x1'))(_0x124b('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x124b('0x3'));function Acw(_0x1d72c5){this[_0x124b('0x4')]=_0x1d72c5['voiceQueues'];this[_0x124b('0x5')]=_0x1d72c5['agents'];this['timers']=_0x1d72c5['timers'];this[_0x124b('0x6')]={};ami['on'](_0x124b('0x7'),this[_0x124b('0x8')][_0x124b('0x9')](this));ami['on'](_0x124b('0xa'),this[_0x124b('0xb')][_0x124b('0x9')](this));ami['on'](_0x124b('0xc'),this[_0x124b('0xd')][_0x124b('0x9')](this));ami['on'](_0x124b('0xe'),this[_0x124b('0xf')][_0x124b('0x9')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x124b('0x9')](this));ami['on'](_0x124b('0x10'),this['syncBlindTransfer'][_0x124b('0x9')](this));ami['on'](_0x124b('0x11'),this[_0x124b('0x12')][_0x124b('0x9')](this));}function getDiff(_0x49fde7){var _0x5d062a=moment()[_0x124b('0x13')](0x0);var _0x1a9273=moment(_0x49fde7)[_0x124b('0x13')](0x0);return _0x5d062a[_0x124b('0x14')](_0x1a9273,_0x124b('0x15'));}Acw[_0x124b('0x16')][_0x124b('0x17')]=function(_0x58dab8,_0x3d3e08){var _0x2dcafd=this;var _0x35f206=getDiff(_0x2dcafd[_0x124b('0x18')][_0x58dab8][_0x124b('0x19')]);clearTimeout(_0x2dcafd[_0x124b('0x18')][_0x58dab8]['timer']);_0x2dcafd[_0x124b('0x18')][_0x58dab8][_0x124b('0x1a')]=![];return RpcVoiceAgentReport[_0x124b('0x1b')]({'acwtime':_0x35f206},_0x2dcafd['timers'][_0x58dab8]['uniqueid'],_0x58dab8)[_0x124b('0x1c')](function(_0x108cd7){logger[_0x124b('0x1d')](_0x124b('0x1e'),_0x3d3e08,_0x35f206,_0x108cd7);})[_0x124b('0x1f')](function(_0x5eb047){logger[_0x124b('0x20')](_0x124b('0x21'),_0x3d3e08,_0x5eb047);})[_0x124b('0x22')](function(){delete _0x2dcafd['timers'][_0x58dab8];});};Acw[_0x124b('0x16')][_0x124b('0x23')]=function(_0x185fa2){try{var _0x4414de=this;var _0x4290f1=this['channels'][_0x185fa2][_0x124b('0x24')];var _0x1e3871=this[_0x124b('0x6')][_0x185fa2][_0x124b('0x25')];var _0x4d80a6=this[_0x124b('0x4')][_0x1e3871];var _0x3bff1d=![];var _0x15185a='ACW';if(_0x4d80a6[_0x124b('0x26')]&&_0x4d80a6[_0x124b('0x27')]['name']){_0x3bff1d=!![];_0x15185a=_0x4d80a6[_0x124b('0x27')]['name'];}if(!_0x4414de[_0x124b('0x5')][_0x4290f1]){return Promise[_0x124b('0x28')]();}return RpcUser[_0x124b('0x29')](_0x4414de[_0x124b('0x5')][_0x4290f1]['id'])[_0x124b('0x1c')](function(_0x14079b){if(!_0x14079b||_0x14079b[_0x124b('0x2a')]){logger[_0x124b('0x1d')](_0x124b('0x2b'),_0x185fa2,_0x4290f1,_0x1e3871);return;}logger[_0x124b('0x1d')](_0x124b('0x2c'),_0x185fa2,_0x4290f1,_0x1e3871);var _0x3029ac=_0x4414de['channels'][_0x185fa2][_0x124b('0x2d')]&&_0x4414de[_0x124b('0x6')][_0x185fa2]['destlinkedid']?_0x4414de[_0x124b('0x6')][_0x185fa2][_0x124b('0x2e')]:_0x185fa2;return RpcUser[_0x124b('0x2f')](_0x4414de[_0x124b('0x5')][_0x4290f1],_0x15185a,_0x3029ac)[_0x124b('0x1c')](function(_0x1bb898){_0x4414de['voiceQueues'][_0x1e3871][_0x124b('0x30')]-=0x1;_0x4414de[_0x124b('0x4')][_0x1e3871]['paused']+=0x1;return _0x1bb898;});})[_0x124b('0x1c')](function(_0x48581f){if(_0x3bff1d||!_0x48581f){return;}_0x4414de['timers'][_0x4290f1]={};logger[_0x124b('0x1d')](_0x124b('0x31'),_0x185fa2,_0x4414de[_0x124b('0x4')][_0x1e3871][_0x124b('0x32')],_0x4290f1,_0x1e3871);_0x4414de[_0x124b('0x18')][_0x4290f1][_0x124b('0x1a')]=setTimeout(_0x4414de[_0x124b('0x33')][_0x124b('0x9')](_0x4414de,_0x4290f1),_0x4414de[_0x124b('0x4')][_0x1e3871][_0x124b('0x32')]*0x3e8);_0x4414de[_0x124b('0x18')][_0x4290f1][_0x124b('0x19')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4414de['timers'][_0x4290f1][_0x124b('0x34')]=_0x185fa2;_0x4414de[_0x124b('0x18')][_0x4290f1][_0x124b('0x25')]=_0x1e3871;_0x4414de['timers'][_0x4290f1]['updateAcw']=_0x4414de[_0x124b('0x17')]['bind'](_0x4414de,_0x4290f1,_0x185fa2);})[_0x124b('0x1f')](function(){logger['error'](_0x124b('0x31'),_0x185fa2,_0x4414de[_0x124b('0x4')][_0x1e3871][_0x124b('0x32')],_0x4290f1,_0x1e3871);})[_0x124b('0x22')](function(){delete _0x4414de[_0x124b('0x6')][_0x185fa2];});}catch(_0x59e4c1){logger['error'](_0x124b('0x35'),_0x59e4c1['message']);}};Acw[_0x124b('0x16')][_0x124b('0x33')]=function(_0x3e44bb){try{var _0x5167f3=this;if(_0x5167f3[_0x124b('0x18')][_0x3e44bb]){_0x5167f3[_0x124b('0x18')][_0x3e44bb][_0x124b('0x1a')]=![];var _0x1522c5=_0x5167f3[_0x124b('0x18')][_0x3e44bb]['uniqueid'];var _0x182f04=_0x5167f3[_0x124b('0x18')][_0x3e44bb][_0x124b('0x25')];var _0xeb23e8=_0x5167f3[_0x124b('0x4')][_0x182f04]['acwTimeout'];logger[_0x124b('0x1d')](_0x124b('0x36'),_0x1522c5,_0x3e44bb);RpcUser[_0x124b('0x29')](this['agents'][_0x3e44bb]['id'])[_0x124b('0x1c')](function(_0x281fe0){if(_0x281fe0[_0x124b('0x37')]===_0x124b('0x38')){return RpcUser[_0x124b('0x39')](_0x5167f3[_0x124b('0x5')][_0x3e44bb]);}});RpcVoiceAgentReport[_0x124b('0x1b')]({'acwtime':_0xeb23e8,'agentacw':!![]},_0x1522c5,_0x3e44bb)[_0x124b('0x1c')](function(_0x30b82b){logger[_0x124b('0x1d')](_0x124b('0x1e'),_0x1522c5,_0xeb23e8,_0x30b82b);})['catch'](function(_0x47a16c){logger['error'](_0x124b('0x21'),_0x1522c5,_0x47a16c);});}else{logger['error'](_0x124b('0x3a'),_0x3e44bb);if(_0x5167f3[_0x124b('0x18')]){logger[_0x124b('0x1d')](_0x124b('0x3b'),JSON[_0x124b('0x3c')](_0x5167f3['timers']));}}}catch(_0x2e5562){logger[_0x124b('0x20')](_0x124b('0x3d'),_0x2e5562['message']);}};Acw[_0x124b('0x16')][_0x124b('0x8')]=function(_0x42b55b){try{if(this[_0x124b('0x4')][_0x42b55b[_0x124b('0x25')]]&&(this['voiceQueues'][_0x42b55b[_0x124b('0x25')]][_0x124b('0x2')]||this['voiceQueues'][_0x42b55b[_0x124b('0x25')]]['mandatoryDisposition'])){if(this[_0x124b('0x5')][_0x42b55b[_0x124b('0x24')]]){this[_0x124b('0x6')][_0x42b55b[_0x124b('0x34')]]={'queue':_0x42b55b['queue'],'interface':_0x42b55b[_0x124b('0x24')],'destlinkedid':_0x42b55b[_0x124b('0x2e')]};}}}catch(_0xf58b7a){logger[_0x124b('0x20')]('[ACW][syncAgentConnect]\x20%s',_0xf58b7a[_0x124b('0x3e')]);}};Acw[_0x124b('0x16')][_0x124b('0x12')]=function(_0x1bb9f0){try{if(this[_0x124b('0x4')][_0x1bb9f0['queue']]&&(this['voiceQueues'][_0x1bb9f0[_0x124b('0x25')]]['acw']||this[_0x124b('0x4')][_0x1bb9f0[_0x124b('0x25')]][_0x124b('0x26')])){if(this['agents'][_0x1bb9f0[_0x124b('0x24')]]){this[_0x124b('0x6')][_0x1bb9f0['uniqueid']]={'queue':_0x1bb9f0[_0x124b('0x25')],'interface':_0x1bb9f0[_0x124b('0x24')]};}}}catch(_0xef4c6e){logger[_0x124b('0x20')](_0x124b('0x3f'),_0xef4c6e[_0x124b('0x3e')]);}};Acw['prototype'][_0x124b('0xb')]=function(_0x211bf9){try{if(this['channels'][_0x211bf9[_0x124b('0x34')]]&&_['isUndefined'](this[_0x124b('0x6')][_0x211bf9['uniqueid']][_0x124b('0x2d')])){logger['info'](_0x124b('0x40'),_0x211bf9[_0x124b('0x34')]);this[_0x124b('0x23')](_0x211bf9[_0x124b('0x34')]);}else if(this[_0x124b('0x6')][_0x211bf9['linkedid']]&&_['isUndefined'](this[_0x124b('0x6')][_0x211bf9['linkedid']][_0x124b('0x2d')])){logger['info'](_0x124b('0x41'),_0x211bf9['linkedid']);this[_0x124b('0x23')](_0x211bf9[_0x124b('0x42')]);}}catch(_0x5cf5e2){logger['error'](_0x124b('0x43'),_0x5cf5e2[_0x124b('0x3e')]);}};Acw[_0x124b('0x16')][_0x124b('0xd')]=function(_0x163025){try{if(this[_0x124b('0x6')][_0x163025[_0x124b('0x34')]]&&this[_0x124b('0x6')][_0x163025[_0x124b('0x34')]][_0x124b('0x2d')]){logger[_0x124b('0x1d')](_0x124b('0x44'),_0x163025[_0x124b('0x34')]);this[_0x124b('0x23')](_0x163025[_0x124b('0x34')]);}else if(this[_0x124b('0x6')][_0x163025['linkedid']]&&this[_0x124b('0x6')][_0x163025[_0x124b('0x42')]][_0x124b('0x2d')]){logger[_0x124b('0x1d')](_0x124b('0x45'),_0x163025['linkedid']);this[_0x124b('0x23')](_0x163025[_0x124b('0x42')]);}}catch(_0x17000f){logger[_0x124b('0x20')](_0x124b('0x46'),_0x17000f[_0x124b('0x3e')]);}};Acw['prototype']['syncAttendedTransfer']=function(_0x42106e){try{if(!_[_0x124b('0x47')](this[_0x124b('0x6')][_0x42106e[_0x124b('0x48')]])){this[_0x124b('0x23')](_0x42106e[_0x124b('0x48')]);if(this[_0x124b('0x6')][_0x42106e[_0x124b('0x49')]]){this['channels'][_0x42106e[_0x124b('0x49')]][_0x124b('0x2d')]=!![];this[_0x124b('0x6')][_0x42106e[_0x124b('0x4a')]]=this[_0x124b('0x6')][_0x42106e[_0x124b('0x49')]];delete this[_0x124b('0x6')][_0x42106e[_0x124b('0x49')]];}}else if(!_[_0x124b('0x47')](this[_0x124b('0x6')][_0x42106e[_0x124b('0x4a')]])){this[_0x124b('0x23')](_0x42106e[_0x124b('0x4a')]);if(this['channels'][_0x42106e[_0x124b('0x4b')]]){this[_0x124b('0x6')][_0x42106e[_0x124b('0x4b')]][_0x124b('0x2d')]=!![];this[_0x124b('0x6')][_0x42106e[_0x124b('0x48')]]=this[_0x124b('0x6')][_0x42106e[_0x124b('0x4b')]];delete this[_0x124b('0x6')][_0x42106e[_0x124b('0x4b')]];}}}catch(_0x44d9ad){logger[_0x124b('0x20')](_0x124b('0x4c'),_0x44d9ad['message']);}};Acw['prototype'][_0x124b('0x4d')]=function(_0x3cae14){try{if(this[_0x124b('0x6')][_0x3cae14['transfereruniqueid']]){logger[_0x124b('0x1d')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x124b('0x3c')](_0x3cae14[_0x124b('0x4e')]));this[_0x124b('0x23')](_0x3cae14[_0x124b('0x4e')]);}else if(this[_0x124b('0x6')][_0x3cae14[_0x124b('0x4f')]]){logger[_0x124b('0x1d')](_0x124b('0x50'),JSON['stringify'](_0x3cae14[_0x124b('0x4f')]));this[_0x124b('0x23')](_0x3cae14[_0x124b('0x4f')]);}}catch(_0xc19d6a){logger[_0x124b('0x20')](_0x124b('0x51'),_0xc19d6a['message']);}};Acw[_0x124b('0x16')]['syncAgentRingNoAnswer']=function(_0x5c898f){try{if(this['voiceQueues'][_0x5c898f[_0x124b('0x25')]]&&this[_0x124b('0x4')][_0x5c898f[_0x124b('0x25')]][_0x124b('0x52')]===_0x124b('0x53')){if(this[_0x124b('0x5')][_0x5c898f[_0x124b('0x24')]]){logger[_0x124b('0x1d')](_0x124b('0x54'),_0x5c898f[_0x124b('0x34')],_0x5c898f[_0x124b('0x24')],_0x5c898f[_0x124b('0x25')]);return RpcUser['savePause'](this['agents'][_0x5c898f[_0x124b('0x24')]],_0x124b('0x55'),_0x5c898f[_0x124b('0x34')]);}}}catch(_0x23bc4b){logger['error'](_0x124b('0x56'),_0x23bc4b[_0x124b('0x3e')]);}};module[_0x124b('0x57')]=Acw;