Built motion from commit 616d3211.|2.6.4
[motion2.git] / server / services / routing / server / applications / strategy / rrmemory.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 _0xfa9f=['[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push','handleRun','bind','module','timeout','handleTimeout','drained','handleDrained','prototype','agentId','channel','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','queue','debug','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','busy','busyQueue','name','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s'];(function(_0x1da1ed,_0x43d68a){var _0x2e61a7=function(_0x10b192){while(--_0x10b192){_0x1da1ed['push'](_0x1da1ed['shift']());}};_0x2e61a7(++_0x43d68a);}(_0xfa9f,0x93));var _0xffa9=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0xfa9f[_0x172747];return _0x509692;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0xffa9('0x0'));var util=require(_0xffa9('0x1'));var logger=require(_0xffa9('0x2'))(_0xffa9('0x3'));var RRMemory=function(_0x3e69f8,_0x492e53,_0x200b31,_0x5bed37){this[_0xffa9('0x4')]=uuid['v4']();this[_0xffa9('0x5')]=_0x3e69f8;this['queue']=_0x492e53;this[_0xffa9('0x6')]=_0x200b31;this['routing']=_0x5bed37;this['intervals']={};this[_0xffa9('0x5')][_0xffa9('0x7')](this[_0xffa9('0x8')][_0xffa9('0x9')](this),this['handleTimeout'][_0xffa9('0x9')](this),this[_0xffa9('0xa')]);this[_0xffa9('0x5')]['on'](_0xffa9('0xb'),this[_0xffa9('0xc')][_0xffa9('0x9')](this));this[_0xffa9('0x5')]['on'](_0xffa9('0xd'),this[_0xffa9('0xe')][_0xffa9('0x9')](this));};RRMemory[_0xffa9('0xf')]['push']=function(){this[_0xffa9('0x5')][_0xffa9('0x7')](this[_0xffa9('0x8')][_0xffa9('0x9')](this),this[_0xffa9('0xc')][_0xffa9('0x9')](this));};RRMemory[_0xffa9('0xf')][_0xffa9('0xe')]=function(){this[_0xffa9('0xc')](!![]);};RRMemory[_0xffa9('0xf')]['handleCheckReject']=function(_0x42205d){if(util['isAgentAvailable'](this[_0xffa9('0x5')]['id'],this[_0xffa9('0x6')]['agents'][this[_0xffa9('0x10')]],this[_0xffa9('0x5')][_0xffa9('0x11')],!![])){logger['debug'](_0xffa9('0x12'),this[_0xffa9('0x5')]['id'],this[_0xffa9('0x10')]);clearInterval(this[_0xffa9('0x13')][this['agentId']]);_0x42205d[_0xffa9('0x14')]();setTimeout(this['push'][_0xffa9('0x9')](this),0x3e8);}};RRMemory[_0xffa9('0xf')][_0xffa9('0x8')]=function(_0x389e70){this[_0xffa9('0x10')]=rr(this[_0xffa9('0x15')]['mapAgentsId']);logger[_0xffa9('0x16')](_0xffa9('0x17'),this[_0xffa9('0x5')]['id'],this[_0xffa9('0x10')]);if(_[_0xffa9('0x18')](this[_0xffa9('0x6')][_0xffa9('0x19')][this[_0xffa9('0x10')]])){logger[_0xffa9('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xffa9('0x10')]);_0x389e70[_0xffa9('0x14')]();setTimeout(this[_0xffa9('0x7')]['bind'](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0xffa9('0x5')]['id'],this[_0xffa9('0x6')][_0xffa9('0x19')][this['agentId']],this['squeue'][_0xffa9('0x11')],!![])){this['realtime'][_0xffa9('0x19')][this[_0xffa9('0x10')]][_0xffa9('0x1a')]=!![];this[_0xffa9('0x6')][_0xffa9('0x19')][this[_0xffa9('0x10')]][_0xffa9('0x1b')]=this['queue'][_0xffa9('0x1c')];util[_0xffa9('0x1d')](this[_0xffa9('0x4')],this[_0xffa9('0x5')]['id'],this[_0xffa9('0x6')][_0xffa9('0x19')][this['agentId']],this['queue'],this[_0xffa9('0x3')]);util[_0xffa9('0x1e')](this[_0xffa9('0x5')]['id'],this[_0xffa9('0x6')][_0xffa9('0x19')][this[_0xffa9('0x10')]],_0xffa9('0x1f'));this[_0xffa9('0x13')][this[_0xffa9('0x10')]]=setInterval(this['handleCheckReject'][_0xffa9('0x9')](this,_0x389e70),0x3e8);}else{logger[_0xffa9('0x16')](_0xffa9('0x20'),this['squeue']['id'],this[_0xffa9('0x10')]);_0x389e70[_0xffa9('0x14')]();setTimeout(this[_0xffa9('0x7')]['bind'](this),0x3e8);}}};RRMemory[_0xffa9('0xf')][_0xffa9('0xc')]=function(_0x41819d){logger['debug'](_0xffa9('0x21'),this['squeue']['id'],this['agentId']);if(_[_0xffa9('0x18')](this['realtime'][_0xffa9('0x19')][this[_0xffa9('0x10')]])){logger[_0xffa9('0x16')](_0xffa9('0x22'),this[_0xffa9('0x5')]['id'],this['agentId']);}else{clearInterval(this[_0xffa9('0x13')][this['agentId']]);util['hideNotification'](this[_0xffa9('0x4')],this['squeue']['id'],this[_0xffa9('0x6')][_0xffa9('0x19')][this['agentId']],this['queue'],this[_0xffa9('0x3')]);util['writeLog'](this[_0xffa9('0x5')]['id'],this[_0xffa9('0x6')]['agents'][this['agentId']],'TIMEOUT');this['realtime'][_0xffa9('0x19')][this[_0xffa9('0x10')]][_0xffa9('0x1a')]=![];this['realtime'][_0xffa9('0x19')][this[_0xffa9('0x10')]][_0xffa9('0x1b')]=undefined;}if(!_0x41819d){setTimeout(this[_0xffa9('0x7')][_0xffa9('0x9')](this),0x3e8);}};function rrmemory(_0x5624fa,_0x50dc30,_0x28fe9b,_0x2ef6cc){return new RRMemory(_0x5624fa,_0x50dc30,_0x28fe9b,_0x2ef6cc);}module[_0xffa9('0x23')]=rrmemory;