Built motion from commit 25580385.|2.6.2
[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 _0xb060=['voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','syncHangupRequest','bind','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','acw','mandatoryDisposition','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','linkedid','isUndefined','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../../../config/logger','../rpc/voiceAgentReport'];(function(_0x1336d8,_0x2b18f5){var _0x4ea882=function(_0x388e0e){while(--_0x388e0e){_0x1336d8['push'](_0x1336d8['shift']());}};_0x4ea882(++_0x2b18f5);}(_0xb060,0xf0));var _0x0b06=function(_0x4c7f2f,_0x45f484){_0x4c7f2f=_0x4c7f2f-0x0;var _0x44f8a6=_0xb060[_0x4c7f2f];return _0x44f8a6;};'use strict';var util=require('util');var _=require(_0x0b06('0x0'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x0b06('0x1'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x0b06('0x2'));function Acw(_0x5b2e91){this[_0x0b06('0x3')]=_0x5b2e91['voiceQueues'];this[_0x0b06('0x4')]=_0x5b2e91[_0x0b06('0x4')];this[_0x0b06('0x5')]=_0x5b2e91['timers'];this[_0x0b06('0x6')]={};ami['on'](_0x0b06('0x7'),this[_0x0b06('0x8')]['bind'](this));ami['on']('hanguprequest',this[_0x0b06('0x9')][_0x0b06('0xa')](this));ami['on'](_0x0b06('0xb'),this[_0x0b06('0xc')][_0x0b06('0xa')](this));ami['on']('agentringnoanswer',this[_0x0b06('0xd')][_0x0b06('0xa')](this));ami['on'](_0x0b06('0xe'),this[_0x0b06('0xf')]['bind'](this));ami['on']('blindtransfer',this[_0x0b06('0x10')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x0b06('0xa')](this));}function getDiff(_0x30b282){var _0x33eee0=moment()[_0x0b06('0x11')](0x0);var _0x2cc152=moment(_0x30b282)[_0x0b06('0x11')](0x0);return _0x33eee0[_0x0b06('0x12')](_0x2cc152,_0x0b06('0x13'));}Acw['prototype'][_0x0b06('0x14')]=function(_0x3647f9){try{var _0x2b788a=this;var _0x5aa0f6=this[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x15')];var _0x5f3ee4=this[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x16')];var _0x164555=this[_0x0b06('0x3')][_0x5f3ee4];var _0x5c966d=![];var _0x44e2c4=_0x0b06('0x17');if(_0x164555['mandatoryDisposition']){if(_0x164555['mandatoryDispositionPause']['name']){_0x5c966d=!![];_0x44e2c4=_0x164555[_0x0b06('0x18')][_0x0b06('0x19')];}}ami[_0x0b06('0x1a')]({'action':_0x0b06('0x1b'),'interface':_0x5aa0f6,'paused':!![],'reason':_0x44e2c4})[_0x0b06('0x1c')](function(_0x44ba87){if(_0x2b788a['agents'][_0x5aa0f6]){return RpcUser[_0x0b06('0x1d')](_0x2b788a[_0x0b06('0x4')][_0x5aa0f6]['id'])[_0x0b06('0x1c')](function(_0xdf7cb6){if(_0xdf7cb6&&!_0xdf7cb6[_0x0b06('0x1e')]){logger[_0x0b06('0x1f')](_0x0b06('0x20'),_0x3647f9,_0x5aa0f6,_0x5f3ee4);var _0x509c25=_0x2b788a[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x21')]&&_0x2b788a[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x22')]?_0x2b788a['channels'][_0x3647f9]['destlinkedid']:_0x3647f9;return RpcUser['savePause'](_0x2b788a[_0x0b06('0x4')][_0x5aa0f6],_0x44e2c4,_0x509c25)[_0x0b06('0x1c')](function(_0x4fdd0b){if(!_0x5c966d){_0x2b788a['timers'][_0x5aa0f6]={};logger[_0x0b06('0x1f')](_0x0b06('0x23'),_0x3647f9,_0x2b788a[_0x0b06('0x3')][_0x5f3ee4][_0x0b06('0x24')],_0x5aa0f6,_0x5f3ee4);_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x25')]=setTimeout(_0x2b788a[_0x0b06('0x26')][_0x0b06('0xa')](_0x2b788a,_0x5aa0f6),_0x2b788a[_0x0b06('0x3')][_0x5f3ee4]['acwTimeout']*0x3e8);_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['lastPauseAt']=moment()[_0x0b06('0x27')](_0x0b06('0x28'));_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x29')]=_0x3647f9;_0x2b788a['timers'][_0x5aa0f6][_0x0b06('0x16')]=_0x5f3ee4;_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x2a')]=function(){var _0x20fda1=getDiff(_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['lastPauseAt']);clearTimeout(_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x25')]);_0x2b788a['timers'][_0x5aa0f6][_0x0b06('0x25')]=![];RpcVoiceAgentReport[_0x0b06('0x2b')]({'acwtime':_0x20fda1},_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['uniqueid'],_0x5aa0f6)[_0x0b06('0x1c')](function(_0x38d7b5){logger[_0x0b06('0x1f')](_0x0b06('0x2c'),_0x3647f9,_0x20fda1,_0x38d7b5);})[_0x0b06('0x2d')](function(_0x63aa58){logger[_0x0b06('0x2e')](_0x0b06('0x2f'),_0x3647f9,_0x63aa58);});delete _0x2b788a[_0x0b06('0x5')][_0x5aa0f6];};}});}else{logger[_0x0b06('0x1f')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x3647f9,_0x5aa0f6,_0x5f3ee4);}});}})['catch'](function(_0x3e5b8a){logger[_0x0b06('0x2e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3647f9,_0x2b788a['voiceQueues'][_0x5f3ee4][_0x0b06('0x24')],_0x5aa0f6,_0x5f3ee4);})['finally'](function(){delete _0x2b788a['channels'][_0x3647f9];});}catch(_0x263893){logger[_0x0b06('0x2e')]('[ACW][START]\x20%s',_0x263893['message']);}};Acw[_0x0b06('0x30')][_0x0b06('0x26')]=function(_0x5013cb){try{var _0x597a9c=this;if(_0x597a9c[_0x0b06('0x5')][_0x5013cb]){_0x597a9c[_0x0b06('0x5')][_0x5013cb][_0x0b06('0x25')]=![];var _0x36e20c=_0x597a9c['timers'][_0x5013cb]['uniqueid'];var _0x1f0b62=_0x597a9c['timers'][_0x5013cb][_0x0b06('0x16')];var _0x5bd518=_0x597a9c[_0x0b06('0x3')][_0x1f0b62][_0x0b06('0x24')];logger['info'](_0x0b06('0x31'),_0x36e20c,_0x5013cb);RpcUser[_0x0b06('0x32')](this[_0x0b06('0x4')][_0x5013cb]);RpcVoiceAgentReport[_0x0b06('0x2b')]({'acwtime':_0x5bd518,'agentacw':!![]},_0x36e20c,_0x5013cb)['then'](function(_0x3ce066){logger[_0x0b06('0x1f')](_0x0b06('0x2c'),_0x36e20c,_0x5bd518,_0x3ce066);})[_0x0b06('0x2d')](function(_0x5972a8){logger[_0x0b06('0x2e')](_0x0b06('0x2f'),_0x36e20c,_0x5972a8);});}else{logger[_0x0b06('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x5013cb);if(_0x597a9c[_0x0b06('0x5')]){logger[_0x0b06('0x1f')](_0x0b06('0x33'),JSON[_0x0b06('0x34')](_0x597a9c[_0x0b06('0x5')]));}}}catch(_0xe0fe38){logger[_0x0b06('0x2e')](_0x0b06('0x35'),_0xe0fe38[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0x8')]=function(_0x10e8e0){try{if(this['voiceQueues'][_0x10e8e0[_0x0b06('0x16')]]&&(this['voiceQueues'][_0x10e8e0[_0x0b06('0x16')]][_0x0b06('0x37')]||this[_0x0b06('0x3')][_0x10e8e0[_0x0b06('0x16')]][_0x0b06('0x38')])){if(this[_0x0b06('0x4')][_0x10e8e0['interface']]){this[_0x0b06('0x6')][_0x10e8e0['uniqueid']]={'queue':_0x10e8e0[_0x0b06('0x16')],'interface':_0x10e8e0[_0x0b06('0x15')],'destlinkedid':_0x10e8e0[_0x0b06('0x22')]};}}}catch(_0x18385b){logger[_0x0b06('0x2e')]('[ACW][syncAgentConnect]\x20%s',_0x18385b['message']);}};Acw[_0x0b06('0x30')][_0x0b06('0x39')]=function(_0x39bfc1){try{if(this[_0x0b06('0x3')][_0x39bfc1[_0x0b06('0x16')]]&&(this[_0x0b06('0x3')][_0x39bfc1[_0x0b06('0x16')]]['acw']||this['voiceQueues'][_0x39bfc1['queue']]['mandatoryDisposition'])){if(this[_0x0b06('0x4')][_0x39bfc1[_0x0b06('0x15')]]){this[_0x0b06('0x6')][_0x39bfc1['uniqueid']]={'queue':_0x39bfc1[_0x0b06('0x16')],'interface':_0x39bfc1[_0x0b06('0x15')]};}}}catch(_0x26a23f){logger[_0x0b06('0x2e')](_0x0b06('0x3a'),_0x26a23f[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0x9')]=function(_0x5f30bf){try{if(this['channels'][_0x5f30bf['uniqueid']]&&_['isUndefined'](this[_0x0b06('0x6')][_0x5f30bf[_0x0b06('0x29')]][_0x0b06('0x21')])){logger[_0x0b06('0x1f')]('[%s][HANGUP:UNIQUEID]',_0x5f30bf[_0x0b06('0x29')]);this[_0x0b06('0x14')](_0x5f30bf['uniqueid']);}else if(this[_0x0b06('0x6')][_0x5f30bf[_0x0b06('0x3b')]]&&_[_0x0b06('0x3c')](this[_0x0b06('0x6')][_0x5f30bf['linkedid']][_0x0b06('0x21')])){logger[_0x0b06('0x1f')]('[%s][HANGUP:LINKEDID]',_0x5f30bf['linkedid']);this['startAcw'](_0x5f30bf[_0x0b06('0x3b')]);}}catch(_0x4f56cf){logger[_0x0b06('0x2e')](_0x0b06('0x3d'),_0x4f56cf[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0xc')]=function(_0x3cf4be){try{if(this['channels'][_0x3cf4be[_0x0b06('0x29')]]&&this[_0x0b06('0x6')][_0x3cf4be[_0x0b06('0x29')]][_0x0b06('0x21')]){logger[_0x0b06('0x1f')](_0x0b06('0x3e'),_0x3cf4be[_0x0b06('0x29')]);this[_0x0b06('0x14')](_0x3cf4be[_0x0b06('0x29')]);}else if(this[_0x0b06('0x6')][_0x3cf4be['linkedid']]&&this[_0x0b06('0x6')][_0x3cf4be[_0x0b06('0x3b')]][_0x0b06('0x21')]){logger[_0x0b06('0x1f')](_0x0b06('0x3f'),_0x3cf4be[_0x0b06('0x3b')]);this['startAcw'](_0x3cf4be['linkedid']);}}catch(_0x1dceae){logger[_0x0b06('0x2e')]('[ACW][syncHangup]\x20%s',_0x1dceae['message']);}};Acw['prototype'][_0x0b06('0xf')]=function(_0x2defbb){try{if(!_[_0x0b06('0x40')](this[_0x0b06('0x6')][_0x2defbb['transfereeuniqueid']])){this[_0x0b06('0x14')](_0x2defbb[_0x0b06('0x41')]);if(this['channels'][_0x2defbb[_0x0b06('0x42')]]){this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]]['attended']=!![];this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x43')]]=this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]];delete this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]];}}else if(!_['isNil'](this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x43')]])){this[_0x0b06('0x14')](_0x2defbb[_0x0b06('0x43')]);if(this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]]){this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]][_0x0b06('0x21')]=!![];this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x41')]]=this['channels'][_0x2defbb[_0x0b06('0x44')]];delete this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]];}}}catch(_0x2e0c7b){logger[_0x0b06('0x2e')](_0x0b06('0x45'),_0x2e0c7b[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')]['syncBlindTransfer']=function(_0x2c1cf6){try{if(this[_0x0b06('0x6')][_0x2c1cf6['transfereruniqueid']]){logger[_0x0b06('0x1f')](_0x0b06('0x46'),JSON[_0x0b06('0x34')](_0x2c1cf6[_0x0b06('0x47')]));this['startAcw'](_0x2c1cf6[_0x0b06('0x47')]);}else if(this[_0x0b06('0x6')][_0x2c1cf6[_0x0b06('0x48')]]){logger[_0x0b06('0x1f')](_0x0b06('0x49'),JSON[_0x0b06('0x34')](_0x2c1cf6['transfererlinkedid']));this[_0x0b06('0x14')](_0x2c1cf6[_0x0b06('0x48')]);}}catch(_0x14ccb1){logger[_0x0b06('0x2e')](_0x0b06('0x4a'),_0x14ccb1['message']);}};Acw['prototype'][_0x0b06('0xd')]=function(_0x2fc127){try{if(this['voiceQueues'][_0x2fc127[_0x0b06('0x16')]]&&this[_0x0b06('0x3')][_0x2fc127[_0x0b06('0x16')]][_0x0b06('0x4b')]==='all'){if(this['agents'][_0x2fc127[_0x0b06('0x15')]]){logger['info'](_0x0b06('0x4c'),_0x2fc127['uniqueid'],_0x2fc127['interface'],_0x2fc127[_0x0b06('0x16')]);return RpcUser[_0x0b06('0x4d')](this['agents'][_0x2fc127[_0x0b06('0x15')]],_0x0b06('0x4e'),_0x2fc127[_0x0b06('0x29')]);}}}catch(_0x27ed8e){logger[_0x0b06('0x2e')](_0x0b06('0x4f'),_0x27ed8e[_0x0b06('0x36')]);}};module[_0x0b06('0x50')]=Acw;