Built motion from commit 58b0471d.|2.6.29
[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 _0x5d1a=['validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','defaults','redis','queue_id','account','from','joinAt','emit','clone','queue','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/chatInteraction','../../rpc/faxInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/whatsappInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','catch','error','accepted','[%s][STOP:QUEUE][NAME:%s]','Interaction','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack'];(function(_0x4bf793,_0x404922){var _0x55a44b=function(_0xbbc6c0){while(--_0xbbc6c0){_0x4bf793['push'](_0x4bf793['shift']());}};_0x55a44b(++_0x404922);}(_0x5d1a,0xae));var _0xa5d1=function(_0x29aefc,_0x4dcf53){_0x29aefc=_0x29aefc-0x0;var _0x11be36=_0x5d1a[_0x29aefc];return _0x11be36;};'use strict';var schema=require(_0xa5d1('0x0'));var _=require(_0xa5d1('0x1'));var util=require(_0xa5d1('0x2'));var seqqueue=require(_0xa5d1('0x3'));var moment=require(_0xa5d1('0x4'));var Redis=require(_0xa5d1('0x5'));var config=require(_0xa5d1('0x6'));var logger=require(_0xa5d1('0x7'))(_0xa5d1('0x8'));var strategy=require(_0xa5d1('0x9'));config['redis']=_[_0xa5d1('0xa')](config[_0xa5d1('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa5d1('0xb')]));var attributes=['id',_0xa5d1('0xc'),_0xa5d1('0xd'),'queue',_0xa5d1('0xe'),_0xa5d1('0xf')];function emit(_0x34543c,_0x255952,_0x368a9e){io['to'](_0x34543c)[_0xa5d1('0x10')](_0x255952,_0x368a9e);}function emitChannelQueueInteraction(_0x2d614b,_0x41cdfd,_0x401a66,_0x12bf9a,_0x52aadb,_0x377aed,_0x594519,_0x5a04f4){var _0x4d53e5=_[_0xa5d1('0x11')](_0x401a66);_0x4d53e5[_0xa5d1('0xc')]=_0x5a04f4;_0x4d53e5[_0xa5d1('0x12')]=_0x41cdfd;_0x4d53e5[_0xa5d1('0xd')]=_0x12bf9a;_0x4d53e5['id']=_0x52aadb;if(_0x377aed){attributes[_0xa5d1('0x13')](_[_0xa5d1('0x14')](_0x2d614b)+_0xa5d1('0x15'));_0x594519[util[_0xa5d1('0x16')](_0xa5d1('0x17'),_0x2d614b)][_0x52aadb]=_[_0xa5d1('0x18')](_0x4d53e5,attributes);}else{delete _0x594519[util[_0xa5d1('0x16')](_0xa5d1('0x17'),_0x2d614b)][_0x52aadb];}emit(util[_0xa5d1('0x16')](_0xa5d1('0x19'),_0x2d614b,_0x41cdfd),util[_0xa5d1('0x16')](_0xa5d1('0x1a'),_0x2d614b,_0x377aed?_0xa5d1('0x1b'):_0xa5d1('0x1c')),_[_0xa5d1('0x18')](_0x4d53e5,attributes));}var rpc={'openchannelQueueReport':require(_0xa5d1('0x1d')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xa5d1('0x1e')),'smsQueueReport':require(_0xa5d1('0x1f')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport'),'chatInteraction':require(_0xa5d1('0x20')),'faxInteraction':require(_0xa5d1('0x21')),'mailInteraction':require(_0xa5d1('0x22')),'openchannelInteraction':require(_0xa5d1('0x23')),'smsInteraction':require('../../rpc/smsInteraction'),'whatsappInteraction':require(_0xa5d1('0x24'))};var queue=schema({'name':{'type':_0xa5d1('0x25'),'required':!![],'message':_0xa5d1('0x26')},'timeout':{'type':_0xa5d1('0x27'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x1c5b26,_0x14be6c,_0x581e52,_0xaacf5e){if(_0x1c5b26&&_0x14be6c&&_0x581e52){_0x14be6c[_0xa5d1('0x28')]+=0x1;var _0x4efeec={'uniqueid':_0x1c5b26,'from':_0x581e52[_0xa5d1('0x29')]?_0x581e52[_0xa5d1('0x29')][_0xa5d1('0xe')]:'','joinAt':moment()[_0xa5d1('0x16')](_0xa5d1('0x2a')),'ContactId':_0x581e52[_0xa5d1('0x2b')]?_0x581e52['contact']['id']:null,'ListId':_0x581e52[_0xa5d1('0x2c')]?_0x581e52['list']['id']:null};_0x4efeec[_[_0xa5d1('0x2d')](_0x581e52[_0xa5d1('0x2e')])+'QueueId']=_0x14be6c['id']||null;_0x4efeec[_[_0xa5d1('0x2d')](_0x581e52[_0xa5d1('0x2e')])+'InteractionId']=_0x581e52[_0xa5d1('0x2f')]?_0x581e52[_0xa5d1('0x2f')]['id']:null;_0x4efeec[_[_0xa5d1('0x2d')](_0x581e52[_0xa5d1('0x2e')])+_0xa5d1('0x30')]=_0x581e52[_0xa5d1('0x31')]?_0x581e52['message']['id']:null;_0x4efeec[_['upperFirst'](_0x581e52['channel'])+(_0x581e52[_0xa5d1('0x2e')]!==_0xa5d1('0x32')?_0xa5d1('0x33'):_0xa5d1('0x34'))]=_0x581e52[_0xa5d1('0xd')]?_0x581e52[_0xa5d1('0xd')]['id']:null;logger[_0xa5d1('0x35')](util[_0xa5d1('0x16')](_0xa5d1('0x36'),_0x1c5b26,_0x14be6c[_0xa5d1('0x37')]));emitChannelQueueInteraction(_0x581e52['channel'],_0x14be6c[_0xa5d1('0x37')],_0x4efeec,_0x581e52['account'][_0xa5d1('0x37')],_0x581e52[_0xa5d1('0x31')]['id'],!![],_0xaacf5e,_0x14be6c['id']);if(rpc[_0x581e52[_0xa5d1('0x2e')]+_0xa5d1('0x38')]){return rpc[_0x581e52[_0xa5d1('0x2e')]+_0xa5d1('0x38')]['create'](_0x4efeec)[_0xa5d1('0x39')](function(_0x42de27){logger[_0xa5d1('0x3a')]('create\x20queue\x20report',_0x42de27);});}}}function stopRouting(_0x1ebd50,_0x275979,_0x463a09,_0x38d047){if(_0x1ebd50&&_0x275979){_0x275979[_0xa5d1('0x28')]-=0x1;var _0x100e74={'leaveAt':moment()['format'](_0xa5d1('0x2a')),'acceptAt':moment()[_0xa5d1('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xa5d1('0x3b')};logger[_0xa5d1('0x35')](util['format'](_0xa5d1('0x3c'),_0x1ebd50,_0x275979[_0xa5d1('0x37')]));emitChannelQueueInteraction(_0x463a09[_0xa5d1('0x2e')],_0x275979[_0xa5d1('0x37')],_0x463a09[_0xa5d1('0x29')],_0x463a09[_0xa5d1('0xd')][_0xa5d1('0x37')],_0x463a09[_0xa5d1('0x31')]['id'],![],_0x38d047,_0x275979['id']);return rpc[_0x463a09['channel']+_0xa5d1('0x3d')][_0xa5d1('0x3e')](_0x463a09['interaction']['id'],{'queueId':_0x275979['id']})['then'](function(){if(rpc[_0x463a09[_0xa5d1('0x2e')]+_0xa5d1('0x38')]){return rpc[_0x463a09[_0xa5d1('0x2e')]+_0xa5d1('0x38')]['update'](_0x1ebd50,_0x100e74)[_0xa5d1('0x39')](function(_0x5ed7ef){logger[_0xa5d1('0x3a')](_0xa5d1('0x3f'),_0x5ed7ef);});}});}}function endRouting(_0xe9b76e,_0x51c0c5,_0x18fae7,_0xccb6bc){if(_0xe9b76e&&_0x51c0c5){_0x51c0c5[_0xa5d1('0x28')]-=0x1;var _0x39dc94={'leaveAt':moment()[_0xa5d1('0x16')](_0xa5d1('0x2a')),'exitAt':moment()['format'](_0xa5d1('0x2a')),'reason':_0xa5d1('0x40')};logger['info'](util['format'](_0xa5d1('0x41'),_0xe9b76e,_0x51c0c5[_0xa5d1('0x37')]));emitChannelQueueInteraction(_0x18fae7[_0xa5d1('0x2e')],_0x51c0c5[_0xa5d1('0x37')],_0x18fae7[_0xa5d1('0x29')],_0x18fae7[_0xa5d1('0xd')][_0xa5d1('0x37')],_0x18fae7[_0xa5d1('0x31')]['id'],![],_0xccb6bc);if(rpc[_0x18fae7[_0xa5d1('0x2e')]+_0xa5d1('0x38')]){return rpc[_0x18fae7[_0xa5d1('0x2e')]+_0xa5d1('0x38')][_0xa5d1('0x3e')](_0xe9b76e,_0x39dc94)['catch'](function(_0x4cc802){logger[_0xa5d1('0x3a')](_0xa5d1('0x3f'),_0x4cc802);});}}}function handleFindQueue(_0x25d870){return function(_0x549737){return _0x549737['name'][_0xa5d1('0x42')]()===_0x25d870[_0xa5d1('0x42')]();};}exports[_0xa5d1('0x43')]=function(_0x4ee25d,_0x43621f,_0x47cc41,_0x268be2){return function(_0x1d8ddc){try{var _0x1b83fc={'name':_0x43621f[0x0],'timeout':_0x43621f[0x1]};var _0x311906=queue[_0xa5d1('0x0')](_0x1b83fc,{'typecast':!![]});if(_0x311906[_0xa5d1('0x44')]){logger[_0xa5d1('0x3a')](_0xa5d1('0x45'),_0x4ee25d,_[_0xa5d1('0x46')](_0x311906,'message')[_0xa5d1('0x47')](',\x20'));_0x1d8ddc[_0xa5d1('0x48')]();}else{var _0x5f2b55=_[_0xa5d1('0x49')](_0x47cc41[_0x268be2[_0xa5d1('0x2e')]+_0xa5d1('0x4a')],handleFindQueue(_0x1b83fc[_0xa5d1('0x37')]));if(_0x5f2b55){startRouting(_0x4ee25d,_0x5f2b55,_0x268be2,_0x47cc41);var _0x3f82be=(_0x5f2b55[_0xa5d1('0x40')]||0xa)*0x3e8;var _0x25b0c9=(_0x1b83fc[_0xa5d1('0x40')]||0x14)*0x3e8;var _0x5c1239;if(_0x3f82be>_0x25b0c9){_0x25b0c9=_0x3f82be;}var _0x1f0b02=seqqueue['createQueue'](_0x3f82be);_0x1f0b02['id']=_0x4ee25d;_0x1f0b02[_0xa5d1('0x4b')]=_0x3f82be;_0x1f0b02[_0xa5d1('0x4c')]=_0x25b0c9;_0x1f0b02[_0xa5d1('0x2e')]=_0x268be2['channel'];_0x47cc41[_0xa5d1('0x4d')][_0x4ee25d]['on']('end',function(){logger[_0xa5d1('0x35')](_0xa5d1('0x4e'),_0x4ee25d);stopRouting(_0x4ee25d,_0x5f2b55,_0x268be2,_0x47cc41);clearTimeout(_0x5c1239);_0x5c1239=undefined;_0x1f0b02[_0xa5d1('0x4f')](!![]);if(_0x47cc41['rules'][_0x4ee25d]){delete _0x47cc41[_0xa5d1('0x4d')][_0x4ee25d];}_0x1d8ddc[_0xa5d1('0x48')]();});_0x47cc41[_0xa5d1('0x4d')][_0x4ee25d]['on'](_0xa5d1('0x50'),function(){if(_0x47cc41[_0xa5d1('0x4d')][_0x4ee25d]){delete _0x47cc41[_0xa5d1('0x4d')][_0x4ee25d];}});_0x5c1239=setTimeout(function(){logger['info'](_0xa5d1('0x51'),_0x4ee25d);endRouting(_0x4ee25d,_0x5f2b55,_0x268be2,_0x47cc41);clearTimeout(_0x5c1239);_0x1f0b02['close'](!![]);_0x1d8ddc[_0xa5d1('0x52')]();},_0x25b0c9);switch(_0x5f2b55[_0xa5d1('0x53')]){case _0xa5d1('0x54'):strategy[_0xa5d1('0x54')](_0x1f0b02,_0x5f2b55,_0x47cc41,_0x268be2);break;default:strategy['beepall'](_0x1f0b02,_0x5f2b55,_0x47cc41,_0x268be2);}}else{logger[_0xa5d1('0x3a')](_0xa5d1('0x55'),_0x4ee25d,_0x1b83fc[_0xa5d1('0x37')]);_0x1d8ddc[_0xa5d1('0x48')]();}}}catch(_0x2b853d){logger[_0xa5d1('0x3a')](_0xa5d1('0x45'),_0x4ee25d,_0x2b853d[_0xa5d1('0x56')]);_0x1d8ddc['stop']();}};};