322206c4132cbb58b4abff2685b7b548c6e14382
[motion2.git] / server / services / routing / server / applications / agent.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 _0x569e=['join','stop','find','timeout','createQueue','atimeout','channel','START:%s','rules','info','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','util','../../../../config/logger','./strategy','string','number','timeout\x20is\x20a\x20number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','message'];(function(_0x3cb413,_0x43dd24){var _0x38e703=function(_0x5703f2){while(--_0x5703f2){_0x3cb413['push'](_0x3cb413['shift']());}};_0x38e703(++_0x43dd24);}(_0x569e,0x1c0));var _0xe569=function(_0x333767,_0x220733){_0x333767=_0x333767-0x0;var _0x42a755=_0x569e[_0x333767];return _0x42a755;};'use strict';var schema=require('validate');var _=require('lodash');var util=require(_0xe569('0x0'));var seqqueue=require('seq-queue');var logger=require(_0xe569('0x1'))('routing');var strategy=require(_0xe569('0x2'));var queue=schema({'name':{'type':_0xe569('0x3'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xe569('0x4'),'message':_0xe569('0x5')}});function writeLog(_0x5b5f88,_0x5951ba,_0x532bc6){return logger['info'](util[_0xe569('0x6')](_0xe569('0x7'),_0x5b5f88,_0x5951ba['name'],_0x532bc6));}function handleFindAgent(_0x3e19ee){return function(_0x45d825){return _0x45d825[_0xe569('0x8')]['toLowerCase']()===_0x3e19ee[_0xe569('0x9')]();};}exports[_0xe569('0xa')]=function(_0x3d718b,_0x1e80bd,_0x18d4da,_0x24b1f8){return function(_0x52b625){try{var _0x49f916={'name':_0x1e80bd[0x0],'timeout':_0x1e80bd[0x1]};var _0x1b3cfa=queue[_0xe569('0xb')](_0x49f916,{'typecast':!![]});if(_0x1b3cfa[_0xe569('0xc')]){logger['error']('[%s][AGENT]\x20%s',_0x3d718b,_['map'](_0x1b3cfa,_0xe569('0xd'))[_0xe569('0xe')](',\x20'));_0x52b625[_0xe569('0xf')]();}else{var _0x1b565a=_[_0xe569('0x10')](_0x18d4da['agents'],handleFindAgent(_0x49f916['name']));if(_0x1b565a){var _0x5c1b09=(_0x49f916[_0xe569('0x11')]||0xa)*0x3e8;var _0xdadcfe,_0x1d1009;var _0x4b60f8=seqqueue[_0xe569('0x12')](_0x5c1b09);_0x4b60f8['id']=_0x3d718b;_0x4b60f8[_0xe569('0x13')]=_0x5c1b09;_0x4b60f8['channel']=_0x24b1f8[_0xe569('0x14')];writeLog(_0x3d718b,_0x1b565a,util['format'](_0xe569('0x15'),_0x5c1b09));_0x18d4da[_0xe569('0x16')][_0x3d718b]['on']('end',function(){logger[_0xe569('0x17')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x3d718b);clearTimeout(_0x1d1009);_0x1d1009=undefined;_0x4b60f8[_0xe569('0x18')]();if(_0x18d4da[_0xe569('0x16')][_0x3d718b]){delete _0x18d4da[_0xe569('0x16')][_0x3d718b];}_0x52b625[_0xe569('0xf')]();});_0x18d4da['rules'][_0x3d718b]['on'](_0xe569('0x19'),function(){if(_0x18d4da[_0xe569('0x16')][_0x3d718b]){delete _0x18d4da[_0xe569('0x16')][_0x3d718b];}});_0x1d1009=setTimeout(function(){logger['info'](_0xe569('0x1a'),_0x3d718b);clearTimeout(_0x1d1009);_0x4b60f8[_0xe569('0x18')]();_0x52b625[_0xe569('0x1b')]();},_0x5c1b09);strategy[_0xe569('0x1c')](_0x4b60f8,_0x1b565a,_0x18d4da,_0x24b1f8);}else{logger[_0xe569('0x1d')](_0xe569('0x1e'),_0x3d718b,_0x49f916[_0xe569('0x8')]);_0x52b625['stop']();}}}catch(_0x99784){console[_0xe569('0x1f')](_0x99784);logger['error'](_0xe569('0x20'),_0x3d718b,_0x99784['stack']);_0x52b625[_0xe569('0xf')]();}};};