2c31e5fb8061e2a8a234c2e9d33b46363d0367e9
[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 _0x210d=['isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','routing','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','queue','realtime','bind','handleTimeout','module','timeout','drained','prototype','push','handleRun','handleDrained','handleCheckReject','isAgentAvailable','agents','channel','[%s][QUEUE]\x20available\x20again\x20%s','agentId','intervals','done','mapAgentsId','info','[%s][QUEUE]\x20try\x20with\x20%s'];(function(_0x475386,_0x33fe33){var _0x4090cc=function(_0x56ac60){while(--_0x56ac60){_0x475386['push'](_0x475386['shift']());}};_0x4090cc(++_0x33fe33);}(_0x210d,0x11c));var _0xd210=function(_0x538c70,_0x35531f){_0x538c70=_0x538c70-0x0;var _0x42ae01=_0x210d[_0x538c70];return _0x42ae01;};'use strict';var rr=require('rr');var _=require(_0xd210('0x0'));var uuid=require(_0xd210('0x1'));var util=require(_0xd210('0x2'));var logger=require(_0xd210('0x3'))('routing');var RRMemory=function(_0x25470f,_0x1e1465,_0x3d2cff,_0x23d95d){this[_0xd210('0x4')]=uuid['v4']();this[_0xd210('0x5')]=_0x25470f;this[_0xd210('0x6')]=_0x1e1465;this[_0xd210('0x7')]=_0x3d2cff;this['routing']=_0x23d95d;this['intervals']={};this[_0xd210('0x5')]['push'](this['handleRun'][_0xd210('0x8')](this),this[_0xd210('0x9')]['bind'](this),this[_0xd210('0xa')]);this[_0xd210('0x5')]['on'](_0xd210('0xb'),this[_0xd210('0x9')][_0xd210('0x8')](this));this[_0xd210('0x5')]['on'](_0xd210('0xc'),this['handleDrained'][_0xd210('0x8')](this));};RRMemory[_0xd210('0xd')][_0xd210('0xe')]=function(){this[_0xd210('0x5')]['push'](this[_0xd210('0xf')][_0xd210('0x8')](this),this[_0xd210('0x9')][_0xd210('0x8')](this));};RRMemory['prototype'][_0xd210('0x10')]=function(_0x5ac71d){this[_0xd210('0x9')](!![]);};RRMemory['prototype'][_0xd210('0x11')]=function(_0x1b7f67){if(util[_0xd210('0x12')](this[_0xd210('0x5')]['id'],this[_0xd210('0x7')][_0xd210('0x13')][this['agentId']],this[_0xd210('0x5')][_0xd210('0x14')],!![])){logger['info'](_0xd210('0x15'),this[_0xd210('0x5')]['id'],this[_0xd210('0x16')]);clearInterval(this[_0xd210('0x17')][this[_0xd210('0x16')]]);_0x1b7f67[_0xd210('0x18')]();setTimeout(this[_0xd210('0xe')][_0xd210('0x8')](this),0x3e8);}};RRMemory[_0xd210('0xd')][_0xd210('0xf')]=function(_0x3d9de1){this[_0xd210('0x16')]=rr(this['queue'][_0xd210('0x19')]);logger[_0xd210('0x1a')](_0xd210('0x1b'),this[_0xd210('0x5')]['id'],this[_0xd210('0x16')]);if(_[_0xd210('0x1c')](this[_0xd210('0x7')][_0xd210('0x13')][this[_0xd210('0x16')]])){logger[_0xd210('0x1a')](_0xd210('0x1d'),this[_0xd210('0x5')]['id'],this[_0xd210('0x16')]);_0x3d9de1[_0xd210('0x18')]();setTimeout(this[_0xd210('0xe')][_0xd210('0x8')](this),0x3e8);}else{if(util[_0xd210('0x12')](this[_0xd210('0x5')]['id'],this[_0xd210('0x7')]['agents'][this[_0xd210('0x16')]],this['squeue'][_0xd210('0x14')],!![])){this[_0xd210('0x7')]['agents'][this[_0xd210('0x16')]][_0xd210('0x1e')]=!![];this[_0xd210('0x7')][_0xd210('0x13')][this[_0xd210('0x16')]][_0xd210('0x1f')]=this[_0xd210('0x6')]['name'];util['showNotification'](this['notificationId'],this['squeue']['id'],this[_0xd210('0x7')]['agents'][this[_0xd210('0x16')]],this['queue'],this[_0xd210('0x20')]);util[_0xd210('0x21')](this[_0xd210('0x5')]['id'],this[_0xd210('0x7')][_0xd210('0x13')][this[_0xd210('0x16')]],_0xd210('0x22'));this[_0xd210('0x17')][this[_0xd210('0x16')]]=setInterval(this['handleCheckReject']['bind'](this,_0x3d9de1),0x3e8);}else{logger[_0xd210('0x1a')](_0xd210('0x23'),this[_0xd210('0x5')]['id'],this[_0xd210('0x16')]);_0x3d9de1['done']();setTimeout(this['push'][_0xd210('0x8')](this),0x3e8);}}};RRMemory[_0xd210('0xd')][_0xd210('0x9')]=function(_0x49c722){logger[_0xd210('0x1a')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this[_0xd210('0x16')]);if(_[_0xd210('0x1c')](this['realtime'][_0xd210('0x13')][this[_0xd210('0x16')]])){logger[_0xd210('0x1a')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xd210('0x5')]['id'],this[_0xd210('0x16')]);}else{clearInterval(this['intervals'][this['agentId']]);util[_0xd210('0x24')](this[_0xd210('0x4')],this[_0xd210('0x5')]['id'],this[_0xd210('0x7')]['agents'][this[_0xd210('0x16')]],this[_0xd210('0x6')],this[_0xd210('0x20')]);util[_0xd210('0x21')](this[_0xd210('0x5')]['id'],this[_0xd210('0x7')][_0xd210('0x13')][this[_0xd210('0x16')]],_0xd210('0x25'));this[_0xd210('0x7')][_0xd210('0x13')][this[_0xd210('0x16')]][_0xd210('0x1e')]=![];this['realtime'][_0xd210('0x13')][this[_0xd210('0x16')]][_0xd210('0x1f')]=undefined;}if(!_0x49c722){setTimeout(this[_0xd210('0xe')][_0xd210('0x8')](this),0x3e8);}};function rrmemory(_0x1700c2,_0x2eac7f,_0x4f73ca,_0x40ee09){return new RRMemory(_0x1700c2,_0x2eac7f,_0x4f73ca,_0x40ee09);}module[_0xd210('0x26')]=rrmemory;