Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / services / routing / server / applications / queue.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 _0x21ad=['./strategy','defaults','redis','localhost','queue_id','account','queue','from','emit','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/chatQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','update','timeout','[%s][END:QUEUE][NAME:%s]','update\x20queue\x20report','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','Queues','createQueue','qtimeout','rules','end','close','[%s][QUEUE]\x20ROUTING\x20STOPPED','[%s][QUEUE]\x20ROUTING\x20END','next','strategy','rrmemory','beepall','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','routing'];(function(_0x2d2b3c,_0x4a5142){var _0x79dd16=function(_0x1068c3){while(--_0x1068c3){_0x2d2b3c['push'](_0x2d2b3c['shift']());}};_0x79dd16(++_0x4a5142);}(_0x21ad,0x8c));var _0xd21a=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x21ad[_0x599e60];return _0x468e19;};'use strict';var schema=require(_0xd21a('0x0'));var _=require(_0xd21a('0x1'));var util=require(_0xd21a('0x2'));var seqqueue=require(_0xd21a('0x3'));var moment=require(_0xd21a('0x4'));var Redis=require(_0xd21a('0x5'));var config=require(_0xd21a('0x6'));var logger=require('../../../../config/logger')(_0xd21a('0x7'));var strategy=require(_0xd21a('0x8'));config['redis']=_[_0xd21a('0x9')](config[_0xd21a('0xa')],{'host':_0xd21a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd21a('0xa')]));var attributes=['id',_0xd21a('0xc'),_0xd21a('0xd'),_0xd21a('0xe'),_0xd21a('0xf'),'joinAt'];function emit(_0x26f30a,_0x406bf6,_0x4598a1){io['to'](_0x26f30a)[_0xd21a('0x10')](_0x406bf6,_0x4598a1);}function emitChannelQueueInteraction(_0x3e8592,_0x346701,_0x427d01,_0xfc6566,_0x4dcaab,_0x90984a,_0x35632e,_0x289660){_0x427d01['queue_id']=_0x289660;_0x427d01[_0xd21a('0xe')]=_0x346701;_0x427d01[_0xd21a('0xd')]=_0xfc6566;_0x427d01['id']=_0x4dcaab;if(_0x90984a){_0x35632e[util[_0xd21a('0x11')](_0xd21a('0x12'),_0x3e8592)][_0x4dcaab]=_[_0xd21a('0x13')](_0x427d01,attributes);}else{delete _0x35632e[util['format'](_0xd21a('0x12'),_0x3e8592)][_0x4dcaab];}emit(util[_0xd21a('0x11')]('%s:queue:%s',_0x3e8592,_0x346701),util[_0xd21a('0x11')](_0xd21a('0x14'),_0x3e8592,_0x90984a?_0xd21a('0x15'):_0xd21a('0x16')),_[_0xd21a('0x13')](_0x427d01,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xd21a('0x17')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require('../../rpc/faxQueueReport')};var queue=schema({'name':{'type':_0xd21a('0x18'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xd21a('0x19'),'message':_0xd21a('0x1a')}});function startRouting(_0x4300fa,_0x440987,_0x5902a1,_0xac167){if(_0x4300fa&&_0x440987&&_0x5902a1){_0x440987[_0xd21a('0x1b')]+=0x1;var _0x59040d={'uniqueid':_0x4300fa,'from':_0x5902a1[_0xd21a('0x1c')]?_0x5902a1[_0xd21a('0x1c')][_0xd21a('0xf')]:'','joinAt':moment()[_0xd21a('0x11')](_0xd21a('0x1d')),'ContactId':_0x5902a1[_0xd21a('0x1e')]?_0x5902a1[_0xd21a('0x1e')]['id']:null,'ListId':_0x5902a1[_0xd21a('0x1f')]?_0x5902a1[_0xd21a('0x1f')]['id']:null};_0x59040d[_['upperFirst'](_0x5902a1[_0xd21a('0x20')])+_0xd21a('0x21')]=_0x440987['id']||null;_0x59040d[_[_0xd21a('0x22')](_0x5902a1[_0xd21a('0x20')])+_0xd21a('0x23')]=_0x5902a1[_0xd21a('0x24')]?_0x5902a1[_0xd21a('0x24')]['id']:null;_0x59040d[_[_0xd21a('0x22')](_0x5902a1[_0xd21a('0x20')])+_0xd21a('0x25')]=_0x5902a1[_0xd21a('0x26')]?_0x5902a1['message']['id']:null;_0x59040d[_[_0xd21a('0x22')](_0x5902a1['channel'])+(_0x5902a1[_0xd21a('0x20')]!==_0xd21a('0x27')?_0xd21a('0x28'):'WebsiteId')]=_0x5902a1[_0xd21a('0xd')]?_0x5902a1[_0xd21a('0xd')]['id']:null;logger[_0xd21a('0x29')](util[_0xd21a('0x11')](_0xd21a('0x2a'),_0x4300fa,_0x440987[_0xd21a('0x2b')]));emitChannelQueueInteraction(_0x5902a1[_0xd21a('0x20')],_0x440987[_0xd21a('0x2b')],_0x59040d,_0x5902a1[_0xd21a('0xd')][_0xd21a('0x2b')],_0x5902a1[_0xd21a('0x26')]['id'],!![],_0xac167,_0x440987['id']);if(rpc[_0x5902a1['channel']+_0xd21a('0x2c')]){return rpc[_0x5902a1[_0xd21a('0x20')]+_0xd21a('0x2c')][_0xd21a('0x2d')](_0x59040d)[_0xd21a('0x2e')](function(_0x4000a9){logger[_0xd21a('0x2f')](_0xd21a('0x30'));});}}}function stopRouting(_0x312a20,_0x5353a4,_0x481e64,_0x8c37ed){if(_0x312a20&&_0x5353a4){_0x5353a4['waiting']-=0x1;var _0x30e7fb={'leaveAt':moment()[_0xd21a('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()['format'](_0xd21a('0x1d')),'reason':_0xd21a('0x31')};logger[_0xd21a('0x29')](util[_0xd21a('0x11')]('[%s][STOP:QUEUE][NAME:%s]',_0x312a20,_0x5353a4[_0xd21a('0x2b')]));emitChannelQueueInteraction(_0x481e64['channel'],_0x5353a4['name'],_0x481e64[_0xd21a('0x1c')],_0x481e64[_0xd21a('0xd')][_0xd21a('0x2b')],_0x481e64[_0xd21a('0x26')]['id'],![],_0x8c37ed,_0x5353a4['id']);if(rpc[_0x481e64[_0xd21a('0x20')]+_0xd21a('0x2c')]){return rpc[_0x481e64['channel']+_0xd21a('0x2c')][_0xd21a('0x32')](_0x312a20,_0x30e7fb)[_0xd21a('0x2e')](function(_0x163749){logger[_0xd21a('0x2f')]('update\x20queue\x20report');});}}}function endRouting(_0x526aba,_0x435d9b,_0x3559e2,_0x4e330b){if(_0x526aba&&_0x435d9b){_0x435d9b['waiting']-=0x1;var _0x1a29ae={'leaveAt':moment()[_0xd21a('0x11')](_0xd21a('0x1d')),'exitAt':moment()[_0xd21a('0x11')](_0xd21a('0x1d')),'reason':_0xd21a('0x33')};logger[_0xd21a('0x29')](util[_0xd21a('0x11')](_0xd21a('0x34'),_0x526aba,_0x435d9b[_0xd21a('0x2b')]));emitChannelQueueInteraction(_0x3559e2[_0xd21a('0x20')],_0x435d9b[_0xd21a('0x2b')],_0x3559e2[_0xd21a('0x1c')],_0x3559e2[_0xd21a('0xd')]['name'],_0x3559e2[_0xd21a('0x26')]['id'],![],_0x4e330b);if(rpc[_0x3559e2['channel']+_0xd21a('0x2c')]){return rpc[_0x3559e2[_0xd21a('0x20')]+_0xd21a('0x2c')]['update'](_0x526aba,_0x1a29ae)[_0xd21a('0x2e')](function(_0xaf0a0a){logger[_0xd21a('0x2f')](_0xd21a('0x35'));});}}}function handleFindQueue(_0xdb202){return function(_0x173dbb){return _0x173dbb[_0xd21a('0x2b')]['toLowerCase']()===_0xdb202['toLowerCase']();};}exports[_0xd21a('0x36')]=function(_0x20264b,_0x4b868c,_0x39e279,_0x5111ae){return function(_0x5e371b){try{var _0xa0d7f4={'name':_0x4b868c[0x0],'timeout':_0x4b868c[0x1]};var _0x2de67b=queue['validate'](_0xa0d7f4,{'typecast':!![]});if(_0x2de67b[_0xd21a('0x37')]){logger['error'](_0xd21a('0x38'),_0x20264b,_[_0xd21a('0x39')](_0x2de67b,'message')['join'](',\x20'));_0x5e371b[_0xd21a('0x3a')]();}else{var _0x4cf5a0=_[_0xd21a('0x3b')](_0x39e279[_0x5111ae['channel']+_0xd21a('0x3c')],handleFindQueue(_0xa0d7f4[_0xd21a('0x2b')]));if(_0x4cf5a0){startRouting(_0x20264b,_0x4cf5a0,_0x5111ae,_0x39e279);var _0x302e4d=(_0x4cf5a0[_0xd21a('0x33')]||0xa)*0x3e8;var _0x57cb5f=(_0xa0d7f4[_0xd21a('0x33')]||0x14)*0x3e8;var _0x5e3b9d,_0x5168e6;if(_0x302e4d>_0x57cb5f){_0x57cb5f=_0x302e4d;}var _0x2c8bcc=seqqueue[_0xd21a('0x3d')](_0x302e4d);_0x2c8bcc['id']=_0x20264b;_0x2c8bcc['atimeout']=_0x302e4d;_0x2c8bcc[_0xd21a('0x3e')]=_0x57cb5f;_0x2c8bcc['channel']=_0x5111ae[_0xd21a('0x20')];_0x39e279[_0xd21a('0x3f')][_0x20264b]['on'](_0xd21a('0x40'),function(){stopRouting(_0x20264b,_0x4cf5a0,_0x5111ae,_0x39e279);_0x2c8bcc[_0xd21a('0x41')](!![]);clearTimeout(_0x5e3b9d);_0x5e3b9d=undefined;if(_0x39e279[_0xd21a('0x3f')][_0x20264b]){delete _0x39e279[_0xd21a('0x3f')][_0x20264b];}logger[_0xd21a('0x29')](_0xd21a('0x42'),_0x20264b);_0x5e371b[_0xd21a('0x3a')]();});_0x5e3b9d=setTimeout(function(){endRouting(_0x20264b,_0x4cf5a0,_0x5111ae,_0x39e279);clearTimeout(_0x5e3b9d);_0x2c8bcc[_0xd21a('0x41')](!![]);logger[_0xd21a('0x29')](_0xd21a('0x43'),_0x20264b);_0x5e371b[_0xd21a('0x44')]();},_0x57cb5f);switch(_0x4cf5a0[_0xd21a('0x45')]){case _0xd21a('0x46'):strategy[_0xd21a('0x46')](_0x2c8bcc,_0x4cf5a0,_0x39e279,_0x5111ae);break;default:strategy[_0xd21a('0x47')](_0x2c8bcc,_0x4cf5a0,_0x39e279,_0x5111ae);}}else{logger[_0xd21a('0x2f')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x20264b,_0xa0d7f4[_0xd21a('0x2b')]);_0x5e371b['stop']();}}}catch(_0x1c19b6){console[_0xd21a('0x48')](_0x1c19b6);logger[_0xd21a('0x2f')]('[%s][QUEUE]\x20%s',_0x20264b,_0x1c19b6[_0xd21a('0x49')]);_0x5e371b[_0xd21a('0x3a')]();}};};