37c6f4d140a768671a436c61b2669e817c45805b
[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 _0x725f=['atimeout','channel','START:%s','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','log','[%s][QUEUE]\x20%s','lodash','seq-queue','../../../../config/logger','routing','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','message','stop','agents','createQueue'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x725f,0x90));var _0xf725=function(_0x54c37e,_0x54468b){_0x54c37e=_0x54c37e-0x0;var _0x52e771=_0x725f[_0x54c37e];return _0x52e771;};'use strict';var schema=require('validate');var _=require(_0xf725('0x0'));var util=require('util');var seqqueue=require(_0xf725('0x1'));var logger=require(_0xf725('0x2'))(_0xf725('0x3'));var strategy=require(_0xf725('0x4'));var queue=schema({'name':{'type':'string','required':!![],'message':_0xf725('0x5')},'timeout':{'type':_0xf725('0x6'),'message':_0xf725('0x7')}});function writeLog(_0x31beb8,_0x29a7cb,_0x2f1434){return logger[_0xf725('0x8')](util[_0xf725('0x9')](_0xf725('0xa'),_0x31beb8,_0x29a7cb[_0xf725('0xb')],_0x2f1434));}function handleFindAgent(_0x209444){return function(_0x23f576){return _0x23f576[_0xf725('0xb')][_0xf725('0xc')]()===_0x209444['toLowerCase']();};}exports[_0xf725('0xd')]=function(_0x33c8ab,_0x599c22,_0x48dec5,_0x117a17){return function(_0xdc9fc3){try{var _0x32a522={'name':_0x599c22[0x0],'timeout':_0x599c22[0x1]};var _0xe2c07b=queue[_0xf725('0xe')](_0x32a522,{'typecast':!![]});if(_0xe2c07b[_0xf725('0xf')]){logger[_0xf725('0x10')]('[%s][AGENT]\x20%s',_0x33c8ab,_['map'](_0xe2c07b,_0xf725('0x11'))['join'](',\x20'));_0xdc9fc3[_0xf725('0x12')]();}else{var _0xc3077a=_['find'](_0x48dec5[_0xf725('0x13')],handleFindAgent(_0x32a522[_0xf725('0xb')]));if(_0xc3077a){var _0x1aedaf=(_0x32a522['timeout']||0xa)*0x3e8;var _0x5626a4,_0x33b1d4;var _0x3375f0=seqqueue[_0xf725('0x14')](_0x1aedaf);_0x3375f0['id']=_0x33c8ab;_0x3375f0[_0xf725('0x15')]=_0x1aedaf;_0x3375f0[_0xf725('0x16')]=_0x117a17['channel'];writeLog(_0x33c8ab,_0xc3077a,util['format'](_0xf725('0x17'),_0x1aedaf));_0x48dec5['rules'][_0x33c8ab]['on']('end',function(){logger[_0xf725('0x8')](_0xf725('0x18'),_0x33c8ab);clearTimeout(_0x33b1d4);_0x33b1d4=undefined;_0x3375f0[_0xf725('0x19')]();if(_0x48dec5[_0xf725('0x1a')][_0x33c8ab]){delete _0x48dec5[_0xf725('0x1a')][_0x33c8ab];}_0xdc9fc3[_0xf725('0x12')]();});_0x48dec5[_0xf725('0x1a')][_0x33c8ab]['on'](_0xf725('0x1b'),function(){if(_0x48dec5[_0xf725('0x1a')][_0x33c8ab]){delete _0x48dec5['rules'][_0x33c8ab];}});_0x33b1d4=setTimeout(function(){logger[_0xf725('0x8')](_0xf725('0x1c'),_0x33c8ab);clearTimeout(_0x33b1d4);_0x3375f0['close']();_0xdc9fc3[_0xf725('0x1d')]();},_0x1aedaf);strategy[_0xf725('0x1e')](_0x3375f0,_0xc3077a,_0x48dec5,_0x117a17);}else{logger[_0xf725('0x10')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x33c8ab,_0x32a522[_0xf725('0xb')]);_0xdc9fc3['stop']();}}}catch(_0x15ae11){console[_0xf725('0x1f')](_0x15ae11);logger['error'](_0xf725('0x20'),_0x33c8ab,_0x15ae11['stack']);_0xdc9fc3['stop']();}};};