d39d6b95fead9e5ae288890ced77b79b5c3c821c
[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 _0x7622=['consequence','error','map','message','join','stop','find','createQueue','atimeout','channel','START:%s','end','rules','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s','validate','lodash','util','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase'];(function(_0x603787,_0x5cb47d){var _0x5b523f=function(_0x1dfd5c){while(--_0x1dfd5c){_0x603787['push'](_0x603787['shift']());}};_0x5b523f(++_0x5cb47d);}(_0x7622,0x132));var _0x2762=function(_0x2d6364,_0x126b57){_0x2d6364=_0x2d6364-0x0;var _0x5166b6=_0x7622[_0x2d6364];return _0x5166b6;};'use strict';var schema=require(_0x2762('0x0'));var _=require(_0x2762('0x1'));var util=require(_0x2762('0x2'));var seqqueue=require('seq-queue');var logger=require(_0x2762('0x3'))('routing');var strategy=require(_0x2762('0x4'));var queue=schema({'name':{'type':_0x2762('0x5'),'required':!![],'message':_0x2762('0x6')},'timeout':{'type':_0x2762('0x7'),'message':_0x2762('0x8')}});function writeLog(_0x10e771,_0xd6de08,_0x3fe5ed){return logger[_0x2762('0x9')](util[_0x2762('0xa')](_0x2762('0xb'),_0x10e771,_0xd6de08[_0x2762('0xc')],_0x3fe5ed));}function handleFindAgent(_0x4369e3){return function(_0x43cbe0){return _0x43cbe0[_0x2762('0xc')][_0x2762('0xd')]()===_0x4369e3[_0x2762('0xd')]();};}exports[_0x2762('0xe')]=function(_0x482ec0,_0x2a2898,_0x396928,_0x2bce23){return function(_0x2e2e7f){try{var _0x2b77ca={'name':_0x2a2898[0x0],'timeout':_0x2a2898[0x1]};var _0xbe3ef6=queue['validate'](_0x2b77ca,{'typecast':!![]});if(_0xbe3ef6['length']){logger[_0x2762('0xf')]('[%s][AGENT]\x20%s',_0x482ec0,_[_0x2762('0x10')](_0xbe3ef6,_0x2762('0x11'))[_0x2762('0x12')](',\x20'));_0x2e2e7f[_0x2762('0x13')]();}else{var _0x523f48=_[_0x2762('0x14')](_0x396928['agents'],handleFindAgent(_0x2b77ca[_0x2762('0xc')]));if(_0x523f48){var _0x22a58f=(_0x2b77ca['timeout']||0xa)*0x3e8;var _0x3af168,_0x297965;var _0x1e570b=seqqueue[_0x2762('0x15')](_0x22a58f);_0x1e570b['id']=_0x482ec0;_0x1e570b[_0x2762('0x16')]=_0x22a58f;_0x1e570b['channel']=_0x2bce23[_0x2762('0x17')];writeLog(_0x482ec0,_0x523f48,util[_0x2762('0xa')](_0x2762('0x18'),_0x22a58f));_0x396928['rules'][_0x482ec0]['on'](_0x2762('0x19'),function(){logger[_0x2762('0x9')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x482ec0);clearTimeout(_0x297965);_0x297965=undefined;_0x1e570b['close']();if(_0x396928[_0x2762('0x1a')][_0x482ec0]){delete _0x396928[_0x2762('0x1a')][_0x482ec0];}_0x2e2e7f[_0x2762('0x13')]();});_0x396928[_0x2762('0x1a')][_0x482ec0]['on'](_0x2762('0x1b'),function(){if(_0x396928[_0x2762('0x1a')][_0x482ec0]){delete _0x396928[_0x2762('0x1a')][_0x482ec0];}});_0x297965=setTimeout(function(){logger[_0x2762('0x9')](_0x2762('0x1c'),_0x482ec0);clearTimeout(_0x297965);_0x1e570b[_0x2762('0x1d')]();_0x2e2e7f[_0x2762('0x1e')]();},_0x22a58f);strategy['agent'](_0x1e570b,_0x523f48,_0x396928,_0x2bce23);}else{logger[_0x2762('0xf')](_0x2762('0x1f'),_0x482ec0,_0x2b77ca[_0x2762('0xc')]);_0x2e2e7f[_0x2762('0x13')]();}}}catch(_0x50e124){console['log'](_0x50e124);logger[_0x2762('0xf')]('[%s][QUEUE]\x20%s',_0x482ec0,_0x50e124['stack']);_0x2e2e7f[_0x2762('0x13')]();}};};