Built motion from commit 013e4bb4.|2.6.18
[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 _0x1e86=['intervals','mapAgentsId','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busy','busyQueue','name','saveWaitingNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','TIMEOUT','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','module','timeout','handleDrained','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','debug'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1e86,0x89));var _0x61e8=function(_0x5f0c32,_0x12129b){_0x5f0c32=_0x5f0c32-0x0;var _0x9153fd=_0x1e86[_0x5f0c32];return _0x9153fd;};'use strict';var rr=require('rr');var _=require(_0x61e8('0x0'));var uuid=require(_0x61e8('0x1'));var util=require(_0x61e8('0x2'));var logger=require(_0x61e8('0x3'))(_0x61e8('0x4'));var RRMemory=function(_0x521ab1,_0x4bf8f4,_0x5142b9,_0x19f3a4){this[_0x61e8('0x5')]=uuid['v4']();this[_0x61e8('0x6')]=_0x521ab1;this[_0x61e8('0x7')]=_0x4bf8f4;this[_0x61e8('0x8')]=_0x5142b9;this['routing']=_0x19f3a4;this['intervals']={};this['squeue'][_0x61e8('0x9')](this[_0x61e8('0xa')][_0x61e8('0xb')](this),this[_0x61e8('0xc')][_0x61e8('0xb')](this),this[_0x61e8('0xd')]);this[_0x61e8('0x6')]['on'](_0x61e8('0xe'),this[_0x61e8('0xc')][_0x61e8('0xb')](this));this[_0x61e8('0x6')]['on']('drained',this[_0x61e8('0xf')][_0x61e8('0xb')](this));};RRMemory[_0x61e8('0x10')]['push']=function(){this['squeue'][_0x61e8('0x9')](this[_0x61e8('0xa')]['bind'](this),this['handleTimeout'][_0x61e8('0xb')](this));};RRMemory[_0x61e8('0x10')]['handleDrained']=function(){this['handleTimeout'](!![]);};RRMemory['prototype'][_0x61e8('0x11')]=function(_0x1faf48){if(util[_0x61e8('0x12')](this[_0x61e8('0x6')]['id'],this['realtime'][_0x61e8('0x13')][this[_0x61e8('0x14')]],this[_0x61e8('0x6')][_0x61e8('0x15')],!![])){logger[_0x61e8('0x16')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x61e8('0x6')]['id'],this[_0x61e8('0x14')]);clearInterval(this[_0x61e8('0x17')][this[_0x61e8('0x14')]]);_0x1faf48['done']();setTimeout(this[_0x61e8('0x9')][_0x61e8('0xb')](this),0x3e8);}};RRMemory[_0x61e8('0x10')][_0x61e8('0xa')]=function(_0x50fe80){this[_0x61e8('0x14')]=rr(this[_0x61e8('0x7')][_0x61e8('0x18')]);logger['debug']('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x61e8('0x6')]['id'],this['agentId']);if(_['isNil'](this['realtime']['agents'][this[_0x61e8('0x14')]])){logger[_0x61e8('0x16')](_0x61e8('0x19'),this[_0x61e8('0x6')]['id'],this[_0x61e8('0x14')]);_0x50fe80[_0x61e8('0x1a')]();setTimeout(this[_0x61e8('0x9')][_0x61e8('0xb')](this),0x3e8);}else{if(util[_0x61e8('0x12')](this[_0x61e8('0x6')]['id'],this['realtime']['agents'][this[_0x61e8('0x14')]],this[_0x61e8('0x6')][_0x61e8('0x15')],!![])){this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]][_0x61e8('0x1b')]=!![];this['realtime'][_0x61e8('0x13')][this[_0x61e8('0x14')]][_0x61e8('0x1c')]=this['queue'][_0x61e8('0x1d')];util[_0x61e8('0x1e')](this[_0x61e8('0x8')],this[_0x61e8('0x4')],this[_0x61e8('0x8')][_0x61e8('0x13')][this['agentId']],this[_0x61e8('0x6')][_0x61e8('0x15')]);util['showNotification'](this[_0x61e8('0x5')],this[_0x61e8('0x6')]['id'],this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]],this[_0x61e8('0x7')],this[_0x61e8('0x4')]);util[_0x61e8('0x1f')](this['squeue']['id'],this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]],_0x61e8('0x20'));this[_0x61e8('0x17')][this[_0x61e8('0x14')]]=setInterval(this[_0x61e8('0x11')][_0x61e8('0xb')](this,_0x50fe80),0x3e8);}else{logger[_0x61e8('0x16')](_0x61e8('0x21'),this[_0x61e8('0x6')]['id'],this[_0x61e8('0x14')]);_0x50fe80[_0x61e8('0x1a')]();setTimeout(this['push'][_0x61e8('0xb')](this),0x3e8);}}};RRMemory[_0x61e8('0x10')]['handleTimeout']=function(_0x290486){logger[_0x61e8('0x16')](_0x61e8('0x22'),this[_0x61e8('0x6')]['id'],this[_0x61e8('0x14')]);if(_[_0x61e8('0x23')](this[_0x61e8('0x8')]['agents'][this[_0x61e8('0x14')]])){logger[_0x61e8('0x16')](_0x61e8('0x19'),this[_0x61e8('0x6')]['id'],this[_0x61e8('0x14')]);}else{clearInterval(this['intervals'][this[_0x61e8('0x14')]]);util[_0x61e8('0x24')](this[_0x61e8('0x5')],this['squeue']['id'],this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]],this['queue'],this['routing']);util['writeLog'](this[_0x61e8('0x6')]['id'],this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]],_0x61e8('0x25'));this[_0x61e8('0x8')]['agents'][this[_0x61e8('0x14')]][_0x61e8('0x1b')]=![];this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]]['busyQueue']=undefined;util[_0x61e8('0x26')](this['realtime'],this['routing'],this[_0x61e8('0x8')][_0x61e8('0x13')][this[_0x61e8('0x14')]],this[_0x61e8('0x6')][_0x61e8('0x15')]);}if(!_0x290486){setTimeout(this['push']['bind'](this),0x3e8);}};function rrmemory(_0x5b3587,_0x3e7b11,_0x4fc0c2,_0x1cc6e7){return new RRMemory(_0x5b3587,_0x3e7b11,_0x4fc0c2,_0x1cc6e7);}module[_0x61e8('0x27')]=rrmemory;