Built motion from commit 00bf23f6.|2.6.16
[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 _0x53af=['../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','clone','InteractionId','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','chat','AccountId','info','name','QueueReport','create','catch','error','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','map','stop','Queues','atimeout','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','util','moment','ioredis','../../../../config/environment'];(function(_0x577a4b,_0x22c300){var _0x3f512f=function(_0x5ba009){while(--_0x5ba009){_0x577a4b['push'](_0x577a4b['shift']());}};_0x3f512f(++_0x22c300);}(_0x53af,0x171));var _0xf53a=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x53af[_0xfae23b];return _0x200640;};'use strict';var schema=require(_0xf53a('0x0'));var _=require(_0xf53a('0x1'));var util=require(_0xf53a('0x2'));var seqqueue=require('seq-queue');var moment=require(_0xf53a('0x3'));var Redis=require(_0xf53a('0x4'));var config=require(_0xf53a('0x5'));var logger=require(_0xf53a('0x6'))(_0xf53a('0x7'));var strategy=require(_0xf53a('0x8'));config[_0xf53a('0x9')]=_[_0xf53a('0xa')](config[_0xf53a('0x9')],{'host':_0xf53a('0xb'),'port':0x18eb});var io=require(_0xf53a('0xc'))(new Redis(config['redis']));var attributes=['id',_0xf53a('0xd'),_0xf53a('0xe'),_0xf53a('0xf'),_0xf53a('0x10'),_0xf53a('0x11')];function emit(_0x2828ba,_0x4789c0,_0x5709ce){io['to'](_0x2828ba)[_0xf53a('0x12')](_0x4789c0,_0x5709ce);}function emitChannelQueueInteraction(_0x230778,_0x1e92a1,_0x497ea0,_0x5ef4a2,_0xa9dcd5,_0x333d70,_0x1a3a47,_0x2493d1){var _0x44392b=_[_0xf53a('0x13')](_0x497ea0);_0x44392b[_0xf53a('0xd')]=_0x2493d1;_0x44392b[_0xf53a('0xf')]=_0x1e92a1;_0x44392b[_0xf53a('0xe')]=_0x5ef4a2;_0x44392b['id']=_0xa9dcd5;if(_0x333d70){attributes['push'](_['capitalize'](_0x230778)+_0xf53a('0x14'));_0x1a3a47[util['format'](_0xf53a('0x15'),_0x230778)][_0xa9dcd5]=_[_0xf53a('0x16')](_0x44392b,attributes);}else{delete _0x1a3a47[util[_0xf53a('0x17')](_0xf53a('0x15'),_0x230778)][_0xa9dcd5];}emit(util[_0xf53a('0x17')](_0xf53a('0x18'),_0x230778,_0x1e92a1),util[_0xf53a('0x17')](_0xf53a('0x19'),_0x230778,_0x333d70?'save':_0xf53a('0x1a')),_[_0xf53a('0x16')](_0x44392b,attributes));}var rpc={'openchannelQueueReport':require(_0xf53a('0x1b')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xf53a('0x1c')),'smsQueueReport':require(_0xf53a('0x1d')),'faxQueueReport':require(_0xf53a('0x1e')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xf53a('0x1f'),'required':!![],'message':_0xf53a('0x20')},'timeout':{'type':_0xf53a('0x21'),'message':_0xf53a('0x22')}});function startRouting(_0x46913d,_0x52fb32,_0x48682d,_0x13683a){if(_0x46913d&&_0x52fb32&&_0x48682d){_0x52fb32['waiting']+=0x1;var _0x11814e={'uniqueid':_0x46913d,'from':_0x48682d[_0xf53a('0x23')]?_0x48682d['body'][_0xf53a('0x10')]:'','joinAt':moment()[_0xf53a('0x17')](_0xf53a('0x24')),'ContactId':_0x48682d[_0xf53a('0x25')]?_0x48682d['contact']['id']:null,'ListId':_0x48682d[_0xf53a('0x26')]?_0x48682d['list']['id']:null};_0x11814e[_[_0xf53a('0x27')](_0x48682d[_0xf53a('0x28')])+'QueueId']=_0x52fb32['id']||null;_0x11814e[_[_0xf53a('0x27')](_0x48682d[_0xf53a('0x28')])+_0xf53a('0x14')]=_0x48682d[_0xf53a('0x29')]?_0x48682d[_0xf53a('0x29')]['id']:null;_0x11814e[_[_0xf53a('0x27')](_0x48682d[_0xf53a('0x28')])+_0xf53a('0x2a')]=_0x48682d[_0xf53a('0x2b')]?_0x48682d[_0xf53a('0x2b')]['id']:null;_0x11814e[_[_0xf53a('0x27')](_0x48682d[_0xf53a('0x28')])+(_0x48682d['channel']!==_0xf53a('0x2c')?_0xf53a('0x2d'):'WebsiteId')]=_0x48682d['account']?_0x48682d[_0xf53a('0xe')]['id']:null;logger[_0xf53a('0x2e')](util[_0xf53a('0x17')]('[%s][START:QUEUE][NAME:%s]',_0x46913d,_0x52fb32[_0xf53a('0x2f')]));emitChannelQueueInteraction(_0x48682d[_0xf53a('0x28')],_0x52fb32[_0xf53a('0x2f')],_0x11814e,_0x48682d[_0xf53a('0xe')][_0xf53a('0x2f')],_0x48682d[_0xf53a('0x2b')]['id'],!![],_0x13683a,_0x52fb32['id']);if(rpc[_0x48682d['channel']+'QueueReport']){return rpc[_0x48682d[_0xf53a('0x28')]+_0xf53a('0x30')][_0xf53a('0x31')](_0x11814e)[_0xf53a('0x32')](function(_0xdcd1a8){logger[_0xf53a('0x33')]('create\x20queue\x20report');});}}}function stopRouting(_0xffd7ee,_0x4b3b75,_0x2b0d42,_0x580982){if(_0xffd7ee&&_0x4b3b75){_0x4b3b75[_0xf53a('0x34')]-=0x1;var _0x255cae={'leaveAt':moment()[_0xf53a('0x17')](_0xf53a('0x24')),'acceptAt':moment()['format'](_0xf53a('0x24')),'reason':_0xf53a('0x35')};logger['info'](util[_0xf53a('0x17')](_0xf53a('0x36'),_0xffd7ee,_0x4b3b75[_0xf53a('0x2f')]));emitChannelQueueInteraction(_0x2b0d42[_0xf53a('0x28')],_0x4b3b75[_0xf53a('0x2f')],_0x2b0d42[_0xf53a('0x23')],_0x2b0d42[_0xf53a('0xe')]['name'],_0x2b0d42[_0xf53a('0x2b')]['id'],![],_0x580982,_0x4b3b75['id']);if(rpc[_0x2b0d42['channel']+_0xf53a('0x30')]){return rpc[_0x2b0d42[_0xf53a('0x28')]+_0xf53a('0x30')]['update'](_0xffd7ee,_0x255cae)[_0xf53a('0x32')](function(_0x5084be){logger[_0xf53a('0x33')](_0xf53a('0x37'));});}}}function endRouting(_0x2ad5cb,_0x2465e5,_0x39a48f,_0x114a0c){if(_0x2ad5cb&&_0x2465e5){_0x2465e5[_0xf53a('0x34')]-=0x1;var _0x2267b8={'leaveAt':moment()[_0xf53a('0x17')](_0xf53a('0x24')),'exitAt':moment()['format'](_0xf53a('0x24')),'reason':_0xf53a('0x38')};logger[_0xf53a('0x2e')](util[_0xf53a('0x17')](_0xf53a('0x39'),_0x2ad5cb,_0x2465e5[_0xf53a('0x2f')]));emitChannelQueueInteraction(_0x39a48f[_0xf53a('0x28')],_0x2465e5['name'],_0x39a48f[_0xf53a('0x23')],_0x39a48f[_0xf53a('0xe')][_0xf53a('0x2f')],_0x39a48f[_0xf53a('0x2b')]['id'],![],_0x114a0c);if(rpc[_0x39a48f['channel']+_0xf53a('0x30')]){return rpc[_0x39a48f['channel']+_0xf53a('0x30')][_0xf53a('0x3a')](_0x2ad5cb,_0x2267b8)['catch'](function(_0x2e37ee){logger[_0xf53a('0x33')](_0xf53a('0x37'));});}}}function handleFindQueue(_0x3786de){return function(_0x2d5ee1){return _0x2d5ee1[_0xf53a('0x2f')][_0xf53a('0x3b')]()===_0x3786de[_0xf53a('0x3b')]();};}exports[_0xf53a('0x3c')]=function(_0x299732,_0x5268a4,_0x1bb43c,_0x319bb0){return function(_0x3d42b4){try{var _0x109517={'name':_0x5268a4[0x0],'timeout':_0x5268a4[0x1]};var _0x313888=queue['validate'](_0x109517,{'typecast':!![]});if(_0x313888['length']){logger[_0xf53a('0x33')]('[%s][QUEUE]\x20%s',_0x299732,_[_0xf53a('0x3d')](_0x313888,'message')['join'](',\x20'));_0x3d42b4[_0xf53a('0x3e')]();}else{var _0x1300b3=_['find'](_0x1bb43c[_0x319bb0['channel']+_0xf53a('0x3f')],handleFindQueue(_0x109517[_0xf53a('0x2f')]));if(_0x1300b3){startRouting(_0x299732,_0x1300b3,_0x319bb0,_0x1bb43c);var _0x4c8b37=(_0x1300b3[_0xf53a('0x38')]||0xa)*0x3e8;var _0x3ae33c=(_0x109517[_0xf53a('0x38')]||0x14)*0x3e8;var _0x43d966;if(_0x4c8b37>_0x3ae33c){_0x3ae33c=_0x4c8b37;}var _0x5e4fad=seqqueue['createQueue'](_0x4c8b37);_0x5e4fad['id']=_0x299732;_0x5e4fad[_0xf53a('0x40')]=_0x4c8b37;_0x5e4fad['qtimeout']=_0x3ae33c;_0x5e4fad['channel']=_0x319bb0[_0xf53a('0x28')];_0x1bb43c['rules'][_0x299732]['on']('end',function(){logger[_0xf53a('0x2e')](_0xf53a('0x41'),_0x299732);stopRouting(_0x299732,_0x1300b3,_0x319bb0,_0x1bb43c);clearTimeout(_0x43d966);_0x43d966=undefined;_0x5e4fad[_0xf53a('0x42')](!![]);if(_0x1bb43c[_0xf53a('0x43')][_0x299732]){delete _0x1bb43c['rules'][_0x299732];}_0x3d42b4['stop']();});_0x1bb43c['rules'][_0x299732]['on']('complete',function(){if(_0x1bb43c[_0xf53a('0x43')][_0x299732]){delete _0x1bb43c[_0xf53a('0x43')][_0x299732];}});_0x43d966=setTimeout(function(){logger['info'](_0xf53a('0x44'),_0x299732);endRouting(_0x299732,_0x1300b3,_0x319bb0,_0x1bb43c);clearTimeout(_0x43d966);_0x5e4fad[_0xf53a('0x42')](!![]);_0x3d42b4[_0xf53a('0x45')]();},_0x3ae33c);switch(_0x1300b3['strategy']){case _0xf53a('0x46'):strategy[_0xf53a('0x46')](_0x5e4fad,_0x1300b3,_0x1bb43c,_0x319bb0);break;default:strategy[_0xf53a('0x47')](_0x5e4fad,_0x1300b3,_0x1bb43c,_0x319bb0);}}else{logger['error'](_0xf53a('0x48'),_0x299732,_0x109517['name']);_0x3d42b4[_0xf53a('0x3e')]();}}}catch(_0x12e7e3){console['log'](_0x12e7e3);logger[_0xf53a('0x33')](_0xf53a('0x49'),_0x299732,_0x12e7e3[_0xf53a('0x4a')]);_0x3d42b4['stop']();}};};