Built motion from commit (unavailable).|2.5.6
[motion2.git] / server / services / routing / server / index.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 _0x4453=['QueueReport','update','catch','message\x20is\x20empty','agent','agents','busyQueue','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','hasOwnProperty','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','isArray','applications','length','join','.js','app','toLowerCase','split','push','slice','dialogflow','appdata','amazonlex','tag','TagId','%s:%s:%s','./interval','intervals','./applications/','consequence','priority','Push\x20new\x20rule','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','stack','end'];(function(_0x4ce637,_0x463346){var _0x2e9cba=function(_0x11f3d1){while(--_0x11f3d1){_0x4ce637['push'](_0x4ce637['shift']());}};_0x2e9cba(++_0x463346);}(_0x4453,0xd5));var _0x3445=function(_0x8fba1a,_0x274189){_0x8fba1a=_0x8fba1a-0x0;var _0x2f5c2d=_0x4453[_0x8fba1a];return _0x2f5c2d;};'use strict';var _=require(_0x3445('0x0'));var util=require(_0x3445('0x1'));var path=require(_0x3445('0x2'));var fs=require('fs');var jayson=require(_0x3445('0x3'));var BPromise=require(_0x3445('0x4'));var uuid=require(_0x3445('0x5'));var config=require(_0x3445('0x6'));var logger=require(_0x3445('0x7'))('routing');var rpc={'openchannelQueueReport':require(_0x3445('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x3445('0x9')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x3445('0xa'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x5500a4,_0x1aba0a,_0x302191){return util[_0x3445('0xb')](_0x3445('0xc'),_0x5500a4,_0x1aba0a||0x0,_0x302191||0x0);}function getIntervals(_0xcd825a,_0x4c838c){var _0x44b512=[];if(!_[_0x3445('0xd')](_0x4c838c[_0x3445('0xe')])&&!_['isNil'](_0xcd825a[_0x4c838c[_0x3445('0xe')]])&&!_[_0x3445('0xd')](_0xcd825a[_0x4c838c[_0x3445('0xe')]][_0x3445('0xf')])){_0x44b512=_[_0x3445('0x10')](_0xcd825a[_0x4c838c[_0x3445('0xe')]][_0x3445('0xf')],_0x3445('0x11'));}else if(!_['isNil'](_0x4c838c['interval'])){_0x44b512=[_0x4c838c['interval']];}return _0x44b512;}exports[_0x3445('0x12')]=function(_0x281c47){_0x281c47[_0x3445('0x13')]={};return new BPromise(function(_0x21b269,_0x577446){var _0x54b0c8={'Start':function(_0x6a9ba7){var _0x2b4984=this;return new Promise(function(_0x33f0d0,_0x3477e2){if(_0x6a9ba7){try{var _0x112c39=[];var _0x231ca6=getId(_0x6a9ba7[_0x3445('0x14')],_0x6a9ba7[_0x3445('0x15')]?_0x6a9ba7[_0x3445('0x15')]['id']:0x0,_0x6a9ba7[_0x3445('0x16')]?_0x6a9ba7[_0x3445('0x16')]['id']:0x0);if(_0x6a9ba7['applications']&&_[_0x3445('0x17')](_0x6a9ba7[_0x3445('0x18')])&&_0x6a9ba7[_0x3445('0x18')][_0x3445('0x19')]){for(var _0x439f8a=0x0;_0x439f8a<_0x6a9ba7[_0x3445('0x18')]['length'];_0x439f8a+=0x1){var _0x1a6a89=_0x6a9ba7['applications'][_0x439f8a];if(fs['existsSync'](path[_0x3445('0x1a')](__dirname,_0x3445('0x18'),_0x1a6a89['app']+_0x3445('0x1b')))){var _0x3fbc91=[];switch(_0x1a6a89[_0x3445('0x1c')][_0x3445('0x1d')]()){case'autoreply':var _0x2f89a4=_0x1a6a89['appdata'][_0x3445('0x1e')](',');_0x3fbc91[_0x3445('0x1f')](_0x2f89a4[0x0]);_0x3fbc91['push'](_0x2f89a4[_0x3445('0x20')](0x1,_0x2f89a4[_0x3445('0x19')])[_0x3445('0x1a')](','));break;case _0x3445('0x21'):var _0x26f78f=_0x1a6a89[_0x3445('0x22')][_0x3445('0x1e')](',');_0x3fbc91[_0x3445('0x1f')](_0x26f78f[0x0]);_0x3fbc91[_0x3445('0x1f')](_0x26f78f[0x1]);_0x3fbc91[_0x3445('0x1f')](_0x26f78f[_0x3445('0x20')](0x2,_0x26f78f[_0x3445('0x19')])[_0x3445('0x1a')](','));break;case _0x3445('0x23'):var _0x138986=_0x1a6a89[_0x3445('0x22')][_0x3445('0x1e')](',');_0x3fbc91[_0x3445('0x1f')](_0x138986[0x0]);_0x3fbc91[_0x3445('0x1f')](_0x138986[0x1]);_0x3fbc91['push'](_0x138986[0x2]);_0x3fbc91[_0x3445('0x1f')](_0x138986[0x3]);_0x3fbc91[_0x3445('0x1f')](_0x138986[_0x3445('0x20')](0x4,_0x138986['length'])[_0x3445('0x1a')](','));break;case _0x3445('0x15'):_0x3fbc91[_0x3445('0x1f')](_0x1a6a89[_0x3445('0x22')]);break;case _0x3445('0x24'):_0x3fbc91['push'](_0x1a6a89[_0x3445('0x25')]);_0x3fbc91[_0x3445('0x1f')](_0x1a6a89[_0x3445('0x22')]);break;default:_0x3fbc91=_[_0x3445('0xd')](_0x1a6a89['appdata'])?[]:_0x1a6a89[_0x3445('0x22')]['split'](',');}var _0xecdbc3={'id':util[_0x3445('0xb')](_0x3445('0x26'),_0x231ca6,_0x1a6a89['id'],_0x1a6a89[_0x3445('0x1c')]),'condition':require(_0x3445('0x27'))['condition'](_0x231ca6,getIntervals(_0x281c47[_0x3445('0x28')],_0x1a6a89),_0x281c47),'consequence':require(_0x3445('0x29')+_0x1a6a89[_0x3445('0x1c')])[_0x3445('0x2a')](_0x231ca6,_0x3fbc91,_0x281c47,_0x6a9ba7),'p':_0x1a6a89[_0x3445('0x2b')]||0x0};logger['info'](_0x3445('0x2c'),_0xecdbc3['id'],'on\x20interval',getIntervals(_0x281c47[_0x3445('0x28')],_0x1a6a89)[_0x3445('0x1a')](_0x3445('0x2d')));_0x112c39[_0x3445('0x1f')](_0xecdbc3);}else{logger[_0x3445('0x2e')](_0x3445('0x2f'),path[_0x3445('0x1a')](__dirname,'applications',_0x1a6a89[_0x3445('0x1c')]+_0x3445('0x1b')));}}_0x281c47[_0x3445('0x13')][_0x231ca6]=new RuleEngine(_0x112c39);_0x281c47[_0x3445('0x13')][_0x231ca6][_0x3445('0x30')](_0x6a9ba7,function(_0x2cd73d){logger[_0x3445('0x31')](_0x3445('0x32'),JSON[_0x3445('0x33')](_0x2cd73d['matchPath']));if(_0x281c47[_0x3445('0x13')][_0x231ca6]){_0x281c47[_0x3445('0x13')][_0x231ca6][_0x3445('0x34')](_0x3445('0x35'));}});return _0x33f0d0({'code':0xc8,'message':_0x6a9ba7});}else{logger[_0x3445('0x31')](_0x3445('0x36'));return _0x33f0d0({'code':0xc8,'message':_0x6a9ba7});}}catch(_0x53174f){logger[_0x3445('0x2e')](_0x53174f[_0x3445('0x37')]);return _0x3477e2(_0x2b4984[_0x3445('0x2e')](0x1f4,_0x53174f));}}return _0x3477e2('routing\x20is\x20empty');});},'AcceptMessage':function(_0x5bd2ac){var _0x33b477=this;return new Promise(function(_0x2fe917,_0x50ed63){if(_0x5bd2ac[_0x3445('0x15')]&&_0x5bd2ac['message']['id']){try{var _0x37b6f1=getId(_0x5bd2ac[_0x3445('0x14')],_0x5bd2ac[_0x3445('0x15')]?_0x5bd2ac[_0x3445('0x15')]['id']:0x0,_0x5bd2ac[_0x3445('0x16')]?_0x5bd2ac[_0x3445('0x16')]['id']:0x0);if(_0x281c47['rules'][_0x37b6f1]){_0x281c47[_0x3445('0x13')][_0x37b6f1][_0x3445('0x34')](_0x3445('0x38'));if(rpc[_0x5bd2ac[_0x3445('0x14')]+'QueueReport']){rpc[_0x5bd2ac[_0x3445('0x14')]+_0x3445('0x39')][_0x3445('0x3a')](_0x37b6f1,{'UserId':_0x5bd2ac['message']['UserId']})[_0x3445('0x3b')](function(_0x1f6404){logger['error']('error\x20update\x20queue\x20report');});}}return _0x2fe917({'code':0xc8,'message':_0x5bd2ac});}catch(_0x295f86){logger[_0x3445('0x2e')](_0x295f86[_0x3445('0x37')]);return _0x50ed63(_0x33b477[_0x3445('0x2e')](0x1f4,_0x295f86));}}logger[_0x3445('0x2e')](_0x3445('0x3c'));return _0x50ed63(_0x33b477['error'](0x1f4,_0x3445('0x3c')));});},'RejectMessage':function(_0x115d77){var _0x1c7a19=this;return new Promise(function(_0x38c4b5,_0x43402a){if(_0x115d77[_0x3445('0x3d')]&&_0x115d77[_0x3445('0x3d')]['id']){try{if(_0x281c47['agents'][_0x115d77[_0x3445('0x3d')]['id']]){_0x281c47[_0x3445('0x3e')][_0x115d77[_0x3445('0x3d')]['id']]['busy']=![];_0x281c47[_0x3445('0x3e')][_0x115d77[_0x3445('0x3d')]['id']][_0x3445('0x3f')]=undefined;}return _0x38c4b5({'code':0xc8,'message':_0x115d77});}catch(_0x4799f5){logger[_0x3445('0x2e')](_0x4799f5[_0x3445('0x37')]);return _0x43402a(_0x1c7a19[_0x3445('0x2e')](0x1f4,_0x4799f5));}}logger[_0x3445('0x2e')](_0x3445('0x3c'));return _0x43402a(_0x1c7a19[_0x3445('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x3099ff){var _0x4c547e=this;return new Promise(function(_0x3aeead,_0x27bb9d){if(_0x3099ff[_0x3445('0x14')]&&_0x3099ff[_0x3445('0x16')]&&_0x3099ff[_0x3445('0x16')]['id']){try{var _0x44792f=getId(_0x3099ff[_0x3445('0x14')],_0x3099ff[_0x3445('0x15')]?_0x3099ff[_0x3445('0x15')]['id']:0x0,_0x3099ff[_0x3445('0x16')]?_0x3099ff['interaction']['id']:0x0);if(_0x281c47['rules'][_0x44792f]){_0x281c47[_0x3445('0x13')][_0x44792f][_0x3445('0x34')](_0x3445('0x38'));}return _0x3aeead({'code':0xc8,'message':_0x3099ff});}catch(_0x4ab00c){logger['error'](_0x4ab00c[_0x3445('0x37')]);return _0x27bb9d(_0x4c547e[_0x3445('0x2e')](0x1f4,_0x4ab00c));}}logger['error']('message\x20is\x20empty');return _0x27bb9d(_0x4c547e[_0x3445('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x5b42ac){var _0x18ec15=this;return new Promise(function(_0x4e5646,_0x5ac383){if(_0x281c47[_0x3445('0x3e')]['hasOwnProperty'](_0x5b42ac['id'])){for(var _0x2ab30b in _0x5b42ac[_0x3445('0x40')]){if(_0x5b42ac[_0x3445('0x40')]['hasOwnProperty'](_0x2ab30b)){if(_0x281c47['agents'][_0x5b42ac['id']]['hasOwnProperty'](_0x2ab30b+_0x3445('0x41'))){_0x281c47['agents'][_0x5b42ac['id']][_0x2ab30b+_0x3445('0x41')]=parseInt(_0x5b42ac[_0x3445('0x40')][_0x2ab30b],0xa);}}}_0x281c47[_0x3445('0x3e')][_0x5b42ac['id']][_0x3445('0x42')]();return _0x4e5646({'code':0xc8,'message':_0x281c47['agents'][_0x5b42ac['id']]});}else{return _0x5ac383(_0x18ec15[_0x3445('0x2e')](0x1f4,_0x3445('0x43')));}});},'Agents':function(_0x25dac8){return new Promise(function(_0x47b0b5,_0xdfc894){var _0x3b92ad=_[_0x3445('0x44')](_0x281c47[_0x3445('0x3e')]);_0x47b0b5({'count':_0x3b92ad[_0x3445('0x19')],'rows':_0x3b92ad});});},'ChatQueues':function(_0x3bfe58){return new Promise(function(_0x19cf61,_0x5c2a11){var _0x2a7672=[];for(var _0x2f9796 in _0x281c47[_0x3445('0x45')]){if(_0x281c47[_0x3445('0x45')][_0x3445('0x46')](_0x2f9796)){var _0x24d80a=_0x281c47[_0x3445('0x45')][_0x2f9796];var _0x4f7bac={'id':_0x24d80a['id'],'available':_0x24d80a['available'],'loggedIn':_0x24d80a[_0x3445('0x47')],'name':_0x24d80a[_0x3445('0x48')],'paused':_0x24d80a[_0x3445('0x49')],'waiting':_0x24d80a[_0x3445('0x4a')]};_0x2a7672['push'](_0x4f7bac);}}_0x19cf61({'count':_0x2a7672['length'],'rows':_0x2a7672});});},'MailQueues':function(_0x4edc6d){return new Promise(function(_0xee9991,_0x3fdcb7){var _0x44b0d4=[];for(var _0x289407 in _0x281c47['mailQueues']){if(_0x281c47[_0x3445('0x4b')][_0x3445('0x46')](_0x289407)){var _0x41d264=_0x281c47[_0x3445('0x4b')][_0x289407];var _0x3df19d={'id':_0x41d264['id'],'available':_0x41d264['available'],'loggedIn':_0x41d264[_0x3445('0x47')],'name':_0x41d264[_0x3445('0x48')],'paused':_0x41d264[_0x3445('0x49')],'waiting':_0x41d264[_0x3445('0x4a')]};_0x44b0d4[_0x3445('0x1f')](_0x3df19d);}}_0xee9991({'count':_0x44b0d4['length'],'rows':_0x44b0d4});});},'OpenchannelQueues':function(_0x2ebcc6){return new Promise(function(_0x3ba3c1,_0x84fe15){var _0x1ec055=[];for(var _0x1fd776 in _0x281c47[_0x3445('0x4c')]){if(_0x281c47[_0x3445('0x4c')]['hasOwnProperty'](_0x1fd776)){var _0x344633=_0x281c47[_0x3445('0x4c')][_0x1fd776];var _0x568eb8={'id':_0x344633['id'],'available':_0x344633[_0x3445('0x4d')],'loggedIn':_0x344633['loggedIn'],'name':_0x344633['name'],'paused':_0x344633[_0x3445('0x49')],'waiting':_0x344633[_0x3445('0x4a')]};_0x1ec055[_0x3445('0x1f')](_0x568eb8);}}_0x3ba3c1({'count':_0x1ec055[_0x3445('0x19')],'rows':_0x1ec055});});},'SmsQueues':function(_0x4f2db4){return new Promise(function(_0x4ab090,_0x373c2a){var _0x571eb4=[];for(var _0x11e74a in _0x281c47[_0x3445('0x4e')]){if(_0x281c47[_0x3445('0x4e')][_0x3445('0x46')](_0x11e74a)){var _0x5a586a=_0x281c47[_0x3445('0x4e')][_0x11e74a];var _0x1600b3={'id':_0x5a586a['id'],'available':_0x5a586a['available'],'loggedIn':_0x5a586a['loggedIn'],'name':_0x5a586a[_0x3445('0x48')],'paused':_0x5a586a[_0x3445('0x49')],'waiting':_0x5a586a[_0x3445('0x4a')]};_0x571eb4[_0x3445('0x1f')](_0x1600b3);}}_0x4ab090({'count':_0x571eb4[_0x3445('0x19')],'rows':_0x571eb4});});},'FaxQueues':function(_0x1bc832){return new Promise(function(_0x54d221,_0x38e6d5){var _0x298ea0=[];for(var _0x2aa136 in _0x281c47[_0x3445('0x4f')]){if(_0x281c47[_0x3445('0x4f')]['hasOwnProperty'](_0x2aa136)){var _0x36214d=_0x281c47[_0x3445('0x4f')][_0x2aa136];var _0x4a5e13={'id':_0x36214d['id'],'available':_0x36214d[_0x3445('0x4d')],'loggedIn':_0x36214d[_0x3445('0x47')],'name':_0x36214d[_0x3445('0x48')],'paused':_0x36214d['paused'],'waiting':_0x36214d[_0x3445('0x4a')]};_0x298ea0[_0x3445('0x1f')](_0x4a5e13);}}_0x54d221({'count':_0x298ea0[_0x3445('0x19')],'rows':_0x298ea0});});},'WhatsappQueues':function(_0x2e1196){return new Promise(function(_0x59609f,_0x438d9d){var _0x3e7787=[];for(var _0x519fb2 in _0x281c47[_0x3445('0x50')]){if(_0x281c47[_0x3445('0x50')]['hasOwnProperty'](_0x519fb2)){var _0x3f10ed=_0x281c47[_0x3445('0x50')][_0x519fb2];var _0x22d08a={'id':_0x3f10ed['id'],'available':_0x3f10ed[_0x3445('0x4d')],'loggedIn':_0x3f10ed['loggedIn'],'name':_0x3f10ed[_0x3445('0x48')],'paused':_0x3f10ed['paused'],'waiting':_0x3f10ed[_0x3445('0x4a')]};_0x3e7787[_0x3445('0x1f')](_0x22d08a);}}_0x59609f({'count':_0x3e7787['length'],'rows':_0x3e7787});});},'ChatQueuesWaitingInteractions':function(_0x52436f){return new Promise(function(_0x270aee,_0x3e02ee){var _0x3bca72=_['values'](_0x281c47[_0x3445('0x51')]);_0x270aee({'count':_0x3bca72[_0x3445('0x19')],'rows':_0x3bca72});});},'MailQueuesWaitingInteractions':function(_0x49c8d7){return new Promise(function(_0x5459d4,_0x311ba1){var _0x2b02e1=_[_0x3445('0x44')](_0x281c47['mailQueuesWaitingInteractions']);_0x5459d4({'count':_0x2b02e1[_0x3445('0x19')],'rows':_0x2b02e1});});},'OpenchannelQueuesWaitingInteractions':function(_0xeb1182){return new Promise(function(_0x4390c1,_0x4834c3){var _0x35ec6f=_[_0x3445('0x44')](_0x281c47[_0x3445('0x52')]);_0x4390c1({'count':_0x35ec6f[_0x3445('0x19')],'rows':_0x35ec6f});});},'SmsQueuesWaitingInteractions':function(_0x35161d){return new Promise(function(_0x2713d1,_0x42126a){var _0x46176d=_['values'](_0x281c47[_0x3445('0x53')]);_0x2713d1({'count':_0x46176d[_0x3445('0x19')],'rows':_0x46176d});});},'FaxQueuesWaitingInteractions':function(_0x477030){return new Promise(function(_0x5c5283,_0x5dcefc){var _0x5bdffb=_[_0x3445('0x44')](_0x281c47[_0x3445('0x54')]);_0x5c5283({'count':_0x5bdffb[_0x3445('0x19')],'rows':_0x5bdffb});});},'WhatsappQueuesWaitingInteractions':function(_0x4f75fb){return new Promise(function(_0x49859f,_0x3ee081){var _0x129159=_[_0x3445('0x44')](_0x281c47['whatsappQueuesWaitingInteractions']);_0x49859f({'count':_0x129159[_0x3445('0x19')],'rows':_0x129159});});}};var _0x875fd3=jayson[_0x3445('0x55')](_0x54b0c8)[_0x3445('0x56')]();_0x875fd3['on'](_0x3445('0x2e'),function(_0x397c54){logger[_0x3445('0x2e')](JSON[_0x3445('0x33')](_0x397c54));return _0x577446(_0x397c54);});_0x875fd3['listen'](0x232c,_0x3445('0x57'),function(){console[_0x3445('0x58')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x21b269(_0x3445('0x59')+0x232c);});});};