Built motion from commit (unavailable).|2.4.4
[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 _0x4c4e=['hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','acwTimeout','YYYY-MM-DD\x20HH:mm:ss','lastPauseAt','timer','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','uniqueid','[TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','message','destlinkedid','[ACW][syncAgentConnect]\x20%s','acw','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','exports','util','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest'];(function(_0x584343,_0x2c787e){var _0x3b4554=function(_0x2af1f5){while(--_0x2af1f5){_0x584343['push'](_0x584343['shift']());}};_0x3b4554(++_0x2c787e);}(_0x4c4e,0x152));var _0xe4c4=function(_0x1013b6,_0x4502af){_0x1013b6=_0x1013b6-0x0;var _0x566777=_0x4c4e[_0x1013b6];return _0x566777;};'use strict';var util=require(_0xe4c4('0x0'));var _=require('lodash');var moment=require(_0xe4c4('0x1'));var ami=require(_0xe4c4('0x2'));var logger=require(_0xe4c4('0x3'))('acw');var RpcUser=require(_0xe4c4('0x4'));var RpcVoiceAgentReport=require(_0xe4c4('0x5'));function Acw(_0x1a4483){this['voiceQueues']=_0x1a4483[_0xe4c4('0x6')];this['agents']=_0x1a4483[_0xe4c4('0x7')];this[_0xe4c4('0x8')]=_0x1a4483[_0xe4c4('0x8')];this[_0xe4c4('0x9')]={};ami['on'](_0xe4c4('0xa'),this[_0xe4c4('0xb')][_0xe4c4('0xc')](this));ami['on'](_0xe4c4('0xd'),this['syncHangupRequest']['bind'](this));ami['on'](_0xe4c4('0xe'),this[_0xe4c4('0xf')][_0xe4c4('0xc')](this));ami['on'](_0xe4c4('0x10'),this[_0xe4c4('0x11')][_0xe4c4('0xc')](this));ami['on']('attendedtransfer',this[_0xe4c4('0x12')][_0xe4c4('0xc')](this));ami['on'](_0xe4c4('0x13'),this[_0xe4c4('0x14')]['bind'](this));ami['on'](_0xe4c4('0x15'),this[_0xe4c4('0x16')]['bind'](this));}function getDiff(_0xe485ca){var _0x1a44e5=moment()['milliseconds'](0x0);var _0x42ce9e=moment(_0xe485ca)[_0xe4c4('0x17')](0x0);return _0x1a44e5['diff'](_0x42ce9e,_0xe4c4('0x18'));}Acw[_0xe4c4('0x19')][_0xe4c4('0x1a')]=function(_0x40a36e){try{var _0x19e59b=this;var _0x882be2=this[_0xe4c4('0x9')][_0x40a36e][_0xe4c4('0x1b')];var _0x34ecbe=this[_0xe4c4('0x9')][_0x40a36e][_0xe4c4('0x1c')];var _0x42242c=this[_0xe4c4('0x6')][_0x34ecbe];var _0x43a9ce=![];var _0x376585='ACW';if(_0x42242c[_0xe4c4('0x1d')]){if(_0x42242c[_0xe4c4('0x1e')][_0xe4c4('0x1f')]){_0x43a9ce=!![];_0x376585=_0x42242c[_0xe4c4('0x1e')]['name'];}}ami[_0xe4c4('0x20')]({'action':_0xe4c4('0x21'),'interface':_0x882be2,'paused':!![],'reason':_0x376585})[_0xe4c4('0x22')](function(_0x30d56a){if(_0x19e59b[_0xe4c4('0x7')][_0x882be2]){return RpcUser[_0xe4c4('0x23')](_0x19e59b[_0xe4c4('0x7')][_0x882be2]['id'])[_0xe4c4('0x22')](function(_0x21bbb1){if(_0x21bbb1&&!_0x21bbb1[_0xe4c4('0x24')]){logger[_0xe4c4('0x25')](_0xe4c4('0x26'),_0x40a36e,_0x882be2,_0x34ecbe);var _0x138ead=_0x19e59b[_0xe4c4('0x9')][_0x40a36e][_0xe4c4('0x27')]&&_0x19e59b['channels'][_0x40a36e]['destlinkedid']?_0x19e59b[_0xe4c4('0x9')][_0x40a36e]['destlinkedid']:_0x40a36e;return RpcUser[_0xe4c4('0x28')](_0x19e59b['agents'][_0x882be2],_0x376585,_0x138ead)[_0xe4c4('0x22')](function(_0x5efc4c){if(!_0x43a9ce){_0x19e59b[_0xe4c4('0x8')][_0x882be2]={};logger['info'](_0xe4c4('0x29'),_0x40a36e,_0x19e59b['voiceQueues'][_0x34ecbe]['acwTimeout'],_0x882be2,_0x34ecbe);_0x19e59b['timers'][_0x882be2]['timer']=setTimeout(_0x19e59b[_0xe4c4('0x2a')]['bind'](_0x19e59b,_0x882be2),_0x19e59b['voiceQueues'][_0x34ecbe][_0xe4c4('0x2b')]*0x3e8);_0x19e59b[_0xe4c4('0x8')][_0x882be2]['lastPauseAt']=moment()['format'](_0xe4c4('0x2c'));_0x19e59b[_0xe4c4('0x8')][_0x882be2]['uniqueid']=_0x40a36e;_0x19e59b[_0xe4c4('0x8')][_0x882be2][_0xe4c4('0x1c')]=_0x34ecbe;_0x19e59b[_0xe4c4('0x8')][_0x882be2]['updateAcw']=function(){var _0x5d49fd=getDiff(_0x19e59b[_0xe4c4('0x8')][_0x882be2][_0xe4c4('0x2d')]);clearTimeout(_0x19e59b[_0xe4c4('0x8')][_0x882be2][_0xe4c4('0x2e')]);_0x19e59b['timers'][_0x882be2]['timer']=![];RpcVoiceAgentReport[_0xe4c4('0x2f')]({'acwtime':_0x5d49fd},_0x19e59b[_0xe4c4('0x8')][_0x882be2]['uniqueid'],_0x882be2)[_0xe4c4('0x22')](function(_0x1ad3e6){logger[_0xe4c4('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x40a36e,_0x5d49fd,_0x1ad3e6);})[_0xe4c4('0x30')](function(_0x5976bc){logger[_0xe4c4('0x31')](_0xe4c4('0x32'),_0x40a36e,_0x5976bc);});delete _0x19e59b[_0xe4c4('0x8')][_0x882be2];};}});}else{logger[_0xe4c4('0x25')](_0xe4c4('0x33'),_0x40a36e,_0x882be2,_0x34ecbe);}});}})[_0xe4c4('0x30')](function(_0xb801c8){logger[_0xe4c4('0x31')](_0xe4c4('0x29'),_0x40a36e,_0x19e59b[_0xe4c4('0x6')][_0x34ecbe][_0xe4c4('0x2b')],_0x882be2,_0x34ecbe);})[_0xe4c4('0x34')](function(){delete _0x19e59b['channels'][_0x40a36e];});}catch(_0x21fce3){logger[_0xe4c4('0x31')](_0xe4c4('0x35'),_0x21fce3['message']);}};Acw[_0xe4c4('0x19')][_0xe4c4('0x2a')]=function(_0x38644c){try{var _0x53eb5b=this;if(_0x53eb5b[_0xe4c4('0x8')][_0x38644c]){_0x53eb5b[_0xe4c4('0x8')][_0x38644c][_0xe4c4('0x2e')]=![];var _0x1de955=_0x53eb5b[_0xe4c4('0x8')][_0x38644c][_0xe4c4('0x36')];var _0x2f8a21=_0x53eb5b[_0xe4c4('0x8')][_0x38644c][_0xe4c4('0x1c')];var _0x8b5bf3=_0x53eb5b['voiceQueues'][_0x2f8a21][_0xe4c4('0x2b')];logger[_0xe4c4('0x25')](_0xe4c4('0x37'),_0x38644c);RpcUser[_0xe4c4('0x38')](this['agents'][_0x38644c]);RpcVoiceAgentReport[_0xe4c4('0x2f')]({'acwtime':_0x8b5bf3,'agentacw':!![]},_0x1de955,_0x38644c)[_0xe4c4('0x22')](function(_0x4e6bd9){logger[_0xe4c4('0x25')](_0xe4c4('0x39'),_0x1de955,_0x8b5bf3,_0x4e6bd9);})['catch'](function(_0x433f0c){logger[_0xe4c4('0x31')](_0xe4c4('0x32'),_0x1de955,_0x433f0c);});}else{logger[_0xe4c4('0x31')](_0xe4c4('0x3a'),_0x38644c);if(_0x53eb5b[_0xe4c4('0x8')]){logger[_0xe4c4('0x25')](_0xe4c4('0x3b'),JSON[_0xe4c4('0x3c')](_0x53eb5b[_0xe4c4('0x8')]));}}}catch(_0x221a50){logger[_0xe4c4('0x31')]('[ACW][STOP]\x20%s',_0x221a50[_0xe4c4('0x3d')]);}};Acw[_0xe4c4('0x19')][_0xe4c4('0xb')]=function(_0x2e4c44){try{if(this[_0xe4c4('0x6')][_0x2e4c44[_0xe4c4('0x1c')]]&&(this['voiceQueues'][_0x2e4c44[_0xe4c4('0x1c')]]['acw']||this[_0xe4c4('0x6')][_0x2e4c44[_0xe4c4('0x1c')]][_0xe4c4('0x1d')])){if(this[_0xe4c4('0x7')][_0x2e4c44[_0xe4c4('0x1b')]]){this['channels'][_0x2e4c44['uniqueid']]={'queue':_0x2e4c44[_0xe4c4('0x1c')],'interface':_0x2e4c44[_0xe4c4('0x1b')],'destlinkedid':_0x2e4c44[_0xe4c4('0x3e')]};}}}catch(_0x5ab715){logger[_0xe4c4('0x31')](_0xe4c4('0x3f'),_0x5ab715[_0xe4c4('0x3d')]);}};Acw[_0xe4c4('0x19')]['syncAgentConnectPreview']=function(_0x18c9ad){try{if(this[_0xe4c4('0x6')][_0x18c9ad[_0xe4c4('0x1c')]]&&(this[_0xe4c4('0x6')][_0x18c9ad[_0xe4c4('0x1c')]][_0xe4c4('0x40')]||this[_0xe4c4('0x6')][_0x18c9ad[_0xe4c4('0x1c')]][_0xe4c4('0x1d')])){if(this['agents'][_0x18c9ad[_0xe4c4('0x1b')]]){this['channels'][_0x18c9ad[_0xe4c4('0x36')]]={'queue':_0x18c9ad[_0xe4c4('0x1c')],'interface':_0x18c9ad[_0xe4c4('0x1b')]};}}}catch(_0x15e595){logger[_0xe4c4('0x31')](_0xe4c4('0x41'),_0x15e595[_0xe4c4('0x3d')]);}};Acw[_0xe4c4('0x19')][_0xe4c4('0x42')]=function(_0x18fb82){try{if(this[_0xe4c4('0x9')][_0x18fb82[_0xe4c4('0x36')]]&&_[_0xe4c4('0x43')](this[_0xe4c4('0x9')][_0x18fb82['uniqueid']]['attended'])){logger[_0xe4c4('0x25')](_0xe4c4('0x44'),_0x18fb82['uniqueid']);this[_0xe4c4('0x1a')](_0x18fb82[_0xe4c4('0x36')]);}else if(this[_0xe4c4('0x9')][_0x18fb82[_0xe4c4('0x45')]]&&_[_0xe4c4('0x43')](this['channels'][_0x18fb82[_0xe4c4('0x45')]][_0xe4c4('0x27')])){logger['info'](_0xe4c4('0x46'),_0x18fb82[_0xe4c4('0x45')]);this['startAcw'](_0x18fb82[_0xe4c4('0x45')]);}}catch(_0x53699d){logger[_0xe4c4('0x31')](_0xe4c4('0x47'),_0x53699d[_0xe4c4('0x3d')]);}};Acw[_0xe4c4('0x19')][_0xe4c4('0xf')]=function(_0x525534){try{if(this[_0xe4c4('0x9')][_0x525534[_0xe4c4('0x36')]]&&this[_0xe4c4('0x9')][_0x525534[_0xe4c4('0x36')]][_0xe4c4('0x27')]){logger[_0xe4c4('0x25')](_0xe4c4('0x48'),_0x525534[_0xe4c4('0x36')]);this[_0xe4c4('0x1a')](_0x525534[_0xe4c4('0x36')]);}else if(this[_0xe4c4('0x9')][_0x525534[_0xe4c4('0x45')]]&&this[_0xe4c4('0x9')][_0x525534[_0xe4c4('0x45')]][_0xe4c4('0x27')]){logger[_0xe4c4('0x25')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x525534[_0xe4c4('0x45')]);this[_0xe4c4('0x1a')](_0x525534[_0xe4c4('0x45')]);}}catch(_0x4ad6ac){logger[_0xe4c4('0x31')](_0xe4c4('0x49'),_0x4ad6ac[_0xe4c4('0x3d')]);}};Acw['prototype'][_0xe4c4('0x12')]=function(_0x485c50){try{if(!_[_0xe4c4('0x4a')](this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4b')]])){this['startAcw'](_0x485c50['transfereeuniqueid']);if(this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4c')]]){this[_0xe4c4('0x9')][_0x485c50['secondtransfereruniqueid']][_0xe4c4('0x27')]=!![];this['channels'][_0x485c50['transfertargetuniqueid']]=this['channels'][_0x485c50['secondtransfereruniqueid']];delete this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4c')]];}}else if(!_[_0xe4c4('0x4a')](this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4d')]])){this[_0xe4c4('0x1a')](_0x485c50['transfertargetuniqueid']);if(this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4e')]]){this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4e')]][_0xe4c4('0x27')]=!![];this[_0xe4c4('0x9')][_0x485c50['transfereeuniqueid']]=this['channels'][_0x485c50[_0xe4c4('0x4e')]];delete this[_0xe4c4('0x9')][_0x485c50[_0xe4c4('0x4e')]];}}}catch(_0x3c8e44){logger[_0xe4c4('0x31')](_0xe4c4('0x4f'),_0x3c8e44[_0xe4c4('0x3d')]);}};Acw[_0xe4c4('0x19')][_0xe4c4('0x14')]=function(_0x5a0cbd){try{if(this['channels'][_0x5a0cbd[_0xe4c4('0x50')]]){logger['info'](_0xe4c4('0x51'),JSON[_0xe4c4('0x3c')](_0x5a0cbd[_0xe4c4('0x50')]));this['startAcw'](_0x5a0cbd[_0xe4c4('0x50')]);}else if(this['channels'][_0x5a0cbd[_0xe4c4('0x52')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xe4c4('0x3c')](_0x5a0cbd[_0xe4c4('0x52')]));this[_0xe4c4('0x1a')](_0x5a0cbd['transfererlinkedid']);}}catch(_0x57e38e){logger['error'](_0xe4c4('0x53'),_0x57e38e[_0xe4c4('0x3d')]);}};Acw['prototype'][_0xe4c4('0x11')]=function(_0x3850da){try{if(this[_0xe4c4('0x6')][_0x3850da['queue']]&&this['voiceQueues'][_0x3850da[_0xe4c4('0x1c')]][_0xe4c4('0x54')]===_0xe4c4('0x55')){if(this[_0xe4c4('0x7')][_0x3850da[_0xe4c4('0x1b')]]){logger[_0xe4c4('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x3850da[_0xe4c4('0x36')],_0x3850da[_0xe4c4('0x1b')],_0x3850da[_0xe4c4('0x1c')]);return RpcUser['savePause'](this[_0xe4c4('0x7')][_0x3850da[_0xe4c4('0x1b')]],_0xe4c4('0x56'),_0x3850da['uniqueid']);}}}catch(_0x5bb0cf){logger[_0xe4c4('0x31')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x5bb0cf['message']);}};module[_0xe4c4('0x57')]=Acw;