Built motion from commit 9d7072cc.|2.5.39
[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 _0xb6e3=['interface','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','then','agents','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','isUndefined','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','Auto-Pause','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xb6e3,0x184));var _0x3b6e=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xb6e3[_0x21549c];return _0x426cbd;};'use strict';var util=require(_0x3b6e('0x0'));var _=require(_0x3b6e('0x1'));var moment=require(_0x3b6e('0x2'));var ami=require(_0x3b6e('0x3'));var logger=require(_0x3b6e('0x4'))(_0x3b6e('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x3b6e('0x6'));function Acw(_0x393192){this[_0x3b6e('0x7')]=_0x393192[_0x3b6e('0x7')];this['agents']=_0x393192['agents'];this[_0x3b6e('0x8')]=_0x393192[_0x3b6e('0x8')];this[_0x3b6e('0x9')]={};ami['on']('agentconnect',this[_0x3b6e('0xa')][_0x3b6e('0xb')](this));ami['on'](_0x3b6e('0xc'),this[_0x3b6e('0xd')][_0x3b6e('0xb')](this));ami['on']('hangup',this[_0x3b6e('0xe')][_0x3b6e('0xb')](this));ami['on']('agentringnoanswer',this[_0x3b6e('0xf')][_0x3b6e('0xb')](this));ami['on'](_0x3b6e('0x10'),this[_0x3b6e('0x11')][_0x3b6e('0xb')](this));ami['on'](_0x3b6e('0x12'),this[_0x3b6e('0x13')][_0x3b6e('0xb')](this));ami['on'](_0x3b6e('0x14'),this[_0x3b6e('0x15')][_0x3b6e('0xb')](this));}function getDiff(_0x24c6d2){var _0x346a76=moment()[_0x3b6e('0x16')](0x0);var _0x4672f0=moment(_0x24c6d2)[_0x3b6e('0x16')](0x0);return _0x346a76[_0x3b6e('0x17')](_0x4672f0,_0x3b6e('0x18'));}Acw[_0x3b6e('0x19')][_0x3b6e('0x1a')]=function(_0x25d51d){try{var _0x4602a1=this;var _0x2a93e3=this[_0x3b6e('0x9')][_0x25d51d][_0x3b6e('0x1b')];var _0x564b81=this[_0x3b6e('0x9')][_0x25d51d][_0x3b6e('0x1c')];var _0x4d7fed=this[_0x3b6e('0x7')][_0x564b81];var _0x394903=![];var _0x55c65d=_0x3b6e('0x1d');if(_0x4d7fed[_0x3b6e('0x1e')]){if(_0x4d7fed['mandatoryDispositionPause'][_0x3b6e('0x1f')]){_0x394903=!![];_0x55c65d=_0x4d7fed[_0x3b6e('0x20')][_0x3b6e('0x1f')];}}ami[_0x3b6e('0x21')]({'action':'QueuePause','interface':_0x2a93e3,'paused':!![],'reason':_0x55c65d})[_0x3b6e('0x22')](function(_0x258533){if(_0x4602a1['agents'][_0x2a93e3]){return RpcUser['getAgent'](_0x4602a1[_0x3b6e('0x23')][_0x2a93e3]['id'])['then'](function(_0x36ae48){if(_0x36ae48&&!_0x36ae48[_0x3b6e('0x24')]){logger[_0x3b6e('0x25')](_0x3b6e('0x26'),_0x25d51d,_0x2a93e3,_0x564b81);var _0x123655=_0x4602a1[_0x3b6e('0x9')][_0x25d51d][_0x3b6e('0x27')]&&_0x4602a1[_0x3b6e('0x9')][_0x25d51d][_0x3b6e('0x28')]?_0x4602a1['channels'][_0x25d51d][_0x3b6e('0x28')]:_0x25d51d;return RpcUser[_0x3b6e('0x29')](_0x4602a1['agents'][_0x2a93e3],_0x55c65d,_0x123655)[_0x3b6e('0x22')](function(_0x1cc93f){if(!_0x394903){_0x4602a1['timers'][_0x2a93e3]={};logger[_0x3b6e('0x25')](_0x3b6e('0x2a'),_0x25d51d,_0x4602a1[_0x3b6e('0x7')][_0x564b81]['acwTimeout'],_0x2a93e3,_0x564b81);_0x4602a1['timers'][_0x2a93e3][_0x3b6e('0x2b')]=setTimeout(_0x4602a1[_0x3b6e('0x2c')]['bind'](_0x4602a1,_0x2a93e3),_0x4602a1['voiceQueues'][_0x564b81][_0x3b6e('0x2d')]*0x3e8);_0x4602a1[_0x3b6e('0x8')][_0x2a93e3]['lastPauseAt']=moment()['format'](_0x3b6e('0x2e'));_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x2f')]=_0x25d51d;_0x4602a1[_0x3b6e('0x8')][_0x2a93e3]['queue']=_0x564b81;_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x30')]=function(){var _0x927d75=getDiff(_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x31')]);clearTimeout(_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x2b')]);_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x2b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x927d75},_0x4602a1[_0x3b6e('0x8')][_0x2a93e3][_0x3b6e('0x2f')],_0x2a93e3)[_0x3b6e('0x22')](function(_0x101018){logger[_0x3b6e('0x25')](_0x3b6e('0x32'),_0x25d51d,_0x927d75,_0x101018);})[_0x3b6e('0x33')](function(_0x1ab56d){logger[_0x3b6e('0x34')](_0x3b6e('0x35'),_0x25d51d,_0x1ab56d);});delete _0x4602a1[_0x3b6e('0x8')][_0x2a93e3];};}});}else{logger[_0x3b6e('0x25')](_0x3b6e('0x36'),_0x25d51d,_0x2a93e3,_0x564b81);}});}})['catch'](function(_0x166c32){logger[_0x3b6e('0x34')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x25d51d,_0x4602a1[_0x3b6e('0x7')][_0x564b81][_0x3b6e('0x2d')],_0x2a93e3,_0x564b81);})['finally'](function(){delete _0x4602a1['channels'][_0x25d51d];});}catch(_0x5454f3){logger[_0x3b6e('0x34')](_0x3b6e('0x37'),_0x5454f3[_0x3b6e('0x38')]);}};Acw[_0x3b6e('0x19')][_0x3b6e('0x2c')]=function(_0x3f53da){try{var _0x337bfa=this;if(_0x337bfa['timers'][_0x3f53da]){_0x337bfa[_0x3b6e('0x8')][_0x3f53da][_0x3b6e('0x2b')]=![];var _0x5d9033=_0x337bfa[_0x3b6e('0x8')][_0x3f53da][_0x3b6e('0x2f')];var _0x2937d1=_0x337bfa[_0x3b6e('0x8')][_0x3f53da][_0x3b6e('0x1c')];var _0x13524a=_0x337bfa[_0x3b6e('0x7')][_0x2937d1]['acwTimeout'];logger[_0x3b6e('0x25')](_0x3b6e('0x39'),_0x5d9033,_0x3f53da);RpcUser[_0x3b6e('0x3a')](this[_0x3b6e('0x23')][_0x3f53da]);RpcVoiceAgentReport[_0x3b6e('0x3b')]({'acwtime':_0x13524a,'agentacw':!![]},_0x5d9033,_0x3f53da)['then'](function(_0x1f602c){logger[_0x3b6e('0x25')](_0x3b6e('0x32'),_0x5d9033,_0x13524a,_0x1f602c);})[_0x3b6e('0x33')](function(_0x3b9c86){logger[_0x3b6e('0x34')](_0x3b6e('0x35'),_0x5d9033,_0x3b9c86);});}else{logger[_0x3b6e('0x34')](_0x3b6e('0x3c'),_0x3f53da);if(_0x337bfa[_0x3b6e('0x8')]){logger[_0x3b6e('0x25')](_0x3b6e('0x3d'),JSON[_0x3b6e('0x3e')](_0x337bfa['timers']));}}}catch(_0x1af56d){logger['error']('[ACW][STOP]\x20%s',_0x1af56d[_0x3b6e('0x38')]);}};Acw[_0x3b6e('0x19')]['syncAgentConnect']=function(_0x27055f){try{if(this[_0x3b6e('0x7')][_0x27055f['queue']]&&(this['voiceQueues'][_0x27055f['queue']][_0x3b6e('0x5')]||this[_0x3b6e('0x7')][_0x27055f['queue']][_0x3b6e('0x1e')])){if(this[_0x3b6e('0x23')][_0x27055f[_0x3b6e('0x1b')]]){this['channels'][_0x27055f[_0x3b6e('0x2f')]]={'queue':_0x27055f[_0x3b6e('0x1c')],'interface':_0x27055f['interface'],'destlinkedid':_0x27055f[_0x3b6e('0x28')]};}}}catch(_0x438b7a){logger['error'](_0x3b6e('0x3f'),_0x438b7a['message']);}};Acw['prototype'][_0x3b6e('0x15')]=function(_0x475240){try{if(this[_0x3b6e('0x7')][_0x475240['queue']]&&(this[_0x3b6e('0x7')][_0x475240[_0x3b6e('0x1c')]][_0x3b6e('0x5')]||this[_0x3b6e('0x7')][_0x475240[_0x3b6e('0x1c')]][_0x3b6e('0x1e')])){if(this[_0x3b6e('0x23')][_0x475240[_0x3b6e('0x1b')]]){this[_0x3b6e('0x9')][_0x475240[_0x3b6e('0x2f')]]={'queue':_0x475240['queue'],'interface':_0x475240[_0x3b6e('0x1b')]};}}}catch(_0x27c735){logger[_0x3b6e('0x34')](_0x3b6e('0x40'),_0x27c735[_0x3b6e('0x38')]);}};Acw[_0x3b6e('0x19')][_0x3b6e('0xd')]=function(_0x1ec250){try{if(this['channels'][_0x1ec250[_0x3b6e('0x2f')]]&&_['isUndefined'](this[_0x3b6e('0x9')][_0x1ec250[_0x3b6e('0x2f')]][_0x3b6e('0x27')])){logger['info'](_0x3b6e('0x41'),_0x1ec250['uniqueid']);this[_0x3b6e('0x1a')](_0x1ec250[_0x3b6e('0x2f')]);}else if(this[_0x3b6e('0x9')][_0x1ec250['linkedid']]&&_[_0x3b6e('0x42')](this[_0x3b6e('0x9')][_0x1ec250[_0x3b6e('0x43')]]['attended'])){logger[_0x3b6e('0x25')]('[%s][HANGUP:LINKEDID]',_0x1ec250[_0x3b6e('0x43')]);this[_0x3b6e('0x1a')](_0x1ec250[_0x3b6e('0x43')]);}}catch(_0x1493d8){logger[_0x3b6e('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x1493d8['message']);}};Acw['prototype'][_0x3b6e('0xe')]=function(_0x50786c){try{if(this['channels'][_0x50786c[_0x3b6e('0x2f')]]&&this[_0x3b6e('0x9')][_0x50786c['uniqueid']][_0x3b6e('0x27')]){logger[_0x3b6e('0x25')](_0x3b6e('0x44'),_0x50786c[_0x3b6e('0x2f')]);this['startAcw'](_0x50786c[_0x3b6e('0x2f')]);}else if(this['channels'][_0x50786c[_0x3b6e('0x43')]]&&this[_0x3b6e('0x9')][_0x50786c[_0x3b6e('0x43')]][_0x3b6e('0x27')]){logger[_0x3b6e('0x25')](_0x3b6e('0x45'),_0x50786c['linkedid']);this['startAcw'](_0x50786c[_0x3b6e('0x43')]);}}catch(_0x4af74c){logger[_0x3b6e('0x34')]('[ACW][syncHangup]\x20%s',_0x4af74c[_0x3b6e('0x38')]);}};Acw[_0x3b6e('0x19')][_0x3b6e('0x11')]=function(_0x40925c){try{if(!_[_0x3b6e('0x46')](this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x47')]])){this[_0x3b6e('0x1a')](_0x40925c['transfereeuniqueid']);if(this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x48')]]){this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x48')]][_0x3b6e('0x27')]=!![];this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x49')]]=this[_0x3b6e('0x9')][_0x40925c['secondtransfereruniqueid']];delete this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x48')]];}}else if(!_[_0x3b6e('0x46')](this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x49')]])){this[_0x3b6e('0x1a')](_0x40925c[_0x3b6e('0x49')]);if(this[_0x3b6e('0x9')][_0x40925c['origtransfereruniqueid']]){this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x4a')]]['attended']=!![];this[_0x3b6e('0x9')][_0x40925c[_0x3b6e('0x47')]]=this['channels'][_0x40925c[_0x3b6e('0x4a')]];delete this[_0x3b6e('0x9')][_0x40925c['origtransfereruniqueid']];}}}catch(_0x6c9596){logger[_0x3b6e('0x34')](_0x3b6e('0x4b'),_0x6c9596['message']);}};Acw[_0x3b6e('0x19')][_0x3b6e('0x13')]=function(_0x472a5c){try{if(this[_0x3b6e('0x9')][_0x472a5c['transfereruniqueid']]){logger[_0x3b6e('0x25')](_0x3b6e('0x4c'),JSON[_0x3b6e('0x3e')](_0x472a5c[_0x3b6e('0x4d')]));this[_0x3b6e('0x1a')](_0x472a5c[_0x3b6e('0x4d')]);}else if(this[_0x3b6e('0x9')][_0x472a5c[_0x3b6e('0x4e')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x3b6e('0x3e')](_0x472a5c[_0x3b6e('0x4e')]));this['startAcw'](_0x472a5c[_0x3b6e('0x4e')]);}}catch(_0x3763bd){logger[_0x3b6e('0x34')](_0x3b6e('0x4f'),_0x3763bd[_0x3b6e('0x38')]);}};Acw['prototype'][_0x3b6e('0xf')]=function(_0x1bb4e2){try{if(this[_0x3b6e('0x7')][_0x1bb4e2[_0x3b6e('0x1c')]]&&this['voiceQueues'][_0x1bb4e2['queue']]['autopause']===_0x3b6e('0x50')){if(this[_0x3b6e('0x23')][_0x1bb4e2[_0x3b6e('0x1b')]]){logger[_0x3b6e('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x1bb4e2['uniqueid'],_0x1bb4e2['interface'],_0x1bb4e2['queue']);return RpcUser[_0x3b6e('0x29')](this[_0x3b6e('0x23')][_0x1bb4e2[_0x3b6e('0x1b')]],_0x3b6e('0x51'),_0x1bb4e2[_0x3b6e('0x2f')]);}}}catch(_0x2c3015){logger[_0x3b6e('0x34')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x2c3015[_0x3b6e('0x38')]);}};module[_0x3b6e('0x52')]=Acw;