Built motion from commit 85328c08.|2.5.50
[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 _0xd9e4=['attended','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','linkedid','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','bind','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','savePause','info','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','syncAgentConnect','[ACW][syncAgentConnectPreview]\x20%s','isUndefined'];(function(_0x48a7fa,_0x5ae3bb){var _0x2b3a62=function(_0x169839){while(--_0x169839){_0x48a7fa['push'](_0x48a7fa['shift']());}};_0x2b3a62(++_0x5ae3bb);}(_0xd9e4,0xc4));var _0x4d9e=function(_0xe44b1,_0x242100){_0xe44b1=_0xe44b1-0x0;var _0x368147=_0xd9e4[_0xe44b1];return _0x368147;};'use strict';var util=require(_0x4d9e('0x0'));var _=require('lodash');var moment=require(_0x4d9e('0x1'));var ami=require(_0x4d9e('0x2'));var logger=require('../../../config/logger')(_0x4d9e('0x3'));var RpcUser=require(_0x4d9e('0x4'));var RpcVoiceAgentReport=require(_0x4d9e('0x5'));function Acw(_0x36a57d){this[_0x4d9e('0x6')]=_0x36a57d[_0x4d9e('0x6')];this[_0x4d9e('0x7')]=_0x36a57d[_0x4d9e('0x7')];this['timers']=_0x36a57d[_0x4d9e('0x8')];this['channels']={};ami['on'](_0x4d9e('0x9'),this['syncAgentConnect'][_0x4d9e('0xa')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0x4d9e('0xa')](this));ami['on'](_0x4d9e('0xb'),this[_0x4d9e('0xc')][_0x4d9e('0xa')](this));ami['on'](_0x4d9e('0xd'),this[_0x4d9e('0xe')][_0x4d9e('0xa')](this));ami['on'](_0x4d9e('0xf'),this[_0x4d9e('0x10')][_0x4d9e('0xa')](this));ami['on'](_0x4d9e('0x11'),this['syncBlindTransfer'][_0x4d9e('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0x4d9e('0x12')]['bind'](this));}function getDiff(_0x4c0e92){var _0x323c0f=moment()[_0x4d9e('0x13')](0x0);var _0x2a0d4f=moment(_0x4c0e92)[_0x4d9e('0x13')](0x0);return _0x323c0f[_0x4d9e('0x14')](_0x2a0d4f,_0x4d9e('0x15'));}Acw[_0x4d9e('0x16')][_0x4d9e('0x17')]=function(_0x3de0cc){try{var _0x43e953=this;var _0x25412c=this[_0x4d9e('0x18')][_0x3de0cc][_0x4d9e('0x19')];var _0x1d45f4=this[_0x4d9e('0x18')][_0x3de0cc][_0x4d9e('0x1a')];var _0x38a8a3=this['voiceQueues'][_0x1d45f4];var _0x494bb9=![];var _0x4ee28e=_0x4d9e('0x1b');if(_0x38a8a3[_0x4d9e('0x1c')]){if(_0x38a8a3[_0x4d9e('0x1d')][_0x4d9e('0x1e')]){_0x494bb9=!![];_0x4ee28e=_0x38a8a3[_0x4d9e('0x1d')][_0x4d9e('0x1e')];}}ami[_0x4d9e('0x1f')]({'action':_0x4d9e('0x20'),'interface':_0x25412c,'paused':!![],'reason':_0x4ee28e})[_0x4d9e('0x21')](function(_0x32ff1f){if(_0x43e953[_0x4d9e('0x7')][_0x25412c]){return RpcUser['getAgent'](_0x43e953['agents'][_0x25412c]['id'])[_0x4d9e('0x21')](function(_0x3964c8){if(_0x3964c8&&!_0x3964c8['voicePause']){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x3de0cc,_0x25412c,_0x1d45f4);var _0xe1b9ee=_0x43e953['channels'][_0x3de0cc]['attended']&&_0x43e953[_0x4d9e('0x18')][_0x3de0cc]['destlinkedid']?_0x43e953[_0x4d9e('0x18')][_0x3de0cc]['destlinkedid']:_0x3de0cc;return RpcUser[_0x4d9e('0x22')](_0x43e953[_0x4d9e('0x7')][_0x25412c],_0x4ee28e,_0xe1b9ee)['then'](function(_0x4aaa86){if(!_0x494bb9){_0x43e953[_0x4d9e('0x8')][_0x25412c]={};logger[_0x4d9e('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3de0cc,_0x43e953[_0x4d9e('0x6')][_0x1d45f4][_0x4d9e('0x24')],_0x25412c,_0x1d45f4);_0x43e953[_0x4d9e('0x8')][_0x25412c][_0x4d9e('0x25')]=setTimeout(_0x43e953[_0x4d9e('0x26')][_0x4d9e('0xa')](_0x43e953,_0x25412c),_0x43e953[_0x4d9e('0x6')][_0x1d45f4][_0x4d9e('0x24')]*0x3e8);_0x43e953[_0x4d9e('0x8')][_0x25412c][_0x4d9e('0x27')]=moment()[_0x4d9e('0x28')](_0x4d9e('0x29'));_0x43e953[_0x4d9e('0x8')][_0x25412c]['uniqueid']=_0x3de0cc;_0x43e953[_0x4d9e('0x8')][_0x25412c]['queue']=_0x1d45f4;_0x43e953['timers'][_0x25412c][_0x4d9e('0x2a')]=function(){var _0xe740b5=getDiff(_0x43e953[_0x4d9e('0x8')][_0x25412c]['lastPauseAt']);clearTimeout(_0x43e953[_0x4d9e('0x8')][_0x25412c][_0x4d9e('0x25')]);_0x43e953[_0x4d9e('0x8')][_0x25412c][_0x4d9e('0x25')]=![];RpcVoiceAgentReport[_0x4d9e('0x2b')]({'acwtime':_0xe740b5},_0x43e953['timers'][_0x25412c][_0x4d9e('0x2c')],_0x25412c)['then'](function(_0x48e8aa){logger[_0x4d9e('0x23')](_0x4d9e('0x2d'),_0x3de0cc,_0xe740b5,_0x48e8aa);})[_0x4d9e('0x2e')](function(_0x474df6){logger[_0x4d9e('0x2f')](_0x4d9e('0x30'),_0x3de0cc,_0x474df6);});delete _0x43e953[_0x4d9e('0x8')][_0x25412c];};}});}else{logger['info'](_0x4d9e('0x31'),_0x3de0cc,_0x25412c,_0x1d45f4);}});}})[_0x4d9e('0x2e')](function(_0x32e327){logger['error'](_0x4d9e('0x32'),_0x3de0cc,_0x43e953['voiceQueues'][_0x1d45f4][_0x4d9e('0x24')],_0x25412c,_0x1d45f4);})[_0x4d9e('0x33')](function(){delete _0x43e953[_0x4d9e('0x18')][_0x3de0cc];});}catch(_0x4513f9){logger['error'](_0x4d9e('0x34'),_0x4513f9[_0x4d9e('0x35')]);}};Acw[_0x4d9e('0x16')][_0x4d9e('0x26')]=function(_0xd4ff8a){try{var _0x48c12b=this;if(_0x48c12b[_0x4d9e('0x8')][_0xd4ff8a]){_0x48c12b[_0x4d9e('0x8')][_0xd4ff8a][_0x4d9e('0x25')]=![];var _0x15c8c4=_0x48c12b[_0x4d9e('0x8')][_0xd4ff8a]['uniqueid'];var _0x14bf65=_0x48c12b[_0x4d9e('0x8')][_0xd4ff8a][_0x4d9e('0x1a')];var _0x779ab5=_0x48c12b[_0x4d9e('0x6')][_0x14bf65][_0x4d9e('0x24')];logger['info'](_0x4d9e('0x36'),_0x15c8c4,_0xd4ff8a);RpcUser[_0x4d9e('0x37')](this['agents'][_0xd4ff8a]);RpcVoiceAgentReport[_0x4d9e('0x2b')]({'acwtime':_0x779ab5,'agentacw':!![]},_0x15c8c4,_0xd4ff8a)[_0x4d9e('0x21')](function(_0x388c66){logger[_0x4d9e('0x23')]('[%s][UPDATE][ACWTIME:%s]',_0x15c8c4,_0x779ab5,_0x388c66);})[_0x4d9e('0x2e')](function(_0xb5d37b){logger[_0x4d9e('0x2f')](_0x4d9e('0x30'),_0x15c8c4,_0xb5d37b);});}else{logger[_0x4d9e('0x2f')](_0x4d9e('0x38'),_0xd4ff8a);if(_0x48c12b[_0x4d9e('0x8')]){logger['info'](_0x4d9e('0x39'),JSON[_0x4d9e('0x3a')](_0x48c12b[_0x4d9e('0x8')]));}}}catch(_0x5d97f7){logger[_0x4d9e('0x2f')]('[ACW][STOP]\x20%s',_0x5d97f7[_0x4d9e('0x35')]);}};Acw['prototype'][_0x4d9e('0x3b')]=function(_0x317b7c){try{if(this[_0x4d9e('0x6')][_0x317b7c[_0x4d9e('0x1a')]]&&(this[_0x4d9e('0x6')][_0x317b7c[_0x4d9e('0x1a')]]['acw']||this[_0x4d9e('0x6')][_0x317b7c[_0x4d9e('0x1a')]][_0x4d9e('0x1c')])){if(this['agents'][_0x317b7c[_0x4d9e('0x19')]]){this[_0x4d9e('0x18')][_0x317b7c[_0x4d9e('0x2c')]]={'queue':_0x317b7c[_0x4d9e('0x1a')],'interface':_0x317b7c[_0x4d9e('0x19')],'destlinkedid':_0x317b7c['destlinkedid']};}}}catch(_0x52da8e){logger[_0x4d9e('0x2f')]('[ACW][syncAgentConnect]\x20%s',_0x52da8e[_0x4d9e('0x35')]);}};Acw[_0x4d9e('0x16')]['syncAgentConnectPreview']=function(_0x4f11aa){try{if(this[_0x4d9e('0x6')][_0x4f11aa['queue']]&&(this['voiceQueues'][_0x4f11aa[_0x4d9e('0x1a')]][_0x4d9e('0x3')]||this[_0x4d9e('0x6')][_0x4f11aa['queue']]['mandatoryDisposition'])){if(this[_0x4d9e('0x7')][_0x4f11aa[_0x4d9e('0x19')]]){this[_0x4d9e('0x18')][_0x4f11aa[_0x4d9e('0x2c')]]={'queue':_0x4f11aa[_0x4d9e('0x1a')],'interface':_0x4f11aa['interface']};}}}catch(_0x4da298){logger[_0x4d9e('0x2f')](_0x4d9e('0x3c'),_0x4da298['message']);}};Acw[_0x4d9e('0x16')]['syncHangupRequest']=function(_0x13d546){try{if(this[_0x4d9e('0x18')][_0x13d546[_0x4d9e('0x2c')]]&&_[_0x4d9e('0x3d')](this[_0x4d9e('0x18')][_0x13d546['uniqueid']][_0x4d9e('0x3e')])){logger[_0x4d9e('0x23')](_0x4d9e('0x3f'),_0x13d546[_0x4d9e('0x2c')]);this['startAcw'](_0x13d546[_0x4d9e('0x2c')]);}else if(this[_0x4d9e('0x18')][_0x13d546['linkedid']]&&_[_0x4d9e('0x3d')](this[_0x4d9e('0x18')][_0x13d546['linkedid']]['attended'])){logger[_0x4d9e('0x23')](_0x4d9e('0x40'),_0x13d546['linkedid']);this[_0x4d9e('0x17')](_0x13d546['linkedid']);}}catch(_0x417a10){logger[_0x4d9e('0x2f')](_0x4d9e('0x41'),_0x417a10['message']);}};Acw[_0x4d9e('0x16')][_0x4d9e('0xc')]=function(_0x413cb7){try{if(this['channels'][_0x413cb7['uniqueid']]&&this[_0x4d9e('0x18')][_0x413cb7[_0x4d9e('0x2c')]][_0x4d9e('0x3e')]){logger[_0x4d9e('0x23')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x413cb7['uniqueid']);this[_0x4d9e('0x17')](_0x413cb7['uniqueid']);}else if(this['channels'][_0x413cb7['linkedid']]&&this[_0x4d9e('0x18')][_0x413cb7[_0x4d9e('0x42')]][_0x4d9e('0x3e')]){logger[_0x4d9e('0x23')](_0x4d9e('0x43'),_0x413cb7[_0x4d9e('0x42')]);this[_0x4d9e('0x17')](_0x413cb7[_0x4d9e('0x42')]);}}catch(_0x496b86){logger[_0x4d9e('0x2f')](_0x4d9e('0x44'),_0x496b86[_0x4d9e('0x35')]);}};Acw['prototype'][_0x4d9e('0x10')]=function(_0x560e26){try{if(!_[_0x4d9e('0x45')](this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x46')]])){this[_0x4d9e('0x17')](_0x560e26[_0x4d9e('0x46')]);if(this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x47')]]){this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x47')]]['attended']=!![];this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x48')]]=this['channels'][_0x560e26[_0x4d9e('0x47')]];delete this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x47')]];}}else if(!_[_0x4d9e('0x45')](this['channels'][_0x560e26[_0x4d9e('0x48')]])){this[_0x4d9e('0x17')](_0x560e26[_0x4d9e('0x48')]);if(this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x49')]]){this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x49')]][_0x4d9e('0x3e')]=!![];this[_0x4d9e('0x18')][_0x560e26[_0x4d9e('0x46')]]=this[_0x4d9e('0x18')][_0x560e26['origtransfereruniqueid']];delete this['channels'][_0x560e26['origtransfereruniqueid']];}}}catch(_0x577200){logger[_0x4d9e('0x2f')](_0x4d9e('0x4a'),_0x577200['message']);}};Acw[_0x4d9e('0x16')][_0x4d9e('0x4b')]=function(_0x5b3cfc){try{if(this[_0x4d9e('0x18')][_0x5b3cfc[_0x4d9e('0x4c')]]){logger['info'](_0x4d9e('0x4d'),JSON[_0x4d9e('0x3a')](_0x5b3cfc[_0x4d9e('0x4c')]));this[_0x4d9e('0x17')](_0x5b3cfc[_0x4d9e('0x4c')]);}else if(this[_0x4d9e('0x18')][_0x5b3cfc[_0x4d9e('0x4e')]]){logger[_0x4d9e('0x23')](_0x4d9e('0x4f'),JSON[_0x4d9e('0x3a')](_0x5b3cfc[_0x4d9e('0x4e')]));this[_0x4d9e('0x17')](_0x5b3cfc[_0x4d9e('0x4e')]);}}catch(_0xe9f77b){logger[_0x4d9e('0x2f')](_0x4d9e('0x50'),_0xe9f77b[_0x4d9e('0x35')]);}};Acw['prototype'][_0x4d9e('0xe')]=function(_0x3d5bcc){try{if(this['voiceQueues'][_0x3d5bcc['queue']]&&this[_0x4d9e('0x6')][_0x3d5bcc[_0x4d9e('0x1a')]][_0x4d9e('0x51')]==='all'){if(this[_0x4d9e('0x7')][_0x3d5bcc[_0x4d9e('0x19')]]){logger['info'](_0x4d9e('0x52'),_0x3d5bcc[_0x4d9e('0x2c')],_0x3d5bcc[_0x4d9e('0x19')],_0x3d5bcc['queue']);return RpcUser[_0x4d9e('0x22')](this[_0x4d9e('0x7')][_0x3d5bcc[_0x4d9e('0x19')]],_0x4d9e('0x53'),_0x3d5bcc[_0x4d9e('0x2c')]);}}}catch(_0x340466){logger[_0x4d9e('0x2f')](_0x4d9e('0x54'),_0x340466[_0x4d9e('0x35')]);}};module[_0x4d9e('0x55')]=Acw;