Built motion from commit 67e5df37.|2.0.66
[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 _0x713c=['../../rpc/smsQueueReport','../../rpc/faxQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','MessageId','message','chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','catch','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','createQueue','atimeout','qtimeout','rules','close','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','moment','../../../../config/logger','routing','./strategy','socket.io-emitter','localhost','queue','from','joinAt','emit','account','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x713c,0x1e1));var _0xc713=function(_0x4b1da6,_0x4664a4){_0x4b1da6=_0x4b1da6-0x0;var _0x1de06d=_0x713c[_0x4b1da6];return _0x1de06d;};'use strict';var schema=require(_0xc713('0x0'));var _=require(_0xc713('0x1'));var util=require(_0xc713('0x2'));var seqqueue=require(_0xc713('0x3'));var moment=require(_0xc713('0x4'));var logger=require(_0xc713('0x5'))(_0xc713('0x6'));var strategy=require(_0xc713('0x7'));var io=require(_0xc713('0x8'))({'host':_0xc713('0x9'),'port':0x18eb});var attributes=['id','account',_0xc713('0xa'),_0xc713('0xb'),_0xc713('0xc')];function emit(_0x5da6c4,_0x1c289e){io[_0xc713('0xd')](_0x5da6c4,_0x1c289e);}function emitChannelQueueInteraction(_0x2655a1,_0x36fe59,_0x2be870,_0x17f247,_0x5fadfe,_0x523c22,_0x391977){_0x2be870[_0xc713('0xa')]=_0x36fe59;_0x2be870[_0xc713('0xe')]=_0x17f247;_0x2be870['id']=_0x5fadfe;if(_0x523c22){_0x391977[util[_0xc713('0xf')](_0xc713('0x10'),_0x2655a1)][_0x5fadfe]=_[_0xc713('0x11')](_0x2be870,attributes);}else{delete _0x391977[util[_0xc713('0xf')]('%sQueuesWaitingInteractions',_0x2655a1)][_0x5fadfe];}emit(util[_0xc713('0xf')](_0xc713('0x12'),_0x2655a1,_0x523c22?_0xc713('0x13'):_0xc713('0x14')),_['pick'](_0x2be870,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xc713('0x15')),'chatQueueReport':require(_0xc713('0x16')),'smsQueueReport':require(_0xc713('0x17')),'faxQueueReport':require(_0xc713('0x18'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xc713('0x19')},'timeout':{'type':_0xc713('0x1a'),'message':_0xc713('0x1b')}});function startRouting(_0x3438e7,_0x723e0,_0xfb3645,_0x5344e0){if(_0x3438e7&&_0x723e0&&_0xfb3645){_0x723e0[_0xc713('0x1c')]+=0x1;var _0x546b64={'uniqueid':_0x3438e7,'from':_0xfb3645[_0xc713('0x1d')]?_0xfb3645['body'][_0xc713('0xb')]:'','joinAt':moment()[_0xc713('0xf')](_0xc713('0x1e')),'ContactId':_0xfb3645[_0xc713('0x1f')]?_0xfb3645[_0xc713('0x1f')]['id']:null,'ListId':_0xfb3645[_0xc713('0x20')]?_0xfb3645['list']['id']:null};_0x546b64[_[_0xc713('0x21')](_0xfb3645[_0xc713('0x22')])+'QueueId']=_0x723e0['id']||null;_0x546b64[_[_0xc713('0x21')](_0xfb3645[_0xc713('0x22')])+_0xc713('0x23')]=_0xfb3645['interaction']?_0xfb3645[_0xc713('0x24')]['id']:null;_0x546b64[_[_0xc713('0x21')](_0xfb3645['channel'])+_0xc713('0x25')]=_0xfb3645[_0xc713('0x26')]?_0xfb3645[_0xc713('0x26')]['id']:null;_0x546b64[_[_0xc713('0x21')](_0xfb3645[_0xc713('0x22')])+(_0xfb3645[_0xc713('0x22')]!==_0xc713('0x27')?'AccountId':_0xc713('0x28'))]=_0xfb3645[_0xc713('0xe')]?_0xfb3645[_0xc713('0xe')]['id']:null;logger[_0xc713('0x29')](util['format'](_0xc713('0x2a'),_0x3438e7,_0x723e0[_0xc713('0x2b')]));emitChannelQueueInteraction(_0xfb3645['channel'],_0x723e0[_0xc713('0x2b')],_0x546b64,_0xfb3645[_0xc713('0xe')][_0xc713('0x2b')],_0xfb3645[_0xc713('0x26')]['id'],!![],_0x5344e0);if(rpc[_0xfb3645[_0xc713('0x22')]+_0xc713('0x2c')]){return rpc[_0xfb3645[_0xc713('0x22')]+_0xc713('0x2c')]['create'](_0x546b64)[_0xc713('0x2d')](function(_0xfba6db){logger['error'](_0xc713('0x2e'));});}}}function stopRouting(_0x28e936,_0x1207d6,_0x9f7829,_0x35cd26){if(_0x28e936&&_0x1207d6){_0x1207d6[_0xc713('0x1c')]-=0x1;var _0x764022={'leaveAt':moment()[_0xc713('0xf')](_0xc713('0x1e')),'acceptAt':moment()[_0xc713('0xf')](_0xc713('0x1e')),'reason':_0xc713('0x2f')};logger[_0xc713('0x29')](util[_0xc713('0xf')](_0xc713('0x30'),_0x28e936,_0x1207d6[_0xc713('0x2b')]));emitChannelQueueInteraction(_0x9f7829['channel'],_0x1207d6[_0xc713('0x2b')],_0x9f7829[_0xc713('0x1d')],_0x9f7829[_0xc713('0xe')][_0xc713('0x2b')],_0x9f7829[_0xc713('0x26')]['id'],![],_0x35cd26);if(rpc[_0x9f7829[_0xc713('0x22')]+_0xc713('0x2c')]){return rpc[_0x9f7829['channel']+_0xc713('0x2c')][_0xc713('0x31')](_0x28e936,_0x764022)['catch'](function(_0x5945b8){logger[_0xc713('0x32')](_0xc713('0x33'));});}}}function endRouting(_0x532ab7,_0xc65dbe,_0xf5847,_0x167986){if(_0x532ab7&&_0xc65dbe){_0xc65dbe[_0xc713('0x1c')]-=0x1;var _0xe9af90={'leaveAt':moment()[_0xc713('0xf')](_0xc713('0x1e')),'exitAt':moment()[_0xc713('0xf')](_0xc713('0x1e')),'reason':_0xc713('0x34')};logger[_0xc713('0x29')](util['format'](_0xc713('0x35'),_0x532ab7,_0xc65dbe[_0xc713('0x2b')]));emitChannelQueueInteraction(_0xf5847[_0xc713('0x22')],_0xc65dbe['name'],_0xf5847[_0xc713('0x1d')],_0xf5847[_0xc713('0xe')][_0xc713('0x2b')],_0xf5847[_0xc713('0x26')]['id'],![],_0x167986);if(rpc[_0xf5847[_0xc713('0x22')]+'QueueReport']){return rpc[_0xf5847['channel']+_0xc713('0x2c')][_0xc713('0x31')](_0x532ab7,_0xe9af90)[_0xc713('0x2d')](function(_0xed99f0){logger['error']('update\x20queue\x20report');});}}}function handleFindQueue(_0x2d1e26){return function(_0x3e57b3){return _0x3e57b3[_0xc713('0x2b')][_0xc713('0x36')]()===_0x2d1e26[_0xc713('0x36')]();};}exports[_0xc713('0x37')]=function(_0x4599a6,_0x3e40b5,_0x202f66,_0x294242){return function(_0x4856e8){try{var _0x3194b8={'name':_0x3e40b5[0x0],'timeout':_0x3e40b5[0x1]};var _0x1cd7d1=queue[_0xc713('0x0')](_0x3194b8,{'typecast':!![]});if(_0x1cd7d1[_0xc713('0x38')]){logger[_0xc713('0x32')](_0xc713('0x39'),_0x4599a6,_[_0xc713('0x3a')](_0x1cd7d1,_0xc713('0x26'))[_0xc713('0x3b')](',\x20'));_0x4856e8[_0xc713('0x3c')]();}else{var _0x55b351=_[_0xc713('0x3d')](_0x202f66[_0x294242['channel']+'Queues'],handleFindQueue(_0x3194b8[_0xc713('0x2b')]));if(_0x55b351){startRouting(_0x4599a6,_0x55b351,_0x294242,_0x202f66);var _0x254e46=(_0x55b351['timeout']||0xa)*0x3e8;var _0xf25b55=(_0x3194b8[_0xc713('0x34')]||0x14)*0x3e8;var _0xb0fabf,_0x34450c;if(_0x254e46>_0xf25b55){_0xf25b55=_0x254e46;}var _0x3a8e9e=seqqueue[_0xc713('0x3e')](_0x254e46);_0x3a8e9e['id']=_0x4599a6;_0x3a8e9e[_0xc713('0x3f')]=_0x254e46;_0x3a8e9e[_0xc713('0x40')]=_0xf25b55;_0x3a8e9e[_0xc713('0x22')]=_0x294242[_0xc713('0x22')];_0x34450c=setInterval(function(){if(_0x202f66[_0xc713('0x41')]&&!_0x202f66[_0xc713('0x41')][_0x4599a6]){stopRouting(_0x4599a6,_0x55b351,_0x294242,_0x202f66);clearTimeout(_0xb0fabf);clearInterval(_0x34450c);_0xb0fabf=undefined;_0x3a8e9e['close'](!![]);_0x4856e8[_0xc713('0x3c')]();}},0x3e8);_0xb0fabf=setTimeout(function(){endRouting(_0x4599a6,_0x55b351,_0x294242,_0x202f66);clearInterval(_0x34450c);_0x34450c=undefined;_0x3a8e9e[_0xc713('0x42')](!![]);_0x4856e8['next']();},_0xf25b55);switch(_0x55b351[_0xc713('0x43')]){case _0xc713('0x44'):strategy[_0xc713('0x44')](_0x3a8e9e,_0x55b351,_0x202f66,_0x294242);break;default:strategy[_0xc713('0x45')](_0x3a8e9e,_0x55b351,_0x202f66,_0x294242);}}else{logger['error'](_0xc713('0x46'),_0x4599a6,_0x3194b8[_0xc713('0x2b')]);_0x4856e8[_0xc713('0x3c')]();}}}catch(_0x5e0643){console[_0xc713('0x47')](_0x5e0643);logger[_0xc713('0x32')](_0xc713('0x39'),_0x4599a6,JSON['stringify'](_0x5e0643));_0x4856e8[_0xc713('0x3c')]();}};};