Built motion from commit 97153652.|2.6.26
[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 _0x5b16=['rules','end','close','next','agent','log','[%s][QUEUE]\x20%s','validate','util','../../../../config/logger','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','error','[%s][AGENT]\x20%s','map','join','stop','agents','timeout','channel','START:%s'];(function(_0x2e9301,_0x375e89){var _0xe1dead=function(_0x1920cc){while(--_0x1920cc){_0x2e9301['push'](_0x2e9301['shift']());}};_0xe1dead(++_0x375e89);}(_0x5b16,0x180));var _0x65b1=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x5b16[_0x257642];return _0x3d813b;};'use strict';var schema=require(_0x65b1('0x0'));var _=require('lodash');var util=require(_0x65b1('0x1'));var seqqueue=require('seq-queue');var logger=require(_0x65b1('0x2'))(_0x65b1('0x3'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x65b1('0x4'),'required':!![],'message':_0x65b1('0x5')},'timeout':{'type':_0x65b1('0x6'),'message':_0x65b1('0x7')}});function writeLog(_0x48c4dc,_0x28ea21,_0x4e4c9a){return logger[_0x65b1('0x8')](util[_0x65b1('0x9')](_0x65b1('0xa'),_0x48c4dc,_0x28ea21[_0x65b1('0xb')],_0x4e4c9a));}function handleFindAgent(_0x59151a){return function(_0x4837bd){return _0x4837bd[_0x65b1('0xb')]['toLowerCase']()===_0x59151a[_0x65b1('0xc')]();};}exports['consequence']=function(_0x5ef189,_0x48bb0e,_0x54388c,_0x4c369a){return function(_0xb23162){try{var _0x5a9283={'name':_0x48bb0e[0x0],'timeout':_0x48bb0e[0x1]};var _0xfd1fa1=queue[_0x65b1('0x0')](_0x5a9283,{'typecast':!![]});if(_0xfd1fa1['length']){logger[_0x65b1('0xd')](_0x65b1('0xe'),_0x5ef189,_[_0x65b1('0xf')](_0xfd1fa1,'message')[_0x65b1('0x10')](',\x20'));_0xb23162[_0x65b1('0x11')]();}else{var _0x2202f7=_['find'](_0x54388c[_0x65b1('0x12')],handleFindAgent(_0x5a9283[_0x65b1('0xb')]));if(_0x2202f7){var _0x4ede9f=(_0x5a9283[_0x65b1('0x13')]||0xa)*0x3e8;var _0x3c5382,_0x5896e9;var _0x52f74d=seqqueue['createQueue'](_0x4ede9f);_0x52f74d['id']=_0x5ef189;_0x52f74d['atimeout']=_0x4ede9f;_0x52f74d[_0x65b1('0x14')]=_0x4c369a[_0x65b1('0x14')];writeLog(_0x5ef189,_0x2202f7,util[_0x65b1('0x9')](_0x65b1('0x15'),_0x4ede9f));_0x54388c[_0x65b1('0x16')][_0x5ef189]['on'](_0x65b1('0x17'),function(){logger['info']('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x5ef189);clearTimeout(_0x5896e9);_0x5896e9=undefined;_0x52f74d[_0x65b1('0x18')]();if(_0x54388c[_0x65b1('0x16')][_0x5ef189]){delete _0x54388c[_0x65b1('0x16')][_0x5ef189];}_0xb23162[_0x65b1('0x11')]();});_0x54388c[_0x65b1('0x16')][_0x5ef189]['on']('complete',function(){if(_0x54388c[_0x65b1('0x16')][_0x5ef189]){delete _0x54388c[_0x65b1('0x16')][_0x5ef189];}});_0x5896e9=setTimeout(function(){logger[_0x65b1('0x8')]('[%s][AGENT]\x20ROUTING\x20END',_0x5ef189);clearTimeout(_0x5896e9);_0x52f74d[_0x65b1('0x18')]();_0xb23162[_0x65b1('0x19')]();},_0x4ede9f);strategy[_0x65b1('0x1a')](_0x52f74d,_0x2202f7,_0x54388c,_0x4c369a);}else{logger[_0x65b1('0xd')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x5ef189,_0x5a9283[_0x65b1('0xb')]);_0xb23162[_0x65b1('0x11')]();}}}catch(_0x5b4f4c){console[_0x65b1('0x1b')](_0x5b4f4c);logger['error'](_0x65b1('0x1c'),_0x5ef189,_0x5b4f4c['stack']);_0xb23162[_0x65b1('0x11')]();}};};