Built motion from commit (unavailable).|2.3.9
[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 _0xb41a=['toLowerCase','length','[%s][QUEUE]\x20%s','map','join','find','Queues','timeout','qtimeout','rules','close','stop','[%s][QUEUE]\x20ROUTING\x20END','next','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue','moment','../../../../config/environment','./strategy','redis','localhost','socket.io-emitter','queue_id','account','from','joinAt','queue','%sQueuesWaitingInteractions','format','%s:queue:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','WebsiteId','name','QueueReport','create','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','waiting','[%s][END:QUEUE][NAME:%s]','catch'];(function(_0x1a5cd0,_0x1f9034){var _0x2c48a9=function(_0x127d87){while(--_0x127d87){_0x1a5cd0['push'](_0x1a5cd0['shift']());}};_0x2c48a9(++_0x1f9034);}(_0xb41a,0x9e));var _0xab41=function(_0x3a9815,_0x47eb16){_0x3a9815=_0x3a9815-0x0;var _0x188653=_0xb41a[_0x3a9815];return _0x188653;};'use strict';var schema=require('validate');var _=require(_0xab41('0x0'));var util=require(_0xab41('0x1'));var seqqueue=require(_0xab41('0x2'));var moment=require(_0xab41('0x3'));var Redis=require('ioredis');var config=require(_0xab41('0x4'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0xab41('0x5'));config[_0xab41('0x6')]=_['defaults'](config[_0xab41('0x6')],{'host':_0xab41('0x7'),'port':0x18eb});var io=require(_0xab41('0x8'))(new Redis(config[_0xab41('0x6')]));var attributes=['id',_0xab41('0x9'),_0xab41('0xa'),'queue',_0xab41('0xb'),_0xab41('0xc')];function emit(_0x4c7e5f,_0x15bb23,_0x29a0fb){io['to'](_0x4c7e5f)['emit'](_0x15bb23,_0x29a0fb);}function emitChannelQueueInteraction(_0x13804b,_0x19e6cd,_0x263688,_0x29028e,_0x1b4b7b,_0xffb4ba,_0x2f9125,_0x44eb0a){_0x263688['queue_id']=_0x44eb0a;_0x263688[_0xab41('0xd')]=_0x19e6cd;_0x263688[_0xab41('0xa')]=_0x29028e;_0x263688['id']=_0x1b4b7b;if(_0xffb4ba){_0x2f9125[util['format'](_0xab41('0xe'),_0x13804b)][_0x1b4b7b]=_['pick'](_0x263688,attributes);}else{delete _0x2f9125[util[_0xab41('0xf')](_0xab41('0xe'),_0x13804b)][_0x1b4b7b];}emit(util[_0xab41('0xf')](_0xab41('0x10'),_0x13804b,_0x19e6cd),util[_0xab41('0xf')]('%s_queue_waiting_interaction:%s',_0x13804b,_0xffb4ba?_0xab41('0x11'):_0xab41('0x12')),_[_0xab41('0x13')](_0x263688,attributes));}var rpc={'openchannelQueueReport':require(_0xab41('0x14')),'mailQueueReport':require(_0xab41('0x15')),'chatQueueReport':require(_0xab41('0x16')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xab41('0x17'))};var queue=schema({'name':{'type':_0xab41('0x18'),'required':!![],'message':_0xab41('0x19')},'timeout':{'type':_0xab41('0x1a'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0xfc372f,_0x2dc16a,_0x2ff4e1,_0x34f537){if(_0xfc372f&&_0x2dc16a&&_0x2ff4e1){_0x2dc16a['waiting']+=0x1;var _0x40d57f={'uniqueid':_0xfc372f,'from':_0x2ff4e1[_0xab41('0x1b')]?_0x2ff4e1[_0xab41('0x1b')][_0xab41('0xb')]:'','joinAt':moment()['format'](_0xab41('0x1c')),'ContactId':_0x2ff4e1[_0xab41('0x1d')]?_0x2ff4e1['contact']['id']:null,'ListId':_0x2ff4e1[_0xab41('0x1e')]?_0x2ff4e1[_0xab41('0x1e')]['id']:null};_0x40d57f[_[_0xab41('0x1f')](_0x2ff4e1[_0xab41('0x20')])+_0xab41('0x21')]=_0x2dc16a['id']||null;_0x40d57f[_[_0xab41('0x1f')](_0x2ff4e1[_0xab41('0x20')])+_0xab41('0x22')]=_0x2ff4e1[_0xab41('0x23')]?_0x2ff4e1['interaction']['id']:null;_0x40d57f[_['upperFirst'](_0x2ff4e1[_0xab41('0x20')])+_0xab41('0x24')]=_0x2ff4e1['message']?_0x2ff4e1[_0xab41('0x25')]['id']:null;_0x40d57f[_['upperFirst'](_0x2ff4e1[_0xab41('0x20')])+(_0x2ff4e1[_0xab41('0x20')]!==_0xab41('0x26')?'AccountId':_0xab41('0x27'))]=_0x2ff4e1[_0xab41('0xa')]?_0x2ff4e1['account']['id']:null;logger['info'](util[_0xab41('0xf')]('[%s][START:QUEUE][NAME:%s]',_0xfc372f,_0x2dc16a['name']));emitChannelQueueInteraction(_0x2ff4e1['channel'],_0x2dc16a[_0xab41('0x28')],_0x40d57f,_0x2ff4e1[_0xab41('0xa')][_0xab41('0x28')],_0x2ff4e1[_0xab41('0x25')]['id'],!![],_0x34f537,_0x2dc16a['id']);if(rpc[_0x2ff4e1[_0xab41('0x20')]+_0xab41('0x29')]){return rpc[_0x2ff4e1[_0xab41('0x20')]+_0xab41('0x29')][_0xab41('0x2a')](_0x40d57f)['catch'](function(_0x1c88fb){logger[_0xab41('0x2b')](_0xab41('0x2c'));});}}}function stopRouting(_0x328f9f,_0x1cf621,_0x118023,_0x241e0c){if(_0x328f9f&&_0x1cf621){_0x1cf621['waiting']-=0x1;var _0x5a4701={'leaveAt':moment()['format'](_0xab41('0x1c')),'acceptAt':moment()[_0xab41('0xf')](_0xab41('0x1c')),'reason':_0xab41('0x2d')};logger[_0xab41('0x2e')](util['format'](_0xab41('0x2f'),_0x328f9f,_0x1cf621['name']));emitChannelQueueInteraction(_0x118023['channel'],_0x1cf621[_0xab41('0x28')],_0x118023[_0xab41('0x1b')],_0x118023[_0xab41('0xa')][_0xab41('0x28')],_0x118023[_0xab41('0x25')]['id'],![],_0x241e0c,_0x1cf621['id']);if(rpc[_0x118023['channel']+_0xab41('0x29')]){return rpc[_0x118023['channel']+'QueueReport'][_0xab41('0x30')](_0x328f9f,_0x5a4701)['catch'](function(_0x1636ed){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x1465bb,_0x225cf9,_0x493e9a,_0x2ba57f){if(_0x1465bb&&_0x225cf9){_0x225cf9[_0xab41('0x31')]-=0x1;var _0x5855ab={'leaveAt':moment()[_0xab41('0xf')](_0xab41('0x1c')),'exitAt':moment()['format'](_0xab41('0x1c')),'reason':'timeout'};logger[_0xab41('0x2e')](util[_0xab41('0xf')](_0xab41('0x32'),_0x1465bb,_0x225cf9[_0xab41('0x28')]));emitChannelQueueInteraction(_0x493e9a[_0xab41('0x20')],_0x225cf9[_0xab41('0x28')],_0x493e9a[_0xab41('0x1b')],_0x493e9a[_0xab41('0xa')][_0xab41('0x28')],_0x493e9a[_0xab41('0x25')]['id'],![],_0x2ba57f);if(rpc[_0x493e9a[_0xab41('0x20')]+_0xab41('0x29')]){return rpc[_0x493e9a[_0xab41('0x20')]+_0xab41('0x29')][_0xab41('0x30')](_0x1465bb,_0x5855ab)[_0xab41('0x33')](function(_0x49e266){logger[_0xab41('0x2b')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x207f01){return function(_0x2758f3){return _0x2758f3['name']['toLowerCase']()===_0x207f01[_0xab41('0x34')]();};}exports['consequence']=function(_0x532d25,_0xfb6d5c,_0x1a784b,_0x57a31f){return function(_0x334bdf){try{var _0x529437={'name':_0xfb6d5c[0x0],'timeout':_0xfb6d5c[0x1]};var _0x533078=queue['validate'](_0x529437,{'typecast':!![]});if(_0x533078[_0xab41('0x35')]){logger[_0xab41('0x2b')](_0xab41('0x36'),_0x532d25,_[_0xab41('0x37')](_0x533078,_0xab41('0x25'))[_0xab41('0x38')](',\x20'));_0x334bdf['stop']();}else{var _0x99e90e=_[_0xab41('0x39')](_0x1a784b[_0x57a31f[_0xab41('0x20')]+_0xab41('0x3a')],handleFindQueue(_0x529437['name']));if(_0x99e90e){startRouting(_0x532d25,_0x99e90e,_0x57a31f,_0x1a784b);var _0x593a2b=(_0x99e90e[_0xab41('0x3b')]||0xa)*0x3e8;var _0x270d1a=(_0x529437[_0xab41('0x3b')]||0x14)*0x3e8;var _0x3cac4b,_0x9b8fd4;if(_0x593a2b>_0x270d1a){_0x270d1a=_0x593a2b;}var _0x5dcdc0=seqqueue['createQueue'](_0x593a2b);_0x5dcdc0['id']=_0x532d25;_0x5dcdc0['atimeout']=_0x593a2b;_0x5dcdc0[_0xab41('0x3c')]=_0x270d1a;_0x5dcdc0[_0xab41('0x20')]=_0x57a31f[_0xab41('0x20')];_0x1a784b[_0xab41('0x3d')][_0x532d25]['on']('end',function(){stopRouting(_0x532d25,_0x99e90e,_0x57a31f,_0x1a784b);_0x5dcdc0[_0xab41('0x3e')](!![]);clearTimeout(_0x3cac4b);_0x3cac4b=undefined;if(_0x1a784b['rules'][_0x532d25]){delete _0x1a784b[_0xab41('0x3d')][_0x532d25];}logger[_0xab41('0x2e')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x532d25);_0x334bdf[_0xab41('0x3f')]();});_0x3cac4b=setTimeout(function(){endRouting(_0x532d25,_0x99e90e,_0x57a31f,_0x1a784b);clearTimeout(_0x3cac4b);_0x5dcdc0[_0xab41('0x3e')](!![]);logger['info'](_0xab41('0x40'),_0x532d25);_0x334bdf[_0xab41('0x41')]();},_0x270d1a);switch(_0x99e90e['strategy']){case _0xab41('0x42'):strategy[_0xab41('0x42')](_0x5dcdc0,_0x99e90e,_0x1a784b,_0x57a31f);break;default:strategy['beepall'](_0x5dcdc0,_0x99e90e,_0x1a784b,_0x57a31f);}}else{logger['error'](_0xab41('0x43'),_0x532d25,_0x529437[_0xab41('0x28')]);_0x334bdf[_0xab41('0x3f')]();}}}catch(_0x495da6){console[_0xab41('0x44')](_0x495da6);logger['error']('[%s][QUEUE]\x20%s',_0x532d25,_0x495da6[_0xab41('0x45')]);_0x334bdf[_0xab41('0x3f')]();}};};