Built motion from commit f7863d46.|2.5.41
[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 _0xe825=['all','Auto-Pause','exports','lodash','moment','../ami','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','timer','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','uniqueid','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','acw','isUndefined','attended','[%s][HANGUP:UNIQUEID]','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','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe825,0xff));var _0x5e82=function(_0xe65ac8,_0x2691be){_0xe65ac8=_0xe65ac8-0x0;var _0x202ba1=_0xe825[_0xe65ac8];return _0x202ba1;};'use strict';var util=require('util');var _=require(_0x5e82('0x0'));var moment=require(_0x5e82('0x1'));var ami=require(_0x5e82('0x2'));var logger=require('../../../config/logger')('acw');var RpcUser=require(_0x5e82('0x3'));var RpcVoiceAgentReport=require(_0x5e82('0x4'));function Acw(_0x433eb8){this[_0x5e82('0x5')]=_0x433eb8[_0x5e82('0x5')];this[_0x5e82('0x6')]=_0x433eb8[_0x5e82('0x6')];this['timers']=_0x433eb8[_0x5e82('0x7')];this[_0x5e82('0x8')]={};ami['on'](_0x5e82('0x9'),this[_0x5e82('0xa')]['bind'](this));ami['on'](_0x5e82('0xb'),this[_0x5e82('0xc')]['bind'](this));ami['on']('hangup',this[_0x5e82('0xd')][_0x5e82('0xe')](this));ami['on'](_0x5e82('0xf'),this[_0x5e82('0x10')][_0x5e82('0xe')](this));ami['on'](_0x5e82('0x11'),this[_0x5e82('0x12')][_0x5e82('0xe')](this));ami['on'](_0x5e82('0x13'),this[_0x5e82('0x14')][_0x5e82('0xe')](this));ami['on'](_0x5e82('0x15'),this[_0x5e82('0x16')][_0x5e82('0xe')](this));}function getDiff(_0x42d9e0){var _0x2beb49=moment()[_0x5e82('0x17')](0x0);var _0x299e7d=moment(_0x42d9e0)[_0x5e82('0x17')](0x0);return _0x2beb49[_0x5e82('0x18')](_0x299e7d,_0x5e82('0x19'));}Acw[_0x5e82('0x1a')][_0x5e82('0x1b')]=function(_0x39bed4){try{var _0x38c12b=this;var _0x1d593d=this['channels'][_0x39bed4][_0x5e82('0x1c')];var _0x9f2be9=this[_0x5e82('0x8')][_0x39bed4][_0x5e82('0x1d')];var _0x580425=this[_0x5e82('0x5')][_0x9f2be9];var _0x1cdf70=![];var _0x406f0c='ACW';if(_0x580425[_0x5e82('0x1e')]){if(_0x580425[_0x5e82('0x1f')][_0x5e82('0x20')]){_0x1cdf70=!![];_0x406f0c=_0x580425[_0x5e82('0x1f')][_0x5e82('0x20')];}}ami[_0x5e82('0x21')]({'action':'QueuePause','interface':_0x1d593d,'paused':!![],'reason':_0x406f0c})[_0x5e82('0x22')](function(_0x36082a){if(_0x38c12b[_0x5e82('0x6')][_0x1d593d]){return RpcUser[_0x5e82('0x23')](_0x38c12b[_0x5e82('0x6')][_0x1d593d]['id'])[_0x5e82('0x22')](function(_0x48c19c){if(_0x48c19c&&!_0x48c19c['voicePause']){logger[_0x5e82('0x24')](_0x5e82('0x25'),_0x39bed4,_0x1d593d,_0x9f2be9);var _0xa00422=_0x38c12b[_0x5e82('0x8')][_0x39bed4]['attended']&&_0x38c12b[_0x5e82('0x8')][_0x39bed4]['destlinkedid']?_0x38c12b[_0x5e82('0x8')][_0x39bed4][_0x5e82('0x26')]:_0x39bed4;return RpcUser['savePause'](_0x38c12b[_0x5e82('0x6')][_0x1d593d],_0x406f0c,_0xa00422)[_0x5e82('0x22')](function(_0x1b90d9){if(!_0x1cdf70){_0x38c12b[_0x5e82('0x7')][_0x1d593d]={};logger[_0x5e82('0x24')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x39bed4,_0x38c12b[_0x5e82('0x5')][_0x9f2be9]['acwTimeout'],_0x1d593d,_0x9f2be9);_0x38c12b['timers'][_0x1d593d][_0x5e82('0x27')]=setTimeout(_0x38c12b[_0x5e82('0x28')]['bind'](_0x38c12b,_0x1d593d),_0x38c12b['voiceQueues'][_0x9f2be9][_0x5e82('0x29')]*0x3e8);_0x38c12b[_0x5e82('0x7')][_0x1d593d][_0x5e82('0x2a')]=moment()[_0x5e82('0x2b')](_0x5e82('0x2c'));_0x38c12b[_0x5e82('0x7')][_0x1d593d]['uniqueid']=_0x39bed4;_0x38c12b[_0x5e82('0x7')][_0x1d593d][_0x5e82('0x1d')]=_0x9f2be9;_0x38c12b[_0x5e82('0x7')][_0x1d593d]['updateAcw']=function(){var _0x3dda7a=getDiff(_0x38c12b['timers'][_0x1d593d]['lastPauseAt']);clearTimeout(_0x38c12b[_0x5e82('0x7')][_0x1d593d]['timer']);_0x38c12b[_0x5e82('0x7')][_0x1d593d][_0x5e82('0x27')]=![];RpcVoiceAgentReport[_0x5e82('0x2d')]({'acwtime':_0x3dda7a},_0x38c12b['timers'][_0x1d593d]['uniqueid'],_0x1d593d)['then'](function(_0x4642b5){logger[_0x5e82('0x24')](_0x5e82('0x2e'),_0x39bed4,_0x3dda7a,_0x4642b5);})[_0x5e82('0x2f')](function(_0x2e8fa2){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x39bed4,_0x2e8fa2);});delete _0x38c12b[_0x5e82('0x7')][_0x1d593d];};}});}else{logger[_0x5e82('0x24')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x39bed4,_0x1d593d,_0x9f2be9);}});}})['catch'](function(_0xea2da){logger[_0x5e82('0x30')](_0x5e82('0x31'),_0x39bed4,_0x38c12b['voiceQueues'][_0x9f2be9][_0x5e82('0x29')],_0x1d593d,_0x9f2be9);})[_0x5e82('0x32')](function(){delete _0x38c12b[_0x5e82('0x8')][_0x39bed4];});}catch(_0x4f1ccd){logger[_0x5e82('0x30')](_0x5e82('0x33'),_0x4f1ccd[_0x5e82('0x34')]);}};Acw[_0x5e82('0x1a')][_0x5e82('0x28')]=function(_0x1cbf77){try{var _0x127d62=this;if(_0x127d62['timers'][_0x1cbf77]){_0x127d62['timers'][_0x1cbf77][_0x5e82('0x27')]=![];var _0x582e62=_0x127d62['timers'][_0x1cbf77][_0x5e82('0x35')];var _0xcddbd=_0x127d62[_0x5e82('0x7')][_0x1cbf77]['queue'];var _0x20572a=_0x127d62[_0x5e82('0x5')][_0xcddbd][_0x5e82('0x29')];logger['info'](_0x5e82('0x36'),_0x582e62,_0x1cbf77);RpcUser[_0x5e82('0x37')](this[_0x5e82('0x6')][_0x1cbf77]);RpcVoiceAgentReport[_0x5e82('0x2d')]({'acwtime':_0x20572a,'agentacw':!![]},_0x582e62,_0x1cbf77)[_0x5e82('0x22')](function(_0x3aa1b8){logger[_0x5e82('0x24')](_0x5e82('0x2e'),_0x582e62,_0x20572a,_0x3aa1b8);})[_0x5e82('0x2f')](function(_0x5d0cde){logger['error'](_0x5e82('0x38'),_0x582e62,_0x5d0cde);});}else{logger[_0x5e82('0x30')](_0x5e82('0x39'),_0x1cbf77);if(_0x127d62[_0x5e82('0x7')]){logger['info'](_0x5e82('0x3a'),JSON[_0x5e82('0x3b')](_0x127d62['timers']));}}}catch(_0x2d7c33){logger[_0x5e82('0x30')](_0x5e82('0x3c'),_0x2d7c33[_0x5e82('0x34')]);}};Acw[_0x5e82('0x1a')][_0x5e82('0xa')]=function(_0x5a91cd){try{if(this[_0x5e82('0x5')][_0x5a91cd[_0x5e82('0x1d')]]&&(this['voiceQueues'][_0x5a91cd['queue']][_0x5e82('0x3d')]||this[_0x5e82('0x5')][_0x5a91cd[_0x5e82('0x1d')]][_0x5e82('0x1e')])){if(this[_0x5e82('0x6')][_0x5a91cd[_0x5e82('0x1c')]]){this[_0x5e82('0x8')][_0x5a91cd[_0x5e82('0x35')]]={'queue':_0x5a91cd[_0x5e82('0x1d')],'interface':_0x5a91cd['interface'],'destlinkedid':_0x5a91cd[_0x5e82('0x26')]};}}}catch(_0x44c7ba){logger[_0x5e82('0x30')]('[ACW][syncAgentConnect]\x20%s',_0x44c7ba[_0x5e82('0x34')]);}};Acw[_0x5e82('0x1a')][_0x5e82('0x16')]=function(_0x332ad5){try{if(this[_0x5e82('0x5')][_0x332ad5[_0x5e82('0x1d')]]&&(this[_0x5e82('0x5')][_0x332ad5[_0x5e82('0x1d')]][_0x5e82('0x3d')]||this['voiceQueues'][_0x332ad5[_0x5e82('0x1d')]]['mandatoryDisposition'])){if(this['agents'][_0x332ad5[_0x5e82('0x1c')]]){this[_0x5e82('0x8')][_0x332ad5[_0x5e82('0x35')]]={'queue':_0x332ad5['queue'],'interface':_0x332ad5[_0x5e82('0x1c')]};}}}catch(_0x1b148a){logger[_0x5e82('0x30')]('[ACW][syncAgentConnectPreview]\x20%s',_0x1b148a[_0x5e82('0x34')]);}};Acw['prototype'][_0x5e82('0xc')]=function(_0x2a6a06){try{if(this[_0x5e82('0x8')][_0x2a6a06[_0x5e82('0x35')]]&&_[_0x5e82('0x3e')](this[_0x5e82('0x8')][_0x2a6a06[_0x5e82('0x35')]][_0x5e82('0x3f')])){logger[_0x5e82('0x24')](_0x5e82('0x40'),_0x2a6a06['uniqueid']);this[_0x5e82('0x1b')](_0x2a6a06[_0x5e82('0x35')]);}else if(this[_0x5e82('0x8')][_0x2a6a06[_0x5e82('0x41')]]&&_[_0x5e82('0x3e')](this['channels'][_0x2a6a06[_0x5e82('0x41')]][_0x5e82('0x3f')])){logger['info'](_0x5e82('0x42'),_0x2a6a06[_0x5e82('0x41')]);this['startAcw'](_0x2a6a06['linkedid']);}}catch(_0xc9d5fb){logger['error'](_0x5e82('0x43'),_0xc9d5fb[_0x5e82('0x34')]);}};Acw[_0x5e82('0x1a')][_0x5e82('0xd')]=function(_0x37e1c6){try{if(this[_0x5e82('0x8')][_0x37e1c6[_0x5e82('0x35')]]&&this[_0x5e82('0x8')][_0x37e1c6['uniqueid']][_0x5e82('0x3f')]){logger[_0x5e82('0x24')](_0x5e82('0x44'),_0x37e1c6[_0x5e82('0x35')]);this['startAcw'](_0x37e1c6[_0x5e82('0x35')]);}else if(this[_0x5e82('0x8')][_0x37e1c6['linkedid']]&&this['channels'][_0x37e1c6[_0x5e82('0x41')]]['attended']){logger[_0x5e82('0x24')](_0x5e82('0x45'),_0x37e1c6[_0x5e82('0x41')]);this['startAcw'](_0x37e1c6[_0x5e82('0x41')]);}}catch(_0x51a240){logger[_0x5e82('0x30')](_0x5e82('0x46'),_0x51a240['message']);}};Acw[_0x5e82('0x1a')]['syncAttendedTransfer']=function(_0x2d092f){try{if(!_[_0x5e82('0x47')](this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x48')]])){this[_0x5e82('0x1b')](_0x2d092f[_0x5e82('0x48')]);if(this['channels'][_0x2d092f[_0x5e82('0x49')]]){this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x49')]]['attended']=!![];this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x4a')]]=this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x49')]];delete this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x49')]];}}else if(!_[_0x5e82('0x47')](this['channels'][_0x2d092f[_0x5e82('0x4a')]])){this[_0x5e82('0x1b')](_0x2d092f[_0x5e82('0x4a')]);if(this[_0x5e82('0x8')][_0x2d092f['origtransfereruniqueid']]){this['channels'][_0x2d092f[_0x5e82('0x4b')]]['attended']=!![];this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x48')]]=this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x4b')]];delete this[_0x5e82('0x8')][_0x2d092f[_0x5e82('0x4b')]];}}}catch(_0x5042b5){logger[_0x5e82('0x30')](_0x5e82('0x4c'),_0x5042b5['message']);}};Acw[_0x5e82('0x1a')][_0x5e82('0x14')]=function(_0x4796df){try{if(this['channels'][_0x4796df[_0x5e82('0x4d')]]){logger[_0x5e82('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x5e82('0x3b')](_0x4796df[_0x5e82('0x4d')]));this[_0x5e82('0x1b')](_0x4796df[_0x5e82('0x4d')]);}else if(this['channels'][_0x4796df[_0x5e82('0x4e')]]){logger['info'](_0x5e82('0x4f'),JSON[_0x5e82('0x3b')](_0x4796df[_0x5e82('0x4e')]));this[_0x5e82('0x1b')](_0x4796df['transfererlinkedid']);}}catch(_0x22c23d){logger[_0x5e82('0x30')](_0x5e82('0x50'),_0x22c23d[_0x5e82('0x34')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x325036){try{if(this['voiceQueues'][_0x325036[_0x5e82('0x1d')]]&&this[_0x5e82('0x5')][_0x325036[_0x5e82('0x1d')]]['autopause']===_0x5e82('0x51')){if(this[_0x5e82('0x6')][_0x325036[_0x5e82('0x1c')]]){logger[_0x5e82('0x24')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x325036[_0x5e82('0x35')],_0x325036[_0x5e82('0x1c')],_0x325036['queue']);return RpcUser['savePause'](this['agents'][_0x325036[_0x5e82('0x1c')]],_0x5e82('0x52'),_0x325036['uniqueid']);}}}catch(_0x3ee2d3){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x3ee2d3[_0x5e82('0x34')]);}};module[_0x5e82('0x53')]=Acw;