Built motion from commit 4ca75f1b.|2.6.28
[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 _0xd698=['stack','validate','util','seq-queue','../../../../config/logger','routing','./strategy','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','map','message','join','find','agents','timeout','atimeout','channel','START:%s','rules','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','stop','log','[%s][QUEUE]\x20%s'];(function(_0x51f2c0,_0xb7c46e){var _0x34ffd5=function(_0x2238c0){while(--_0x2238c0){_0x51f2c0['push'](_0x51f2c0['shift']());}};_0x34ffd5(++_0xb7c46e);}(_0xd698,0xab));var _0x8d69=function(_0x3ad28e,_0x47814f){_0x3ad28e=_0x3ad28e-0x0;var _0x583b1f=_0xd698[_0x3ad28e];return _0x583b1f;};'use strict';var schema=require(_0x8d69('0x0'));var _=require('lodash');var util=require(_0x8d69('0x1'));var seqqueue=require(_0x8d69('0x2'));var logger=require(_0x8d69('0x3'))(_0x8d69('0x4'));var strategy=require(_0x8d69('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x8d69('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x5060ff,_0x4e2101,_0x29d5b8){return logger[_0x8d69('0x7')](util[_0x8d69('0x8')](_0x8d69('0x9'),_0x5060ff,_0x4e2101[_0x8d69('0xa')],_0x29d5b8));}function handleFindAgent(_0x5cd605){return function(_0x201cea){return _0x201cea['name'][_0x8d69('0xb')]()===_0x5cd605[_0x8d69('0xb')]();};}exports[_0x8d69('0xc')]=function(_0x56aea8,_0x2618af,_0xeea9c4,_0x1579f3){return function(_0x543340){try{var _0x255640={'name':_0x2618af[0x0],'timeout':_0x2618af[0x1]};var _0xc171b9=queue['validate'](_0x255640,{'typecast':!![]});if(_0xc171b9[_0x8d69('0xd')]){logger[_0x8d69('0xe')]('[%s][AGENT]\x20%s',_0x56aea8,_[_0x8d69('0xf')](_0xc171b9,_0x8d69('0x10'))[_0x8d69('0x11')](',\x20'));_0x543340['stop']();}else{var _0x2b0082=_[_0x8d69('0x12')](_0xeea9c4[_0x8d69('0x13')],handleFindAgent(_0x255640['name']));if(_0x2b0082){var _0x33f49e=(_0x255640[_0x8d69('0x14')]||0xa)*0x3e8;var _0x2378dd,_0x4a5f20;var _0x29c49e=seqqueue['createQueue'](_0x33f49e);_0x29c49e['id']=_0x56aea8;_0x29c49e[_0x8d69('0x15')]=_0x33f49e;_0x29c49e[_0x8d69('0x16')]=_0x1579f3[_0x8d69('0x16')];writeLog(_0x56aea8,_0x2b0082,util[_0x8d69('0x8')](_0x8d69('0x17'),_0x33f49e));_0xeea9c4[_0x8d69('0x18')][_0x56aea8]['on']('end',function(){logger[_0x8d69('0x7')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x56aea8);clearTimeout(_0x4a5f20);_0x4a5f20=undefined;_0x29c49e[_0x8d69('0x19')]();if(_0xeea9c4[_0x8d69('0x18')][_0x56aea8]){delete _0xeea9c4['rules'][_0x56aea8];}_0x543340['stop']();});_0xeea9c4[_0x8d69('0x18')][_0x56aea8]['on'](_0x8d69('0x1a'),function(){if(_0xeea9c4[_0x8d69('0x18')][_0x56aea8]){delete _0xeea9c4[_0x8d69('0x18')][_0x56aea8];}});_0x4a5f20=setTimeout(function(){logger[_0x8d69('0x7')](_0x8d69('0x1b'),_0x56aea8);clearTimeout(_0x4a5f20);_0x29c49e['close']();_0x543340[_0x8d69('0x1c')]();},_0x33f49e);strategy[_0x8d69('0x1d')](_0x29c49e,_0x2b0082,_0xeea9c4,_0x1579f3);}else{logger['error']('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x56aea8,_0x255640[_0x8d69('0xa')]);_0x543340[_0x8d69('0x1e')]();}}}catch(_0xcbda92){console[_0x8d69('0x1f')](_0xcbda92);logger[_0x8d69('0xe')](_0x8d69('0x20'),_0x56aea8,_0xcbda92[_0x8d69('0x21')]);_0x543340[_0x8d69('0x1e')]();}};};