Built motion from commit (unavailable).|2.0.79
[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 _0xf180=['number','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','channel','InteractionId','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','close','next','strategy','rrmemory','log','stringify','lodash','seq-queue','./strategy','socket.io-emitter','localhost','account','queue','joinAt','emit','queue_id','format','%sQueuesWaitingInteractions','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x404b9b,_0x1fe936){var _0x213a99=function(_0xe9c886){while(--_0xe9c886){_0x404b9b['push'](_0x404b9b['shift']());}};_0x213a99(++_0x1fe936);}(_0xf180,0xf3));var _0x0f18=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xf180[_0x4cf98e];return _0x1623ac;};'use strict';var schema=require('validate');var _=require(_0x0f18('0x0'));var util=require('util');var seqqueue=require(_0x0f18('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')('routing');var strategy=require(_0x0f18('0x2'));var io=require(_0x0f18('0x3'))({'host':_0x0f18('0x4'),'port':0x18eb});var attributes=['id','queue_id',_0x0f18('0x5'),_0x0f18('0x6'),'from',_0x0f18('0x7')];function emit(_0x52d7a0,_0x360c0d,_0x22ff08){io['to'](_0x52d7a0)[_0x0f18('0x8')](_0x360c0d,_0x22ff08);}function emitChannelQueueInteraction(_0x433f3c,_0x55d972,_0x1bd0e9,_0x133e2f,_0x141c02,_0x48d7d6,_0x47b3fe,_0x2323d4){_0x1bd0e9[_0x0f18('0x9')]=_0x2323d4;_0x1bd0e9['queue']=_0x55d972;_0x1bd0e9['account']=_0x133e2f;_0x1bd0e9['id']=_0x141c02;if(_0x48d7d6){_0x47b3fe[util[_0x0f18('0xa')](_0x0f18('0xb'),_0x433f3c)][_0x141c02]=_['pick'](_0x1bd0e9,attributes);}else{delete _0x47b3fe[util['format'](_0x0f18('0xb'),_0x433f3c)][_0x141c02];}emit(util['format']('%s:queue:%s',_0x433f3c,_0x55d972),util['format']('%s_queue_waiting_interaction:%s',_0x433f3c,_0x48d7d6?_0x0f18('0xc'):_0x0f18('0xd')),_[_0x0f18('0xe')](_0x1bd0e9,attributes));}var rpc={'openchannelQueueReport':require(_0x0f18('0xf')),'mailQueueReport':require(_0x0f18('0x10')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x0f18('0x11')),'faxQueueReport':require(_0x0f18('0x12'))};var queue=schema({'name':{'type':_0x0f18('0x13'),'required':!![],'message':_0x0f18('0x14')},'timeout':{'type':_0x0f18('0x15'),'message':_0x0f18('0x16')}});function startRouting(_0x2ca0a8,_0x41849a,_0xd9ddb7,_0x29f7b6){if(_0x2ca0a8&&_0x41849a&&_0xd9ddb7){_0x41849a[_0x0f18('0x17')]+=0x1;var _0x1c9da0={'uniqueid':_0x2ca0a8,'from':_0xd9ddb7[_0x0f18('0x18')]?_0xd9ddb7[_0x0f18('0x18')][_0x0f18('0x19')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xd9ddb7[_0x0f18('0x1a')]?_0xd9ddb7['contact']['id']:null,'ListId':_0xd9ddb7[_0x0f18('0x1b')]?_0xd9ddb7[_0x0f18('0x1b')]['id']:null};_0x1c9da0[_[_0x0f18('0x1c')](_0xd9ddb7[_0x0f18('0x1d')])+'QueueId']=_0x41849a['id']||null;_0x1c9da0[_[_0x0f18('0x1c')](_0xd9ddb7[_0x0f18('0x1d')])+_0x0f18('0x1e')]=_0xd9ddb7['interaction']?_0xd9ddb7['interaction']['id']:null;_0x1c9da0[_['upperFirst'](_0xd9ddb7['channel'])+_0x0f18('0x1f')]=_0xd9ddb7[_0x0f18('0x20')]?_0xd9ddb7[_0x0f18('0x20')]['id']:null;_0x1c9da0[_['upperFirst'](_0xd9ddb7[_0x0f18('0x1d')])+(_0xd9ddb7['channel']!==_0x0f18('0x21')?_0x0f18('0x22'):'WebsiteId')]=_0xd9ddb7[_0x0f18('0x5')]?_0xd9ddb7[_0x0f18('0x5')]['id']:null;logger[_0x0f18('0x23')](util[_0x0f18('0xa')](_0x0f18('0x24'),_0x2ca0a8,_0x41849a[_0x0f18('0x25')]));emitChannelQueueInteraction(_0xd9ddb7[_0x0f18('0x1d')],_0x41849a['name'],_0x1c9da0,_0xd9ddb7['account'][_0x0f18('0x25')],_0xd9ddb7[_0x0f18('0x20')]['id'],!![],_0x29f7b6,_0x41849a['id']);if(rpc[_0xd9ddb7[_0x0f18('0x1d')]+_0x0f18('0x26')]){return rpc[_0xd9ddb7[_0x0f18('0x1d')]+_0x0f18('0x26')][_0x0f18('0x27')](_0x1c9da0)['catch'](function(_0x2a342e){logger[_0x0f18('0x28')](_0x0f18('0x29'));});}}}function stopRouting(_0x1effc1,_0x439af0,_0x13df58,_0x10d2f3){if(_0x1effc1&&_0x439af0){_0x439af0['waiting']-=0x1;var _0x33b2ed={'leaveAt':moment()[_0x0f18('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x0f18('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger[_0x0f18('0x23')](util[_0x0f18('0xa')](_0x0f18('0x2a'),_0x1effc1,_0x439af0[_0x0f18('0x25')]));emitChannelQueueInteraction(_0x13df58[_0x0f18('0x1d')],_0x439af0[_0x0f18('0x25')],_0x13df58[_0x0f18('0x18')],_0x13df58[_0x0f18('0x5')][_0x0f18('0x25')],_0x13df58['message']['id'],![],_0x10d2f3,_0x439af0['id']);if(rpc[_0x13df58['channel']+_0x0f18('0x26')]){return rpc[_0x13df58[_0x0f18('0x1d')]+_0x0f18('0x26')][_0x0f18('0x2b')](_0x1effc1,_0x33b2ed)['catch'](function(_0x30ed9f){logger[_0x0f18('0x28')](_0x0f18('0x2c'));});}}}function endRouting(_0x26d0f7,_0x4a9c59,_0x5cdd73,_0x58e81f){if(_0x26d0f7&&_0x4a9c59){_0x4a9c59[_0x0f18('0x17')]-=0x1;var _0x19be8e={'leaveAt':moment()[_0x0f18('0xa')](_0x0f18('0x2d')),'exitAt':moment()['format'](_0x0f18('0x2d')),'reason':_0x0f18('0x2e')};logger[_0x0f18('0x23')](util[_0x0f18('0xa')](_0x0f18('0x2f'),_0x26d0f7,_0x4a9c59[_0x0f18('0x25')]));emitChannelQueueInteraction(_0x5cdd73[_0x0f18('0x1d')],_0x4a9c59[_0x0f18('0x25')],_0x5cdd73[_0x0f18('0x18')],_0x5cdd73[_0x0f18('0x5')]['name'],_0x5cdd73[_0x0f18('0x20')]['id'],![],_0x58e81f);if(rpc[_0x5cdd73[_0x0f18('0x1d')]+_0x0f18('0x26')]){return rpc[_0x5cdd73[_0x0f18('0x1d')]+_0x0f18('0x26')][_0x0f18('0x2b')](_0x26d0f7,_0x19be8e)['catch'](function(_0x5726f4){logger[_0x0f18('0x28')]('update\x20queue\x20report');});}}}function handleFindQueue(_0xa9d443){return function(_0x4f68a9){return _0x4f68a9[_0x0f18('0x25')][_0x0f18('0x30')]()===_0xa9d443['toLowerCase']();};}exports[_0x0f18('0x31')]=function(_0xaafbbd,_0x36273a,_0x19ffd2,_0x506bc4){return function(_0x13590e){try{var _0x5c76c4={'name':_0x36273a[0x0],'timeout':_0x36273a[0x1]};var _0x2c6b4c=queue['validate'](_0x5c76c4,{'typecast':!![]});if(_0x2c6b4c[_0x0f18('0x32')]){logger[_0x0f18('0x28')](_0x0f18('0x33'),_0xaafbbd,_['map'](_0x2c6b4c,_0x0f18('0x20'))[_0x0f18('0x34')](',\x20'));_0x13590e[_0x0f18('0x35')]();}else{var _0x59e608=_[_0x0f18('0x36')](_0x19ffd2[_0x506bc4[_0x0f18('0x1d')]+_0x0f18('0x37')],handleFindQueue(_0x5c76c4[_0x0f18('0x25')]));if(_0x59e608){startRouting(_0xaafbbd,_0x59e608,_0x506bc4,_0x19ffd2);var _0x919437=(_0x59e608['timeout']||0xa)*0x3e8;var _0x38f703=(_0x5c76c4[_0x0f18('0x2e')]||0x14)*0x3e8;var _0x21fb28,_0x2a14d8;if(_0x919437>_0x38f703){_0x38f703=_0x919437;}var _0x48a636=seqqueue[_0x0f18('0x38')](_0x919437);_0x48a636['id']=_0xaafbbd;_0x48a636[_0x0f18('0x39')]=_0x919437;_0x48a636[_0x0f18('0x3a')]=_0x38f703;_0x48a636[_0x0f18('0x1d')]=_0x506bc4[_0x0f18('0x1d')];_0x2a14d8=setInterval(function(){if(_0x19ffd2[_0x0f18('0x3b')]&&!_0x19ffd2['rules'][_0xaafbbd]){stopRouting(_0xaafbbd,_0x59e608,_0x506bc4,_0x19ffd2);clearTimeout(_0x21fb28);clearInterval(_0x2a14d8);_0x21fb28=undefined;_0x48a636[_0x0f18('0x3c')](!![]);_0x13590e['stop']();}},0x3e8);_0x21fb28=setTimeout(function(){endRouting(_0xaafbbd,_0x59e608,_0x506bc4,_0x19ffd2);clearInterval(_0x2a14d8);_0x2a14d8=undefined;_0x48a636['close'](!![]);_0x13590e[_0x0f18('0x3d')]();},_0x38f703);switch(_0x59e608[_0x0f18('0x3e')]){case'rrmemory':strategy[_0x0f18('0x3f')](_0x48a636,_0x59e608,_0x19ffd2,_0x506bc4);break;default:strategy['beepall'](_0x48a636,_0x59e608,_0x19ffd2,_0x506bc4);}}else{logger[_0x0f18('0x28')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0xaafbbd,_0x5c76c4[_0x0f18('0x25')]);_0x13590e[_0x0f18('0x35')]();}}}catch(_0x5ce8be){console[_0x0f18('0x40')](_0x5ce8be);logger[_0x0f18('0x28')](_0x0f18('0x33'),_0xaafbbd,JSON[_0x0f18('0x41')](_0x5ce8be));_0x13590e[_0x0f18('0x35')]();}};};