Built motion from commit ff78e754.|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 _0x0cda=['chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','body','Interaction','update','interaction','then','update\x20queue\x20report','timeout','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','find','Queues','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','validate','lodash','util','moment','ioredis','../../../../config/environment','routing','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','clone','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/chatInteraction','../../rpc/faxInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','string','timeout\x20is\x20a\x20number','waiting','contact','list','upperFirst','channel','QueueId','MessageId','message'];(function(_0x5a6908,_0x1ff3e9){var _0x368858=function(_0x58a051){while(--_0x58a051){_0x5a6908['push'](_0x5a6908['shift']());}};_0x368858(++_0x1ff3e9);}(_0x0cda,0x80));var _0xa0cd=function(_0x27762a,_0x14d249){_0x27762a=_0x27762a-0x0;var _0x111a98=_0x0cda[_0x27762a];return _0x111a98;};'use strict';var schema=require(_0xa0cd('0x0'));var _=require(_0xa0cd('0x1'));var util=require(_0xa0cd('0x2'));var seqqueue=require('seq-queue');var moment=require(_0xa0cd('0x3'));var Redis=require(_0xa0cd('0x4'));var config=require(_0xa0cd('0x5'));var logger=require('../../../../config/logger')(_0xa0cd('0x6'));var strategy=require('./strategy');config[_0xa0cd('0x7')]=_[_0xa0cd('0x8')](config[_0xa0cd('0x7')],{'host':_0xa0cd('0x9'),'port':0x18eb});var io=require(_0xa0cd('0xa'))(new Redis(config[_0xa0cd('0x7')]));var attributes=['id',_0xa0cd('0xb'),_0xa0cd('0xc'),_0xa0cd('0xd'),_0xa0cd('0xe'),_0xa0cd('0xf')];function emit(_0x2e0721,_0x5c389a,_0x29b6d1){io['to'](_0x2e0721)[_0xa0cd('0x10')](_0x5c389a,_0x29b6d1);}function emitChannelQueueInteraction(_0x76deb3,_0x84335b,_0x1c35ac,_0x496308,_0x5aa86d,_0x152ff3,_0x344bbb,_0x464e23){var _0x223f50=_[_0xa0cd('0x11')](_0x1c35ac);_0x223f50[_0xa0cd('0xb')]=_0x464e23;_0x223f50[_0xa0cd('0xd')]=_0x84335b;_0x223f50[_0xa0cd('0xc')]=_0x496308;_0x223f50['id']=_0x5aa86d;if(_0x152ff3){attributes[_0xa0cd('0x12')](_[_0xa0cd('0x13')](_0x76deb3)+_0xa0cd('0x14'));_0x344bbb[util[_0xa0cd('0x15')](_0xa0cd('0x16'),_0x76deb3)][_0x5aa86d]=_[_0xa0cd('0x17')](_0x223f50,attributes);}else{delete _0x344bbb[util[_0xa0cd('0x15')]('%sQueuesWaitingInteractions',_0x76deb3)][_0x5aa86d];}emit(util[_0xa0cd('0x15')](_0xa0cd('0x18'),_0x76deb3,_0x84335b),util[_0xa0cd('0x15')](_0xa0cd('0x19'),_0x76deb3,_0x152ff3?_0xa0cd('0x1a'):_0xa0cd('0x1b')),_['pick'](_0x223f50,attributes));}var rpc={'openchannelQueueReport':require(_0xa0cd('0x1c')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xa0cd('0x1d')),'smsQueueReport':require(_0xa0cd('0x1e')),'faxQueueReport':require(_0xa0cd('0x1f')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport'),'chatInteraction':require(_0xa0cd('0x20')),'faxInteraction':require(_0xa0cd('0x21')),'mailInteraction':require(_0xa0cd('0x22')),'openchannelInteraction':require(_0xa0cd('0x23')),'smsInteraction':require(_0xa0cd('0x24')),'whatsappInteraction':require(_0xa0cd('0x25'))};var queue=schema({'name':{'type':_0xa0cd('0x26'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0xa0cd('0x27')}});function startRouting(_0x3fbf69,_0x38c4ef,_0x979962,_0x366c93){if(_0x3fbf69&&_0x38c4ef&&_0x979962){_0x38c4ef[_0xa0cd('0x28')]+=0x1;var _0x1e1b84={'uniqueid':_0x3fbf69,'from':_0x979962['body']?_0x979962['body'][_0xa0cd('0xe')]:'','joinAt':moment()[_0xa0cd('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x979962[_0xa0cd('0x29')]?_0x979962[_0xa0cd('0x29')]['id']:null,'ListId':_0x979962[_0xa0cd('0x2a')]?_0x979962[_0xa0cd('0x2a')]['id']:null};_0x1e1b84[_[_0xa0cd('0x2b')](_0x979962[_0xa0cd('0x2c')])+_0xa0cd('0x2d')]=_0x38c4ef['id']||null;_0x1e1b84[_[_0xa0cd('0x2b')](_0x979962[_0xa0cd('0x2c')])+_0xa0cd('0x14')]=_0x979962['interaction']?_0x979962['interaction']['id']:null;_0x1e1b84[_['upperFirst'](_0x979962[_0xa0cd('0x2c')])+_0xa0cd('0x2e')]=_0x979962[_0xa0cd('0x2f')]?_0x979962[_0xa0cd('0x2f')]['id']:null;_0x1e1b84[_[_0xa0cd('0x2b')](_0x979962[_0xa0cd('0x2c')])+(_0x979962[_0xa0cd('0x2c')]!==_0xa0cd('0x30')?'AccountId':_0xa0cd('0x31'))]=_0x979962[_0xa0cd('0xc')]?_0x979962[_0xa0cd('0xc')]['id']:null;logger[_0xa0cd('0x32')](util['format'](_0xa0cd('0x33'),_0x3fbf69,_0x38c4ef[_0xa0cd('0x34')]));emitChannelQueueInteraction(_0x979962['channel'],_0x38c4ef[_0xa0cd('0x34')],_0x1e1b84,_0x979962['account']['name'],_0x979962[_0xa0cd('0x2f')]['id'],!![],_0x366c93,_0x38c4ef['id']);if(rpc[_0x979962[_0xa0cd('0x2c')]+_0xa0cd('0x35')]){return rpc[_0x979962[_0xa0cd('0x2c')]+_0xa0cd('0x35')][_0xa0cd('0x36')](_0x1e1b84)[_0xa0cd('0x37')](function(_0x5e5ea2){logger[_0xa0cd('0x38')]('create\x20queue\x20report',_0x5e5ea2);});}}}function stopRouting(_0x102fad,_0x46bb06,_0x41c344,_0x1a017d){if(_0x102fad&&_0x46bb06){_0x46bb06['waiting']-=0x1;var _0x1f21db={'leaveAt':moment()[_0xa0cd('0x15')](_0xa0cd('0x39')),'acceptAt':moment()['format'](_0xa0cd('0x39')),'reason':_0xa0cd('0x3a')};logger[_0xa0cd('0x32')](util[_0xa0cd('0x15')](_0xa0cd('0x3b'),_0x102fad,_0x46bb06[_0xa0cd('0x34')]));emitChannelQueueInteraction(_0x41c344['channel'],_0x46bb06[_0xa0cd('0x34')],_0x41c344[_0xa0cd('0x3c')],_0x41c344['account'][_0xa0cd('0x34')],_0x41c344[_0xa0cd('0x2f')]['id'],![],_0x1a017d,_0x46bb06['id']);return rpc[_0x41c344[_0xa0cd('0x2c')]+_0xa0cd('0x3d')][_0xa0cd('0x3e')](_0x41c344[_0xa0cd('0x3f')]['id'],{'queueId':_0x46bb06['id']})[_0xa0cd('0x40')](function(){if(rpc[_0x41c344[_0xa0cd('0x2c')]+_0xa0cd('0x35')]){return rpc[_0x41c344[_0xa0cd('0x2c')]+_0xa0cd('0x35')][_0xa0cd('0x3e')](_0x102fad,_0x1f21db)[_0xa0cd('0x37')](function(_0x2d024c){logger['error'](_0xa0cd('0x41'),_0x2d024c);});}});}}function endRouting(_0x15b525,_0x27adbd,_0x10d060,_0x2bb264){if(_0x15b525&&_0x27adbd){_0x27adbd[_0xa0cd('0x28')]-=0x1;var _0x19da14={'leaveAt':moment()[_0xa0cd('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xa0cd('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xa0cd('0x42')};logger['info'](util[_0xa0cd('0x15')]('[%s][END:QUEUE][NAME:%s]',_0x15b525,_0x27adbd[_0xa0cd('0x34')]));emitChannelQueueInteraction(_0x10d060[_0xa0cd('0x2c')],_0x27adbd[_0xa0cd('0x34')],_0x10d060[_0xa0cd('0x3c')],_0x10d060[_0xa0cd('0xc')][_0xa0cd('0x34')],_0x10d060[_0xa0cd('0x2f')]['id'],![],_0x2bb264);if(rpc[_0x10d060[_0xa0cd('0x2c')]+_0xa0cd('0x35')]){return rpc[_0x10d060[_0xa0cd('0x2c')]+_0xa0cd('0x35')][_0xa0cd('0x3e')](_0x15b525,_0x19da14)[_0xa0cd('0x37')](function(_0x38701c){logger[_0xa0cd('0x38')](_0xa0cd('0x41'),_0x38701c);});}}}function handleFindQueue(_0x4b4134){return function(_0x52b8c2){return _0x52b8c2[_0xa0cd('0x34')][_0xa0cd('0x43')]()===_0x4b4134[_0xa0cd('0x43')]();};}exports[_0xa0cd('0x44')]=function(_0x5d9033,_0x14aca5,_0x31989f,_0x4a5233){return function(_0x1f35b3){try{var _0x3b9399={'name':_0x14aca5[0x0],'timeout':_0x14aca5[0x1]};var _0x937142=queue['validate'](_0x3b9399,{'typecast':!![]});if(_0x937142[_0xa0cd('0x45')]){logger['error'](_0xa0cd('0x46'),_0x5d9033,_[_0xa0cd('0x47')](_0x937142,_0xa0cd('0x2f'))['join'](',\x20'));_0x1f35b3['stop']();}else{var _0x5377ea=_[_0xa0cd('0x48')](_0x31989f[_0x4a5233[_0xa0cd('0x2c')]+_0xa0cd('0x49')],handleFindQueue(_0x3b9399[_0xa0cd('0x34')]));if(_0x5377ea){startRouting(_0x5d9033,_0x5377ea,_0x4a5233,_0x31989f);var _0x2b5407=(_0x5377ea['timeout']||0xa)*0x3e8;var _0x1ae7ca=(_0x3b9399[_0xa0cd('0x42')]||0x14)*0x3e8;var _0x3261f8;if(_0x2b5407>_0x1ae7ca){_0x1ae7ca=_0x2b5407;}var _0x1dcc07=seqqueue[_0xa0cd('0x4a')](_0x2b5407);_0x1dcc07['id']=_0x5d9033;_0x1dcc07[_0xa0cd('0x4b')]=_0x2b5407;_0x1dcc07['qtimeout']=_0x1ae7ca;_0x1dcc07[_0xa0cd('0x2c')]=_0x4a5233[_0xa0cd('0x2c')];_0x31989f[_0xa0cd('0x4c')][_0x5d9033]['on'](_0xa0cd('0x4d'),function(){logger['info'](_0xa0cd('0x4e'),_0x5d9033);stopRouting(_0x5d9033,_0x5377ea,_0x4a5233,_0x31989f);clearTimeout(_0x3261f8);_0x3261f8=undefined;_0x1dcc07[_0xa0cd('0x4f')](!![]);if(_0x31989f[_0xa0cd('0x4c')][_0x5d9033]){delete _0x31989f[_0xa0cd('0x4c')][_0x5d9033];}_0x1f35b3[_0xa0cd('0x50')]();});_0x31989f[_0xa0cd('0x4c')][_0x5d9033]['on'](_0xa0cd('0x51'),function(){if(_0x31989f['rules'][_0x5d9033]){delete _0x31989f[_0xa0cd('0x4c')][_0x5d9033];}});_0x3261f8=setTimeout(function(){logger['info'](_0xa0cd('0x52'),_0x5d9033);endRouting(_0x5d9033,_0x5377ea,_0x4a5233,_0x31989f);clearTimeout(_0x3261f8);_0x1dcc07['close'](!![]);_0x1f35b3[_0xa0cd('0x53')]();},_0x1ae7ca);switch(_0x5377ea[_0xa0cd('0x54')]){case _0xa0cd('0x55'):strategy[_0xa0cd('0x55')](_0x1dcc07,_0x5377ea,_0x31989f,_0x4a5233);break;default:strategy[_0xa0cd('0x56')](_0x1dcc07,_0x5377ea,_0x31989f,_0x4a5233);}}else{logger[_0xa0cd('0x38')](_0xa0cd('0x57'),_0x5d9033,_0x3b9399['name']);_0x1f35b3[_0xa0cd('0x50')]();}}}catch(_0x2117e2){logger[_0xa0cd('0x38')]('[%s][QUEUE]\x20%s',_0x5d9033,_0x2117e2['stack']);_0x1f35b3[_0xa0cd('0x50')]();}};};