2180ef6c9fe66ccd364fa4e2d1ca3c0f92cda128
[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 _0xe3f7=['stack','lodash','util','seq-queue','routing','string','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','consequence','validate','[%s][AGENT]\x20%s','map','message','join','stop','find','timeout','createQueue','channel','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','error','log'];(function(_0x13393b,_0x1c3f83){var _0x31767d=function(_0x45b8f3){while(--_0x45b8f3){_0x13393b['push'](_0x13393b['shift']());}};_0x31767d(++_0x1c3f83);}(_0xe3f7,0x133));var _0x7e3f=function(_0x1350e5,_0x519867){_0x1350e5=_0x1350e5-0x0;var _0x503173=_0xe3f7[_0x1350e5];return _0x503173;};'use strict';var schema=require('validate');var _=require(_0x7e3f('0x0'));var util=require(_0x7e3f('0x1'));var seqqueue=require(_0x7e3f('0x2'));var logger=require('../../../../config/logger')(_0x7e3f('0x3'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x7e3f('0x4'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x7e3f('0x5'),'message':_0x7e3f('0x6')}});function writeLog(_0x3cf4fd,_0x4a4c83,_0x42bd82){return logger[_0x7e3f('0x7')](util[_0x7e3f('0x8')](_0x7e3f('0x9'),_0x3cf4fd,_0x4a4c83[_0x7e3f('0xa')],_0x42bd82));}function handleFindAgent(_0x5d5a7e){return function(_0xdbc0e){return _0xdbc0e[_0x7e3f('0xa')]['toLowerCase']()===_0x5d5a7e['toLowerCase']();};}exports[_0x7e3f('0xb')]=function(_0x43a359,_0x5cdd57,_0x46e49c,_0x65ffc4){return function(_0x48a019){try{var _0x22ea37={'name':_0x5cdd57[0x0],'timeout':_0x5cdd57[0x1]};var _0x1db69d=queue[_0x7e3f('0xc')](_0x22ea37,{'typecast':!![]});if(_0x1db69d['length']){logger['error'](_0x7e3f('0xd'),_0x43a359,_[_0x7e3f('0xe')](_0x1db69d,_0x7e3f('0xf'))[_0x7e3f('0x10')](',\x20'));_0x48a019[_0x7e3f('0x11')]();}else{var _0x3d40b9=_[_0x7e3f('0x12')](_0x46e49c['agents'],handleFindAgent(_0x22ea37[_0x7e3f('0xa')]));if(_0x3d40b9){var _0x3b2b97=(_0x22ea37[_0x7e3f('0x13')]||0xa)*0x3e8;var _0x4cdc49,_0x3ff83c;var _0x55d2ba=seqqueue[_0x7e3f('0x14')](_0x3b2b97);_0x55d2ba['id']=_0x43a359;_0x55d2ba['atimeout']=_0x3b2b97;_0x55d2ba[_0x7e3f('0x15')]=_0x65ffc4[_0x7e3f('0x15')];writeLog(_0x43a359,_0x3d40b9,util[_0x7e3f('0x8')](_0x7e3f('0x16'),_0x3b2b97));_0x46e49c['rules'][_0x43a359]['on'](_0x7e3f('0x17'),function(){logger[_0x7e3f('0x7')](_0x7e3f('0x18'),_0x43a359);clearTimeout(_0x3ff83c);_0x3ff83c=undefined;_0x55d2ba[_0x7e3f('0x19')]();if(_0x46e49c['rules'][_0x43a359]){delete _0x46e49c[_0x7e3f('0x1a')][_0x43a359];}_0x48a019[_0x7e3f('0x11')]();});_0x46e49c[_0x7e3f('0x1a')][_0x43a359]['on'](_0x7e3f('0x1b'),function(){if(_0x46e49c[_0x7e3f('0x1a')][_0x43a359]){delete _0x46e49c[_0x7e3f('0x1a')][_0x43a359];}});_0x3ff83c=setTimeout(function(){logger['info'](_0x7e3f('0x1c'),_0x43a359);clearTimeout(_0x3ff83c);_0x55d2ba['close']();_0x48a019[_0x7e3f('0x1d')]();},_0x3b2b97);strategy[_0x7e3f('0x1e')](_0x55d2ba,_0x3d40b9,_0x46e49c,_0x65ffc4);}else{logger[_0x7e3f('0x1f')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x43a359,_0x22ea37[_0x7e3f('0xa')]);_0x48a019[_0x7e3f('0x11')]();}}}catch(_0x813837){console[_0x7e3f('0x20')](_0x813837);logger[_0x7e3f('0x1f')]('[%s][QUEUE]\x20%s',_0x43a359,_0x813837[_0x7e3f('0x21')]);_0x48a019[_0x7e3f('0x11')]();}};};