Built motion from commit 14588770.|2.5.38
[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 _0xeb97=['stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','syncAgentConnect','uniqueid','[ACW][syncAgentConnect]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','agents','timers','agentconnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','startAcw','channels','interface','voiceQueues','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','finally','[ACW][START]\x20%s','message','prototype'];(function(_0x36f47c,_0x38ef4d){var _0x296c55=function(_0x403eec){while(--_0x403eec){_0x36f47c['push'](_0x36f47c['shift']());}};_0x296c55(++_0x38ef4d);}(_0xeb97,0x182));var _0x7eb9=function(_0x27e4df,_0x1202a7){_0x27e4df=_0x27e4df-0x0;var _0x20696c=_0xeb97[_0x27e4df];return _0x20696c;};'use strict';var util=require('util');var _=require(_0x7eb9('0x0'));var moment=require(_0x7eb9('0x1'));var ami=require(_0x7eb9('0x2'));var logger=require(_0x7eb9('0x3'))(_0x7eb9('0x4'));var RpcUser=require(_0x7eb9('0x5'));var RpcVoiceAgentReport=require(_0x7eb9('0x6'));function Acw(_0x17b079){this['voiceQueues']=_0x17b079['voiceQueues'];this['agents']=_0x17b079[_0x7eb9('0x7')];this[_0x7eb9('0x8')]=_0x17b079['timers'];this['channels']={};ami['on'](_0x7eb9('0x9'),this['syncAgentConnect'][_0x7eb9('0xa')](this));ami['on'](_0x7eb9('0xb'),this[_0x7eb9('0xc')][_0x7eb9('0xa')](this));ami['on'](_0x7eb9('0xd'),this[_0x7eb9('0xe')][_0x7eb9('0xa')](this));ami['on'](_0x7eb9('0xf'),this[_0x7eb9('0x10')][_0x7eb9('0xa')](this));ami['on'](_0x7eb9('0x11'),this['syncAttendedTransfer'][_0x7eb9('0xa')](this));ami['on'](_0x7eb9('0x12'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x7eb9('0x13'),this[_0x7eb9('0x14')][_0x7eb9('0xa')](this));}function getDiff(_0xc64a18){var _0x1fa670=moment()[_0x7eb9('0x15')](0x0);var _0x4d19e6=moment(_0xc64a18)['milliseconds'](0x0);return _0x1fa670['diff'](_0x4d19e6,_0x7eb9('0x16'));}Acw['prototype'][_0x7eb9('0x17')]=function(_0x3b1372){try{var _0x3b1c27=this;var _0x36f3da=this[_0x7eb9('0x18')][_0x3b1372][_0x7eb9('0x19')];var _0x15b4d5=this[_0x7eb9('0x18')][_0x3b1372]['queue'];var _0x314ac9=this[_0x7eb9('0x1a')][_0x15b4d5];var _0xd3e9c9=![];var _0x18e5c2=_0x7eb9('0x1b');if(_0x314ac9[_0x7eb9('0x1c')]){if(_0x314ac9[_0x7eb9('0x1d')][_0x7eb9('0x1e')]){_0xd3e9c9=!![];_0x18e5c2=_0x314ac9['mandatoryDispositionPause'][_0x7eb9('0x1e')];}}ami[_0x7eb9('0x1f')]({'action':_0x7eb9('0x20'),'interface':_0x36f3da,'paused':!![],'reason':_0x18e5c2})[_0x7eb9('0x21')](function(_0x12aabf){if(_0x3b1c27['agents'][_0x36f3da]){return RpcUser[_0x7eb9('0x22')](_0x3b1c27['agents'][_0x36f3da]['id'])[_0x7eb9('0x21')](function(_0x3188fc){if(_0x3188fc&&!_0x3188fc[_0x7eb9('0x23')]){logger[_0x7eb9('0x24')](_0x7eb9('0x25'),_0x3b1372,_0x36f3da,_0x15b4d5);var _0x191603=_0x3b1c27['channels'][_0x3b1372][_0x7eb9('0x26')]&&_0x3b1c27[_0x7eb9('0x18')][_0x3b1372][_0x7eb9('0x27')]?_0x3b1c27['channels'][_0x3b1372]['destlinkedid']:_0x3b1372;return RpcUser[_0x7eb9('0x28')](_0x3b1c27['agents'][_0x36f3da],_0x18e5c2,_0x191603)[_0x7eb9('0x21')](function(_0x2ddd9c){if(!_0xd3e9c9){_0x3b1c27['timers'][_0x36f3da]={};logger[_0x7eb9('0x24')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3b1372,_0x3b1c27[_0x7eb9('0x1a')][_0x15b4d5]['acwTimeout'],_0x36f3da,_0x15b4d5);_0x3b1c27[_0x7eb9('0x8')][_0x36f3da]['timer']=setTimeout(_0x3b1c27['stopAcw']['bind'](_0x3b1c27,_0x36f3da),_0x3b1c27[_0x7eb9('0x1a')][_0x15b4d5]['acwTimeout']*0x3e8);_0x3b1c27[_0x7eb9('0x8')][_0x36f3da][_0x7eb9('0x29')]=moment()[_0x7eb9('0x2a')](_0x7eb9('0x2b'));_0x3b1c27[_0x7eb9('0x8')][_0x36f3da]['uniqueid']=_0x3b1372;_0x3b1c27['timers'][_0x36f3da][_0x7eb9('0x2c')]=_0x15b4d5;_0x3b1c27['timers'][_0x36f3da][_0x7eb9('0x2d')]=function(){var _0x89f968=getDiff(_0x3b1c27[_0x7eb9('0x8')][_0x36f3da][_0x7eb9('0x29')]);clearTimeout(_0x3b1c27[_0x7eb9('0x8')][_0x36f3da]['timer']);_0x3b1c27['timers'][_0x36f3da][_0x7eb9('0x2e')]=![];RpcVoiceAgentReport[_0x7eb9('0x2f')]({'acwtime':_0x89f968},_0x3b1c27[_0x7eb9('0x8')][_0x36f3da]['uniqueid'],_0x36f3da)[_0x7eb9('0x21')](function(_0x348ef7){logger[_0x7eb9('0x24')](_0x7eb9('0x30'),_0x3b1372,_0x89f968,_0x348ef7);})[_0x7eb9('0x31')](function(_0x5edcb4){logger[_0x7eb9('0x32')](_0x7eb9('0x33'),_0x3b1372,_0x5edcb4);});delete _0x3b1c27['timers'][_0x36f3da];};}});}else{logger['info'](_0x7eb9('0x34'),_0x3b1372,_0x36f3da,_0x15b4d5);}});}})[_0x7eb9('0x31')](function(_0xd8e1fd){logger[_0x7eb9('0x32')](_0x7eb9('0x35'),_0x3b1372,_0x3b1c27['voiceQueues'][_0x15b4d5][_0x7eb9('0x36')],_0x36f3da,_0x15b4d5);})[_0x7eb9('0x37')](function(){delete _0x3b1c27[_0x7eb9('0x18')][_0x3b1372];});}catch(_0x5e3d27){logger['error'](_0x7eb9('0x38'),_0x5e3d27[_0x7eb9('0x39')]);}};Acw[_0x7eb9('0x3a')][_0x7eb9('0x3b')]=function(_0x128205){try{var _0x20eb05=this;if(_0x20eb05[_0x7eb9('0x8')][_0x128205]){_0x20eb05[_0x7eb9('0x8')][_0x128205][_0x7eb9('0x2e')]=![];var _0x58a171=_0x20eb05[_0x7eb9('0x8')][_0x128205]['uniqueid'];var _0x440b4b=_0x20eb05['timers'][_0x128205]['queue'];var _0x51d7e8=_0x20eb05['voiceQueues'][_0x440b4b][_0x7eb9('0x36')];logger[_0x7eb9('0x24')](_0x7eb9('0x3c'),_0x58a171,_0x128205);RpcUser[_0x7eb9('0x3d')](this[_0x7eb9('0x7')][_0x128205]);RpcVoiceAgentReport[_0x7eb9('0x2f')]({'acwtime':_0x51d7e8,'agentacw':!![]},_0x58a171,_0x128205)[_0x7eb9('0x21')](function(_0xffc402){logger[_0x7eb9('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x58a171,_0x51d7e8,_0xffc402);})['catch'](function(_0x280f96){logger[_0x7eb9('0x32')](_0x7eb9('0x33'),_0x58a171,_0x280f96);});}else{logger[_0x7eb9('0x32')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x128205);if(_0x20eb05[_0x7eb9('0x8')]){logger['info'](_0x7eb9('0x3e'),JSON['stringify'](_0x20eb05[_0x7eb9('0x8')]));}}}catch(_0x3f96a4){logger['error']('[ACW][STOP]\x20%s',_0x3f96a4['message']);}};Acw[_0x7eb9('0x3a')][_0x7eb9('0x3f')]=function(_0x4ed6d){try{if(this[_0x7eb9('0x1a')][_0x4ed6d[_0x7eb9('0x2c')]]&&(this[_0x7eb9('0x1a')][_0x4ed6d['queue']][_0x7eb9('0x4')]||this[_0x7eb9('0x1a')][_0x4ed6d[_0x7eb9('0x2c')]][_0x7eb9('0x1c')])){if(this[_0x7eb9('0x7')][_0x4ed6d[_0x7eb9('0x19')]]){this[_0x7eb9('0x18')][_0x4ed6d[_0x7eb9('0x40')]]={'queue':_0x4ed6d[_0x7eb9('0x2c')],'interface':_0x4ed6d[_0x7eb9('0x19')],'destlinkedid':_0x4ed6d[_0x7eb9('0x27')]};}}}catch(_0x39d018){logger[_0x7eb9('0x32')](_0x7eb9('0x41'),_0x39d018[_0x7eb9('0x39')]);}};Acw[_0x7eb9('0x3a')][_0x7eb9('0x14')]=function(_0x5a498e){try{if(this[_0x7eb9('0x1a')][_0x5a498e[_0x7eb9('0x2c')]]&&(this[_0x7eb9('0x1a')][_0x5a498e[_0x7eb9('0x2c')]][_0x7eb9('0x4')]||this[_0x7eb9('0x1a')][_0x5a498e[_0x7eb9('0x2c')]][_0x7eb9('0x1c')])){if(this[_0x7eb9('0x7')][_0x5a498e['interface']]){this[_0x7eb9('0x18')][_0x5a498e[_0x7eb9('0x40')]]={'queue':_0x5a498e[_0x7eb9('0x2c')],'interface':_0x5a498e[_0x7eb9('0x19')]};}}}catch(_0x182d73){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x182d73['message']);}};Acw['prototype'][_0x7eb9('0xc')]=function(_0x532d42){try{if(this['channels'][_0x532d42[_0x7eb9('0x40')]]&&_[_0x7eb9('0x42')](this['channels'][_0x532d42[_0x7eb9('0x40')]][_0x7eb9('0x26')])){logger[_0x7eb9('0x24')]('[%s][HANGUP:UNIQUEID]',_0x532d42['uniqueid']);this[_0x7eb9('0x17')](_0x532d42['uniqueid']);}else if(this['channels'][_0x532d42[_0x7eb9('0x43')]]&&_[_0x7eb9('0x42')](this['channels'][_0x532d42['linkedid']][_0x7eb9('0x26')])){logger[_0x7eb9('0x24')](_0x7eb9('0x44'),_0x532d42[_0x7eb9('0x43')]);this[_0x7eb9('0x17')](_0x532d42[_0x7eb9('0x43')]);}}catch(_0x1d8baa){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x1d8baa[_0x7eb9('0x39')]);}};Acw[_0x7eb9('0x3a')][_0x7eb9('0xe')]=function(_0x3de2a8){try{if(this[_0x7eb9('0x18')][_0x3de2a8[_0x7eb9('0x40')]]&&this[_0x7eb9('0x18')][_0x3de2a8[_0x7eb9('0x40')]][_0x7eb9('0x26')]){logger['info'](_0x7eb9('0x45'),_0x3de2a8['uniqueid']);this[_0x7eb9('0x17')](_0x3de2a8[_0x7eb9('0x40')]);}else if(this[_0x7eb9('0x18')][_0x3de2a8[_0x7eb9('0x43')]]&&this[_0x7eb9('0x18')][_0x3de2a8['linkedid']]['attended']){logger[_0x7eb9('0x24')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x3de2a8[_0x7eb9('0x43')]);this[_0x7eb9('0x17')](_0x3de2a8[_0x7eb9('0x43')]);}}catch(_0x5a5973){logger['error'](_0x7eb9('0x46'),_0x5a5973[_0x7eb9('0x39')]);}};Acw['prototype'][_0x7eb9('0x47')]=function(_0xde7f64){try{if(!_[_0x7eb9('0x48')](this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x49')]])){this[_0x7eb9('0x17')](_0xde7f64['transfereeuniqueid']);if(this[_0x7eb9('0x18')][_0xde7f64['secondtransfereruniqueid']]){this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x4a')]][_0x7eb9('0x26')]=!![];this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x4b')]]=this['channels'][_0xde7f64[_0x7eb9('0x4a')]];delete this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x4a')]];}}else if(!_[_0x7eb9('0x48')](this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x4b')]])){this[_0x7eb9('0x17')](_0xde7f64['transfertargetuniqueid']);if(this['channels'][_0xde7f64[_0x7eb9('0x4c')]]){this['channels'][_0xde7f64[_0x7eb9('0x4c')]][_0x7eb9('0x26')]=!![];this['channels'][_0xde7f64[_0x7eb9('0x49')]]=this['channels'][_0xde7f64[_0x7eb9('0x4c')]];delete this[_0x7eb9('0x18')][_0xde7f64[_0x7eb9('0x4c')]];}}}catch(_0x3cc1eb){logger[_0x7eb9('0x32')](_0x7eb9('0x4d'),_0x3cc1eb[_0x7eb9('0x39')]);}};Acw[_0x7eb9('0x3a')]['syncBlindTransfer']=function(_0x4c007b){try{if(this['channels'][_0x4c007b[_0x7eb9('0x4e')]]){logger['info'](_0x7eb9('0x4f'),JSON[_0x7eb9('0x50')](_0x4c007b[_0x7eb9('0x4e')]));this['startAcw'](_0x4c007b[_0x7eb9('0x4e')]);}else if(this[_0x7eb9('0x18')][_0x4c007b[_0x7eb9('0x51')]]){logger[_0x7eb9('0x24')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x7eb9('0x50')](_0x4c007b[_0x7eb9('0x51')]));this[_0x7eb9('0x17')](_0x4c007b[_0x7eb9('0x51')]);}}catch(_0x496bf4){logger['error'](_0x7eb9('0x52'),_0x496bf4['message']);}};Acw[_0x7eb9('0x3a')]['syncAgentRingNoAnswer']=function(_0x46903d){try{if(this['voiceQueues'][_0x46903d[_0x7eb9('0x2c')]]&&this['voiceQueues'][_0x46903d[_0x7eb9('0x2c')]][_0x7eb9('0x53')]===_0x7eb9('0x54')){if(this['agents'][_0x46903d[_0x7eb9('0x19')]]){logger[_0x7eb9('0x24')](_0x7eb9('0x55'),_0x46903d[_0x7eb9('0x40')],_0x46903d[_0x7eb9('0x19')],_0x46903d['queue']);return RpcUser[_0x7eb9('0x28')](this[_0x7eb9('0x7')][_0x46903d['interface']],_0x7eb9('0x56'),_0x46903d['uniqueid']);}}}catch(_0x7d5b29){logger[_0x7eb9('0x32')](_0x7eb9('0x57'),_0x7d5b29[_0x7eb9('0x39')]);}};module[_0x7eb9('0x58')]=Acw;