ed0e652db837df9cbb5be8aa5196c3d10c2528c3
[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 _0xb821=['[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','acw','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','diff','seconds','startAcw','interface','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','getAgent','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[ACW][START]\x20%s','prototype','[TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnect]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid'];(function(_0x1030ce,_0xbe3f74){var _0x3367fd=function(_0x387153){while(--_0x387153){_0x1030ce['push'](_0x1030ce['shift']());}};_0x3367fd(++_0xbe3f74);}(_0xb821,0xa7));var _0x1b82=function(_0xf7f345,_0x5ba9a7){_0xf7f345=_0xf7f345-0x0;var _0x1ced22=_0xb821[_0xf7f345];return _0x1ced22;};'use strict';var util=require('util');var _=require(_0x1b82('0x0'));var moment=require(_0x1b82('0x1'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x1b82('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x3b1d14){this[_0x1b82('0x3')]=_0x3b1d14[_0x1b82('0x3')];this[_0x1b82('0x4')]=_0x3b1d14['agents'];this[_0x1b82('0x5')]=_0x3b1d14[_0x1b82('0x5')];this[_0x1b82('0x6')]={};ami['on'](_0x1b82('0x7'),this[_0x1b82('0x8')][_0x1b82('0x9')](this));ami['on'](_0x1b82('0xa'),this[_0x1b82('0xb')][_0x1b82('0x9')](this));ami['on']('hangup',this[_0x1b82('0xc')][_0x1b82('0x9')](this));ami['on'](_0x1b82('0xd'),this[_0x1b82('0xe')][_0x1b82('0x9')](this));ami['on'](_0x1b82('0xf'),this[_0x1b82('0x10')][_0x1b82('0x9')](this));ami['on']('blindtransfer',this[_0x1b82('0x11')][_0x1b82('0x9')](this));ami['on'](_0x1b82('0x12'),this[_0x1b82('0x13')]['bind'](this));}function getDiff(_0x1a6285){var _0x5767aa=moment()['milliseconds'](0x0);var _0x1e553a=moment(_0x1a6285)['milliseconds'](0x0);return _0x5767aa[_0x1b82('0x14')](_0x1e553a,_0x1b82('0x15'));}Acw['prototype'][_0x1b82('0x16')]=function(_0x5dab7d){try{var _0x563261=this;var _0x1b115b=this['channels'][_0x5dab7d][_0x1b82('0x17')];var _0x25228b=this[_0x1b82('0x6')][_0x5dab7d]['queue'];var _0x514082=this[_0x1b82('0x3')][_0x25228b];var _0x5d66c3=![];var _0x3def2d=_0x1b82('0x18');if(_0x514082[_0x1b82('0x19')]){if(_0x514082['mandatoryDispositionPause'][_0x1b82('0x1a')]){_0x5d66c3=!![];_0x3def2d=_0x514082[_0x1b82('0x1b')][_0x1b82('0x1a')];}}ami[_0x1b82('0x1c')]({'action':_0x1b82('0x1d'),'interface':_0x1b115b,'paused':!![],'reason':_0x3def2d})['then'](function(_0x35a2c8){if(_0x563261[_0x1b82('0x4')][_0x1b115b]){return RpcUser[_0x1b82('0x1e')](_0x563261[_0x1b82('0x4')][_0x1b115b]['id'])[_0x1b82('0x1f')](function(_0x31fd64){if(_0x31fd64&&!_0x31fd64[_0x1b82('0x20')]){logger['info'](_0x1b82('0x21'),_0x5dab7d,_0x1b115b,_0x25228b);var _0x233740=_0x563261['channels'][_0x5dab7d][_0x1b82('0x22')]&&_0x563261[_0x1b82('0x6')][_0x5dab7d][_0x1b82('0x23')]?_0x563261['channels'][_0x5dab7d][_0x1b82('0x23')]:_0x5dab7d;return RpcUser['savePause'](_0x563261['agents'][_0x1b115b],_0x3def2d,_0x233740)['then'](function(_0xf2e556){if(!_0x5d66c3){_0x563261[_0x1b82('0x5')][_0x1b115b]={};logger[_0x1b82('0x24')](_0x1b82('0x25'),_0x5dab7d,_0x563261['voiceQueues'][_0x25228b][_0x1b82('0x26')],_0x1b115b,_0x25228b);_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x27')]=setTimeout(_0x563261[_0x1b82('0x28')][_0x1b82('0x9')](_0x563261,_0x1b115b),_0x563261[_0x1b82('0x3')][_0x25228b][_0x1b82('0x26')]*0x3e8);_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x29')]=moment()[_0x1b82('0x2a')](_0x1b82('0x2b'));_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x2c')]=_0x5dab7d;_0x563261['timers'][_0x1b115b][_0x1b82('0x2d')]=_0x25228b;_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x2e')]=function(){var _0x457dbb=getDiff(_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x29')]);clearTimeout(_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x27')]);_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x27')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x457dbb},_0x563261[_0x1b82('0x5')][_0x1b115b][_0x1b82('0x2c')],_0x1b115b)[_0x1b82('0x1f')](function(_0xc98ee2){logger['info'](_0x1b82('0x2f'),_0x5dab7d,_0x457dbb,_0xc98ee2);})[_0x1b82('0x30')](function(_0x544bd5){logger[_0x1b82('0x31')](_0x1b82('0x32'),_0x5dab7d,_0x544bd5);});delete _0x563261[_0x1b82('0x5')][_0x1b115b];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x5dab7d,_0x1b115b,_0x25228b);}});}})[_0x1b82('0x30')](function(_0x4c98e0){logger['error'](_0x1b82('0x25'),_0x5dab7d,_0x563261[_0x1b82('0x3')][_0x25228b][_0x1b82('0x26')],_0x1b115b,_0x25228b);})['finally'](function(){delete _0x563261[_0x1b82('0x6')][_0x5dab7d];});}catch(_0x366db3){logger[_0x1b82('0x31')](_0x1b82('0x33'),_0x366db3['message']);}};Acw[_0x1b82('0x34')][_0x1b82('0x28')]=function(_0x2ee9ac){try{var _0x5ebf6c=this;if(_0x5ebf6c['timers'][_0x2ee9ac]){_0x5ebf6c[_0x1b82('0x5')][_0x2ee9ac]['timer']=![];var _0x1d3e68=_0x5ebf6c[_0x1b82('0x5')][_0x2ee9ac][_0x1b82('0x2c')];var _0x348880=_0x5ebf6c[_0x1b82('0x5')][_0x2ee9ac][_0x1b82('0x2d')];var _0x39fe4a=_0x5ebf6c[_0x1b82('0x3')][_0x348880]['acwTimeout'];logger['info'](_0x1b82('0x35'),_0x2ee9ac);RpcUser['saveUnpause'](this[_0x1b82('0x4')][_0x2ee9ac]);RpcVoiceAgentReport['update']({'acwtime':_0x39fe4a,'agentacw':!![]},_0x1d3e68,_0x2ee9ac)[_0x1b82('0x1f')](function(_0x331379){logger[_0x1b82('0x24')](_0x1b82('0x2f'),_0x1d3e68,_0x39fe4a,_0x331379);})[_0x1b82('0x30')](function(_0x202bb4){logger['error'](_0x1b82('0x32'),_0x1d3e68,_0x202bb4);});}else{logger['error'](_0x1b82('0x36'),_0x2ee9ac);if(_0x5ebf6c['timers']){logger[_0x1b82('0x24')]('[ACW][TIMERS]',JSON['stringify'](_0x5ebf6c[_0x1b82('0x5')]));}}}catch(_0x388d14){logger[_0x1b82('0x31')](_0x1b82('0x37'),_0x388d14[_0x1b82('0x38')]);}};Acw['prototype'][_0x1b82('0x8')]=function(_0x4ffa9e){try{if(this[_0x1b82('0x3')][_0x4ffa9e[_0x1b82('0x2d')]]&&(this[_0x1b82('0x3')][_0x4ffa9e[_0x1b82('0x2d')]][_0x1b82('0x2')]||this['voiceQueues'][_0x4ffa9e[_0x1b82('0x2d')]]['mandatoryDisposition'])){if(this[_0x1b82('0x4')][_0x4ffa9e[_0x1b82('0x17')]]){this['channels'][_0x4ffa9e[_0x1b82('0x2c')]]={'queue':_0x4ffa9e[_0x1b82('0x2d')],'interface':_0x4ffa9e[_0x1b82('0x17')],'destlinkedid':_0x4ffa9e[_0x1b82('0x23')]};}}}catch(_0x39f6ef){logger[_0x1b82('0x31')](_0x1b82('0x39'),_0x39f6ef['message']);}};Acw[_0x1b82('0x34')]['syncAgentConnectPreview']=function(_0xb02ec3){try{if(this[_0x1b82('0x3')][_0xb02ec3[_0x1b82('0x2d')]]&&(this[_0x1b82('0x3')][_0xb02ec3[_0x1b82('0x2d')]][_0x1b82('0x2')]||this[_0x1b82('0x3')][_0xb02ec3[_0x1b82('0x2d')]][_0x1b82('0x19')])){if(this[_0x1b82('0x4')][_0xb02ec3[_0x1b82('0x17')]]){this[_0x1b82('0x6')][_0xb02ec3[_0x1b82('0x2c')]]={'queue':_0xb02ec3[_0x1b82('0x2d')],'interface':_0xb02ec3['interface']};}}}catch(_0x59afed){logger[_0x1b82('0x31')]('[ACW][syncAgentConnectPreview]\x20%s',_0x59afed[_0x1b82('0x38')]);}};Acw[_0x1b82('0x34')][_0x1b82('0xb')]=function(_0x5710f4){try{if(this[_0x1b82('0x6')][_0x5710f4['uniqueid']]&&_['isUndefined'](this[_0x1b82('0x6')][_0x5710f4[_0x1b82('0x2c')]][_0x1b82('0x22')])){logger['info'](_0x1b82('0x3a'),_0x5710f4[_0x1b82('0x2c')]);this['startAcw'](_0x5710f4['uniqueid']);}else if(this[_0x1b82('0x6')][_0x5710f4[_0x1b82('0x3b')]]&&_[_0x1b82('0x3c')](this['channels'][_0x5710f4[_0x1b82('0x3b')]][_0x1b82('0x22')])){logger[_0x1b82('0x24')](_0x1b82('0x3d'),_0x5710f4[_0x1b82('0x3b')]);this[_0x1b82('0x16')](_0x5710f4['linkedid']);}}catch(_0x3914aa){logger['error'](_0x1b82('0x3e'),_0x3914aa[_0x1b82('0x38')]);}};Acw['prototype'][_0x1b82('0xc')]=function(_0x5de11b){try{if(this[_0x1b82('0x6')][_0x5de11b[_0x1b82('0x2c')]]&&this[_0x1b82('0x6')][_0x5de11b[_0x1b82('0x2c')]][_0x1b82('0x22')]){logger[_0x1b82('0x24')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5de11b['uniqueid']);this[_0x1b82('0x16')](_0x5de11b[_0x1b82('0x2c')]);}else if(this[_0x1b82('0x6')][_0x5de11b[_0x1b82('0x3b')]]&&this[_0x1b82('0x6')][_0x5de11b[_0x1b82('0x3b')]][_0x1b82('0x22')]){logger[_0x1b82('0x24')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x5de11b['linkedid']);this['startAcw'](_0x5de11b[_0x1b82('0x3b')]);}}catch(_0x2a95d2){logger[_0x1b82('0x31')](_0x1b82('0x3f'),_0x2a95d2[_0x1b82('0x38')]);}};Acw[_0x1b82('0x34')][_0x1b82('0x10')]=function(_0x53f7a4){try{if(!_[_0x1b82('0x40')](this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x41')]])){this[_0x1b82('0x16')](_0x53f7a4[_0x1b82('0x41')]);if(this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x42')]]){this[_0x1b82('0x6')][_0x53f7a4['secondtransfereruniqueid']][_0x1b82('0x22')]=!![];this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x43')]]=this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x42')]];delete this['channels'][_0x53f7a4['secondtransfereruniqueid']];}}else if(!_[_0x1b82('0x40')](this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x43')]])){this[_0x1b82('0x16')](_0x53f7a4['transfertargetuniqueid']);if(this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x44')]]){this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x44')]][_0x1b82('0x22')]=!![];this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x41')]]=this[_0x1b82('0x6')][_0x53f7a4[_0x1b82('0x44')]];delete this[_0x1b82('0x6')][_0x53f7a4['origtransfereruniqueid']];}}}catch(_0xde1d73){logger[_0x1b82('0x31')]('[ACW][syncAttendedTransfer]\x20%s',_0xde1d73[_0x1b82('0x38')]);}};Acw[_0x1b82('0x34')][_0x1b82('0x11')]=function(_0x2a5435){try{if(this['channels'][_0x2a5435[_0x1b82('0x45')]]){logger[_0x1b82('0x24')](_0x1b82('0x46'),JSON[_0x1b82('0x47')](_0x2a5435[_0x1b82('0x45')]));this[_0x1b82('0x16')](_0x2a5435['transfereruniqueid']);}else if(this[_0x1b82('0x6')][_0x2a5435['transfererlinkedid']]){logger[_0x1b82('0x24')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x1b82('0x47')](_0x2a5435[_0x1b82('0x48')]));this[_0x1b82('0x16')](_0x2a5435[_0x1b82('0x48')]);}}catch(_0x412073){logger[_0x1b82('0x31')](_0x1b82('0x49'),_0x412073['message']);}};Acw[_0x1b82('0x34')][_0x1b82('0xe')]=function(_0x1435a2){try{if(this[_0x1b82('0x3')][_0x1435a2[_0x1b82('0x2d')]]&&this[_0x1b82('0x3')][_0x1435a2[_0x1b82('0x2d')]][_0x1b82('0x4a')]===_0x1b82('0x4b')){if(this[_0x1b82('0x4')][_0x1435a2[_0x1b82('0x17')]]){logger[_0x1b82('0x24')](_0x1b82('0x4c'),_0x1435a2['uniqueid'],_0x1435a2[_0x1b82('0x17')],_0x1435a2[_0x1b82('0x2d')]);return RpcUser[_0x1b82('0x4d')](this['agents'][_0x1435a2[_0x1b82('0x17')]],_0x1b82('0x4e'),_0x1435a2['uniqueid']);}}}catch(_0x3bf106){logger[_0x1b82('0x31')](_0x1b82('0x4f'),_0x3bf106['message']);}};module['exports']=Acw;