Built motion from commit b5996064.|2.6.21
[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 _0x32f4=['lodash','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','hanguprequest','bind','hangup','syncHangup','agentringnoanswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','channels','ACW','mandatoryDisposition','name','mandatoryDispositionPause','resolve','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','isUndefined','attended','[%s][HANGUP:LINKEDID]','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','all','Auto-Pause','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x32f4,0x154));var _0x432f=function(_0x12df36,_0x7a942f){_0x12df36=_0x12df36-0x0;var _0x56f524=_0x32f4[_0x12df36];return _0x56f524;};'use strict';var _=require(_0x432f('0x0'));var moment=require(_0x432f('0x1'));var ami=require(_0x432f('0x2'));var logger=require(_0x432f('0x3'))('acw');var RpcUser=require(_0x432f('0x4'));var RpcVoiceAgentReport=require(_0x432f('0x5'));function Acw(_0x51a71a){this[_0x432f('0x6')]=_0x51a71a[_0x432f('0x6')];this[_0x432f('0x7')]=_0x51a71a[_0x432f('0x7')];this[_0x432f('0x8')]=_0x51a71a['timers'];this['channels']={};ami['on'](_0x432f('0x9'),this[_0x432f('0xa')]['bind'](this));ami['on'](_0x432f('0xb'),this['syncHangupRequest'][_0x432f('0xc')](this));ami['on'](_0x432f('0xd'),this[_0x432f('0xe')][_0x432f('0xc')](this));ami['on'](_0x432f('0xf'),this['syncAgentRingNoAnswer'][_0x432f('0xc')](this));ami['on']('attendedtransfer',this[_0x432f('0x10')]['bind'](this));ami['on'](_0x432f('0x11'),this[_0x432f('0x12')]['bind'](this));ami['on'](_0x432f('0x13'),this[_0x432f('0x14')]['bind'](this));}function getDiff(_0x10b6fa){var _0x26aa9a=moment()['milliseconds'](0x0);var _0x48a4db=moment(_0x10b6fa)[_0x432f('0x15')](0x0);return _0x26aa9a[_0x432f('0x16')](_0x48a4db,_0x432f('0x17'));}Acw[_0x432f('0x18')][_0x432f('0x19')]=function(_0x4f91c5,_0x175ba7){var _0x2f0708=this;var _0x1e2c30=getDiff(_0x2f0708[_0x432f('0x8')][_0x4f91c5]['lastPauseAt']);clearTimeout(_0x2f0708[_0x432f('0x8')][_0x4f91c5][_0x432f('0x1a')]);_0x2f0708[_0x432f('0x8')][_0x4f91c5][_0x432f('0x1a')]=![];return RpcVoiceAgentReport[_0x432f('0x1b')]({'acwtime':_0x1e2c30},_0x2f0708[_0x432f('0x8')][_0x4f91c5]['uniqueid'],_0x4f91c5)[_0x432f('0x1c')](function(_0x4ddd21){logger[_0x432f('0x1d')](_0x432f('0x1e'),_0x175ba7,_0x1e2c30,_0x4ddd21);})[_0x432f('0x1f')](function(_0x391fd8){logger[_0x432f('0x20')](_0x432f('0x21'),_0x175ba7,_0x391fd8);})[_0x432f('0x22')](function(){delete _0x2f0708[_0x432f('0x8')][_0x4f91c5];});};Acw[_0x432f('0x18')][_0x432f('0x23')]=function(_0x40176d){try{var _0x3446fd=this;var _0x4dd230=this['channels'][_0x40176d][_0x432f('0x24')];var _0x5c4deb=this[_0x432f('0x25')][_0x40176d]['queue'];var _0x37f136=this[_0x432f('0x6')][_0x5c4deb];var _0x241cb4=![];var _0x89ea50=_0x432f('0x26');if(_0x37f136[_0x432f('0x27')]&&_0x37f136['mandatoryDispositionPause'][_0x432f('0x28')]){_0x241cb4=!![];_0x89ea50=_0x37f136[_0x432f('0x29')]['name'];}if(!_0x3446fd[_0x432f('0x7')][_0x4dd230]){return Promise[_0x432f('0x2a')]();}return RpcUser[_0x432f('0x2b')](_0x3446fd[_0x432f('0x7')][_0x4dd230]['id'])[_0x432f('0x1c')](function(_0x781862){if(!_0x781862||_0x781862[_0x432f('0x2c')]){logger['info'](_0x432f('0x2d'),_0x40176d,_0x4dd230,_0x5c4deb);return;}logger['info'](_0x432f('0x2e'),_0x40176d,_0x4dd230,_0x5c4deb);var _0x573cc5=_0x3446fd[_0x432f('0x25')][_0x40176d]['attended']&&_0x3446fd[_0x432f('0x25')][_0x40176d]['destlinkedid']?_0x3446fd[_0x432f('0x25')][_0x40176d][_0x432f('0x2f')]:_0x40176d;return RpcUser[_0x432f('0x30')](_0x3446fd['agents'][_0x4dd230],_0x89ea50,_0x573cc5);})[_0x432f('0x1c')](function(_0x24406a){if(_0x241cb4||!_0x24406a){return;}_0x3446fd['timers'][_0x4dd230]={};logger['info'](_0x432f('0x31'),_0x40176d,_0x3446fd[_0x432f('0x6')][_0x5c4deb][_0x432f('0x32')],_0x4dd230,_0x5c4deb);_0x3446fd[_0x432f('0x8')][_0x4dd230][_0x432f('0x1a')]=setTimeout(_0x3446fd[_0x432f('0x33')]['bind'](_0x3446fd,_0x4dd230),_0x3446fd['voiceQueues'][_0x5c4deb][_0x432f('0x32')]*0x3e8);_0x3446fd[_0x432f('0x8')][_0x4dd230][_0x432f('0x34')]=moment()['format'](_0x432f('0x35'));_0x3446fd[_0x432f('0x8')][_0x4dd230][_0x432f('0x36')]=_0x40176d;_0x3446fd[_0x432f('0x8')][_0x4dd230][_0x432f('0x37')]=_0x5c4deb;_0x3446fd[_0x432f('0x8')][_0x4dd230][_0x432f('0x19')]=_0x3446fd[_0x432f('0x19')]['bind'](_0x3446fd,_0x4dd230,_0x40176d);})['catch'](function(){logger[_0x432f('0x20')](_0x432f('0x31'),_0x40176d,_0x3446fd['voiceQueues'][_0x5c4deb]['acwTimeout'],_0x4dd230,_0x5c4deb);})['finally'](function(){delete _0x3446fd[_0x432f('0x25')][_0x40176d];});}catch(_0x141141){logger['error'](_0x432f('0x38'),_0x141141[_0x432f('0x39')]);}};Acw[_0x432f('0x18')]['stopAcw']=function(_0x3510d2){try{var _0x440420=this;if(_0x440420['timers'][_0x3510d2]){_0x440420[_0x432f('0x8')][_0x3510d2][_0x432f('0x1a')]=![];var _0x59e111=_0x440420[_0x432f('0x8')][_0x3510d2][_0x432f('0x36')];var _0x148a95=_0x440420[_0x432f('0x8')][_0x3510d2][_0x432f('0x37')];var _0x1c3700=_0x440420[_0x432f('0x6')][_0x148a95][_0x432f('0x32')];logger[_0x432f('0x1d')](_0x432f('0x3a'),_0x59e111,_0x3510d2);RpcUser[_0x432f('0x3b')](this['agents'][_0x3510d2]);RpcVoiceAgentReport[_0x432f('0x1b')]({'acwtime':_0x1c3700,'agentacw':!![]},_0x59e111,_0x3510d2)['then'](function(_0x1550fc){logger[_0x432f('0x1d')]('[%s][UPDATE][ACWTIME:%s]',_0x59e111,_0x1c3700,_0x1550fc);})[_0x432f('0x1f')](function(_0x47d44d){logger[_0x432f('0x20')](_0x432f('0x21'),_0x59e111,_0x47d44d);});}else{logger['error']('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x3510d2);if(_0x440420[_0x432f('0x8')]){logger[_0x432f('0x1d')](_0x432f('0x3c'),JSON[_0x432f('0x3d')](_0x440420[_0x432f('0x8')]));}}}catch(_0x513a57){logger['error']('[ACW][STOP]\x20%s',_0x513a57[_0x432f('0x39')]);}};Acw[_0x432f('0x18')]['syncAgentConnect']=function(_0x1f58af){try{if(this[_0x432f('0x6')][_0x1f58af[_0x432f('0x37')]]&&(this[_0x432f('0x6')][_0x1f58af[_0x432f('0x37')]][_0x432f('0x3e')]||this[_0x432f('0x6')][_0x1f58af[_0x432f('0x37')]][_0x432f('0x27')])){if(this['agents'][_0x1f58af[_0x432f('0x24')]]){this[_0x432f('0x25')][_0x1f58af['uniqueid']]={'queue':_0x1f58af[_0x432f('0x37')],'interface':_0x1f58af[_0x432f('0x24')],'destlinkedid':_0x1f58af[_0x432f('0x2f')]};}}}catch(_0x2d623e){logger[_0x432f('0x20')](_0x432f('0x3f'),_0x2d623e[_0x432f('0x39')]);}};Acw[_0x432f('0x18')][_0x432f('0x14')]=function(_0xdaa43a){try{if(this[_0x432f('0x6')][_0xdaa43a[_0x432f('0x37')]]&&(this[_0x432f('0x6')][_0xdaa43a[_0x432f('0x37')]]['acw']||this['voiceQueues'][_0xdaa43a[_0x432f('0x37')]][_0x432f('0x27')])){if(this[_0x432f('0x7')][_0xdaa43a[_0x432f('0x24')]]){this[_0x432f('0x25')][_0xdaa43a['uniqueid']]={'queue':_0xdaa43a[_0x432f('0x37')],'interface':_0xdaa43a[_0x432f('0x24')]};}}}catch(_0x46c5ee){logger[_0x432f('0x20')](_0x432f('0x40'),_0x46c5ee[_0x432f('0x39')]);}};Acw[_0x432f('0x18')]['syncHangupRequest']=function(_0x3abafe){try{if(this[_0x432f('0x25')][_0x3abafe[_0x432f('0x36')]]&&_['isUndefined'](this[_0x432f('0x25')][_0x3abafe[_0x432f('0x36')]]['attended'])){logger['info'](_0x432f('0x41'),_0x3abafe[_0x432f('0x36')]);this['startAcw'](_0x3abafe['uniqueid']);}else if(this[_0x432f('0x25')][_0x3abafe['linkedid']]&&_[_0x432f('0x42')](this[_0x432f('0x25')][_0x3abafe['linkedid']][_0x432f('0x43')])){logger['info'](_0x432f('0x44'),_0x3abafe[_0x432f('0x45')]);this[_0x432f('0x23')](_0x3abafe[_0x432f('0x45')]);}}catch(_0x3051ea){logger[_0x432f('0x20')]('[ACW][syncHangupRequest]\x20%s',_0x3051ea[_0x432f('0x39')]);}};Acw['prototype'][_0x432f('0xe')]=function(_0x109bcd){try{if(this[_0x432f('0x25')][_0x109bcd[_0x432f('0x36')]]&&this['channels'][_0x109bcd[_0x432f('0x36')]][_0x432f('0x43')]){logger[_0x432f('0x1d')](_0x432f('0x46'),_0x109bcd[_0x432f('0x36')]);this[_0x432f('0x23')](_0x109bcd[_0x432f('0x36')]);}else if(this['channels'][_0x109bcd['linkedid']]&&this[_0x432f('0x25')][_0x109bcd[_0x432f('0x45')]][_0x432f('0x43')]){logger[_0x432f('0x1d')](_0x432f('0x47'),_0x109bcd[_0x432f('0x45')]);this['startAcw'](_0x109bcd[_0x432f('0x45')]);}}catch(_0x545035){logger['error'](_0x432f('0x48'),_0x545035[_0x432f('0x39')]);}};Acw[_0x432f('0x18')][_0x432f('0x10')]=function(_0x32decd){try{if(!_[_0x432f('0x49')](this['channels'][_0x32decd[_0x432f('0x4a')]])){this[_0x432f('0x23')](_0x32decd['transfereeuniqueid']);if(this[_0x432f('0x25')][_0x32decd[_0x432f('0x4b')]]){this['channels'][_0x32decd[_0x432f('0x4b')]][_0x432f('0x43')]=!![];this[_0x432f('0x25')][_0x32decd[_0x432f('0x4c')]]=this[_0x432f('0x25')][_0x32decd[_0x432f('0x4b')]];delete this[_0x432f('0x25')][_0x32decd[_0x432f('0x4b')]];}}else if(!_[_0x432f('0x49')](this[_0x432f('0x25')][_0x32decd[_0x432f('0x4c')]])){this[_0x432f('0x23')](_0x32decd[_0x432f('0x4c')]);if(this[_0x432f('0x25')][_0x32decd[_0x432f('0x4d')]]){this[_0x432f('0x25')][_0x32decd['origtransfereruniqueid']]['attended']=!![];this[_0x432f('0x25')][_0x32decd[_0x432f('0x4a')]]=this[_0x432f('0x25')][_0x32decd['origtransfereruniqueid']];delete this[_0x432f('0x25')][_0x32decd[_0x432f('0x4d')]];}}}catch(_0x28a227){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x28a227[_0x432f('0x39')]);}};Acw[_0x432f('0x18')]['syncBlindTransfer']=function(_0x2b83df){try{if(this['channels'][_0x2b83df[_0x432f('0x4e')]]){logger[_0x432f('0x1d')](_0x432f('0x4f'),JSON['stringify'](_0x2b83df[_0x432f('0x4e')]));this[_0x432f('0x23')](_0x2b83df[_0x432f('0x4e')]);}else if(this[_0x432f('0x25')][_0x2b83df['transfererlinkedid']]){logger[_0x432f('0x1d')](_0x432f('0x50'),JSON['stringify'](_0x2b83df[_0x432f('0x51')]));this['startAcw'](_0x2b83df['transfererlinkedid']);}}catch(_0x51abac){logger[_0x432f('0x20')]('[ACW][syncBlindTransfer]\x20%s',_0x51abac[_0x432f('0x39')]);}};Acw[_0x432f('0x18')]['syncAgentRingNoAnswer']=function(_0x51c6c3){try{if(this[_0x432f('0x6')][_0x51c6c3[_0x432f('0x37')]]&&this[_0x432f('0x6')][_0x51c6c3[_0x432f('0x37')]]['autopause']===_0x432f('0x52')){if(this[_0x432f('0x7')][_0x51c6c3['interface']]){logger[_0x432f('0x1d')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x51c6c3[_0x432f('0x36')],_0x51c6c3[_0x432f('0x24')],_0x51c6c3[_0x432f('0x37')]);return RpcUser['savePause'](this[_0x432f('0x7')][_0x51c6c3[_0x432f('0x24')]],_0x432f('0x53'),_0x51c6c3[_0x432f('0x36')]);}}}catch(_0x54fd3c){logger[_0x432f('0x20')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x54fd3c[_0x432f('0x39')]);}};module[_0x432f('0x54')]=Acw;