1b2d235ae5116c2d6fa48256e9a9034cf88f15a0
[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 _0x7e17=['message\x20is\x20empty','agent','agents','busyQueue','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','path','jayson/promise','uuid','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','dialogflow','push','dialogflowv2','slice','amazonlex','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','end','QueueReport','update','error\x20update\x20queue\x20report','stack'];(function(_0x201d73,_0x2a916b){var _0x5673e1=function(_0x273898){while(--_0x273898){_0x201d73['push'](_0x201d73['shift']());}};_0x5673e1(++_0x2a916b);}(_0x7e17,0x1ef));var _0x77e1=function(_0xe27810,_0x8b3e76){_0xe27810=_0xe27810-0x0;var _0x53dcec=_0x7e17[_0xe27810];return _0x53dcec;};'use strict';var _=require('lodash');var util=require('util');var path=require(_0x77e1('0x0'));var fs=require('fs');var jayson=require(_0x77e1('0x1'));var BPromise=require('bluebird');var uuid=require(_0x77e1('0x2'));var config=require(_0x77e1('0x3'));var logger=require(_0x77e1('0x4'))(_0x77e1('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x77e1('0x6')),'chatQueueReport':require(_0x77e1('0x7')),'smsQueueReport':require(_0x77e1('0x8')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x77e1('0x9'))};var RuleEngine=require(_0x77e1('0xa'));function getId(_0x4f86eb,_0x5a99f2,_0x169016){return util[_0x77e1('0xb')](_0x77e1('0xc'),_0x4f86eb,_0x5a99f2||0x0,_0x169016||0x0);}function getIntervals(_0xfbade9,_0x4a7830){var _0x208a4e=[];if(!_[_0x77e1('0xd')](_0x4a7830[_0x77e1('0xe')])&&!_['isNil'](_0xfbade9[_0x4a7830[_0x77e1('0xe')]])&&!_['isNil'](_0xfbade9[_0x4a7830[_0x77e1('0xe')]][_0x77e1('0xf')])){_0x208a4e=_[_0x77e1('0x10')](_0xfbade9[_0x4a7830[_0x77e1('0xe')]][_0x77e1('0xf')],'interval');}else if(!_[_0x77e1('0xd')](_0x4a7830[_0x77e1('0x11')])){_0x208a4e=[_0x4a7830[_0x77e1('0x11')]];}return _0x208a4e;}exports['listen']=function(_0x137bf2){_0x137bf2['rules']={};return new BPromise(function(_0x3743c9,_0x4d8a53){var _0x1971c0={'Start':function(_0x4b2596){var _0x33a60d=this;return new Promise(function(_0x29ee45,_0xc018a8){if(_0x4b2596){try{var _0xe353c1=[];var _0x5ccb35=getId(_0x4b2596[_0x77e1('0x12')],_0x4b2596[_0x77e1('0x13')]?_0x4b2596['message']['id']:0x0,_0x4b2596[_0x77e1('0x14')]?_0x4b2596[_0x77e1('0x14')]['id']:0x0);if(_0x4b2596[_0x77e1('0x15')]&&_[_0x77e1('0x16')](_0x4b2596[_0x77e1('0x15')])&&_0x4b2596[_0x77e1('0x15')]['length']){for(var _0x3d5e29=0x0;_0x3d5e29<_0x4b2596[_0x77e1('0x15')][_0x77e1('0x17')];_0x3d5e29+=0x1){var _0x5baa6a=_0x4b2596[_0x77e1('0x15')][_0x3d5e29];if(fs[_0x77e1('0x18')](path[_0x77e1('0x19')](__dirname,_0x77e1('0x15'),_0x5baa6a[_0x77e1('0x1a')]+_0x77e1('0x1b')))){var _0x111f66=[];switch(_0x5baa6a[_0x77e1('0x1a')][_0x77e1('0x1c')]()){case'autoreply':var _0x11f795=_0x5baa6a[_0x77e1('0x1d')][_0x77e1('0x1e')](',');_0x111f66['push'](_0x11f795[0x0]);_0x111f66['push'](_0x11f795['slice'](0x1,_0x11f795['length'])['join'](','));break;case _0x77e1('0x1f'):var _0x9c1def=_0x5baa6a[_0x77e1('0x1d')][_0x77e1('0x1e')](',');_0x111f66[_0x77e1('0x20')](_0x9c1def[0x0]);_0x111f66[_0x77e1('0x20')](_0x9c1def[0x1]);_0x111f66[_0x77e1('0x20')](_0x9c1def['slice'](0x2,_0x9c1def[_0x77e1('0x17')])[_0x77e1('0x19')](','));break;case _0x77e1('0x21'):var _0x50ed87=_0x5baa6a[_0x77e1('0x1d')][_0x77e1('0x1e')](',');_0x111f66[_0x77e1('0x20')](_0x50ed87[0x0]);_0x111f66['push'](_0x50ed87[0x1]);_0x111f66['push'](_0x50ed87[0x2]);_0x111f66[_0x77e1('0x20')](_0x50ed87[0x3]);_0x111f66['push'](_0x50ed87[_0x77e1('0x22')](0x4,_0x50ed87[_0x77e1('0x17')])[_0x77e1('0x19')](','));break;case _0x77e1('0x23'):var _0x2ff00e=_0x5baa6a[_0x77e1('0x1d')][_0x77e1('0x1e')](',');_0x111f66[_0x77e1('0x20')](_0x2ff00e[0x0]);_0x111f66[_0x77e1('0x20')](_0x2ff00e[0x1]);_0x111f66['push'](_0x2ff00e[0x2]);_0x111f66['push'](_0x2ff00e[0x3]);_0x111f66[_0x77e1('0x20')](_0x2ff00e[_0x77e1('0x22')](0x4,_0x2ff00e[_0x77e1('0x17')])[_0x77e1('0x19')](','));break;case'message':_0x111f66[_0x77e1('0x20')](_0x5baa6a[_0x77e1('0x1d')]);break;case'tag':_0x111f66[_0x77e1('0x20')](_0x5baa6a[_0x77e1('0x24')]);_0x111f66[_0x77e1('0x20')](_0x5baa6a[_0x77e1('0x1d')]);break;default:_0x111f66=_[_0x77e1('0xd')](_0x5baa6a[_0x77e1('0x1d')])?[]:_0x5baa6a['appdata'][_0x77e1('0x1e')](',');}var _0x160c28={'id':util[_0x77e1('0xb')](_0x77e1('0x25'),_0x5ccb35,_0x5baa6a['id'],_0x5baa6a[_0x77e1('0x1a')]),'condition':require(_0x77e1('0x26'))[_0x77e1('0x27')](_0x5ccb35,getIntervals(_0x137bf2[_0x77e1('0x28')],_0x5baa6a),_0x137bf2),'consequence':require(_0x77e1('0x29')+_0x5baa6a['app'])[_0x77e1('0x2a')](_0x5ccb35,_0x111f66,_0x137bf2,_0x4b2596),'p':_0x5baa6a[_0x77e1('0x2b')]||0x0};logger[_0x77e1('0x2c')](_0x77e1('0x2d'),_0x160c28['id'],_0x77e1('0x2e'),getIntervals(_0x137bf2[_0x77e1('0x28')],_0x5baa6a)['join'](_0x77e1('0x2f')));_0xe353c1['push'](_0x160c28);}else{logger[_0x77e1('0x30')](_0x77e1('0x31'),path['join'](__dirname,_0x77e1('0x15'),_0x5baa6a[_0x77e1('0x1a')]+'.js'));}}_0x137bf2[_0x77e1('0x32')][_0x5ccb35]=new RuleEngine(_0xe353c1);_0x137bf2[_0x77e1('0x32')][_0x5ccb35][_0x77e1('0x33')](_0x4b2596,function(_0x4eb534){logger[_0x77e1('0x2c')]('Applications\x20executed',JSON[_0x77e1('0x34')](_0x4eb534[_0x77e1('0x35')]));if(_0x137bf2[_0x77e1('0x32')][_0x5ccb35]){_0x137bf2[_0x77e1('0x32')][_0x5ccb35][_0x77e1('0x36')](_0x77e1('0x37'));}});return _0x29ee45({'code':0xc8,'message':_0x4b2596});}else{logger[_0x77e1('0x2c')](_0x77e1('0x38'));return _0x29ee45({'code':0xc8,'message':_0x4b2596});}}catch(_0x38a522){logger[_0x77e1('0x30')](_0x38a522['stack']);return _0xc018a8(_0x33a60d[_0x77e1('0x30')](0x1f4,_0x38a522));}}return _0xc018a8(_0x77e1('0x39'));});},'AcceptMessage':function(_0x5ad103){var _0x4a90d1=this;return new Promise(function(_0x24e847,_0x236b5f){if(_0x5ad103['message']&&_0x5ad103[_0x77e1('0x13')]['id']){try{var _0x145989=getId(_0x5ad103[_0x77e1('0x12')],_0x5ad103['message']?_0x5ad103[_0x77e1('0x13')]['id']:0x0,_0x5ad103['interaction']?_0x5ad103['interaction']['id']:0x0);if(_0x137bf2[_0x77e1('0x32')][_0x145989]){_0x137bf2[_0x77e1('0x32')][_0x145989]['emit'](_0x77e1('0x3a'));if(rpc[_0x5ad103[_0x77e1('0x12')]+_0x77e1('0x3b')]){rpc[_0x5ad103['channel']+_0x77e1('0x3b')][_0x77e1('0x3c')](_0x145989,{'UserId':_0x5ad103[_0x77e1('0x13')]['UserId']})['catch'](function(_0x5c93f1){logger[_0x77e1('0x30')](_0x77e1('0x3d'));});}}return _0x24e847({'code':0xc8,'message':_0x5ad103});}catch(_0x28caf8){logger[_0x77e1('0x30')](_0x28caf8[_0x77e1('0x3e')]);return _0x236b5f(_0x4a90d1['error'](0x1f4,_0x28caf8));}}logger[_0x77e1('0x30')]('message\x20is\x20empty');return _0x236b5f(_0x4a90d1['error'](0x1f4,_0x77e1('0x3f')));});},'RejectMessage':function(_0x3a8ed4){var _0x5f0f87=this;return new Promise(function(_0xf4df00,_0x587e44){if(_0x3a8ed4['agent']&&_0x3a8ed4[_0x77e1('0x40')]['id']){try{if(_0x137bf2['agents'][_0x3a8ed4[_0x77e1('0x40')]['id']]){_0x137bf2[_0x77e1('0x41')][_0x3a8ed4[_0x77e1('0x40')]['id']]['busy']=![];_0x137bf2[_0x77e1('0x41')][_0x3a8ed4[_0x77e1('0x40')]['id']][_0x77e1('0x42')]=undefined;}return _0xf4df00({'code':0xc8,'message':_0x3a8ed4});}catch(_0x29366a){logger[_0x77e1('0x30')](_0x29366a[_0x77e1('0x3e')]);return _0x587e44(_0x5f0f87[_0x77e1('0x30')](0x1f4,_0x29366a));}}logger[_0x77e1('0x30')](_0x77e1('0x3f'));return _0x587e44(_0x5f0f87[_0x77e1('0x30')](0x1f4,_0x77e1('0x3f')));});},'AbandonInteraction':function(_0x526da2){var _0x2e81ac=this;return new Promise(function(_0x124db5,_0x24efd2){if(_0x526da2[_0x77e1('0x12')]&&_0x526da2['interaction']&&_0x526da2[_0x77e1('0x14')]['id']){try{var _0x166d1d=getId(_0x526da2[_0x77e1('0x12')],_0x526da2[_0x77e1('0x13')]?_0x526da2[_0x77e1('0x13')]['id']:0x0,_0x526da2[_0x77e1('0x14')]?_0x526da2[_0x77e1('0x14')]['id']:0x0);if(_0x137bf2['rules'][_0x166d1d]){_0x137bf2[_0x77e1('0x32')][_0x166d1d]['emit'](_0x77e1('0x3a'));}return _0x124db5({'code':0xc8,'message':_0x526da2});}catch(_0x35679b){logger[_0x77e1('0x30')](_0x35679b['stack']);return _0x24efd2(_0x2e81ac[_0x77e1('0x30')](0x1f4,_0x35679b));}}logger[_0x77e1('0x30')](_0x77e1('0x3f'));return _0x24efd2(_0x2e81ac[_0x77e1('0x30')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x3a3095){var _0x2feb06=this;return new Promise(function(_0x32be13,_0x4f95b1){if(_0x137bf2[_0x77e1('0x41')]['hasOwnProperty'](_0x3a3095['id'])){for(var _0x200f4f in _0x3a3095[_0x77e1('0x43')]){if(_0x3a3095['capacity'][_0x77e1('0x44')](_0x200f4f)){if(_0x137bf2[_0x77e1('0x41')][_0x3a3095['id']][_0x77e1('0x44')](_0x200f4f+_0x77e1('0x45'))){_0x137bf2[_0x77e1('0x41')][_0x3a3095['id']][_0x200f4f+_0x77e1('0x45')]=parseInt(_0x3a3095[_0x77e1('0x43')][_0x200f4f],0xa);}}}_0x137bf2[_0x77e1('0x41')][_0x3a3095['id']][_0x77e1('0x46')]();return _0x32be13({'code':0xc8,'message':_0x137bf2[_0x77e1('0x41')][_0x3a3095['id']]});}else{return _0x4f95b1(_0x2feb06['error'](0x1f4,_0x77e1('0x47')));}});},'Agents':function(_0x2afc1d){return new Promise(function(_0x5c51db,_0x40d1f2){var _0x149f17=_['values'](_0x137bf2[_0x77e1('0x41')]);_0x5c51db({'count':_0x149f17[_0x77e1('0x17')],'rows':_0x149f17});});},'ChatQueues':function(_0x183370){return new Promise(function(_0x390478,_0x4f197e){var _0x48cf90=[];for(var _0x1d4df0 in _0x137bf2['chatQueues']){if(_0x137bf2[_0x77e1('0x48')]['hasOwnProperty'](_0x1d4df0)){var _0x5dd0ad=_0x137bf2['chatQueues'][_0x1d4df0];var _0x1cdf55={'id':_0x5dd0ad['id'],'available':_0x5dd0ad[_0x77e1('0x49')],'loggedIn':_0x5dd0ad[_0x77e1('0x4a')],'name':_0x5dd0ad[_0x77e1('0x4b')],'paused':_0x5dd0ad[_0x77e1('0x4c')],'waiting':_0x5dd0ad[_0x77e1('0x4d')]};_0x48cf90[_0x77e1('0x20')](_0x1cdf55);}}_0x390478({'count':_0x48cf90[_0x77e1('0x17')],'rows':_0x48cf90});});},'MailQueues':function(_0x50642e){return new Promise(function(_0x481207,_0x4d3a13){var _0x2ba2ea=[];for(var _0x3b0c91 in _0x137bf2['mailQueues']){if(_0x137bf2[_0x77e1('0x4e')]['hasOwnProperty'](_0x3b0c91)){var _0x334109=_0x137bf2['mailQueues'][_0x3b0c91];var _0x416d8c={'id':_0x334109['id'],'available':_0x334109[_0x77e1('0x49')],'loggedIn':_0x334109[_0x77e1('0x4a')],'name':_0x334109['name'],'paused':_0x334109['paused'],'waiting':_0x334109['waiting']};_0x2ba2ea[_0x77e1('0x20')](_0x416d8c);}}_0x481207({'count':_0x2ba2ea['length'],'rows':_0x2ba2ea});});},'OpenchannelQueues':function(_0xc6e68b){return new Promise(function(_0x40bbd2,_0x38718d){var _0x442625=[];for(var _0x967a29 in _0x137bf2[_0x77e1('0x4f')]){if(_0x137bf2[_0x77e1('0x4f')][_0x77e1('0x44')](_0x967a29)){var _0x3a8943=_0x137bf2['openchannelQueues'][_0x967a29];var _0x20f452={'id':_0x3a8943['id'],'available':_0x3a8943['available'],'loggedIn':_0x3a8943['loggedIn'],'name':_0x3a8943[_0x77e1('0x4b')],'paused':_0x3a8943[_0x77e1('0x4c')],'waiting':_0x3a8943[_0x77e1('0x4d')]};_0x442625[_0x77e1('0x20')](_0x20f452);}}_0x40bbd2({'count':_0x442625[_0x77e1('0x17')],'rows':_0x442625});});},'SmsQueues':function(_0x5dc0af){return new Promise(function(_0x56fd30,_0x2bc32c){var _0x4e0d84=[];for(var _0x12877b in _0x137bf2[_0x77e1('0x50')]){if(_0x137bf2[_0x77e1('0x50')][_0x77e1('0x44')](_0x12877b)){var _0x213506=_0x137bf2['smsQueues'][_0x12877b];var _0x4a6a09={'id':_0x213506['id'],'available':_0x213506['available'],'loggedIn':_0x213506[_0x77e1('0x4a')],'name':_0x213506['name'],'paused':_0x213506[_0x77e1('0x4c')],'waiting':_0x213506[_0x77e1('0x4d')]};_0x4e0d84['push'](_0x4a6a09);}}_0x56fd30({'count':_0x4e0d84[_0x77e1('0x17')],'rows':_0x4e0d84});});},'FaxQueues':function(_0x2020bc){return new Promise(function(_0xf6d73f,_0x15185c){var _0x1db1ff=[];for(var _0x29cefc in _0x137bf2[_0x77e1('0x51')]){if(_0x137bf2[_0x77e1('0x51')]['hasOwnProperty'](_0x29cefc)){var _0x1d819f=_0x137bf2[_0x77e1('0x51')][_0x29cefc];var _0x291bd2={'id':_0x1d819f['id'],'available':_0x1d819f[_0x77e1('0x49')],'loggedIn':_0x1d819f[_0x77e1('0x4a')],'name':_0x1d819f['name'],'paused':_0x1d819f[_0x77e1('0x4c')],'waiting':_0x1d819f[_0x77e1('0x4d')]};_0x1db1ff[_0x77e1('0x20')](_0x291bd2);}}_0xf6d73f({'count':_0x1db1ff[_0x77e1('0x17')],'rows':_0x1db1ff});});},'WhatsappQueues':function(_0x3cb65a){return new Promise(function(_0x416e9f,_0x42fe11){var _0x293a4d=[];for(var _0x2b4caf in _0x137bf2[_0x77e1('0x52')]){if(_0x137bf2[_0x77e1('0x52')][_0x77e1('0x44')](_0x2b4caf)){var _0x25fa67=_0x137bf2[_0x77e1('0x52')][_0x2b4caf];var _0x13ad56={'id':_0x25fa67['id'],'available':_0x25fa67[_0x77e1('0x49')],'loggedIn':_0x25fa67['loggedIn'],'name':_0x25fa67[_0x77e1('0x4b')],'paused':_0x25fa67['paused'],'waiting':_0x25fa67[_0x77e1('0x4d')]};_0x293a4d[_0x77e1('0x20')](_0x13ad56);}}_0x416e9f({'count':_0x293a4d[_0x77e1('0x17')],'rows':_0x293a4d});});},'ChatQueuesWaitingInteractions':function(_0x3b87ee){return new Promise(function(_0x5ee944,_0xa28f04){var _0x470550=_[_0x77e1('0x53')](_0x137bf2[_0x77e1('0x54')]);_0x5ee944({'count':_0x470550[_0x77e1('0x17')],'rows':_0x470550});});},'MailQueuesWaitingInteractions':function(_0x126195){return new Promise(function(_0x21c65a,_0x42384c){var _0x58e88e=_[_0x77e1('0x53')](_0x137bf2[_0x77e1('0x55')]);_0x21c65a({'count':_0x58e88e[_0x77e1('0x17')],'rows':_0x58e88e});});},'OpenchannelQueuesWaitingInteractions':function(_0x37ac75){return new Promise(function(_0x25d527,_0x29034e){var _0x26d365=_[_0x77e1('0x53')](_0x137bf2[_0x77e1('0x56')]);_0x25d527({'count':_0x26d365[_0x77e1('0x17')],'rows':_0x26d365});});},'SmsQueuesWaitingInteractions':function(_0x59815a){return new Promise(function(_0x55f897,_0x4184b4){var _0x1bc55b=_[_0x77e1('0x53')](_0x137bf2[_0x77e1('0x57')]);_0x55f897({'count':_0x1bc55b[_0x77e1('0x17')],'rows':_0x1bc55b});});},'FaxQueuesWaitingInteractions':function(_0x4da8f8){return new Promise(function(_0x2881da,_0x2c979c){var _0x1b9019=_['values'](_0x137bf2[_0x77e1('0x58')]);_0x2881da({'count':_0x1b9019['length'],'rows':_0x1b9019});});},'WhatsappQueuesWaitingInteractions':function(_0xd1cc21){return new Promise(function(_0x2eed1f,_0x652a52){var _0x49ff50=_[_0x77e1('0x53')](_0x137bf2['whatsappQueuesWaitingInteractions']);_0x2eed1f({'count':_0x49ff50['length'],'rows':_0x49ff50});});}};var _0x184627=jayson[_0x77e1('0x59')](_0x1971c0)[_0x77e1('0x5a')]();_0x184627['on'](_0x77e1('0x30'),function(_0x96fc7b){logger[_0x77e1('0x30')](JSON[_0x77e1('0x34')](_0x96fc7b));return _0x4d8a53(_0x96fc7b);});_0x184627['listen'](0x232c,'127.0.0.1',function(){console[_0x77e1('0x5b')](_0x77e1('0x5c'),0x232c);return _0x3743c9('RPC\x20listening\x20on\x20port:'+0x232c);});});};