Built motion from commit (unavailable).|2.4.4
[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 _0x288d=['[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','waiting','timeout','toLowerCase','length','[%s][QUEUE]\x20%s','join','stop','Queues','atimeout','qtimeout','rules','end','close','[%s][QUEUE]\x20ROUTING\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','defaults','redis','socket.io-emitter','queue_id','queue','from','account','format','%sQueuesWaitingInteractions','%s:queue:%s','save','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','number','timeout\x20is\x20a\x20number','body','contact','list','channel','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','YYYY-MM-DD\x20HH:mm:ss','accepted'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0x288d,0xee));var _0xd288=function(_0x47515a,_0x5b16cd){_0x47515a=_0x47515a-0x0;var _0x65fbe4=_0x288d[_0x47515a];return _0x65fbe4;};'use strict';var schema=require(_0xd288('0x0'));var _=require(_0xd288('0x1'));var util=require(_0xd288('0x2'));var seqqueue=require(_0xd288('0x3'));var moment=require(_0xd288('0x4'));var Redis=require(_0xd288('0x5'));var config=require(_0xd288('0x6'));var logger=require(_0xd288('0x7'))(_0xd288('0x8'));var strategy=require(_0xd288('0x9'));config['redis']=_[_0xd288('0xa')](config[_0xd288('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xd288('0xc'))(new Redis(config['redis']));var attributes=['id',_0xd288('0xd'),'account',_0xd288('0xe'),_0xd288('0xf'),'joinAt'];function emit(_0x42f249,_0x48fa28,_0x587a39){io['to'](_0x42f249)['emit'](_0x48fa28,_0x587a39);}function emitChannelQueueInteraction(_0x8b6e90,_0x13aa41,_0x559a9d,_0x5b480d,_0x2b267b,_0xfe0e7b,_0x1bccb8,_0x12aab6){_0x559a9d[_0xd288('0xd')]=_0x12aab6;_0x559a9d[_0xd288('0xe')]=_0x13aa41;_0x559a9d[_0xd288('0x10')]=_0x5b480d;_0x559a9d['id']=_0x2b267b;if(_0xfe0e7b){_0x1bccb8[util[_0xd288('0x11')]('%sQueuesWaitingInteractions',_0x8b6e90)][_0x2b267b]=_['pick'](_0x559a9d,attributes);}else{delete _0x1bccb8[util[_0xd288('0x11')](_0xd288('0x12'),_0x8b6e90)][_0x2b267b];}emit(util[_0xd288('0x11')](_0xd288('0x13'),_0x8b6e90,_0x13aa41),util[_0xd288('0x11')]('%s_queue_waiting_interaction:%s',_0x8b6e90,_0xfe0e7b?_0xd288('0x14'):'remove'),_['pick'](_0x559a9d,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xd288('0x15')),'chatQueueReport':require(_0xd288('0x16')),'smsQueueReport':require(_0xd288('0x17')),'faxQueueReport':require(_0xd288('0x18'))};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xd288('0x19'),'message':_0xd288('0x1a')}});function startRouting(_0x1001b2,_0x4e139b,_0x2e274a,_0x5e484d){if(_0x1001b2&&_0x4e139b&&_0x2e274a){_0x4e139b['waiting']+=0x1;var _0x5aa9e3={'uniqueid':_0x1001b2,'from':_0x2e274a['body']?_0x2e274a[_0xd288('0x1b')][_0xd288('0xf')]:'','joinAt':moment()[_0xd288('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2e274a[_0xd288('0x1c')]?_0x2e274a[_0xd288('0x1c')]['id']:null,'ListId':_0x2e274a['list']?_0x2e274a[_0xd288('0x1d')]['id']:null};_0x5aa9e3[_['upperFirst'](_0x2e274a[_0xd288('0x1e')])+'QueueId']=_0x4e139b['id']||null;_0x5aa9e3[_[_0xd288('0x1f')](_0x2e274a[_0xd288('0x1e')])+_0xd288('0x20')]=_0x2e274a[_0xd288('0x21')]?_0x2e274a[_0xd288('0x21')]['id']:null;_0x5aa9e3[_['upperFirst'](_0x2e274a[_0xd288('0x1e')])+_0xd288('0x22')]=_0x2e274a['message']?_0x2e274a[_0xd288('0x23')]['id']:null;_0x5aa9e3[_[_0xd288('0x1f')](_0x2e274a[_0xd288('0x1e')])+(_0x2e274a[_0xd288('0x1e')]!==_0xd288('0x24')?_0xd288('0x25'):'WebsiteId')]=_0x2e274a['account']?_0x2e274a[_0xd288('0x10')]['id']:null;logger[_0xd288('0x26')](util[_0xd288('0x11')](_0xd288('0x27'),_0x1001b2,_0x4e139b['name']));emitChannelQueueInteraction(_0x2e274a[_0xd288('0x1e')],_0x4e139b[_0xd288('0x28')],_0x5aa9e3,_0x2e274a['account'][_0xd288('0x28')],_0x2e274a['message']['id'],!![],_0x5e484d,_0x4e139b['id']);if(rpc[_0x2e274a['channel']+_0xd288('0x29')]){return rpc[_0x2e274a[_0xd288('0x1e')]+_0xd288('0x29')][_0xd288('0x2a')](_0x5aa9e3)['catch'](function(_0x9b49e9){logger[_0xd288('0x2b')]('create\x20queue\x20report');});}}}function stopRouting(_0x1a8657,_0x127635,_0x284755,_0x100511){if(_0x1a8657&&_0x127635){_0x127635['waiting']-=0x1;var _0x463c01={'leaveAt':moment()[_0xd288('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()['format'](_0xd288('0x2c')),'reason':_0xd288('0x2d')};logger[_0xd288('0x26')](util[_0xd288('0x11')](_0xd288('0x2e'),_0x1a8657,_0x127635[_0xd288('0x28')]));emitChannelQueueInteraction(_0x284755[_0xd288('0x1e')],_0x127635['name'],_0x284755[_0xd288('0x1b')],_0x284755['account'][_0xd288('0x28')],_0x284755[_0xd288('0x23')]['id'],![],_0x100511,_0x127635['id']);if(rpc[_0x284755[_0xd288('0x1e')]+_0xd288('0x29')]){return rpc[_0x284755['channel']+_0xd288('0x29')][_0xd288('0x2f')](_0x1a8657,_0x463c01)[_0xd288('0x30')](function(_0xb0568a){logger[_0xd288('0x2b')](_0xd288('0x31'));});}}}function endRouting(_0x7f665f,_0x8a3496,_0x53bc51,_0x227560){if(_0x7f665f&&_0x8a3496){_0x8a3496[_0xd288('0x32')]-=0x1;var _0x103ac0={'leaveAt':moment()[_0xd288('0x11')](_0xd288('0x2c')),'exitAt':moment()[_0xd288('0x11')](_0xd288('0x2c')),'reason':_0xd288('0x33')};logger[_0xd288('0x26')](util['format']('[%s][END:QUEUE][NAME:%s]',_0x7f665f,_0x8a3496[_0xd288('0x28')]));emitChannelQueueInteraction(_0x53bc51[_0xd288('0x1e')],_0x8a3496[_0xd288('0x28')],_0x53bc51[_0xd288('0x1b')],_0x53bc51['account'][_0xd288('0x28')],_0x53bc51[_0xd288('0x23')]['id'],![],_0x227560);if(rpc[_0x53bc51['channel']+_0xd288('0x29')]){return rpc[_0x53bc51[_0xd288('0x1e')]+_0xd288('0x29')][_0xd288('0x2f')](_0x7f665f,_0x103ac0)['catch'](function(_0x3b6181){logger[_0xd288('0x2b')](_0xd288('0x31'));});}}}function handleFindQueue(_0x484cb1){return function(_0x37ef22){return _0x37ef22['name'][_0xd288('0x34')]()===_0x484cb1[_0xd288('0x34')]();};}exports['consequence']=function(_0x2fa1e7,_0x3db33e,_0x56eb34,_0x342107){return function(_0x130c63){try{var _0x3e8af8={'name':_0x3db33e[0x0],'timeout':_0x3db33e[0x1]};var _0x3f4f75=queue[_0xd288('0x0')](_0x3e8af8,{'typecast':!![]});if(_0x3f4f75[_0xd288('0x35')]){logger['error'](_0xd288('0x36'),_0x2fa1e7,_['map'](_0x3f4f75,_0xd288('0x23'))[_0xd288('0x37')](',\x20'));_0x130c63[_0xd288('0x38')]();}else{var _0x3065e9=_['find'](_0x56eb34[_0x342107[_0xd288('0x1e')]+_0xd288('0x39')],handleFindQueue(_0x3e8af8['name']));if(_0x3065e9){startRouting(_0x2fa1e7,_0x3065e9,_0x342107,_0x56eb34);var _0x20511a=(_0x3065e9[_0xd288('0x33')]||0xa)*0x3e8;var _0x2d06a3=(_0x3e8af8['timeout']||0x14)*0x3e8;var _0x34599b,_0x3001ac;if(_0x20511a>_0x2d06a3){_0x2d06a3=_0x20511a;}var _0x3cc98a=seqqueue['createQueue'](_0x20511a);_0x3cc98a['id']=_0x2fa1e7;_0x3cc98a[_0xd288('0x3a')]=_0x20511a;_0x3cc98a[_0xd288('0x3b')]=_0x2d06a3;_0x3cc98a['channel']=_0x342107[_0xd288('0x1e')];_0x56eb34[_0xd288('0x3c')][_0x2fa1e7]['on'](_0xd288('0x3d'),function(){stopRouting(_0x2fa1e7,_0x3065e9,_0x342107,_0x56eb34);_0x3cc98a[_0xd288('0x3e')](!![]);clearTimeout(_0x34599b);_0x34599b=undefined;if(_0x56eb34[_0xd288('0x3c')][_0x2fa1e7]){delete _0x56eb34['rules'][_0x2fa1e7];}logger[_0xd288('0x26')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x2fa1e7);_0x130c63[_0xd288('0x38')]();});_0x34599b=setTimeout(function(){endRouting(_0x2fa1e7,_0x3065e9,_0x342107,_0x56eb34);clearTimeout(_0x34599b);_0x3cc98a['close'](!![]);logger[_0xd288('0x26')](_0xd288('0x3f'),_0x2fa1e7);_0x130c63[_0xd288('0x40')]();},_0x2d06a3);switch(_0x3065e9[_0xd288('0x41')]){case'rrmemory':strategy[_0xd288('0x42')](_0x3cc98a,_0x3065e9,_0x56eb34,_0x342107);break;default:strategy[_0xd288('0x43')](_0x3cc98a,_0x3065e9,_0x56eb34,_0x342107);}}else{logger['error'](_0xd288('0x44'),_0x2fa1e7,_0x3e8af8[_0xd288('0x28')]);_0x130c63[_0xd288('0x38')]();}}}catch(_0x5bebf9){console[_0xd288('0x45')](_0x5bebf9);logger[_0xd288('0x2b')]('[%s][QUEUE]\x20%s',_0x2fa1e7,_0x5bebf9[_0xd288('0x46')]);_0x130c63[_0xd288('0x38')]();}};};