198a5424ce9047cc50b8c4680f4b66ad0c861c12
[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 _0x71ab=['[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','milliseconds','seconds','prototype','updateAcw','lastPauseAt','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','resolve','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','YYYY-MM-DD\x20HH:mm:ss','error','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','acw','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','isUndefined','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid'];(function(_0x208d75,_0x92d742){var _0x382d27=function(_0x3aaba3){while(--_0x3aaba3){_0x208d75['push'](_0x208d75['shift']());}};_0x382d27(++_0x92d742);}(_0x71ab,0x64));var _0xb71a=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x71ab[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var moment=require(_0xb71a('0x0'));var ami=require('../ami');var logger=require(_0xb71a('0x1'))('acw');var RpcUser=require(_0xb71a('0x2'));var RpcVoiceAgentReport=require(_0xb71a('0x3'));function Acw(_0x20fd9c){this[_0xb71a('0x4')]=_0x20fd9c[_0xb71a('0x4')];this[_0xb71a('0x5')]=_0x20fd9c[_0xb71a('0x5')];this[_0xb71a('0x6')]=_0x20fd9c[_0xb71a('0x6')];this[_0xb71a('0x7')]={};ami['on'](_0xb71a('0x8'),this[_0xb71a('0x9')][_0xb71a('0xa')](this));ami['on'](_0xb71a('0xb'),this[_0xb71a('0xc')][_0xb71a('0xa')](this));ami['on'](_0xb71a('0xd'),this[_0xb71a('0xe')]['bind'](this));ami['on'](_0xb71a('0xf'),this['syncAgentRingNoAnswer'][_0xb71a('0xa')](this));ami['on'](_0xb71a('0x10'),this[_0xb71a('0x11')]['bind'](this));ami['on'](_0xb71a('0x12'),this['syncBlindTransfer'][_0xb71a('0xa')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0xb71a('0xa')](this));}function getDiff(_0x2f5fd5){var _0x315ca8=moment()[_0xb71a('0x13')](0x0);var _0x483d77=moment(_0x2f5fd5)['milliseconds'](0x0);return _0x315ca8['diff'](_0x483d77,_0xb71a('0x14'));}Acw[_0xb71a('0x15')][_0xb71a('0x16')]=function(_0x42fc55,_0x3cd0f0){var _0x1e9363=this;var _0x31def2=getDiff(_0x1e9363[_0xb71a('0x6')][_0x42fc55][_0xb71a('0x17')]);clearTimeout(_0x1e9363['timers'][_0x42fc55][_0xb71a('0x18')]);_0x1e9363[_0xb71a('0x6')][_0x42fc55][_0xb71a('0x18')]=![];return RpcVoiceAgentReport[_0xb71a('0x19')]({'acwtime':_0x31def2},_0x1e9363[_0xb71a('0x6')][_0x42fc55][_0xb71a('0x1a')],_0x42fc55)[_0xb71a('0x1b')](function(_0x7cd1f9){logger[_0xb71a('0x1c')](_0xb71a('0x1d'),_0x3cd0f0,_0x31def2,_0x7cd1f9);})[_0xb71a('0x1e')](function(_0x494899){logger['error'](_0xb71a('0x1f'),_0x3cd0f0,_0x494899);})[_0xb71a('0x20')](function(){delete _0x1e9363['timers'][_0x42fc55];});};Acw['prototype'][_0xb71a('0x21')]=function(_0x4fe4fb){try{var _0x76d6dc=this;var _0x4227c7=this[_0xb71a('0x7')][_0x4fe4fb][_0xb71a('0x22')];var _0x38a728=this[_0xb71a('0x7')][_0x4fe4fb][_0xb71a('0x23')];var _0x14aac7=this['voiceQueues'][_0x38a728];var _0xd40f86=![];var _0x2c15bc=_0xb71a('0x24');if(_0x14aac7[_0xb71a('0x25')]&&_0x14aac7[_0xb71a('0x26')][_0xb71a('0x27')]){_0xd40f86=!![];_0x2c15bc=_0x14aac7[_0xb71a('0x26')][_0xb71a('0x27')];}if(!_0x76d6dc[_0xb71a('0x5')][_0x4227c7]){return Promise[_0xb71a('0x28')]();}return RpcUser[_0xb71a('0x29')](_0x76d6dc[_0xb71a('0x5')][_0x4227c7]['id'])[_0xb71a('0x1b')](function(_0x5ae0ed){if(!_0x5ae0ed||_0x5ae0ed[_0xb71a('0x2a')]){logger[_0xb71a('0x1c')](_0xb71a('0x2b'),_0x4fe4fb,_0x4227c7,_0x38a728);return;}logger[_0xb71a('0x1c')](_0xb71a('0x2c'),_0x4fe4fb,_0x4227c7,_0x38a728);var _0x38178c=_0x76d6dc[_0xb71a('0x7')][_0x4fe4fb][_0xb71a('0x2d')]&&_0x76d6dc[_0xb71a('0x7')][_0x4fe4fb][_0xb71a('0x2e')]?_0x76d6dc[_0xb71a('0x7')][_0x4fe4fb]['destlinkedid']:_0x4fe4fb;return RpcUser['savePause'](_0x76d6dc[_0xb71a('0x5')][_0x4227c7],_0x2c15bc,_0x38178c);})['then'](function(_0x70299a){if(_0xd40f86||!_0x70299a){return;}_0x76d6dc[_0xb71a('0x6')][_0x4227c7]={};logger['info'](_0xb71a('0x2f'),_0x4fe4fb,_0x76d6dc[_0xb71a('0x4')][_0x38a728][_0xb71a('0x30')],_0x4227c7,_0x38a728);_0x76d6dc[_0xb71a('0x6')][_0x4227c7][_0xb71a('0x18')]=setTimeout(_0x76d6dc[_0xb71a('0x31')]['bind'](_0x76d6dc,_0x4227c7),_0x76d6dc[_0xb71a('0x4')][_0x38a728][_0xb71a('0x30')]*0x3e8);_0x76d6dc[_0xb71a('0x6')][_0x4227c7][_0xb71a('0x17')]=moment()['format'](_0xb71a('0x32'));_0x76d6dc[_0xb71a('0x6')][_0x4227c7][_0xb71a('0x1a')]=_0x4fe4fb;_0x76d6dc[_0xb71a('0x6')][_0x4227c7][_0xb71a('0x23')]=_0x38a728;_0x76d6dc[_0xb71a('0x6')][_0x4227c7][_0xb71a('0x16')]=_0x76d6dc[_0xb71a('0x16')][_0xb71a('0xa')](_0x76d6dc,_0x4227c7,_0x4fe4fb);})[_0xb71a('0x1e')](function(){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x4fe4fb,_0x76d6dc[_0xb71a('0x4')][_0x38a728][_0xb71a('0x30')],_0x4227c7,_0x38a728);})[_0xb71a('0x20')](function(){delete _0x76d6dc[_0xb71a('0x7')][_0x4fe4fb];});}catch(_0xb5d842){logger[_0xb71a('0x33')](_0xb71a('0x34'),_0xb5d842['message']);}};Acw[_0xb71a('0x15')]['stopAcw']=function(_0x3143c9){try{var _0xaebdc3=this;if(_0xaebdc3[_0xb71a('0x6')][_0x3143c9]){_0xaebdc3[_0xb71a('0x6')][_0x3143c9]['timer']=![];var _0x39d12c=_0xaebdc3[_0xb71a('0x6')][_0x3143c9][_0xb71a('0x1a')];var _0x1fa15c=_0xaebdc3[_0xb71a('0x6')][_0x3143c9][_0xb71a('0x23')];var _0x4571c0=_0xaebdc3[_0xb71a('0x4')][_0x1fa15c][_0xb71a('0x30')];logger['info'](_0xb71a('0x35'),_0x39d12c,_0x3143c9);RpcUser['saveUnpause'](this[_0xb71a('0x5')][_0x3143c9]);RpcVoiceAgentReport[_0xb71a('0x19')]({'acwtime':_0x4571c0,'agentacw':!![]},_0x39d12c,_0x3143c9)[_0xb71a('0x1b')](function(_0x3cca63){logger[_0xb71a('0x1c')](_0xb71a('0x1d'),_0x39d12c,_0x4571c0,_0x3cca63);})['catch'](function(_0x47d2b1){logger['error'](_0xb71a('0x1f'),_0x39d12c,_0x47d2b1);});}else{logger['error'](_0xb71a('0x36'),_0x3143c9);if(_0xaebdc3[_0xb71a('0x6')]){logger[_0xb71a('0x1c')](_0xb71a('0x37'),JSON[_0xb71a('0x38')](_0xaebdc3[_0xb71a('0x6')]));}}}catch(_0x59530a){logger[_0xb71a('0x33')](_0xb71a('0x39'),_0x59530a[_0xb71a('0x3a')]);}};Acw[_0xb71a('0x15')][_0xb71a('0x9')]=function(_0x2f08d2){try{if(this['voiceQueues'][_0x2f08d2[_0xb71a('0x23')]]&&(this[_0xb71a('0x4')][_0x2f08d2[_0xb71a('0x23')]][_0xb71a('0x3b')]||this[_0xb71a('0x4')][_0x2f08d2[_0xb71a('0x23')]][_0xb71a('0x25')])){if(this['agents'][_0x2f08d2['interface']]){this[_0xb71a('0x7')][_0x2f08d2[_0xb71a('0x1a')]]={'queue':_0x2f08d2[_0xb71a('0x23')],'interface':_0x2f08d2[_0xb71a('0x22')],'destlinkedid':_0x2f08d2['destlinkedid']};}}}catch(_0x2316c8){logger['error'](_0xb71a('0x3c'),_0x2316c8[_0xb71a('0x3a')]);}};Acw['prototype'][_0xb71a('0x3d')]=function(_0x274a94){try{if(this[_0xb71a('0x4')][_0x274a94[_0xb71a('0x23')]]&&(this['voiceQueues'][_0x274a94[_0xb71a('0x23')]][_0xb71a('0x3b')]||this[_0xb71a('0x4')][_0x274a94['queue']][_0xb71a('0x25')])){if(this[_0xb71a('0x5')][_0x274a94[_0xb71a('0x22')]]){this['channels'][_0x274a94[_0xb71a('0x1a')]]={'queue':_0x274a94[_0xb71a('0x23')],'interface':_0x274a94[_0xb71a('0x22')]};}}}catch(_0x1f29b7){logger[_0xb71a('0x33')]('[ACW][syncAgentConnectPreview]\x20%s',_0x1f29b7[_0xb71a('0x3a')]);}};Acw[_0xb71a('0x15')][_0xb71a('0xc')]=function(_0x3ebc7d){try{if(this['channels'][_0x3ebc7d['uniqueid']]&&_[_0xb71a('0x3e')](this[_0xb71a('0x7')][_0x3ebc7d[_0xb71a('0x1a')]][_0xb71a('0x2d')])){logger[_0xb71a('0x1c')](_0xb71a('0x3f'),_0x3ebc7d[_0xb71a('0x1a')]);this[_0xb71a('0x21')](_0x3ebc7d[_0xb71a('0x1a')]);}else if(this[_0xb71a('0x7')][_0x3ebc7d['linkedid']]&&_[_0xb71a('0x3e')](this[_0xb71a('0x7')][_0x3ebc7d['linkedid']][_0xb71a('0x2d')])){logger['info'](_0xb71a('0x40'),_0x3ebc7d[_0xb71a('0x41')]);this[_0xb71a('0x21')](_0x3ebc7d[_0xb71a('0x41')]);}}catch(_0x84c587){logger['error'](_0xb71a('0x42'),_0x84c587['message']);}};Acw[_0xb71a('0x15')][_0xb71a('0xe')]=function(_0x5cb91e){try{if(this['channels'][_0x5cb91e[_0xb71a('0x1a')]]&&this[_0xb71a('0x7')][_0x5cb91e['uniqueid']]['attended']){logger['info'](_0xb71a('0x43'),_0x5cb91e['uniqueid']);this['startAcw'](_0x5cb91e[_0xb71a('0x1a')]);}else if(this[_0xb71a('0x7')][_0x5cb91e[_0xb71a('0x41')]]&&this[_0xb71a('0x7')][_0x5cb91e['linkedid']][_0xb71a('0x2d')]){logger[_0xb71a('0x1c')](_0xb71a('0x44'),_0x5cb91e['linkedid']);this[_0xb71a('0x21')](_0x5cb91e[_0xb71a('0x41')]);}}catch(_0x4dee60){logger[_0xb71a('0x33')](_0xb71a('0x45'),_0x4dee60[_0xb71a('0x3a')]);}};Acw['prototype'][_0xb71a('0x11')]=function(_0x51112b){try{if(!_[_0xb71a('0x46')](this[_0xb71a('0x7')][_0x51112b['transfereeuniqueid']])){this[_0xb71a('0x21')](_0x51112b[_0xb71a('0x47')]);if(this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x48')]]){this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x48')]][_0xb71a('0x2d')]=!![];this['channels'][_0x51112b['transfertargetuniqueid']]=this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x48')]];delete this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x48')]];}}else if(!_[_0xb71a('0x46')](this['channels'][_0x51112b['transfertargetuniqueid']])){this[_0xb71a('0x21')](_0x51112b[_0xb71a('0x49')]);if(this['channels'][_0x51112b[_0xb71a('0x4a')]]){this[_0xb71a('0x7')][_0x51112b['origtransfereruniqueid']][_0xb71a('0x2d')]=!![];this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x47')]]=this[_0xb71a('0x7')][_0x51112b['origtransfereruniqueid']];delete this[_0xb71a('0x7')][_0x51112b[_0xb71a('0x4a')]];}}}catch(_0x4c80f8){logger[_0xb71a('0x33')](_0xb71a('0x4b'),_0x4c80f8[_0xb71a('0x3a')]);}};Acw[_0xb71a('0x15')][_0xb71a('0x4c')]=function(_0x1c4a15){try{if(this[_0xb71a('0x7')][_0x1c4a15[_0xb71a('0x4d')]]){logger['info'](_0xb71a('0x4e'),JSON[_0xb71a('0x38')](_0x1c4a15['transfereruniqueid']));this[_0xb71a('0x21')](_0x1c4a15[_0xb71a('0x4d')]);}else if(this['channels'][_0x1c4a15[_0xb71a('0x4f')]]){logger[_0xb71a('0x1c')](_0xb71a('0x50'),JSON[_0xb71a('0x38')](_0x1c4a15[_0xb71a('0x4f')]));this[_0xb71a('0x21')](_0x1c4a15['transfererlinkedid']);}}catch(_0x59b1b4){logger[_0xb71a('0x33')](_0xb71a('0x51'),_0x59b1b4[_0xb71a('0x3a')]);}};Acw['prototype'][_0xb71a('0x52')]=function(_0x5e58f7){try{if(this[_0xb71a('0x4')][_0x5e58f7['queue']]&&this['voiceQueues'][_0x5e58f7[_0xb71a('0x23')]][_0xb71a('0x53')]===_0xb71a('0x54')){if(this[_0xb71a('0x5')][_0x5e58f7[_0xb71a('0x22')]]){logger['info'](_0xb71a('0x55'),_0x5e58f7['uniqueid'],_0x5e58f7[_0xb71a('0x22')],_0x5e58f7[_0xb71a('0x23')]);return RpcUser[_0xb71a('0x56')](this['agents'][_0x5e58f7['interface']],_0xb71a('0x57'),_0x5e58f7[_0xb71a('0x1a')]);}}}catch(_0x1a96fc){logger[_0xb71a('0x33')](_0xb71a('0x58'),_0x1a96fc['message']);}};module[_0xb71a('0x59')]=Acw;