31d5a665aa30e4a3345f512b83f718bcc4327a09
[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 _0xea5f=['error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','voicePause','info','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','uniqueid','[ACW][START]\x20%s','message','getAgent','pauseType','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnect]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','agentringnoanswer','attendedtransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','updateAcw','lastPauseAt','timer','update','then','catch'];(function(_0x1e2321,_0x3ae1c5){var _0x1d346d=function(_0x24f171){while(--_0x24f171){_0x1e2321['push'](_0x1e2321['shift']());}};_0x1d346d(++_0x3ae1c5);}(_0xea5f,0x145));var _0xfea5=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0xea5f[_0x20c9b2];return _0x2c6030;};'use strict';var _=require(_0xfea5('0x0'));var moment=require(_0xfea5('0x1'));var ami=require(_0xfea5('0x2'));var logger=require(_0xfea5('0x3'))(_0xfea5('0x4'));var RpcUser=require(_0xfea5('0x5'));var RpcVoiceAgentReport=require(_0xfea5('0x6'));function Acw(_0x3017e3){this[_0xfea5('0x7')]=_0x3017e3[_0xfea5('0x7')];this[_0xfea5('0x8')]=_0x3017e3['agents'];this[_0xfea5('0x9')]=_0x3017e3['timers'];this[_0xfea5('0xa')]={};ami['on'](_0xfea5('0xb'),this[_0xfea5('0xc')][_0xfea5('0xd')](this));ami['on']('hanguprequest',this[_0xfea5('0xe')][_0xfea5('0xd')](this));ami['on'](_0xfea5('0xf'),this['syncHangup'][_0xfea5('0xd')](this));ami['on'](_0xfea5('0x10'),this['syncAgentRingNoAnswer']['bind'](this));ami['on'](_0xfea5('0x11'),this['syncAttendedTransfer'][_0xfea5('0xd')](this));ami['on'](_0xfea5('0x12'),this[_0xfea5('0x13')][_0xfea5('0xd')](this));ami['on'](_0xfea5('0x14'),this[_0xfea5('0x15')][_0xfea5('0xd')](this));}function getDiff(_0x128eee){var _0x124367=moment()[_0xfea5('0x16')](0x0);var _0x2f5088=moment(_0x128eee)['milliseconds'](0x0);return _0x124367[_0xfea5('0x17')](_0x2f5088,'seconds');}Acw[_0xfea5('0x18')][_0xfea5('0x19')]=function(_0x31e13b,_0x3497b2){var _0x3d2f70=this;var _0x972709=getDiff(_0x3d2f70[_0xfea5('0x9')][_0x31e13b][_0xfea5('0x1a')]);clearTimeout(_0x3d2f70[_0xfea5('0x9')][_0x31e13b][_0xfea5('0x1b')]);_0x3d2f70['timers'][_0x31e13b][_0xfea5('0x1b')]=![];return RpcVoiceAgentReport[_0xfea5('0x1c')]({'acwtime':_0x972709},_0x3d2f70[_0xfea5('0x9')][_0x31e13b]['uniqueid'],_0x31e13b)[_0xfea5('0x1d')](function(_0x37c6a6){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x3497b2,_0x972709,_0x37c6a6);})[_0xfea5('0x1e')](function(_0x3ca19d){logger[_0xfea5('0x1f')](_0xfea5('0x20'),_0x3497b2,_0x3ca19d);})[_0xfea5('0x21')](function(){delete _0x3d2f70['timers'][_0x31e13b];});};Acw[_0xfea5('0x18')][_0xfea5('0x22')]=function(_0x53762d){try{var _0x46175a=this;var _0x2beba9=this['channels'][_0x53762d]['interface'];var _0x253b0e=this[_0xfea5('0xa')][_0x53762d][_0xfea5('0x23')];var _0x46d11f=this[_0xfea5('0x7')][_0x253b0e];var _0x19f88c=![];var _0xefeb96='ACW';if(_0x46d11f[_0xfea5('0x24')]&&_0x46d11f[_0xfea5('0x25')][_0xfea5('0x26')]){_0x19f88c=!![];_0xefeb96=_0x46d11f[_0xfea5('0x25')][_0xfea5('0x26')];}return ami[_0xfea5('0x27')]({'action':_0xfea5('0x28'),'interface':_0x2beba9,'paused':!![],'reason':_0xefeb96})[_0xfea5('0x1d')](function(){if(_0x46175a[_0xfea5('0x8')][_0x2beba9]){return RpcUser['getAgent'](_0x46175a[_0xfea5('0x8')][_0x2beba9]['id'])['then'](function(_0x2d1864){if(!_0x2d1864||_0x2d1864[_0xfea5('0x29')]){logger[_0xfea5('0x2a')](_0xfea5('0x2b'),_0x53762d,_0x2beba9,_0x253b0e);return;}logger['info'](_0xfea5('0x2c'),_0x53762d,_0x2beba9,_0x253b0e);var _0xaec7ad=_0x46175a[_0xfea5('0xa')][_0x53762d]['attended']&&_0x46175a[_0xfea5('0xa')][_0x53762d][_0xfea5('0x2d')]?_0x46175a[_0xfea5('0xa')][_0x53762d]['destlinkedid']:_0x53762d;return RpcUser[_0xfea5('0x2e')](_0x46175a[_0xfea5('0x8')][_0x2beba9],_0xefeb96,_0xaec7ad)[_0xfea5('0x1d')](function(_0x36c073){_0x46175a[_0xfea5('0x7')][_0x253b0e]['available']-=0x1;_0x46175a[_0xfea5('0x7')][_0x253b0e]['paused']+=0x1;return _0x36c073;});})[_0xfea5('0x1d')](function(_0x394ee6){if(_0x19f88c||!_0x394ee6){return;}_0x46175a['timers'][_0x2beba9]={};logger['info'](_0xfea5('0x2f'),_0x53762d,_0x46175a['voiceQueues'][_0x253b0e][_0xfea5('0x30')],_0x2beba9,_0x253b0e);_0x46175a[_0xfea5('0x9')][_0x2beba9][_0xfea5('0x1b')]=setTimeout(_0x46175a[_0xfea5('0x31')][_0xfea5('0xd')](_0x46175a,_0x2beba9),_0x46175a['voiceQueues'][_0x253b0e]['acwTimeout']*0x3e8);_0x46175a['timers'][_0x2beba9][_0xfea5('0x1a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x46175a[_0xfea5('0x9')][_0x2beba9][_0xfea5('0x32')]=_0x53762d;_0x46175a[_0xfea5('0x9')][_0x2beba9][_0xfea5('0x23')]=_0x253b0e;_0x46175a[_0xfea5('0x9')][_0x2beba9][_0xfea5('0x19')]=_0x46175a[_0xfea5('0x19')][_0xfea5('0xd')](_0x46175a,_0x2beba9,_0x53762d);});}})[_0xfea5('0x1e')](function(){logger['error'](_0xfea5('0x2f'),_0x53762d,_0x46175a[_0xfea5('0x7')][_0x253b0e][_0xfea5('0x30')],_0x2beba9,_0x253b0e);})[_0xfea5('0x21')](function(){delete _0x46175a[_0xfea5('0xa')][_0x53762d];});}catch(_0x3d283f){logger[_0xfea5('0x1f')](_0xfea5('0x33'),_0x3d283f[_0xfea5('0x34')]);}};Acw[_0xfea5('0x18')]['stopAcw']=function(_0x409e8e){try{var _0x31d140=this;if(_0x31d140[_0xfea5('0x9')][_0x409e8e]){_0x31d140[_0xfea5('0x9')][_0x409e8e][_0xfea5('0x1b')]=![];var _0x32ed88=_0x31d140[_0xfea5('0x9')][_0x409e8e]['uniqueid'];var _0x17ceb6=_0x31d140['timers'][_0x409e8e][_0xfea5('0x23')];var _0x288401=_0x31d140[_0xfea5('0x7')][_0x17ceb6]['acwTimeout'];logger[_0xfea5('0x2a')]('[%s][TIMER][STOP][AGENT:%s]',_0x32ed88,_0x409e8e);RpcUser[_0xfea5('0x35')](this[_0xfea5('0x8')][_0x409e8e]['id'])[_0xfea5('0x1d')](function(_0x30aa1d){if(_0x30aa1d[_0xfea5('0x36')]==='ACW'){return RpcUser['saveUnpause'](_0x31d140[_0xfea5('0x8')][_0x409e8e]);}});RpcVoiceAgentReport[_0xfea5('0x1c')]({'acwtime':_0x288401,'agentacw':!![]},_0x32ed88,_0x409e8e)['then'](function(_0x1b8ef9){logger[_0xfea5('0x2a')](_0xfea5('0x37'),_0x32ed88,_0x288401,_0x1b8ef9);})[_0xfea5('0x1e')](function(_0x3e1b44){logger[_0xfea5('0x1f')]('[%s][UPDATE][ERRORS:%s]',_0x32ed88,_0x3e1b44);});}else{logger[_0xfea5('0x1f')](_0xfea5('0x38'),_0x409e8e);if(_0x31d140['timers']){logger[_0xfea5('0x2a')](_0xfea5('0x39'),JSON['stringify'](_0x31d140[_0xfea5('0x9')]));}}}catch(_0x25702e){logger[_0xfea5('0x1f')](_0xfea5('0x3a'),_0x25702e[_0xfea5('0x34')]);}};Acw[_0xfea5('0x18')][_0xfea5('0xc')]=function(_0x19ec13){try{if(this[_0xfea5('0x7')][_0x19ec13['queue']]&&(this['voiceQueues'][_0x19ec13['queue']][_0xfea5('0x4')]||this['voiceQueues'][_0x19ec13[_0xfea5('0x23')]][_0xfea5('0x24')])){if(this[_0xfea5('0x8')][_0x19ec13[_0xfea5('0x3b')]]){this[_0xfea5('0xa')][_0x19ec13[_0xfea5('0x32')]]={'queue':_0x19ec13[_0xfea5('0x23')],'interface':_0x19ec13[_0xfea5('0x3b')],'destlinkedid':_0x19ec13[_0xfea5('0x2d')]};}}}catch(_0x1a0461){logger[_0xfea5('0x1f')](_0xfea5('0x3c'),_0x1a0461['message']);}};Acw[_0xfea5('0x18')][_0xfea5('0x15')]=function(_0x1e1317){try{if(this[_0xfea5('0x7')][_0x1e1317[_0xfea5('0x23')]]&&(this['voiceQueues'][_0x1e1317[_0xfea5('0x23')]]['acw']||this['voiceQueues'][_0x1e1317[_0xfea5('0x23')]][_0xfea5('0x24')])){if(this[_0xfea5('0x8')][_0x1e1317['interface']]){this['channels'][_0x1e1317[_0xfea5('0x32')]]={'queue':_0x1e1317[_0xfea5('0x23')],'interface':_0x1e1317['interface']};}}}catch(_0x19774f){logger[_0xfea5('0x1f')]('[ACW][syncAgentConnectPreview]\x20%s',_0x19774f[_0xfea5('0x34')]);}};Acw[_0xfea5('0x18')][_0xfea5('0xe')]=function(_0x54a893){try{if(this['channels'][_0x54a893[_0xfea5('0x32')]]&&_[_0xfea5('0x3d')](this[_0xfea5('0xa')][_0x54a893[_0xfea5('0x32')]][_0xfea5('0x3e')])){logger['info'](_0xfea5('0x3f'),_0x54a893['uniqueid']);this[_0xfea5('0x22')](_0x54a893[_0xfea5('0x32')]);}else if(this[_0xfea5('0xa')][_0x54a893[_0xfea5('0x40')]]&&_[_0xfea5('0x3d')](this[_0xfea5('0xa')][_0x54a893[_0xfea5('0x40')]][_0xfea5('0x3e')])){logger['info'](_0xfea5('0x41'),_0x54a893[_0xfea5('0x40')]);this['startAcw'](_0x54a893[_0xfea5('0x40')]);}}catch(_0x45198e){logger[_0xfea5('0x1f')](_0xfea5('0x42'),_0x45198e[_0xfea5('0x34')]);}};Acw['prototype'][_0xfea5('0x43')]=function(_0x13ba2f){try{if(this[_0xfea5('0xa')][_0x13ba2f[_0xfea5('0x32')]]&&this[_0xfea5('0xa')][_0x13ba2f[_0xfea5('0x32')]][_0xfea5('0x3e')]){logger[_0xfea5('0x2a')](_0xfea5('0x44'),_0x13ba2f[_0xfea5('0x32')]);this[_0xfea5('0x22')](_0x13ba2f[_0xfea5('0x32')]);}else if(this[_0xfea5('0xa')][_0x13ba2f[_0xfea5('0x40')]]&&this[_0xfea5('0xa')][_0x13ba2f[_0xfea5('0x40')]][_0xfea5('0x3e')]){logger[_0xfea5('0x2a')](_0xfea5('0x45'),_0x13ba2f[_0xfea5('0x40')]);this['startAcw'](_0x13ba2f[_0xfea5('0x40')]);}}catch(_0x563c23){logger[_0xfea5('0x1f')](_0xfea5('0x46'),_0x563c23[_0xfea5('0x34')]);}};Acw[_0xfea5('0x18')][_0xfea5('0x47')]=function(_0x1835d2){try{if(!_['isNil'](this['channels'][_0x1835d2[_0xfea5('0x48')]])){this[_0xfea5('0x22')](_0x1835d2[_0xfea5('0x48')]);if(this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x49')]]){this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x49')]][_0xfea5('0x3e')]=!![];this[_0xfea5('0xa')][_0x1835d2['transfertargetuniqueid']]=this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x49')]];delete this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x49')]];}}else if(!_[_0xfea5('0x4a')](this['channels'][_0x1835d2[_0xfea5('0x4b')]])){this[_0xfea5('0x22')](_0x1835d2[_0xfea5('0x4b')]);if(this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x4c')]]){this['channels'][_0x1835d2['origtransfereruniqueid']]['attended']=!![];this[_0xfea5('0xa')][_0x1835d2['transfereeuniqueid']]=this[_0xfea5('0xa')][_0x1835d2[_0xfea5('0x4c')]];delete this['channels'][_0x1835d2[_0xfea5('0x4c')]];}}}catch(_0x5d4d49){logger['error'](_0xfea5('0x4d'),_0x5d4d49['message']);}};Acw[_0xfea5('0x18')]['syncBlindTransfer']=function(_0x4ad9a3){try{if(this[_0xfea5('0xa')][_0x4ad9a3[_0xfea5('0x4e')]]){logger['info'](_0xfea5('0x4f'),JSON[_0xfea5('0x50')](_0x4ad9a3['transfereruniqueid']));this[_0xfea5('0x22')](_0x4ad9a3[_0xfea5('0x4e')]);}else if(this['channels'][_0x4ad9a3[_0xfea5('0x51')]]){logger[_0xfea5('0x2a')](_0xfea5('0x52'),JSON[_0xfea5('0x50')](_0x4ad9a3['transfererlinkedid']));this[_0xfea5('0x22')](_0x4ad9a3['transfererlinkedid']);}}catch(_0x107c1a){logger['error'](_0xfea5('0x53'),_0x107c1a[_0xfea5('0x34')]);}};Acw[_0xfea5('0x18')][_0xfea5('0x54')]=function(_0x1a8734){try{if(this[_0xfea5('0x7')][_0x1a8734[_0xfea5('0x23')]]&&this[_0xfea5('0x7')][_0x1a8734[_0xfea5('0x23')]]['autopause']===_0xfea5('0x55')){if(this[_0xfea5('0x8')][_0x1a8734[_0xfea5('0x3b')]]){logger[_0xfea5('0x2a')](_0xfea5('0x56'),_0x1a8734[_0xfea5('0x32')],_0x1a8734[_0xfea5('0x3b')],_0x1a8734['queue']);return RpcUser[_0xfea5('0x2e')](this[_0xfea5('0x8')][_0x1a8734[_0xfea5('0x3b')]],_0xfea5('0x57'),_0x1a8734[_0xfea5('0x32')]);}}}catch(_0x5bbb47){logger[_0xfea5('0x1f')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x5bbb47['message']);}};module[_0xfea5('0x58')]=Acw;