Built motion from commit 0900f080.|2.5.45
[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 _0x3665=['[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/logger','routing','./strategy','defaults','socket.io-emitter','redis','queue_id','queue','from','joinAt','emit','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','pick','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','contact','list','channel','QueueId','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','WebsiteId','account','info','name','QueueReport','create','catch','error','create\x20queue\x20report','waiting','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','body','update','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','timeout','createQueue','atimeout','rules','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3665,0x194));var _0x5366=function(_0x39baa6,_0x3d4e93){_0x39baa6=_0x39baa6-0x0;var _0x158e9f=_0x3665[_0x39baa6];return _0x158e9f;};'use strict';var schema=require(_0x5366('0x0'));var _=require(_0x5366('0x1'));var util=require(_0x5366('0x2'));var seqqueue=require(_0x5366('0x3'));var moment=require(_0x5366('0x4'));var Redis=require(_0x5366('0x5'));var config=require('../../../../config/environment');var logger=require(_0x5366('0x6'))(_0x5366('0x7'));var strategy=require(_0x5366('0x8'));config['redis']=_[_0x5366('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5366('0xa'))(new Redis(config[_0x5366('0xb')]));var attributes=['id',_0x5366('0xc'),'account',_0x5366('0xd'),_0x5366('0xe'),_0x5366('0xf')];function emit(_0x2a6e96,_0x4765ff,_0x3bb6da){io['to'](_0x2a6e96)[_0x5366('0x10')](_0x4765ff,_0x3bb6da);}function emitChannelQueueInteraction(_0x541e28,_0x22494d,_0xc13fa3,_0x5969a9,_0x4590fc,_0x28d361,_0x3bf0d0,_0x25eb68){var _0x50eb34=_[_0x5366('0x11')](_0xc13fa3);_0x50eb34[_0x5366('0xc')]=_0x25eb68;_0x50eb34[_0x5366('0xd')]=_0x22494d;_0x50eb34['account']=_0x5969a9;_0x50eb34['id']=_0x4590fc;if(_0x28d361){_0x3bf0d0[util[_0x5366('0x12')](_0x5366('0x13'),_0x541e28)][_0x4590fc]=_['pick'](_0x50eb34,attributes);}else{delete _0x3bf0d0[util[_0x5366('0x12')](_0x5366('0x13'),_0x541e28)][_0x4590fc];}emit(util[_0x5366('0x12')](_0x5366('0x14'),_0x541e28,_0x22494d),util[_0x5366('0x12')](_0x5366('0x15'),_0x541e28,_0x28d361?_0x5366('0x16'):'remove'),_[_0x5366('0x17')](_0x50eb34,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x5366('0x18')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x5366('0x19')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x5366('0x1a'))};var queue=schema({'name':{'type':_0x5366('0x1b'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x5366('0x1c'),'message':_0x5366('0x1d')}});function startRouting(_0x46a71f,_0x38832d,_0x7be3bb,_0x1c62e1){if(_0x46a71f&&_0x38832d&&_0x7be3bb){_0x38832d['waiting']+=0x1;var _0x53982f={'uniqueid':_0x46a71f,'from':_0x7be3bb['body']?_0x7be3bb['body']['from']:'','joinAt':moment()[_0x5366('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x7be3bb[_0x5366('0x1e')]?_0x7be3bb[_0x5366('0x1e')]['id']:null,'ListId':_0x7be3bb[_0x5366('0x1f')]?_0x7be3bb[_0x5366('0x1f')]['id']:null};_0x53982f[_['upperFirst'](_0x7be3bb[_0x5366('0x20')])+_0x5366('0x21')]=_0x38832d['id']||null;_0x53982f[_[_0x5366('0x22')](_0x7be3bb['channel'])+_0x5366('0x23')]=_0x7be3bb[_0x5366('0x24')]?_0x7be3bb['interaction']['id']:null;_0x53982f[_[_0x5366('0x22')](_0x7be3bb[_0x5366('0x20')])+_0x5366('0x25')]=_0x7be3bb[_0x5366('0x26')]?_0x7be3bb[_0x5366('0x26')]['id']:null;_0x53982f[_[_0x5366('0x22')](_0x7be3bb[_0x5366('0x20')])+(_0x7be3bb[_0x5366('0x20')]!==_0x5366('0x27')?_0x5366('0x28'):_0x5366('0x29'))]=_0x7be3bb[_0x5366('0x2a')]?_0x7be3bb[_0x5366('0x2a')]['id']:null;logger[_0x5366('0x2b')](util[_0x5366('0x12')]('[%s][START:QUEUE][NAME:%s]',_0x46a71f,_0x38832d['name']));emitChannelQueueInteraction(_0x7be3bb[_0x5366('0x20')],_0x38832d[_0x5366('0x2c')],_0x53982f,_0x7be3bb[_0x5366('0x2a')][_0x5366('0x2c')],_0x7be3bb[_0x5366('0x26')]['id'],!![],_0x1c62e1,_0x38832d['id']);if(rpc[_0x7be3bb[_0x5366('0x20')]+_0x5366('0x2d')]){return rpc[_0x7be3bb['channel']+_0x5366('0x2d')][_0x5366('0x2e')](_0x53982f)[_0x5366('0x2f')](function(_0xb4b67c){logger[_0x5366('0x30')](_0x5366('0x31'));});}}}function stopRouting(_0x5d3c93,_0x57996e,_0x38ae76,_0x4c3cf5){if(_0x5d3c93&&_0x57996e){_0x57996e[_0x5366('0x32')]-=0x1;var _0x46dd9e={'leaveAt':moment()[_0x5366('0x12')](_0x5366('0x33')),'acceptAt':moment()[_0x5366('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x5366('0x34')};logger[_0x5366('0x2b')](util[_0x5366('0x12')](_0x5366('0x35'),_0x5d3c93,_0x57996e['name']));emitChannelQueueInteraction(_0x38ae76['channel'],_0x57996e[_0x5366('0x2c')],_0x38ae76[_0x5366('0x36')],_0x38ae76['account'][_0x5366('0x2c')],_0x38ae76[_0x5366('0x26')]['id'],![],_0x4c3cf5,_0x57996e['id']);if(rpc[_0x38ae76['channel']+'QueueReport']){return rpc[_0x38ae76['channel']+_0x5366('0x2d')][_0x5366('0x37')](_0x5d3c93,_0x46dd9e)['catch'](function(_0x24445e){logger[_0x5366('0x30')](_0x5366('0x38'));});}}}function endRouting(_0x358428,_0x5dd7cb,_0x1a9dd7,_0x45c252){if(_0x358428&&_0x5dd7cb){_0x5dd7cb[_0x5366('0x32')]-=0x1;var _0x3e1468={'leaveAt':moment()[_0x5366('0x12')](_0x5366('0x33')),'exitAt':moment()['format'](_0x5366('0x33')),'reason':'timeout'};logger[_0x5366('0x2b')](util[_0x5366('0x12')](_0x5366('0x39'),_0x358428,_0x5dd7cb[_0x5366('0x2c')]));emitChannelQueueInteraction(_0x1a9dd7[_0x5366('0x20')],_0x5dd7cb['name'],_0x1a9dd7['body'],_0x1a9dd7['account']['name'],_0x1a9dd7['message']['id'],![],_0x45c252);if(rpc[_0x1a9dd7[_0x5366('0x20')]+_0x5366('0x2d')]){return rpc[_0x1a9dd7[_0x5366('0x20')]+'QueueReport']['update'](_0x358428,_0x3e1468)[_0x5366('0x2f')](function(_0x4546e3){logger[_0x5366('0x30')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x56fb80){return function(_0x2cad34){return _0x2cad34['name'][_0x5366('0x3a')]()===_0x56fb80['toLowerCase']();};}exports['consequence']=function(_0x4048ee,_0x9452a1,_0x3d3788,_0x413ff0){return function(_0xad5787){try{var _0xdc5d15={'name':_0x9452a1[0x0],'timeout':_0x9452a1[0x1]};var _0x31bf7c=queue[_0x5366('0x0')](_0xdc5d15,{'typecast':!![]});if(_0x31bf7c[_0x5366('0x3b')]){logger[_0x5366('0x30')](_0x5366('0x3c'),_0x4048ee,_['map'](_0x31bf7c,_0x5366('0x26'))[_0x5366('0x3d')](',\x20'));_0xad5787[_0x5366('0x3e')]();}else{var _0x239d40=_[_0x5366('0x3f')](_0x3d3788[_0x413ff0[_0x5366('0x20')]+_0x5366('0x40')],handleFindQueue(_0xdc5d15['name']));if(_0x239d40){startRouting(_0x4048ee,_0x239d40,_0x413ff0,_0x3d3788);var _0x19c316=(_0x239d40[_0x5366('0x41')]||0xa)*0x3e8;var _0x5a5b05=(_0xdc5d15[_0x5366('0x41')]||0x14)*0x3e8;var _0x250c48,_0x2b5875;if(_0x19c316>_0x5a5b05){_0x5a5b05=_0x19c316;}var _0x393fbb=seqqueue[_0x5366('0x42')](_0x19c316);_0x393fbb['id']=_0x4048ee;_0x393fbb[_0x5366('0x43')]=_0x19c316;_0x393fbb['qtimeout']=_0x5a5b05;_0x393fbb[_0x5366('0x20')]=_0x413ff0[_0x5366('0x20')];_0x3d3788[_0x5366('0x44')][_0x4048ee]['on'](_0x5366('0x45'),function(){logger[_0x5366('0x2b')](_0x5366('0x46'),_0x4048ee);stopRouting(_0x4048ee,_0x239d40,_0x413ff0,_0x3d3788);clearTimeout(_0x250c48);_0x250c48=undefined;_0x393fbb[_0x5366('0x47')](!![]);if(_0x3d3788[_0x5366('0x44')][_0x4048ee]){delete _0x3d3788['rules'][_0x4048ee];}_0xad5787[_0x5366('0x3e')]();});_0x3d3788[_0x5366('0x44')][_0x4048ee]['on'](_0x5366('0x48'),function(){if(_0x3d3788[_0x5366('0x44')][_0x4048ee]){delete _0x3d3788[_0x5366('0x44')][_0x4048ee];}});_0x250c48=setTimeout(function(){logger[_0x5366('0x2b')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x4048ee);endRouting(_0x4048ee,_0x239d40,_0x413ff0,_0x3d3788);clearTimeout(_0x250c48);_0x393fbb[_0x5366('0x47')](!![]);_0xad5787['next']();},_0x5a5b05);switch(_0x239d40[_0x5366('0x49')]){case _0x5366('0x4a'):strategy[_0x5366('0x4a')](_0x393fbb,_0x239d40,_0x3d3788,_0x413ff0);break;default:strategy[_0x5366('0x4b')](_0x393fbb,_0x239d40,_0x3d3788,_0x413ff0);}}else{logger['error'](_0x5366('0x4c'),_0x4048ee,_0xdc5d15[_0x5366('0x2c')]);_0xad5787[_0x5366('0x3e')]();}}}catch(_0x5b4a46){console[_0x5366('0x4d')](_0x5b4a46);logger[_0x5366('0x30')](_0x5366('0x3c'),_0x4048ee,_0x5b4a46[_0x5366('0x4e')]);_0xad5787[_0x5366('0x3e')]();}};};