Built motion from commit 932cf0d0.|2.5.42
[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 _0x7f1c=['hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','agents','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','timer','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x7f1c,0x1a1));var _0xc7f1=function(_0xfd336f,_0x1c1dd3){_0xfd336f=_0xfd336f-0x0;var _0xe0bbe2=_0x7f1c[_0xfd336f];return _0xe0bbe2;};'use strict';var util=require(_0xc7f1('0x0'));var _=require('lodash');var moment=require(_0xc7f1('0x1'));var ami=require('../ami');var logger=require(_0xc7f1('0x2'))(_0xc7f1('0x3'));var RpcUser=require(_0xc7f1('0x4'));var RpcVoiceAgentReport=require(_0xc7f1('0x5'));function Acw(_0x33983e){this[_0xc7f1('0x6')]=_0x33983e[_0xc7f1('0x6')];this['agents']=_0x33983e['agents'];this[_0xc7f1('0x7')]=_0x33983e[_0xc7f1('0x7')];this[_0xc7f1('0x8')]={};ami['on'](_0xc7f1('0x9'),this[_0xc7f1('0xa')][_0xc7f1('0xb')](this));ami['on'](_0xc7f1('0xc'),this['syncHangupRequest']['bind'](this));ami['on'](_0xc7f1('0xd'),this['syncHangup']['bind'](this));ami['on'](_0xc7f1('0xe'),this[_0xc7f1('0xf')][_0xc7f1('0xb')](this));ami['on'](_0xc7f1('0x10'),this[_0xc7f1('0x11')][_0xc7f1('0xb')](this));ami['on'](_0xc7f1('0x12'),this['syncBlindTransfer'][_0xc7f1('0xb')](this));ami['on'](_0xc7f1('0x13'),this[_0xc7f1('0x14')][_0xc7f1('0xb')](this));}function getDiff(_0x955c75){var _0x14189c=moment()[_0xc7f1('0x15')](0x0);var _0x43e334=moment(_0x955c75)[_0xc7f1('0x15')](0x0);return _0x14189c[_0xc7f1('0x16')](_0x43e334,_0xc7f1('0x17'));}Acw[_0xc7f1('0x18')]['startAcw']=function(_0x119d63){try{var _0x6665e2=this;var _0x48b36d=this[_0xc7f1('0x8')][_0x119d63][_0xc7f1('0x19')];var _0x611a74=this[_0xc7f1('0x8')][_0x119d63]['queue'];var _0x3ba955=this[_0xc7f1('0x6')][_0x611a74];var _0xfd6e44=![];var _0x47fc33='ACW';if(_0x3ba955[_0xc7f1('0x1a')]){if(_0x3ba955[_0xc7f1('0x1b')]['name']){_0xfd6e44=!![];_0x47fc33=_0x3ba955[_0xc7f1('0x1b')][_0xc7f1('0x1c')];}}ami[_0xc7f1('0x1d')]({'action':_0xc7f1('0x1e'),'interface':_0x48b36d,'paused':!![],'reason':_0x47fc33})['then'](function(_0x45d4e5){if(_0x6665e2[_0xc7f1('0x1f')][_0x48b36d]){return RpcUser[_0xc7f1('0x20')](_0x6665e2[_0xc7f1('0x1f')][_0x48b36d]['id'])[_0xc7f1('0x21')](function(_0x8fc335){if(_0x8fc335&&!_0x8fc335[_0xc7f1('0x22')]){logger[_0xc7f1('0x23')](_0xc7f1('0x24'),_0x119d63,_0x48b36d,_0x611a74);var _0x5e9e12=_0x6665e2['channels'][_0x119d63][_0xc7f1('0x25')]&&_0x6665e2[_0xc7f1('0x8')][_0x119d63][_0xc7f1('0x26')]?_0x6665e2[_0xc7f1('0x8')][_0x119d63][_0xc7f1('0x26')]:_0x119d63;return RpcUser[_0xc7f1('0x27')](_0x6665e2[_0xc7f1('0x1f')][_0x48b36d],_0x47fc33,_0x5e9e12)[_0xc7f1('0x21')](function(_0x5ec939){if(!_0xfd6e44){_0x6665e2[_0xc7f1('0x7')][_0x48b36d]={};logger[_0xc7f1('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x119d63,_0x6665e2[_0xc7f1('0x6')][_0x611a74][_0xc7f1('0x28')],_0x48b36d,_0x611a74);_0x6665e2['timers'][_0x48b36d]['timer']=setTimeout(_0x6665e2[_0xc7f1('0x29')][_0xc7f1('0xb')](_0x6665e2,_0x48b36d),_0x6665e2[_0xc7f1('0x6')][_0x611a74]['acwTimeout']*0x3e8);_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x2a')]=moment()[_0xc7f1('0x2b')](_0xc7f1('0x2c'));_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x2d')]=_0x119d63;_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x2e')]=_0x611a74;_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x2f')]=function(){var _0xa11140=getDiff(_0x6665e2['timers'][_0x48b36d][_0xc7f1('0x2a')]);clearTimeout(_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x30')]);_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x30')]=![];RpcVoiceAgentReport[_0xc7f1('0x31')]({'acwtime':_0xa11140},_0x6665e2[_0xc7f1('0x7')][_0x48b36d][_0xc7f1('0x2d')],_0x48b36d)[_0xc7f1('0x21')](function(_0x1e89e8){logger[_0xc7f1('0x23')]('[%s][UPDATE][ACWTIME:%s]',_0x119d63,_0xa11140,_0x1e89e8);})[_0xc7f1('0x32')](function(_0x2bfae9){logger[_0xc7f1('0x33')](_0xc7f1('0x34'),_0x119d63,_0x2bfae9);});delete _0x6665e2[_0xc7f1('0x7')][_0x48b36d];};}});}else{logger[_0xc7f1('0x23')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x119d63,_0x48b36d,_0x611a74);}});}})['catch'](function(_0x221991){logger[_0xc7f1('0x33')](_0xc7f1('0x35'),_0x119d63,_0x6665e2[_0xc7f1('0x6')][_0x611a74][_0xc7f1('0x28')],_0x48b36d,_0x611a74);})['finally'](function(){delete _0x6665e2[_0xc7f1('0x8')][_0x119d63];});}catch(_0x415963){logger[_0xc7f1('0x33')](_0xc7f1('0x36'),_0x415963[_0xc7f1('0x37')]);}};Acw[_0xc7f1('0x18')][_0xc7f1('0x29')]=function(_0x136458){try{var _0x5e6d3a=this;if(_0x5e6d3a[_0xc7f1('0x7')][_0x136458]){_0x5e6d3a['timers'][_0x136458]['timer']=![];var _0x7c1ac9=_0x5e6d3a['timers'][_0x136458][_0xc7f1('0x2d')];var _0x237038=_0x5e6d3a[_0xc7f1('0x7')][_0x136458][_0xc7f1('0x2e')];var _0x436361=_0x5e6d3a['voiceQueues'][_0x237038][_0xc7f1('0x28')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x7c1ac9,_0x136458);RpcUser['saveUnpause'](this['agents'][_0x136458]);RpcVoiceAgentReport['update']({'acwtime':_0x436361,'agentacw':!![]},_0x7c1ac9,_0x136458)[_0xc7f1('0x21')](function(_0x1753b2){logger[_0xc7f1('0x23')](_0xc7f1('0x38'),_0x7c1ac9,_0x436361,_0x1753b2);})[_0xc7f1('0x32')](function(_0xb6cbe){logger[_0xc7f1('0x33')]('[%s][UPDATE][ERRORS:%s]',_0x7c1ac9,_0xb6cbe);});}else{logger[_0xc7f1('0x33')](_0xc7f1('0x39'),_0x136458);if(_0x5e6d3a[_0xc7f1('0x7')]){logger[_0xc7f1('0x23')](_0xc7f1('0x3a'),JSON[_0xc7f1('0x3b')](_0x5e6d3a[_0xc7f1('0x7')]));}}}catch(_0x293735){logger[_0xc7f1('0x33')]('[ACW][STOP]\x20%s',_0x293735['message']);}};Acw[_0xc7f1('0x18')][_0xc7f1('0xa')]=function(_0x5a5a7e){try{if(this[_0xc7f1('0x6')][_0x5a5a7e[_0xc7f1('0x2e')]]&&(this[_0xc7f1('0x6')][_0x5a5a7e['queue']]['acw']||this[_0xc7f1('0x6')][_0x5a5a7e[_0xc7f1('0x2e')]]['mandatoryDisposition'])){if(this[_0xc7f1('0x1f')][_0x5a5a7e['interface']]){this[_0xc7f1('0x8')][_0x5a5a7e[_0xc7f1('0x2d')]]={'queue':_0x5a5a7e[_0xc7f1('0x2e')],'interface':_0x5a5a7e[_0xc7f1('0x19')],'destlinkedid':_0x5a5a7e['destlinkedid']};}}}catch(_0x205e0f){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x205e0f[_0xc7f1('0x37')]);}};Acw[_0xc7f1('0x18')][_0xc7f1('0x14')]=function(_0x3be2f3){try{if(this['voiceQueues'][_0x3be2f3['queue']]&&(this[_0xc7f1('0x6')][_0x3be2f3[_0xc7f1('0x2e')]][_0xc7f1('0x3')]||this['voiceQueues'][_0x3be2f3[_0xc7f1('0x2e')]][_0xc7f1('0x1a')])){if(this['agents'][_0x3be2f3[_0xc7f1('0x19')]]){this[_0xc7f1('0x8')][_0x3be2f3[_0xc7f1('0x2d')]]={'queue':_0x3be2f3[_0xc7f1('0x2e')],'interface':_0x3be2f3[_0xc7f1('0x19')]};}}}catch(_0xc7d6e5){logger[_0xc7f1('0x33')]('[ACW][syncAgentConnectPreview]\x20%s',_0xc7d6e5['message']);}};Acw[_0xc7f1('0x18')]['syncHangupRequest']=function(_0x51ff6f){try{if(this[_0xc7f1('0x8')][_0x51ff6f[_0xc7f1('0x2d')]]&&_[_0xc7f1('0x3c')](this['channels'][_0x51ff6f['uniqueid']][_0xc7f1('0x25')])){logger[_0xc7f1('0x23')](_0xc7f1('0x3d'),_0x51ff6f[_0xc7f1('0x2d')]);this[_0xc7f1('0x3e')](_0x51ff6f[_0xc7f1('0x2d')]);}else if(this[_0xc7f1('0x8')][_0x51ff6f[_0xc7f1('0x3f')]]&&_[_0xc7f1('0x3c')](this[_0xc7f1('0x8')][_0x51ff6f[_0xc7f1('0x3f')]][_0xc7f1('0x25')])){logger[_0xc7f1('0x23')](_0xc7f1('0x40'),_0x51ff6f['linkedid']);this['startAcw'](_0x51ff6f[_0xc7f1('0x3f')]);}}catch(_0x34b50c){logger['error'](_0xc7f1('0x41'),_0x34b50c[_0xc7f1('0x37')]);}};Acw[_0xc7f1('0x18')][_0xc7f1('0x42')]=function(_0x4d3102){try{if(this[_0xc7f1('0x8')][_0x4d3102[_0xc7f1('0x2d')]]&&this['channels'][_0x4d3102['uniqueid']][_0xc7f1('0x25')]){logger[_0xc7f1('0x23')](_0xc7f1('0x43'),_0x4d3102[_0xc7f1('0x2d')]);this[_0xc7f1('0x3e')](_0x4d3102[_0xc7f1('0x2d')]);}else if(this[_0xc7f1('0x8')][_0x4d3102[_0xc7f1('0x3f')]]&&this[_0xc7f1('0x8')][_0x4d3102[_0xc7f1('0x3f')]][_0xc7f1('0x25')]){logger[_0xc7f1('0x23')](_0xc7f1('0x44'),_0x4d3102[_0xc7f1('0x3f')]);this[_0xc7f1('0x3e')](_0x4d3102[_0xc7f1('0x3f')]);}}catch(_0x1936ae){logger[_0xc7f1('0x33')](_0xc7f1('0x45'),_0x1936ae[_0xc7f1('0x37')]);}};Acw['prototype']['syncAttendedTransfer']=function(_0x565b4d){try{if(!_['isNil'](this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x46')]])){this['startAcw'](_0x565b4d['transfereeuniqueid']);if(this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x47')]]){this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x47')]]['attended']=!![];this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x48')]]=this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x47')]];delete this[_0xc7f1('0x8')][_0x565b4d['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x48')]])){this[_0xc7f1('0x3e')](_0x565b4d[_0xc7f1('0x48')]);if(this['channels'][_0x565b4d['origtransfereruniqueid']]){this[_0xc7f1('0x8')][_0x565b4d['origtransfereruniqueid']][_0xc7f1('0x25')]=!![];this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x46')]]=this['channels'][_0x565b4d['origtransfereruniqueid']];delete this[_0xc7f1('0x8')][_0x565b4d[_0xc7f1('0x49')]];}}}catch(_0x123d05){logger['error'](_0xc7f1('0x4a'),_0x123d05[_0xc7f1('0x37')]);}};Acw[_0xc7f1('0x18')][_0xc7f1('0x4b')]=function(_0x2379a8){try{if(this[_0xc7f1('0x8')][_0x2379a8[_0xc7f1('0x4c')]]){logger[_0xc7f1('0x23')](_0xc7f1('0x4d'),JSON['stringify'](_0x2379a8[_0xc7f1('0x4c')]));this['startAcw'](_0x2379a8[_0xc7f1('0x4c')]);}else if(this[_0xc7f1('0x8')][_0x2379a8[_0xc7f1('0x4e')]]){logger[_0xc7f1('0x23')](_0xc7f1('0x4f'),JSON[_0xc7f1('0x3b')](_0x2379a8[_0xc7f1('0x4e')]));this[_0xc7f1('0x3e')](_0x2379a8[_0xc7f1('0x4e')]);}}catch(_0x24f3d2){logger[_0xc7f1('0x33')](_0xc7f1('0x50'),_0x24f3d2['message']);}};Acw['prototype'][_0xc7f1('0xf')]=function(_0x50c503){try{if(this[_0xc7f1('0x6')][_0x50c503[_0xc7f1('0x2e')]]&&this[_0xc7f1('0x6')][_0x50c503[_0xc7f1('0x2e')]][_0xc7f1('0x51')]===_0xc7f1('0x52')){if(this[_0xc7f1('0x1f')][_0x50c503[_0xc7f1('0x19')]]){logger['info'](_0xc7f1('0x53'),_0x50c503[_0xc7f1('0x2d')],_0x50c503['interface'],_0x50c503[_0xc7f1('0x2e')]);return RpcUser[_0xc7f1('0x27')](this['agents'][_0x50c503[_0xc7f1('0x19')]],_0xc7f1('0x54'),_0x50c503[_0xc7f1('0x2d')]);}}}catch(_0x54717b){logger[_0xc7f1('0x33')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x54717b[_0xc7f1('0x37')]);}};module[_0xc7f1('0x55')]=Acw;