Built motion from commit dbf3a7e2.|2.6.30
[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 _0xb684=['close','next','agent','log','lodash','util','seq-queue','../../../../config/logger','./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','length','error','map','message','join','stop','find','agents','createQueue','START:%s','rules','complete','[%s][AGENT]\x20ROUTING\x20END'];(function(_0xc51744,_0x1b4032){var _0x210106=function(_0x469323){while(--_0x469323){_0xc51744['push'](_0xc51744['shift']());}};_0x210106(++_0x1b4032);}(_0xb684,0xd6));var _0x4b68=function(_0x50ed98,_0x53950d){_0x50ed98=_0x50ed98-0x0;var _0x14761f=_0xb684[_0x50ed98];return _0x14761f;};'use strict';var schema=require('validate');var _=require(_0x4b68('0x0'));var util=require(_0x4b68('0x1'));var seqqueue=require(_0x4b68('0x2'));var logger=require(_0x4b68('0x3'))('routing');var strategy=require(_0x4b68('0x4'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x4b68('0x5')},'timeout':{'type':_0x4b68('0x6'),'message':_0x4b68('0x7')}});function writeLog(_0x1fd001,_0x16c572,_0xe9bc43){return logger[_0x4b68('0x8')](util[_0x4b68('0x9')](_0x4b68('0xa'),_0x1fd001,_0x16c572[_0x4b68('0xb')],_0xe9bc43));}function handleFindAgent(_0xe18706){return function(_0x440879){return _0x440879[_0x4b68('0xb')][_0x4b68('0xc')]()===_0xe18706['toLowerCase']();};}exports['consequence']=function(_0xd7a8,_0x598237,_0x23dbd1,_0x6c4839){return function(_0xc4a262){try{var _0x5cab17={'name':_0x598237[0x0],'timeout':_0x598237[0x1]};var _0x109102=queue['validate'](_0x5cab17,{'typecast':!![]});if(_0x109102[_0x4b68('0xd')]){logger[_0x4b68('0xe')]('[%s][AGENT]\x20%s',_0xd7a8,_[_0x4b68('0xf')](_0x109102,_0x4b68('0x10'))[_0x4b68('0x11')](',\x20'));_0xc4a262[_0x4b68('0x12')]();}else{var _0x28aad4=_[_0x4b68('0x13')](_0x23dbd1[_0x4b68('0x14')],handleFindAgent(_0x5cab17['name']));if(_0x28aad4){var _0xe5c9d7=(_0x5cab17['timeout']||0xa)*0x3e8;var _0x2a72dc,_0x367b67;var _0x33170b=seqqueue[_0x4b68('0x15')](_0xe5c9d7);_0x33170b['id']=_0xd7a8;_0x33170b['atimeout']=_0xe5c9d7;_0x33170b['channel']=_0x6c4839['channel'];writeLog(_0xd7a8,_0x28aad4,util[_0x4b68('0x9')](_0x4b68('0x16'),_0xe5c9d7));_0x23dbd1['rules'][_0xd7a8]['on']('end',function(){logger[_0x4b68('0x8')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0xd7a8);clearTimeout(_0x367b67);_0x367b67=undefined;_0x33170b['close']();if(_0x23dbd1[_0x4b68('0x17')][_0xd7a8]){delete _0x23dbd1['rules'][_0xd7a8];}_0xc4a262[_0x4b68('0x12')]();});_0x23dbd1['rules'][_0xd7a8]['on'](_0x4b68('0x18'),function(){if(_0x23dbd1[_0x4b68('0x17')][_0xd7a8]){delete _0x23dbd1['rules'][_0xd7a8];}});_0x367b67=setTimeout(function(){logger['info'](_0x4b68('0x19'),_0xd7a8);clearTimeout(_0x367b67);_0x33170b[_0x4b68('0x1a')]();_0xc4a262[_0x4b68('0x1b')]();},_0xe5c9d7);strategy[_0x4b68('0x1c')](_0x33170b,_0x28aad4,_0x23dbd1,_0x6c4839);}else{logger[_0x4b68('0xe')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0xd7a8,_0x5cab17[_0x4b68('0xb')]);_0xc4a262[_0x4b68('0x12')]();}}}catch(_0x40da90){console[_0x4b68('0x1d')](_0x40da90);logger['error']('[%s][QUEUE]\x20%s',_0xd7a8,_0x40da90['stack']);_0xc4a262[_0x4b68('0x12')]();}};};