f292a5dcf9d14fee148cb0111233cf8a0098eb2d
[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 _0x6aa7=['openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','message','interaction','applications','isArray','length','existsSync','join','.js','app','autoreply','appdata','split','channel','mail','push','slice','dialogflow','dialogflowv2','amazonlex','TagId','%s:%s:%s','condition','consequence','priority','info','on\x20interval','intervals','error','Please\x20create\x20a\x20new\x20file\x20under','rules','Applications\x20executed','stringify','matchPath','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','busyQueue','end','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agents','busy','emit','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues'];(function(_0x239a4b,_0x90265a){var _0xd6307e=function(_0x1b946f){while(--_0x1b946f){_0x239a4b['push'](_0x239a4b['shift']());}};_0xd6307e(++_0x90265a);}(_0x6aa7,0x178));var _0x76aa=function(_0x349344,_0xf3200c){_0x349344=_0x349344-0x0;var _0x23d771=_0x6aa7[_0x349344];return _0x23d771;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var fs=require('fs');var jayson=require(_0x76aa('0x2'));var BPromise=require(_0x76aa('0x3'));var uuid=require(_0x76aa('0x4'));var config=require('../../../config/environment');var logger=require(_0x76aa('0x5'))(_0x76aa('0x6'));var rpc={'openchannelQueueReport':require(_0x76aa('0x7')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x76aa('0x8')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x76aa('0x9'))};var RuleEngine=require(_0x76aa('0xa'));function getId(_0xa9b695,_0x56d6bc,_0x3dae33){return util[_0x76aa('0xb')](_0x76aa('0xc'),_0xa9b695,_0x56d6bc||0x0,_0x3dae33||0x0);}function getIntervals(_0x557d69,_0xcd99aa){var _0x25856d=[];if(!_[_0x76aa('0xd')](_0xcd99aa[_0x76aa('0xe')])&&!_[_0x76aa('0xd')](_0x557d69[_0xcd99aa[_0x76aa('0xe')]])&&!_[_0x76aa('0xd')](_0x557d69[_0xcd99aa[_0x76aa('0xe')]][_0x76aa('0xf')])){_0x25856d=_[_0x76aa('0x10')](_0x557d69[_0xcd99aa['IntervalId']][_0x76aa('0xf')],'interval');}else if(!_[_0x76aa('0xd')](_0xcd99aa[_0x76aa('0x11')])){_0x25856d=[_0xcd99aa[_0x76aa('0x11')]];}return _0x25856d;}exports[_0x76aa('0x12')]=function(_0x10432c){_0x10432c['rules']={};return new BPromise(function(_0x5f5b59,_0x2b3b4f){var _0x4cfc34={'Start':function(_0x180d92){var _0x319bf1=this;return new Promise(function(_0x5cf594,_0x2111c7){if(_0x180d92){try{var _0x550d9a=[];var _0x328381=getId(_0x180d92['channel'],_0x180d92[_0x76aa('0x13')]?_0x180d92[_0x76aa('0x13')]['id']:0x0,_0x180d92[_0x76aa('0x14')]?_0x180d92[_0x76aa('0x14')]['id']:0x0);if(_0x180d92[_0x76aa('0x15')]&&_[_0x76aa('0x16')](_0x180d92['applications'])&&_0x180d92['applications'][_0x76aa('0x17')]){for(var _0x454dd3=0x0;_0x454dd3<_0x180d92[_0x76aa('0x15')][_0x76aa('0x17')];_0x454dd3+=0x1){var _0x15109b=_0x180d92[_0x76aa('0x15')][_0x454dd3];if(fs[_0x76aa('0x18')](path[_0x76aa('0x19')](__dirname,_0x76aa('0x15'),_0x15109b['app']+_0x76aa('0x1a')))){var _0x21064c=[];switch(_0x15109b[_0x76aa('0x1b')]['toLowerCase']()){case _0x76aa('0x1c'):var _0x189cb6=_0x15109b[_0x76aa('0x1d')][_0x76aa('0x1e')](',');if(_0x180d92[_0x76aa('0x1f')]===_0x76aa('0x20')){_0x21064c[_0x76aa('0x21')](_0x189cb6[0x0]);_0x21064c[_0x76aa('0x21')](_0x189cb6[0x1]);_0x21064c[_0x76aa('0x21')](_0x189cb6[_0x76aa('0x22')](0x2,_0x189cb6[_0x76aa('0x17')])[_0x76aa('0x19')](','));}else{_0x21064c[_0x76aa('0x21')](_0x189cb6[0x0]);_0x21064c['push'](_0x189cb6[_0x76aa('0x22')](0x1,_0x189cb6[_0x76aa('0x17')])[_0x76aa('0x19')](','));}break;case _0x76aa('0x23'):var _0xa1e6=_0x15109b[_0x76aa('0x1d')][_0x76aa('0x1e')](',');_0x21064c[_0x76aa('0x21')](_0xa1e6[0x0]);_0x21064c[_0x76aa('0x21')](_0xa1e6[0x1]);_0x21064c[_0x76aa('0x21')](_0xa1e6['slice'](0x2,_0xa1e6[_0x76aa('0x17')])['join'](','));break;case _0x76aa('0x24'):var _0x365ff8=_0x15109b[_0x76aa('0x1d')][_0x76aa('0x1e')](',');_0x21064c[_0x76aa('0x21')](_0x365ff8[0x0]);_0x21064c[_0x76aa('0x21')](_0x365ff8[0x1]);_0x21064c[_0x76aa('0x21')](_0x365ff8[0x2]);_0x21064c[_0x76aa('0x21')](_0x365ff8[0x3]);_0x21064c[_0x76aa('0x21')](_0x365ff8[_0x76aa('0x22')](0x4,_0x365ff8['length'])[_0x76aa('0x19')](','));break;case _0x76aa('0x25'):var _0x1851d6=_0x15109b[_0x76aa('0x1d')][_0x76aa('0x1e')](',');_0x21064c[_0x76aa('0x21')](_0x1851d6[0x0]);_0x21064c[_0x76aa('0x21')](_0x1851d6[0x1]);_0x21064c['push'](_0x1851d6[0x2]);_0x21064c[_0x76aa('0x21')](_0x1851d6[0x3]);_0x21064c[_0x76aa('0x21')](_0x1851d6['slice'](0x4,_0x1851d6[_0x76aa('0x17')])['join'](','));break;case _0x76aa('0x13'):_0x21064c['push'](_0x15109b[_0x76aa('0x1d')]);break;case'tag':_0x21064c['push'](_0x15109b[_0x76aa('0x26')]);_0x21064c[_0x76aa('0x21')](_0x15109b[_0x76aa('0x1d')]);break;default:_0x21064c=_[_0x76aa('0xd')](_0x15109b['appdata'])?[]:_0x15109b['appdata'][_0x76aa('0x1e')](',');}var _0x1c7b6f={'id':util[_0x76aa('0xb')](_0x76aa('0x27'),_0x328381,_0x15109b['id'],_0x15109b[_0x76aa('0x1b')]),'condition':require('./interval')[_0x76aa('0x28')](_0x328381,getIntervals(_0x10432c['intervals'],_0x15109b),_0x10432c),'consequence':require('./applications/'+_0x15109b[_0x76aa('0x1b')])[_0x76aa('0x29')](_0x328381,_0x21064c,_0x10432c,_0x180d92),'p':_0x15109b[_0x76aa('0x2a')]||0x0};logger[_0x76aa('0x2b')]('Push\x20new\x20rule',_0x1c7b6f['id'],_0x76aa('0x2c'),getIntervals(_0x10432c[_0x76aa('0x2d')],_0x15109b)[_0x76aa('0x19')]('\x20|\x20'));_0x550d9a[_0x76aa('0x21')](_0x1c7b6f);}else{logger[_0x76aa('0x2e')](_0x76aa('0x2f'),path[_0x76aa('0x19')](__dirname,_0x76aa('0x15'),_0x15109b[_0x76aa('0x1b')]+_0x76aa('0x1a')));}}_0x10432c[_0x76aa('0x30')][_0x328381]=new RuleEngine(_0x550d9a);_0x10432c[_0x76aa('0x30')][_0x328381]['execute'](_0x180d92,function(_0x1525cb){logger[_0x76aa('0x2b')](_0x76aa('0x31'),JSON[_0x76aa('0x32')](_0x1525cb[_0x76aa('0x33')]));if(_0x10432c[_0x76aa('0x30')][_0x328381]){_0x10432c['rules'][_0x328381]['emit'](_0x76aa('0x34'));}});return _0x5cf594({'code':0xc8,'message':_0x180d92});}else{logger[_0x76aa('0x2b')](_0x76aa('0x35'));return _0x5cf594({'code':0xc8,'message':_0x180d92});}}catch(_0x365612){logger['error'](_0x365612[_0x76aa('0x36')]);return _0x2111c7(_0x319bf1[_0x76aa('0x2e')](0x1f4,_0x365612));}}return _0x2111c7(_0x76aa('0x37'));});},'AcceptMessage':function(_0x30cdcb){var _0x1138b5=this;return new Promise(function(_0x4aa2f3,_0x13dafe){if(_0x30cdcb['agent']&&_0x30cdcb[_0x76aa('0x38')]['id']){if(_0x10432c['agents'][_0x30cdcb['agent']['id']]){_0x10432c['agents'][_0x30cdcb[_0x76aa('0x38')]['id']]['busy']=![];_0x10432c['agents'][_0x30cdcb['agent']['id']][_0x76aa('0x39')]=undefined;}}if(_0x30cdcb[_0x76aa('0x13')]&&_0x30cdcb[_0x76aa('0x13')]['id']){try{var _0x2c0744=getId(_0x30cdcb[_0x76aa('0x1f')],_0x30cdcb['message']?_0x30cdcb[_0x76aa('0x13')]['id']:0x0,_0x30cdcb[_0x76aa('0x14')]?_0x30cdcb[_0x76aa('0x14')]['id']:0x0);if(_0x10432c[_0x76aa('0x30')][_0x2c0744]){_0x10432c[_0x76aa('0x30')][_0x2c0744]['emit'](_0x76aa('0x3a'));if(rpc[_0x30cdcb[_0x76aa('0x1f')]+'QueueReport']){rpc[_0x30cdcb[_0x76aa('0x1f')]+'QueueReport'][_0x76aa('0x3b')](_0x2c0744,{'UserId':_0x30cdcb[_0x76aa('0x13')][_0x76aa('0x3c')]})[_0x76aa('0x3d')](function(_0x2d0bc4){logger[_0x76aa('0x2e')](_0x76aa('0x3e'));});}}return _0x4aa2f3({'code':0xc8,'message':_0x30cdcb});}catch(_0x165858){logger[_0x76aa('0x2e')](_0x165858[_0x76aa('0x36')]);return _0x13dafe(_0x1138b5['error'](0x1f4,_0x165858));}}logger[_0x76aa('0x2e')]('message\x20is\x20empty');return _0x13dafe(_0x1138b5[_0x76aa('0x2e')](0x1f4,_0x76aa('0x3f')));});},'RejectMessage':function(_0x5e95f5){var _0x156d4e=this;return new Promise(function(_0x5ca721,_0x5a3d9c){if(_0x5e95f5[_0x76aa('0x38')]&&_0x5e95f5['agent']['id']){try{if(_0x10432c[_0x76aa('0x40')][_0x5e95f5[_0x76aa('0x38')]['id']]){_0x10432c[_0x76aa('0x40')][_0x5e95f5[_0x76aa('0x38')]['id']][_0x76aa('0x41')]=![];_0x10432c[_0x76aa('0x40')][_0x5e95f5['agent']['id']]['busyQueue']=undefined;}return _0x5ca721({'code':0xc8,'message':_0x5e95f5});}catch(_0x2fcf8f){logger[_0x76aa('0x2e')](_0x2fcf8f[_0x76aa('0x36')]);return _0x5a3d9c(_0x156d4e[_0x76aa('0x2e')](0x1f4,_0x2fcf8f));}}logger[_0x76aa('0x2e')](_0x76aa('0x3f'));return _0x5a3d9c(_0x156d4e['error'](0x1f4,_0x76aa('0x3f')));});},'AbandonInteraction':function(_0x2d631e){var _0x26db69=this;return new Promise(function(_0x4b3d2a,_0x30d930){if(_0x2d631e['channel']&&_0x2d631e[_0x76aa('0x14')]&&_0x2d631e['interaction']['id']){try{var _0x339b0d=getId(_0x2d631e[_0x76aa('0x1f')],_0x2d631e[_0x76aa('0x13')]?_0x2d631e[_0x76aa('0x13')]['id']:0x0,_0x2d631e[_0x76aa('0x14')]?_0x2d631e[_0x76aa('0x14')]['id']:0x0);if(_0x10432c[_0x76aa('0x30')][_0x339b0d]){_0x10432c['rules'][_0x339b0d][_0x76aa('0x42')]('end');}return _0x4b3d2a({'code':0xc8,'message':_0x2d631e});}catch(_0x3ee32){logger[_0x76aa('0x2e')](_0x3ee32[_0x76aa('0x36')]);return _0x30d930(_0x26db69[_0x76aa('0x2e')](0x1f4,_0x3ee32));}}logger[_0x76aa('0x2e')](_0x76aa('0x3f'));return _0x30d930(_0x26db69[_0x76aa('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x333a3a){var _0x281f73=this;return new Promise(function(_0x27fc84,_0x1fd2b6){if(_0x10432c['agents'][_0x76aa('0x43')](_0x333a3a['id'])){for(var _0x163440 in _0x333a3a[_0x76aa('0x44')]){if(_0x333a3a[_0x76aa('0x44')][_0x76aa('0x43')](_0x163440)){if(_0x10432c[_0x76aa('0x40')][_0x333a3a['id']]['hasOwnProperty'](_0x163440+_0x76aa('0x45'))){_0x10432c[_0x76aa('0x40')][_0x333a3a['id']][_0x163440+_0x76aa('0x45')]=parseInt(_0x333a3a[_0x76aa('0x44')][_0x163440],0xa);}}}_0x10432c[_0x76aa('0x40')][_0x333a3a['id']][_0x76aa('0x46')]();return _0x27fc84({'code':0xc8,'message':_0x10432c[_0x76aa('0x40')][_0x333a3a['id']]});}else{return _0x1fd2b6(_0x281f73['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x2c59a6){return new Promise(function(_0x3b0d8a,_0x5713e7){var _0x3d7802=_[_0x76aa('0x47')](_0x10432c['agents']);_0x3b0d8a({'count':_0x3d7802[_0x76aa('0x17')],'rows':_0x3d7802});});},'ChatQueues':function(_0x5e5993){return new Promise(function(_0x1928c2,_0x22de7c){var _0x24662d=[];for(var _0x1f5010 in _0x10432c[_0x76aa('0x48')]){if(_0x10432c[_0x76aa('0x48')][_0x76aa('0x43')](_0x1f5010)){var _0x57d778=_0x10432c[_0x76aa('0x48')][_0x1f5010];var _0x49156c={'id':_0x57d778['id'],'available':_0x57d778[_0x76aa('0x49')],'loggedIn':_0x57d778[_0x76aa('0x4a')],'name':_0x57d778[_0x76aa('0x4b')],'paused':_0x57d778[_0x76aa('0x4c')],'waiting':_0x57d778[_0x76aa('0x4d')]};_0x24662d[_0x76aa('0x21')](_0x49156c);}}_0x1928c2({'count':_0x24662d[_0x76aa('0x17')],'rows':_0x24662d});});},'MailQueues':function(_0x431d1c){return new Promise(function(_0x2f1263,_0x5eceba){var _0x267fcf=[];for(var _0x3d4025 in _0x10432c[_0x76aa('0x4e')]){if(_0x10432c[_0x76aa('0x4e')][_0x76aa('0x43')](_0x3d4025)){var _0x884b8b=_0x10432c[_0x76aa('0x4e')][_0x3d4025];var _0x157540={'id':_0x884b8b['id'],'available':_0x884b8b['available'],'loggedIn':_0x884b8b[_0x76aa('0x4a')],'name':_0x884b8b['name'],'paused':_0x884b8b[_0x76aa('0x4c')],'waiting':_0x884b8b[_0x76aa('0x4d')]};_0x267fcf[_0x76aa('0x21')](_0x157540);}}_0x2f1263({'count':_0x267fcf[_0x76aa('0x17')],'rows':_0x267fcf});});},'OpenchannelQueues':function(_0x3a82fe){return new Promise(function(_0x234dc4,_0x2bfb46){var _0x4a37f1=[];for(var _0x9ea0af in _0x10432c[_0x76aa('0x4f')]){if(_0x10432c['openchannelQueues']['hasOwnProperty'](_0x9ea0af)){var _0x40429c=_0x10432c[_0x76aa('0x4f')][_0x9ea0af];var _0x5295a7={'id':_0x40429c['id'],'available':_0x40429c[_0x76aa('0x49')],'loggedIn':_0x40429c[_0x76aa('0x4a')],'name':_0x40429c[_0x76aa('0x4b')],'paused':_0x40429c['paused'],'waiting':_0x40429c[_0x76aa('0x4d')]};_0x4a37f1['push'](_0x5295a7);}}_0x234dc4({'count':_0x4a37f1[_0x76aa('0x17')],'rows':_0x4a37f1});});},'SmsQueues':function(_0x1178e5){return new Promise(function(_0x2315cf,_0x169947){var _0x55ca84=[];for(var _0x4f3119 in _0x10432c[_0x76aa('0x50')]){if(_0x10432c['smsQueues'][_0x76aa('0x43')](_0x4f3119)){var _0x28feb2=_0x10432c[_0x76aa('0x50')][_0x4f3119];var _0x43a2af={'id':_0x28feb2['id'],'available':_0x28feb2[_0x76aa('0x49')],'loggedIn':_0x28feb2[_0x76aa('0x4a')],'name':_0x28feb2[_0x76aa('0x4b')],'paused':_0x28feb2[_0x76aa('0x4c')],'waiting':_0x28feb2[_0x76aa('0x4d')]};_0x55ca84['push'](_0x43a2af);}}_0x2315cf({'count':_0x55ca84[_0x76aa('0x17')],'rows':_0x55ca84});});},'FaxQueues':function(_0x1eadee){return new Promise(function(_0xc6f48d,_0x45ae9f){var _0x4eb2e7=[];for(var _0x4c0af4 in _0x10432c['faxQueues']){if(_0x10432c[_0x76aa('0x51')]['hasOwnProperty'](_0x4c0af4)){var _0xb61e5=_0x10432c[_0x76aa('0x51')][_0x4c0af4];var _0x38faff={'id':_0xb61e5['id'],'available':_0xb61e5[_0x76aa('0x49')],'loggedIn':_0xb61e5['loggedIn'],'name':_0xb61e5[_0x76aa('0x4b')],'paused':_0xb61e5['paused'],'waiting':_0xb61e5[_0x76aa('0x4d')]};_0x4eb2e7[_0x76aa('0x21')](_0x38faff);}}_0xc6f48d({'count':_0x4eb2e7[_0x76aa('0x17')],'rows':_0x4eb2e7});});},'WhatsappQueues':function(_0x11d602){return new Promise(function(_0x1037fb,_0x496e66){var _0x448016=[];for(var _0x13ae5d in _0x10432c[_0x76aa('0x52')]){if(_0x10432c[_0x76aa('0x52')][_0x76aa('0x43')](_0x13ae5d)){var _0x22432d=_0x10432c[_0x76aa('0x52')][_0x13ae5d];var _0x18c88a={'id':_0x22432d['id'],'available':_0x22432d['available'],'loggedIn':_0x22432d[_0x76aa('0x4a')],'name':_0x22432d[_0x76aa('0x4b')],'paused':_0x22432d['paused'],'waiting':_0x22432d[_0x76aa('0x4d')]};_0x448016[_0x76aa('0x21')](_0x18c88a);}}_0x1037fb({'count':_0x448016[_0x76aa('0x17')],'rows':_0x448016});});},'ChatQueuesWaitingInteractions':function(_0x37cfa1){return new Promise(function(_0x1ad3c6,_0x51b101){var _0x2eaeb5=_['values'](_0x10432c[_0x76aa('0x53')]);_0x1ad3c6({'count':_0x2eaeb5['length'],'rows':_0x2eaeb5});});},'MailQueuesWaitingInteractions':function(_0x52f05d){return new Promise(function(_0x482864,_0x98e574){var _0x5d8947=_['values'](_0x10432c[_0x76aa('0x54')]);_0x482864({'count':_0x5d8947[_0x76aa('0x17')],'rows':_0x5d8947});});},'OpenchannelQueuesWaitingInteractions':function(_0xd4cbe1){return new Promise(function(_0x588cc5,_0x57bbc2){var _0x17efc6=_[_0x76aa('0x47')](_0x10432c[_0x76aa('0x55')]);_0x588cc5({'count':_0x17efc6['length'],'rows':_0x17efc6});});},'SmsQueuesWaitingInteractions':function(_0xb70589){return new Promise(function(_0x4c773a,_0x521bae){var _0x306cc6=_[_0x76aa('0x47')](_0x10432c[_0x76aa('0x56')]);_0x4c773a({'count':_0x306cc6[_0x76aa('0x17')],'rows':_0x306cc6});});},'FaxQueuesWaitingInteractions':function(_0x486d86){return new Promise(function(_0x5a79ba,_0x117faf){var _0x272a28=_[_0x76aa('0x47')](_0x10432c['faxQueuesWaitingInteractions']);_0x5a79ba({'count':_0x272a28[_0x76aa('0x17')],'rows':_0x272a28});});},'WhatsappQueuesWaitingInteractions':function(_0x3b6e44){return new Promise(function(_0x2ce07f,_0x42cfc3){var _0x303b78=_['values'](_0x10432c[_0x76aa('0x57')]);_0x2ce07f({'count':_0x303b78['length'],'rows':_0x303b78});});}};var _0x213f7f=jayson[_0x76aa('0x58')](_0x4cfc34)[_0x76aa('0x59')]();_0x213f7f['on'](_0x76aa('0x2e'),function(_0x45f05e){logger[_0x76aa('0x2e')](JSON['stringify'](_0x45f05e));return _0x2b3b4f(_0x45f05e);});_0x213f7f['listen'](0x232c,'127.0.0.1',function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x5f5b59(_0x76aa('0x5a')+0x232c);});});};