488c12193b1e15e4d00507738f8973c8652f4e66
[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 _0x7579=['loggedIn','name','paused','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','join','app','.js','autoreply','appdata','split','mail','push','slice','dialogflowv2','amazonlex','TagId','%s:%s:%s','./interval','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','Applications\x20executed','stringify','emit','stack','routing\x20is\x20empty','agent','agents','busyQueue','QueueReport','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','waiting','mailQueues'];(function(_0x2f8da7,_0x351daa){var _0x5dba68=function(_0x6c7010){while(--_0x6c7010){_0x2f8da7['push'](_0x2f8da7['shift']());}};_0x5dba68(++_0x351daa);}(_0x7579,0x1e2));var _0x9757=function(_0x1e230c,_0x4f72f1){_0x1e230c=_0x1e230c-0x0;var _0x57327c=_0x7579[_0x1e230c];return _0x57327c;};'use strict';var _=require(_0x9757('0x0'));var util=require(_0x9757('0x1'));var path=require(_0x9757('0x2'));var fs=require('fs');var jayson=require(_0x9757('0x3'));var BPromise=require(_0x9757('0x4'));var uuid=require(_0x9757('0x5'));var config=require('../../../config/environment');var logger=require(_0x9757('0x6'))(_0x9757('0x7'));var rpc={'openchannelQueueReport':require(_0x9757('0x8')),'mailQueueReport':require(_0x9757('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x9757('0xa')),'faxQueueReport':require(_0x9757('0xb')),'whatsappQueueReport':require(_0x9757('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x28a14a,_0x51a1c8,_0x2d65dd){return util[_0x9757('0xd')](_0x9757('0xe'),_0x28a14a,_0x51a1c8||0x0,_0x2d65dd||0x0);}function getIntervals(_0x5b5749,_0x375d91){var _0x13f01a=[];if(!_[_0x9757('0xf')](_0x375d91[_0x9757('0x10')])&&!_[_0x9757('0xf')](_0x5b5749[_0x375d91[_0x9757('0x10')]])&&!_[_0x9757('0xf')](_0x5b5749[_0x375d91[_0x9757('0x10')]][_0x9757('0x11')])){_0x13f01a=_[_0x9757('0x12')](_0x5b5749[_0x375d91[_0x9757('0x10')]]['Intervals'],_0x9757('0x13'));}else if(!_[_0x9757('0xf')](_0x375d91[_0x9757('0x13')])){_0x13f01a=[_0x375d91['interval']];}return _0x13f01a;}exports[_0x9757('0x14')]=function(_0x39fa5c){_0x39fa5c[_0x9757('0x15')]={};return new BPromise(function(_0x14f67c,_0x224229){var _0x3abf05={'Start':function(_0x105e56){var _0x4b994d=this;return new Promise(function(_0x1fd6f6,_0x55ded7){if(_0x105e56){try{var _0x17ab45=[];var _0xcc8f94=getId(_0x105e56[_0x9757('0x16')],_0x105e56[_0x9757('0x17')]?_0x105e56[_0x9757('0x17')]['id']:0x0,_0x105e56[_0x9757('0x18')]?_0x105e56['interaction']['id']:0x0);if(_0x105e56[_0x9757('0x19')]&&_[_0x9757('0x1a')](_0x105e56[_0x9757('0x19')])&&_0x105e56[_0x9757('0x19')][_0x9757('0x1b')]){for(var _0xd2306b=0x0;_0xd2306b<_0x105e56[_0x9757('0x19')]['length'];_0xd2306b+=0x1){var _0x185506=_0x105e56['applications'][_0xd2306b];if(fs['existsSync'](path[_0x9757('0x1c')](__dirname,_0x9757('0x19'),_0x185506[_0x9757('0x1d')]+_0x9757('0x1e')))){var _0x559135=[];switch(_0x185506['app']['toLowerCase']()){case _0x9757('0x1f'):var _0x32054f=_0x185506[_0x9757('0x20')][_0x9757('0x21')](',');if(_0x105e56['channel']===_0x9757('0x22')){_0x559135[_0x9757('0x23')](_0x32054f[0x0]);_0x559135['push'](_0x32054f[0x1]);_0x559135[_0x9757('0x23')](_0x32054f[_0x9757('0x24')](0x2,_0x32054f['length'])[_0x9757('0x1c')](','));}else{_0x559135[_0x9757('0x23')](_0x32054f[0x0]);_0x559135[_0x9757('0x23')](_0x32054f[_0x9757('0x24')](0x1,_0x32054f[_0x9757('0x1b')])[_0x9757('0x1c')](','));}break;case'dialogflow':var _0x2a9438=_0x185506['appdata'][_0x9757('0x21')](',');_0x559135[_0x9757('0x23')](_0x2a9438[0x0]);_0x559135['push'](_0x2a9438[0x1]);_0x559135['push'](_0x2a9438[_0x9757('0x24')](0x2,_0x2a9438[_0x9757('0x1b')])[_0x9757('0x1c')](','));break;case _0x9757('0x25'):var _0x4ebdb6=_0x185506[_0x9757('0x20')][_0x9757('0x21')](',');_0x559135[_0x9757('0x23')](_0x4ebdb6[0x0]);_0x559135[_0x9757('0x23')](_0x4ebdb6[0x1]);_0x559135[_0x9757('0x23')](_0x4ebdb6[0x2]);_0x559135[_0x9757('0x23')](_0x4ebdb6[0x3]);_0x559135['push'](_0x4ebdb6[_0x9757('0x24')](0x4,_0x4ebdb6[_0x9757('0x1b')])[_0x9757('0x1c')](','));break;case _0x9757('0x26'):var _0x478199=_0x185506[_0x9757('0x20')][_0x9757('0x21')](',');_0x559135['push'](_0x478199[0x0]);_0x559135[_0x9757('0x23')](_0x478199[0x1]);_0x559135[_0x9757('0x23')](_0x478199[0x2]);_0x559135[_0x9757('0x23')](_0x478199[0x3]);_0x559135[_0x9757('0x23')](_0x478199[_0x9757('0x24')](0x4,_0x478199[_0x9757('0x1b')])[_0x9757('0x1c')](','));break;case _0x9757('0x17'):_0x559135['push'](_0x185506[_0x9757('0x20')]);break;case'tag':_0x559135[_0x9757('0x23')](_0x185506[_0x9757('0x27')]);_0x559135['push'](_0x185506[_0x9757('0x20')]);break;default:_0x559135=_[_0x9757('0xf')](_0x185506[_0x9757('0x20')])?[]:_0x185506[_0x9757('0x20')][_0x9757('0x21')](',');}var _0x2f2688={'id':util[_0x9757('0xd')](_0x9757('0x28'),_0xcc8f94,_0x185506['id'],_0x185506[_0x9757('0x1d')]),'condition':require(_0x9757('0x29'))['condition'](_0xcc8f94,getIntervals(_0x39fa5c[_0x9757('0x2a')],_0x185506),_0x39fa5c),'consequence':require(_0x9757('0x2b')+_0x185506[_0x9757('0x1d')])['consequence'](_0xcc8f94,_0x559135,_0x39fa5c,_0x105e56),'p':_0x185506[_0x9757('0x2c')]||0x0};logger[_0x9757('0x2d')](_0x9757('0x2e'),_0x2f2688['id'],_0x9757('0x2f'),getIntervals(_0x39fa5c[_0x9757('0x2a')],_0x185506)[_0x9757('0x1c')](_0x9757('0x30')));_0x17ab45[_0x9757('0x23')](_0x2f2688);}else{logger[_0x9757('0x31')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0x9757('0x19'),_0x185506[_0x9757('0x1d')]+_0x9757('0x1e')));}}_0x39fa5c[_0x9757('0x15')][_0xcc8f94]=new RuleEngine(_0x17ab45);_0x39fa5c['rules'][_0xcc8f94][_0x9757('0x32')](_0x105e56,function(_0x4dfa93){logger[_0x9757('0x2d')](_0x9757('0x33'),JSON[_0x9757('0x34')](_0x4dfa93['matchPath']));if(_0x39fa5c[_0x9757('0x15')][_0xcc8f94]){_0x39fa5c[_0x9757('0x15')][_0xcc8f94][_0x9757('0x35')]('complete');}});return _0x1fd6f6({'code':0xc8,'message':_0x105e56});}else{logger[_0x9757('0x2d')]('No\x20applications\x20to\x20execute');return _0x1fd6f6({'code':0xc8,'message':_0x105e56});}}catch(_0x50f0e4){logger[_0x9757('0x31')](_0x50f0e4[_0x9757('0x36')]);return _0x55ded7(_0x4b994d[_0x9757('0x31')](0x1f4,_0x50f0e4));}}return _0x55ded7(_0x9757('0x37'));});},'AcceptMessage':function(_0xb90596){var _0x4f30db=this;return new Promise(function(_0x49429a,_0x4f1cdd){if(_0xb90596[_0x9757('0x38')]&&_0xb90596[_0x9757('0x38')]['id']){if(_0x39fa5c[_0x9757('0x39')][_0xb90596['agent']['id']]){_0x39fa5c[_0x9757('0x39')][_0xb90596[_0x9757('0x38')]['id']]['busy']=![];_0x39fa5c[_0x9757('0x39')][_0xb90596[_0x9757('0x38')]['id']][_0x9757('0x3a')]=undefined;}}if(_0xb90596[_0x9757('0x17')]&&_0xb90596['message']['id']){try{var _0xc312a8=getId(_0xb90596[_0x9757('0x16')],_0xb90596[_0x9757('0x17')]?_0xb90596[_0x9757('0x17')]['id']:0x0,_0xb90596[_0x9757('0x18')]?_0xb90596[_0x9757('0x18')]['id']:0x0);if(_0x39fa5c[_0x9757('0x15')][_0xc312a8]){_0x39fa5c[_0x9757('0x15')][_0xc312a8][_0x9757('0x35')]('end');if(rpc[_0xb90596['channel']+_0x9757('0x3b')]){rpc[_0xb90596[_0x9757('0x16')]+_0x9757('0x3b')]['update'](_0xc312a8,{'UserId':_0xb90596[_0x9757('0x17')][_0x9757('0x3c')]})[_0x9757('0x3d')](function(_0x59ae0e){logger[_0x9757('0x31')](_0x9757('0x3e'));});}}return _0x49429a({'code':0xc8,'message':_0xb90596});}catch(_0x497542){logger['error'](_0x497542['stack']);return _0x4f1cdd(_0x4f30db[_0x9757('0x31')](0x1f4,_0x497542));}}logger[_0x9757('0x31')](_0x9757('0x3f'));return _0x4f1cdd(_0x4f30db['error'](0x1f4,_0x9757('0x3f')));});},'RejectMessage':function(_0x5aaadf){var _0xf2f0dc=this;return new Promise(function(_0x173f0f,_0x5e4430){if(_0x5aaadf[_0x9757('0x38')]&&_0x5aaadf[_0x9757('0x38')]['id']){try{if(_0x39fa5c[_0x9757('0x39')][_0x5aaadf[_0x9757('0x38')]['id']]){_0x39fa5c[_0x9757('0x39')][_0x5aaadf['agent']['id']][_0x9757('0x40')]=![];_0x39fa5c[_0x9757('0x39')][_0x5aaadf[_0x9757('0x38')]['id']][_0x9757('0x3a')]=undefined;}return _0x173f0f({'code':0xc8,'message':_0x5aaadf});}catch(_0x3bff1d){logger[_0x9757('0x31')](_0x3bff1d[_0x9757('0x36')]);return _0x5e4430(_0xf2f0dc['error'](0x1f4,_0x3bff1d));}}logger['error'](_0x9757('0x3f'));return _0x5e4430(_0xf2f0dc['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x41419a){var _0x59fed4=this;return new Promise(function(_0x410177,_0x14c0c8){if(_0x41419a['channel']&&_0x41419a['interaction']&&_0x41419a[_0x9757('0x18')]['id']){try{var _0x502321=getId(_0x41419a[_0x9757('0x16')],_0x41419a['message']?_0x41419a[_0x9757('0x17')]['id']:0x0,_0x41419a['interaction']?_0x41419a[_0x9757('0x18')]['id']:0x0);if(_0x39fa5c[_0x9757('0x15')][_0x502321]){_0x39fa5c[_0x9757('0x15')][_0x502321][_0x9757('0x35')](_0x9757('0x41'));}return _0x410177({'code':0xc8,'message':_0x41419a});}catch(_0x25ae79){logger[_0x9757('0x31')](_0x25ae79[_0x9757('0x36')]);return _0x14c0c8(_0x59fed4['error'](0x1f4,_0x25ae79));}}logger[_0x9757('0x31')](_0x9757('0x3f'));return _0x14c0c8(_0x59fed4[_0x9757('0x31')](0x1f4,_0x9757('0x3f')));});},'AgentCapacity':function(_0x39ee2a){var _0x277948=this;return new Promise(function(_0x11bff1,_0x297e1b){if(_0x39fa5c[_0x9757('0x39')][_0x9757('0x42')](_0x39ee2a['id'])){for(var _0x1fa7df in _0x39ee2a[_0x9757('0x43')]){if(_0x39ee2a[_0x9757('0x43')]['hasOwnProperty'](_0x1fa7df)){if(_0x39fa5c['agents'][_0x39ee2a['id']][_0x9757('0x42')](_0x1fa7df+'CurrentCapacity')){_0x39fa5c[_0x9757('0x39')][_0x39ee2a['id']][_0x1fa7df+_0x9757('0x44')]=parseInt(_0x39ee2a[_0x9757('0x43')][_0x1fa7df],0xa);}}}_0x39fa5c['agents'][_0x39ee2a['id']][_0x9757('0x45')]();return _0x11bff1({'code':0xc8,'message':_0x39fa5c[_0x9757('0x39')][_0x39ee2a['id']]});}else{return _0x297e1b(_0x277948[_0x9757('0x31')](0x1f4,_0x9757('0x46')));}});},'Agents':function(_0x282d59){return new Promise(function(_0x333268,_0x2746f7){var _0x19ca63=_[_0x9757('0x47')](_0x39fa5c[_0x9757('0x39')]);_0x333268({'count':_0x19ca63[_0x9757('0x1b')],'rows':_0x19ca63});});},'ChatQueues':function(_0x496bae){return new Promise(function(_0x2aa462,_0x3bc9f5){var _0x3ccb1e=[];for(var _0x628036 in _0x39fa5c[_0x9757('0x48')]){if(_0x39fa5c[_0x9757('0x48')][_0x9757('0x42')](_0x628036)){var _0x518fd7=_0x39fa5c[_0x9757('0x48')][_0x628036];var _0xf2aa31={'id':_0x518fd7['id'],'available':_0x518fd7[_0x9757('0x49')],'loggedIn':_0x518fd7['loggedIn'],'name':_0x518fd7['name'],'paused':_0x518fd7['paused'],'waiting':_0x518fd7[_0x9757('0x4a')]};_0x3ccb1e[_0x9757('0x23')](_0xf2aa31);}}_0x2aa462({'count':_0x3ccb1e[_0x9757('0x1b')],'rows':_0x3ccb1e});});},'MailQueues':function(_0x4d7d40){return new Promise(function(_0x3eb0da,_0x5d5188){var _0xca6f89=[];for(var _0x48e505 in _0x39fa5c['mailQueues']){if(_0x39fa5c[_0x9757('0x4b')][_0x9757('0x42')](_0x48e505)){var _0xaf096e=_0x39fa5c['mailQueues'][_0x48e505];var _0xc706a={'id':_0xaf096e['id'],'available':_0xaf096e[_0x9757('0x49')],'loggedIn':_0xaf096e[_0x9757('0x4c')],'name':_0xaf096e[_0x9757('0x4d')],'paused':_0xaf096e[_0x9757('0x4e')],'waiting':_0xaf096e[_0x9757('0x4a')]};_0xca6f89[_0x9757('0x23')](_0xc706a);}}_0x3eb0da({'count':_0xca6f89[_0x9757('0x1b')],'rows':_0xca6f89});});},'OpenchannelQueues':function(_0x567b05){return new Promise(function(_0x4df00e,_0x5b6c80){var _0x5e014c=[];for(var _0x40333f in _0x39fa5c[_0x9757('0x4f')]){if(_0x39fa5c[_0x9757('0x4f')][_0x9757('0x42')](_0x40333f)){var _0x4c584e=_0x39fa5c['openchannelQueues'][_0x40333f];var _0x18fede={'id':_0x4c584e['id'],'available':_0x4c584e['available'],'loggedIn':_0x4c584e[_0x9757('0x4c')],'name':_0x4c584e[_0x9757('0x4d')],'paused':_0x4c584e[_0x9757('0x4e')],'waiting':_0x4c584e[_0x9757('0x4a')]};_0x5e014c[_0x9757('0x23')](_0x18fede);}}_0x4df00e({'count':_0x5e014c[_0x9757('0x1b')],'rows':_0x5e014c});});},'SmsQueues':function(_0x2c84b2){return new Promise(function(_0x161a21,_0x1aaf50){var _0x3d9930=[];for(var _0x3a5449 in _0x39fa5c[_0x9757('0x50')]){if(_0x39fa5c[_0x9757('0x50')][_0x9757('0x42')](_0x3a5449)){var _0x5a3cce=_0x39fa5c[_0x9757('0x50')][_0x3a5449];var _0x4587e5={'id':_0x5a3cce['id'],'available':_0x5a3cce[_0x9757('0x49')],'loggedIn':_0x5a3cce[_0x9757('0x4c')],'name':_0x5a3cce[_0x9757('0x4d')],'paused':_0x5a3cce[_0x9757('0x4e')],'waiting':_0x5a3cce[_0x9757('0x4a')]};_0x3d9930['push'](_0x4587e5);}}_0x161a21({'count':_0x3d9930[_0x9757('0x1b')],'rows':_0x3d9930});});},'FaxQueues':function(_0x299cea){return new Promise(function(_0x37fe52,_0x490ec5){var _0x52980a=[];for(var _0x28c10e in _0x39fa5c['faxQueues']){if(_0x39fa5c[_0x9757('0x51')][_0x9757('0x42')](_0x28c10e)){var _0x22ff21=_0x39fa5c['faxQueues'][_0x28c10e];var _0x18a919={'id':_0x22ff21['id'],'available':_0x22ff21[_0x9757('0x49')],'loggedIn':_0x22ff21[_0x9757('0x4c')],'name':_0x22ff21[_0x9757('0x4d')],'paused':_0x22ff21[_0x9757('0x4e')],'waiting':_0x22ff21[_0x9757('0x4a')]};_0x52980a[_0x9757('0x23')](_0x18a919);}}_0x37fe52({'count':_0x52980a[_0x9757('0x1b')],'rows':_0x52980a});});},'WhatsappQueues':function(_0x179350){return new Promise(function(_0x947ac4,_0x37e31f){var _0x24ef73=[];for(var _0x53cffa in _0x39fa5c['whatsappQueues']){if(_0x39fa5c[_0x9757('0x52')][_0x9757('0x42')](_0x53cffa)){var _0x4a2655=_0x39fa5c['whatsappQueues'][_0x53cffa];var _0x2e430e={'id':_0x4a2655['id'],'available':_0x4a2655['available'],'loggedIn':_0x4a2655['loggedIn'],'name':_0x4a2655[_0x9757('0x4d')],'paused':_0x4a2655[_0x9757('0x4e')],'waiting':_0x4a2655['waiting']};_0x24ef73['push'](_0x2e430e);}}_0x947ac4({'count':_0x24ef73[_0x9757('0x1b')],'rows':_0x24ef73});});},'ChatQueuesWaitingInteractions':function(_0x1b56f5){return new Promise(function(_0x4aaaee,_0xf7d8aa){var _0x2ef3d2=_[_0x9757('0x47')](_0x39fa5c[_0x9757('0x53')]);_0x4aaaee({'count':_0x2ef3d2['length'],'rows':_0x2ef3d2});});},'MailQueuesWaitingInteractions':function(_0x2d8a7d){return new Promise(function(_0x270b8e,_0x3b024c){var _0x55ebf5=_[_0x9757('0x47')](_0x39fa5c[_0x9757('0x54')]);_0x270b8e({'count':_0x55ebf5[_0x9757('0x1b')],'rows':_0x55ebf5});});},'OpenchannelQueuesWaitingInteractions':function(_0x57845e){return new Promise(function(_0x3fe6c7,_0x19203d){var _0x3adcf7=_[_0x9757('0x47')](_0x39fa5c[_0x9757('0x55')]);_0x3fe6c7({'count':_0x3adcf7['length'],'rows':_0x3adcf7});});},'SmsQueuesWaitingInteractions':function(_0x11d268){return new Promise(function(_0x3848e7,_0x354e2b){var _0x4390b8=_[_0x9757('0x47')](_0x39fa5c[_0x9757('0x56')]);_0x3848e7({'count':_0x4390b8[_0x9757('0x1b')],'rows':_0x4390b8});});},'FaxQueuesWaitingInteractions':function(_0x5460bd){return new Promise(function(_0x5739e9,_0x310e7a){var _0x48f208=_[_0x9757('0x47')](_0x39fa5c['faxQueuesWaitingInteractions']);_0x5739e9({'count':_0x48f208[_0x9757('0x1b')],'rows':_0x48f208});});},'WhatsappQueuesWaitingInteractions':function(_0x3bf395){return new Promise(function(_0x13977c,_0x48c90b){var _0x316385=_['values'](_0x39fa5c['whatsappQueuesWaitingInteractions']);_0x13977c({'count':_0x316385[_0x9757('0x1b')],'rows':_0x316385});});}};var _0x179f48=jayson[_0x9757('0x57')](_0x3abf05)[_0x9757('0x58')]();_0x179f48['on'](_0x9757('0x31'),function(_0x1572b2){logger[_0x9757('0x31')](JSON['stringify'](_0x1572b2));return _0x224229(_0x1572b2);});_0x179f48['listen'](0x232c,_0x9757('0x59'),function(){console[_0x9757('0x5a')](_0x9757('0x5b'),0x232c);return _0x14f67c(_0x9757('0x5c')+0x232c);});});};