Built motion from commit (unavailable).|2.4.20
[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 _0x4483=['pick','%s:queue:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','body','from','YYYY-MM-DD\x20HH:mm:ss','list','upperFirst','channel','InteractionId','interaction','MessageId','message','chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','catch','accepted','[%s][STOP:QUEUE][NAME:%s]','error','update\x20queue\x20report','waiting','timeout','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','find','Queues','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','log','stack','validate','lodash','util','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','queue_id','account','joinAt','emit','clone','queue','format'];(function(_0x334a86,_0x4c5fca){var _0x548e25=function(_0x202418){while(--_0x202418){_0x334a86['push'](_0x334a86['shift']());}};_0x548e25(++_0x4c5fca);}(_0x4483,0x1a3));var _0x3448=function(_0x3bd6e0,_0x13c85a){_0x3bd6e0=_0x3bd6e0-0x0;var _0x2766e3=_0x4483[_0x3bd6e0];return _0x2766e3;};'use strict';var schema=require(_0x3448('0x0'));var _=require(_0x3448('0x1'));var util=require(_0x3448('0x2'));var seqqueue=require('seq-queue');var moment=require(_0x3448('0x3'));var Redis=require(_0x3448('0x4'));var config=require(_0x3448('0x5'));var logger=require(_0x3448('0x6'))(_0x3448('0x7'));var strategy=require('./strategy');config[_0x3448('0x8')]=_[_0x3448('0x9')](config[_0x3448('0x8')],{'host':_0x3448('0xa'),'port':0x18eb});var io=require(_0x3448('0xb'))(new Redis(config[_0x3448('0x8')]));var attributes=['id',_0x3448('0xc'),_0x3448('0xd'),'queue','from',_0x3448('0xe')];function emit(_0x25c152,_0xc36409,_0x6f82ca){io['to'](_0x25c152)[_0x3448('0xf')](_0xc36409,_0x6f82ca);}function emitChannelQueueInteraction(_0x1e645a,_0x2bdf02,_0x32cd61,_0x39bd9e,_0x35bb7b,_0x2a6048,_0x481a6f,_0x5bf09e){var _0x298ae6=_[_0x3448('0x10')](_0x32cd61);_0x298ae6['queue_id']=_0x5bf09e;_0x298ae6[_0x3448('0x11')]=_0x2bdf02;_0x298ae6[_0x3448('0xd')]=_0x39bd9e;_0x298ae6['id']=_0x35bb7b;if(_0x2a6048){_0x481a6f[util[_0x3448('0x12')]('%sQueuesWaitingInteractions',_0x1e645a)][_0x35bb7b]=_[_0x3448('0x13')](_0x298ae6,attributes);}else{delete _0x481a6f[util[_0x3448('0x12')]('%sQueuesWaitingInteractions',_0x1e645a)][_0x35bb7b];}emit(util[_0x3448('0x12')](_0x3448('0x14'),_0x1e645a,_0x2bdf02),util[_0x3448('0x12')]('%s_queue_waiting_interaction:%s',_0x1e645a,_0x2a6048?_0x3448('0x15'):_0x3448('0x16')),_[_0x3448('0x13')](_0x298ae6,attributes));}var rpc={'openchannelQueueReport':require(_0x3448('0x17')),'mailQueueReport':require(_0x3448('0x18')),'chatQueueReport':require(_0x3448('0x19')),'smsQueueReport':require(_0x3448('0x1a')),'faxQueueReport':require(_0x3448('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x3448('0x1c')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x53f8e7,_0x1e9774,_0x278736,_0xda4040){if(_0x53f8e7&&_0x1e9774&&_0x278736){_0x1e9774['waiting']+=0x1;var _0x3df082={'uniqueid':_0x53f8e7,'from':_0x278736[_0x3448('0x1d')]?_0x278736[_0x3448('0x1d')][_0x3448('0x1e')]:'','joinAt':moment()[_0x3448('0x12')](_0x3448('0x1f')),'ContactId':_0x278736['contact']?_0x278736['contact']['id']:null,'ListId':_0x278736['list']?_0x278736[_0x3448('0x20')]['id']:null};_0x3df082[_[_0x3448('0x21')](_0x278736['channel'])+'QueueId']=_0x1e9774['id']||null;_0x3df082[_[_0x3448('0x21')](_0x278736[_0x3448('0x22')])+_0x3448('0x23')]=_0x278736[_0x3448('0x24')]?_0x278736[_0x3448('0x24')]['id']:null;_0x3df082[_['upperFirst'](_0x278736[_0x3448('0x22')])+_0x3448('0x25')]=_0x278736[_0x3448('0x26')]?_0x278736[_0x3448('0x26')]['id']:null;_0x3df082[_[_0x3448('0x21')](_0x278736['channel'])+(_0x278736[_0x3448('0x22')]!==_0x3448('0x27')?'AccountId':_0x3448('0x28'))]=_0x278736[_0x3448('0xd')]?_0x278736[_0x3448('0xd')]['id']:null;logger[_0x3448('0x29')](util[_0x3448('0x12')](_0x3448('0x2a'),_0x53f8e7,_0x1e9774[_0x3448('0x2b')]));emitChannelQueueInteraction(_0x278736[_0x3448('0x22')],_0x1e9774['name'],_0x3df082,_0x278736[_0x3448('0xd')][_0x3448('0x2b')],_0x278736[_0x3448('0x26')]['id'],!![],_0xda4040,_0x1e9774['id']);if(rpc[_0x278736['channel']+_0x3448('0x2c')]){return rpc[_0x278736['channel']+'QueueReport']['create'](_0x3df082)[_0x3448('0x2d')](function(_0xff6513){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x3d2a83,_0x37ceac,_0x32121c,_0x1e99ff){if(_0x3d2a83&&_0x37ceac){_0x37ceac['waiting']-=0x1;var _0x2df6fc={'leaveAt':moment()[_0x3448('0x12')](_0x3448('0x1f')),'acceptAt':moment()['format'](_0x3448('0x1f')),'reason':_0x3448('0x2e')};logger['info'](util['format'](_0x3448('0x2f'),_0x3d2a83,_0x37ceac[_0x3448('0x2b')]));emitChannelQueueInteraction(_0x32121c[_0x3448('0x22')],_0x37ceac[_0x3448('0x2b')],_0x32121c['body'],_0x32121c[_0x3448('0xd')][_0x3448('0x2b')],_0x32121c[_0x3448('0x26')]['id'],![],_0x1e99ff,_0x37ceac['id']);if(rpc[_0x32121c[_0x3448('0x22')]+'QueueReport']){return rpc[_0x32121c[_0x3448('0x22')]+_0x3448('0x2c')]['update'](_0x3d2a83,_0x2df6fc)[_0x3448('0x2d')](function(_0x25d3df){logger[_0x3448('0x30')](_0x3448('0x31'));});}}}function endRouting(_0x14a830,_0x31586a,_0x32592f,_0xd91216){if(_0x14a830&&_0x31586a){_0x31586a[_0x3448('0x32')]-=0x1;var _0x49c469={'leaveAt':moment()['format'](_0x3448('0x1f')),'exitAt':moment()['format'](_0x3448('0x1f')),'reason':_0x3448('0x33')};logger[_0x3448('0x29')](util[_0x3448('0x12')]('[%s][END:QUEUE][NAME:%s]',_0x14a830,_0x31586a[_0x3448('0x2b')]));emitChannelQueueInteraction(_0x32592f[_0x3448('0x22')],_0x31586a[_0x3448('0x2b')],_0x32592f[_0x3448('0x1d')],_0x32592f[_0x3448('0xd')][_0x3448('0x2b')],_0x32592f[_0x3448('0x26')]['id'],![],_0xd91216);if(rpc[_0x32592f[_0x3448('0x22')]+_0x3448('0x2c')]){return rpc[_0x32592f['channel']+_0x3448('0x2c')][_0x3448('0x34')](_0x14a830,_0x49c469)[_0x3448('0x2d')](function(_0x2bc2e7){logger[_0x3448('0x30')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x18b297){return function(_0x1b7284){return _0x1b7284[_0x3448('0x2b')][_0x3448('0x35')]()===_0x18b297[_0x3448('0x35')]();};}exports[_0x3448('0x36')]=function(_0x415985,_0x3db5f1,_0x4a8f80,_0x399246){return function(_0x3d96be){try{var _0x32468a={'name':_0x3db5f1[0x0],'timeout':_0x3db5f1[0x1]};var _0x4a04d0=queue[_0x3448('0x0')](_0x32468a,{'typecast':!![]});if(_0x4a04d0[_0x3448('0x37')]){logger[_0x3448('0x30')](_0x3448('0x38'),_0x415985,_[_0x3448('0x39')](_0x4a04d0,_0x3448('0x26'))[_0x3448('0x3a')](',\x20'));_0x3d96be['stop']();}else{var _0x2165c7=_[_0x3448('0x3b')](_0x4a8f80[_0x399246[_0x3448('0x22')]+_0x3448('0x3c')],handleFindQueue(_0x32468a[_0x3448('0x2b')]));if(_0x2165c7){startRouting(_0x415985,_0x2165c7,_0x399246,_0x4a8f80);var _0x33aa31=(_0x2165c7['timeout']||0xa)*0x3e8;var _0xcd75af=(_0x32468a['timeout']||0x14)*0x3e8;var _0x4be942,_0x164b37;if(_0x33aa31>_0xcd75af){_0xcd75af=_0x33aa31;}var _0x297343=seqqueue['createQueue'](_0x33aa31);_0x297343['id']=_0x415985;_0x297343[_0x3448('0x3d')]=_0x33aa31;_0x297343[_0x3448('0x3e')]=_0xcd75af;_0x297343['channel']=_0x399246[_0x3448('0x22')];_0x4a8f80[_0x3448('0x3f')][_0x415985]['on']('end',function(){logger[_0x3448('0x29')](_0x3448('0x40'),_0x415985);stopRouting(_0x415985,_0x2165c7,_0x399246,_0x4a8f80);clearTimeout(_0x4be942);_0x4be942=undefined;_0x297343[_0x3448('0x41')](!![]);if(_0x4a8f80[_0x3448('0x3f')][_0x415985]){delete _0x4a8f80[_0x3448('0x3f')][_0x415985];}_0x3d96be[_0x3448('0x42')]();});_0x4a8f80[_0x3448('0x3f')][_0x415985]['on']('complete',function(){if(_0x4a8f80['rules'][_0x415985]){delete _0x4a8f80[_0x3448('0x3f')][_0x415985];}});_0x4be942=setTimeout(function(){logger[_0x3448('0x29')](_0x3448('0x43'),_0x415985);endRouting(_0x415985,_0x2165c7,_0x399246,_0x4a8f80);clearTimeout(_0x4be942);_0x297343[_0x3448('0x41')](!![]);_0x3d96be['next']();},_0xcd75af);switch(_0x2165c7[_0x3448('0x44')]){case _0x3448('0x45'):strategy[_0x3448('0x45')](_0x297343,_0x2165c7,_0x4a8f80,_0x399246);break;default:strategy[_0x3448('0x46')](_0x297343,_0x2165c7,_0x4a8f80,_0x399246);}}else{logger[_0x3448('0x30')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x415985,_0x32468a[_0x3448('0x2b')]);_0x3d96be['stop']();}}}catch(_0xb5e250){console[_0x3448('0x47')](_0xb5e250);logger['error'](_0x3448('0x38'),_0x415985,_0xb5e250[_0x3448('0x48')]);_0x3d96be[_0x3448('0x42')]();}};};