dd3f3017417f1bb90ad169e3f44d417c86ad876d
[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 _0x8974=['agents','name','timeout','createQueue','atimeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','routing','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','toLowerCase','consequence','[%s][AGENT]\x20%s','message','join','stop','find'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x8974,0xcb));var _0x4897=function(_0x35ef3f,_0x1ddd2e){_0x35ef3f=_0x35ef3f-0x0;var _0x41fbc8=_0x8974[_0x35ef3f];return _0x41fbc8;};'use strict';var schema=require(_0x4897('0x0'));var _=require(_0x4897('0x1'));var util=require('util');var seqqueue=require('seq-queue');var logger=require('../../../../config/logger')(_0x4897('0x2'));var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x4897('0x3'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x41d344,_0x43479a,_0xa2a62a){return logger[_0x4897('0x4')](util[_0x4897('0x5')](_0x4897('0x6'),_0x41d344,_0x43479a['name'],_0xa2a62a));}function handleFindAgent(_0x4015fb){return function(_0x5e7fde){return _0x5e7fde['name']['toLowerCase']()===_0x4015fb[_0x4897('0x7')]();};}exports[_0x4897('0x8')]=function(_0x1f560b,_0x4b8847,_0x22fce7,_0x440e9d){return function(_0x5afc92){try{var _0x2c2960={'name':_0x4b8847[0x0],'timeout':_0x4b8847[0x1]};var _0x2354f6=queue[_0x4897('0x0')](_0x2c2960,{'typecast':!![]});if(_0x2354f6['length']){logger['error'](_0x4897('0x9'),_0x1f560b,_['map'](_0x2354f6,_0x4897('0xa'))[_0x4897('0xb')](',\x20'));_0x5afc92[_0x4897('0xc')]();}else{var _0x1263c0=_[_0x4897('0xd')](_0x22fce7[_0x4897('0xe')],handleFindAgent(_0x2c2960[_0x4897('0xf')]));if(_0x1263c0){var _0x36f441=(_0x2c2960[_0x4897('0x10')]||0xa)*0x3e8;var _0x3866e9,_0x444bf6;var _0x36428e=seqqueue[_0x4897('0x11')](_0x36f441);_0x36428e['id']=_0x1f560b;_0x36428e[_0x4897('0x12')]=_0x36f441;_0x36428e[_0x4897('0x13')]=_0x440e9d[_0x4897('0x13')];writeLog(_0x1f560b,_0x1263c0,util[_0x4897('0x5')](_0x4897('0x14'),_0x36f441));_0x22fce7[_0x4897('0x15')][_0x1f560b]['on']('end',function(){logger[_0x4897('0x4')](_0x4897('0x16'),_0x1f560b);clearTimeout(_0x444bf6);_0x444bf6=undefined;_0x36428e[_0x4897('0x17')]();if(_0x22fce7[_0x4897('0x15')][_0x1f560b]){delete _0x22fce7[_0x4897('0x15')][_0x1f560b];}_0x5afc92[_0x4897('0xc')]();});_0x22fce7[_0x4897('0x15')][_0x1f560b]['on'](_0x4897('0x18'),function(){if(_0x22fce7['rules'][_0x1f560b]){delete _0x22fce7[_0x4897('0x15')][_0x1f560b];}});_0x444bf6=setTimeout(function(){logger[_0x4897('0x4')]('[%s][AGENT]\x20ROUTING\x20END',_0x1f560b);clearTimeout(_0x444bf6);_0x36428e[_0x4897('0x17')]();_0x5afc92[_0x4897('0x19')]();},_0x36f441);strategy[_0x4897('0x1a')](_0x36428e,_0x1263c0,_0x22fce7,_0x440e9d);}else{logger[_0x4897('0x1b')](_0x4897('0x1c'),_0x1f560b,_0x2c2960[_0x4897('0xf')]);_0x5afc92['stop']();}}}catch(_0x56a2f8){console['log'](_0x56a2f8);logger[_0x4897('0x1b')](_0x4897('0x1d'),_0x1f560b,_0x56a2f8[_0x4897('0x1e')]);_0x5afc92[_0x4897('0xc')]();}};};