Built motion from commit b5996064.|2.6.21
[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 _0xbb57=['consequence','length','[%s][AGENT]\x20%s','message','stop','find','createQueue','atimeout','channel','format','rules','end','close','complete','[%s][AGENT]\x20ROUTING\x20END','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','util','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','name','toLowerCase'];(function(_0x15cc4c,_0x1ca52c){var _0x42e443=function(_0x421e88){while(--_0x421e88){_0x15cc4c['push'](_0x15cc4c['shift']());}};_0x42e443(++_0x1ca52c);}(_0xbb57,0x136));var _0x7bb5=function(_0xbc16e9,_0x1e9907){_0xbc16e9=_0xbc16e9-0x0;var _0x5af673=_0xbb57[_0xbc16e9];return _0x5af673;};'use strict';var schema=require(_0x7bb5('0x0'));var _=require('lodash');var util=require(_0x7bb5('0x1'));var seqqueue=require('seq-queue');var logger=require('../../../../config/logger')('routing');var strategy=require(_0x7bb5('0x2'));var queue=schema({'name':{'type':_0x7bb5('0x3'),'required':!![],'message':_0x7bb5('0x4')},'timeout':{'type':_0x7bb5('0x5'),'message':_0x7bb5('0x6')}});function writeLog(_0x304734,_0x3c8838,_0x311763){return logger['info'](util['format']('[%s][AGENT][NAME:%s][STATUS:%s]',_0x304734,_0x3c8838['name'],_0x311763));}function handleFindAgent(_0x195356){return function(_0x38461f){return _0x38461f[_0x7bb5('0x7')][_0x7bb5('0x8')]()===_0x195356['toLowerCase']();};}exports[_0x7bb5('0x9')]=function(_0x12e893,_0x3c2da1,_0x565e16,_0xbba8d4){return function(_0x36397e){try{var _0x5641ce={'name':_0x3c2da1[0x0],'timeout':_0x3c2da1[0x1]};var _0x537a57=queue['validate'](_0x5641ce,{'typecast':!![]});if(_0x537a57[_0x7bb5('0xa')]){logger['error'](_0x7bb5('0xb'),_0x12e893,_['map'](_0x537a57,_0x7bb5('0xc'))['join'](',\x20'));_0x36397e[_0x7bb5('0xd')]();}else{var _0x2ce70c=_[_0x7bb5('0xe')](_0x565e16['agents'],handleFindAgent(_0x5641ce[_0x7bb5('0x7')]));if(_0x2ce70c){var _0xc469da=(_0x5641ce['timeout']||0xa)*0x3e8;var _0x2d4a45,_0x38f366;var _0x4d4029=seqqueue[_0x7bb5('0xf')](_0xc469da);_0x4d4029['id']=_0x12e893;_0x4d4029[_0x7bb5('0x10')]=_0xc469da;_0x4d4029['channel']=_0xbba8d4[_0x7bb5('0x11')];writeLog(_0x12e893,_0x2ce70c,util[_0x7bb5('0x12')]('START:%s',_0xc469da));_0x565e16[_0x7bb5('0x13')][_0x12e893]['on'](_0x7bb5('0x14'),function(){logger['info']('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x12e893);clearTimeout(_0x38f366);_0x38f366=undefined;_0x4d4029[_0x7bb5('0x15')]();if(_0x565e16[_0x7bb5('0x13')][_0x12e893]){delete _0x565e16[_0x7bb5('0x13')][_0x12e893];}_0x36397e[_0x7bb5('0xd')]();});_0x565e16['rules'][_0x12e893]['on'](_0x7bb5('0x16'),function(){if(_0x565e16[_0x7bb5('0x13')][_0x12e893]){delete _0x565e16[_0x7bb5('0x13')][_0x12e893];}});_0x38f366=setTimeout(function(){logger['info'](_0x7bb5('0x17'),_0x12e893);clearTimeout(_0x38f366);_0x4d4029[_0x7bb5('0x15')]();_0x36397e['next']();},_0xc469da);strategy['agent'](_0x4d4029,_0x2ce70c,_0x565e16,_0xbba8d4);}else{logger[_0x7bb5('0x18')](_0x7bb5('0x19'),_0x12e893,_0x5641ce[_0x7bb5('0x7')]);_0x36397e['stop']();}}}catch(_0x751f42){console[_0x7bb5('0x1a')](_0x751f42);logger[_0x7bb5('0x18')](_0x7bb5('0x1b'),_0x12e893,_0x751f42[_0x7bb5('0x1c')]);_0x36397e[_0x7bb5('0xd')]();}};};