Built motion from commit 85328c08.|2.5.50
[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 _0x9779=['moment','ioredis','../../../../config/environment','routing','./strategy','defaults','socket.io-emitter','redis','queue_id','queue','from','joinAt','emit','clone','account','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','message','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','waiting','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','join','stop','find','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue'];(function(_0x1b88b4,_0x29bf88){var _0x2f03fc=function(_0x49033b){while(--_0x49033b){_0x1b88b4['push'](_0x1b88b4['shift']());}};_0x2f03fc(++_0x29bf88);}(_0x9779,0xe1));var _0x9977=function(_0x5ecc0f,_0x333552){_0x5ecc0f=_0x5ecc0f-0x0;var _0x20c7e2=_0x9779[_0x5ecc0f];return _0x20c7e2;};'use strict';var schema=require('validate');var _=require(_0x9977('0x0'));var util=require(_0x9977('0x1'));var seqqueue=require(_0x9977('0x2'));var moment=require(_0x9977('0x3'));var Redis=require(_0x9977('0x4'));var config=require(_0x9977('0x5'));var logger=require('../../../../config/logger')(_0x9977('0x6'));var strategy=require(_0x9977('0x7'));config['redis']=_[_0x9977('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9977('0x9'))(new Redis(config[_0x9977('0xa')]));var attributes=['id',_0x9977('0xb'),'account',_0x9977('0xc'),_0x9977('0xd'),_0x9977('0xe')];function emit(_0x4fdd17,_0x3fc988,_0x25599e){io['to'](_0x4fdd17)[_0x9977('0xf')](_0x3fc988,_0x25599e);}function emitChannelQueueInteraction(_0x4c1ce2,_0x7388e9,_0x54df22,_0x4dae64,_0x5d6633,_0x46571a,_0x1e745c,_0x4676b5){var _0x4676cb=_[_0x9977('0x10')](_0x54df22);_0x4676cb[_0x9977('0xb')]=_0x4676b5;_0x4676cb['queue']=_0x7388e9;_0x4676cb[_0x9977('0x11')]=_0x4dae64;_0x4676cb['id']=_0x5d6633;if(_0x46571a){_0x1e745c[util[_0x9977('0x12')](_0x9977('0x13'),_0x4c1ce2)][_0x5d6633]=_['pick'](_0x4676cb,attributes);}else{delete _0x1e745c[util[_0x9977('0x12')](_0x9977('0x13'),_0x4c1ce2)][_0x5d6633];}emit(util[_0x9977('0x12')](_0x9977('0x14'),_0x4c1ce2,_0x7388e9),util[_0x9977('0x12')](_0x9977('0x15'),_0x4c1ce2,_0x46571a?'save':'remove'),_[_0x9977('0x16')](_0x4676cb,attributes));}var rpc={'openchannelQueueReport':require(_0x9977('0x17')),'mailQueueReport':require(_0x9977('0x18')),'chatQueueReport':require(_0x9977('0x19')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x9977('0x1a')),'whatsappQueueReport':require(_0x9977('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x9977('0x1c')}});function startRouting(_0x4d4ce9,_0x2d45a6,_0x1bbc92,_0xc7e696){if(_0x4d4ce9&&_0x2d45a6&&_0x1bbc92){_0x2d45a6['waiting']+=0x1;var _0x5a1527={'uniqueid':_0x4d4ce9,'from':_0x1bbc92['body']?_0x1bbc92[_0x9977('0x1d')][_0x9977('0xd')]:'','joinAt':moment()['format'](_0x9977('0x1e')),'ContactId':_0x1bbc92[_0x9977('0x1f')]?_0x1bbc92[_0x9977('0x1f')]['id']:null,'ListId':_0x1bbc92[_0x9977('0x20')]?_0x1bbc92[_0x9977('0x20')]['id']:null};_0x5a1527[_[_0x9977('0x21')](_0x1bbc92[_0x9977('0x22')])+_0x9977('0x23')]=_0x2d45a6['id']||null;_0x5a1527[_[_0x9977('0x21')](_0x1bbc92[_0x9977('0x22')])+_0x9977('0x24')]=_0x1bbc92[_0x9977('0x25')]?_0x1bbc92[_0x9977('0x25')]['id']:null;_0x5a1527[_['upperFirst'](_0x1bbc92[_0x9977('0x22')])+'MessageId']=_0x1bbc92[_0x9977('0x26')]?_0x1bbc92[_0x9977('0x26')]['id']:null;_0x5a1527[_[_0x9977('0x21')](_0x1bbc92[_0x9977('0x22')])+(_0x1bbc92['channel']!=='chat'?_0x9977('0x27'):_0x9977('0x28'))]=_0x1bbc92[_0x9977('0x11')]?_0x1bbc92[_0x9977('0x11')]['id']:null;logger[_0x9977('0x29')](util[_0x9977('0x12')](_0x9977('0x2a'),_0x4d4ce9,_0x2d45a6['name']));emitChannelQueueInteraction(_0x1bbc92[_0x9977('0x22')],_0x2d45a6[_0x9977('0x2b')],_0x5a1527,_0x1bbc92[_0x9977('0x11')][_0x9977('0x2b')],_0x1bbc92[_0x9977('0x26')]['id'],!![],_0xc7e696,_0x2d45a6['id']);if(rpc[_0x1bbc92[_0x9977('0x22')]+_0x9977('0x2c')]){return rpc[_0x1bbc92[_0x9977('0x22')]+_0x9977('0x2c')][_0x9977('0x2d')](_0x5a1527)['catch'](function(_0x3db6b8){logger[_0x9977('0x2e')]('create\x20queue\x20report');});}}}function stopRouting(_0x15bc2b,_0x31163c,_0x176fbe,_0x27a93d){if(_0x15bc2b&&_0x31163c){_0x31163c['waiting']-=0x1;var _0x62cf10={'leaveAt':moment()[_0x9977('0x12')](_0x9977('0x1e')),'acceptAt':moment()[_0x9977('0x12')](_0x9977('0x1e')),'reason':'accepted'};logger[_0x9977('0x29')](util[_0x9977('0x12')](_0x9977('0x2f'),_0x15bc2b,_0x31163c[_0x9977('0x2b')]));emitChannelQueueInteraction(_0x176fbe[_0x9977('0x22')],_0x31163c[_0x9977('0x2b')],_0x176fbe[_0x9977('0x1d')],_0x176fbe[_0x9977('0x11')][_0x9977('0x2b')],_0x176fbe['message']['id'],![],_0x27a93d,_0x31163c['id']);if(rpc[_0x176fbe['channel']+'QueueReport']){return rpc[_0x176fbe[_0x9977('0x22')]+_0x9977('0x2c')][_0x9977('0x30')](_0x15bc2b,_0x62cf10)[_0x9977('0x31')](function(_0x1a3227){logger[_0x9977('0x2e')](_0x9977('0x32'));});}}}function endRouting(_0x21b621,_0x6bd08f,_0x33e2f3,_0x2d5da5){if(_0x21b621&&_0x6bd08f){_0x6bd08f[_0x9977('0x33')]-=0x1;var _0xd1f74a={'leaveAt':moment()[_0x9977('0x12')](_0x9977('0x1e')),'exitAt':moment()[_0x9977('0x12')](_0x9977('0x1e')),'reason':_0x9977('0x34')};logger[_0x9977('0x29')](util[_0x9977('0x12')](_0x9977('0x35'),_0x21b621,_0x6bd08f['name']));emitChannelQueueInteraction(_0x33e2f3[_0x9977('0x22')],_0x6bd08f[_0x9977('0x2b')],_0x33e2f3[_0x9977('0x1d')],_0x33e2f3[_0x9977('0x11')][_0x9977('0x2b')],_0x33e2f3[_0x9977('0x26')]['id'],![],_0x2d5da5);if(rpc[_0x33e2f3[_0x9977('0x22')]+_0x9977('0x2c')]){return rpc[_0x33e2f3[_0x9977('0x22')]+'QueueReport'][_0x9977('0x30')](_0x21b621,_0xd1f74a)['catch'](function(_0x118feb){logger['error'](_0x9977('0x32'));});}}}function handleFindQueue(_0x53cb84){return function(_0x2be083){return _0x2be083[_0x9977('0x2b')]['toLowerCase']()===_0x53cb84[_0x9977('0x36')]();};}exports[_0x9977('0x37')]=function(_0x13355d,_0x400e04,_0x17ddff,_0x2edc2f){return function(_0x21b8bd){try{var _0xd19703={'name':_0x400e04[0x0],'timeout':_0x400e04[0x1]};var _0x3ecace=queue[_0x9977('0x38')](_0xd19703,{'typecast':!![]});if(_0x3ecace[_0x9977('0x39')]){logger[_0x9977('0x2e')](_0x9977('0x3a'),_0x13355d,_['map'](_0x3ecace,'message')[_0x9977('0x3b')](',\x20'));_0x21b8bd[_0x9977('0x3c')]();}else{var _0x7be955=_[_0x9977('0x3d')](_0x17ddff[_0x2edc2f[_0x9977('0x22')]+'Queues'],handleFindQueue(_0xd19703[_0x9977('0x2b')]));if(_0x7be955){startRouting(_0x13355d,_0x7be955,_0x2edc2f,_0x17ddff);var _0x57bdb7=(_0x7be955[_0x9977('0x34')]||0xa)*0x3e8;var _0x25d7ba=(_0xd19703[_0x9977('0x34')]||0x14)*0x3e8;var _0x347af5,_0x42c397;if(_0x57bdb7>_0x25d7ba){_0x25d7ba=_0x57bdb7;}var _0x18655a=seqqueue['createQueue'](_0x57bdb7);_0x18655a['id']=_0x13355d;_0x18655a[_0x9977('0x3e')]=_0x57bdb7;_0x18655a[_0x9977('0x3f')]=_0x25d7ba;_0x18655a[_0x9977('0x22')]=_0x2edc2f['channel'];_0x17ddff[_0x9977('0x40')][_0x13355d]['on'](_0x9977('0x41'),function(){logger[_0x9977('0x29')](_0x9977('0x42'),_0x13355d);stopRouting(_0x13355d,_0x7be955,_0x2edc2f,_0x17ddff);clearTimeout(_0x347af5);_0x347af5=undefined;_0x18655a[_0x9977('0x43')](!![]);if(_0x17ddff[_0x9977('0x40')][_0x13355d]){delete _0x17ddff['rules'][_0x13355d];}_0x21b8bd[_0x9977('0x3c')]();});_0x17ddff['rules'][_0x13355d]['on'](_0x9977('0x44'),function(){if(_0x17ddff[_0x9977('0x40')][_0x13355d]){delete _0x17ddff[_0x9977('0x40')][_0x13355d];}});_0x347af5=setTimeout(function(){logger['info'](_0x9977('0x45'),_0x13355d);endRouting(_0x13355d,_0x7be955,_0x2edc2f,_0x17ddff);clearTimeout(_0x347af5);_0x18655a['close'](!![]);_0x21b8bd[_0x9977('0x46')]();},_0x25d7ba);switch(_0x7be955[_0x9977('0x47')]){case _0x9977('0x48'):strategy[_0x9977('0x48')](_0x18655a,_0x7be955,_0x17ddff,_0x2edc2f);break;default:strategy['beepall'](_0x18655a,_0x7be955,_0x17ddff,_0x2edc2f);}}else{logger[_0x9977('0x2e')](_0x9977('0x49'),_0x13355d,_0xd19703[_0x9977('0x2b')]);_0x21b8bd[_0x9977('0x3c')]();}}}catch(_0x4c5368){console[_0x9977('0x4a')](_0x4c5368);logger[_0x9977('0x2e')](_0x9977('0x3a'),_0x13355d,_0x4c5368[_0x9977('0x4b')]);_0x21b8bd[_0x9977('0x3c')]();}};};