950594c950d3c3ec0f9877211828aa03eea379be
[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 _0xc148=['IntervalId','Intervals','interval','listen','rules','channel','message','interaction','isArray','applications','length','existsSync','join','.js','toLowerCase','autoreply','appdata','split','push','slice','amazonlex','tag','TagId','%s:%s:%s','app','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','emit','end','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','name','waiting','mailQueues','openchannelQueues','loggedIn','smsQueues','paused','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','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/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil'];(function(_0x1705f4,_0x31a20a){var _0x413855=function(_0x11b8dc){while(--_0x11b8dc){_0x1705f4['push'](_0x1705f4['shift']());}};_0x413855(++_0x31a20a);}(_0xc148,0x18a));var _0x8c14=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc148[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x8c14('0x0'));var util=require(_0x8c14('0x1'));var path=require(_0x8c14('0x2'));var fs=require('fs');var jayson=require(_0x8c14('0x3'));var BPromise=require(_0x8c14('0x4'));var uuid=require(_0x8c14('0x5'));var config=require(_0x8c14('0x6'));var logger=require('../../../config/logger')(_0x8c14('0x7'));var rpc={'openchannelQueueReport':require(_0x8c14('0x8')),'mailQueueReport':require(_0x8c14('0x9')),'chatQueueReport':require(_0x8c14('0xa')),'smsQueueReport':require(_0x8c14('0xb')),'faxQueueReport':require(_0x8c14('0xc')),'whatsappQueueReport':require(_0x8c14('0xd'))};var RuleEngine=require(_0x8c14('0xe'));function getId(_0x4cb85c,_0x186a67,_0x2cadf5){return util[_0x8c14('0xf')](_0x8c14('0x10'),_0x4cb85c,_0x186a67||0x0,_0x2cadf5||0x0);}function getIntervals(_0x135644,_0x52ed54){var _0x534cf6=[];if(!_[_0x8c14('0x11')](_0x52ed54[_0x8c14('0x12')])&&!_[_0x8c14('0x11')](_0x135644[_0x52ed54[_0x8c14('0x12')]])&&!_[_0x8c14('0x11')](_0x135644[_0x52ed54[_0x8c14('0x12')]][_0x8c14('0x13')])){_0x534cf6=_['map'](_0x135644[_0x52ed54[_0x8c14('0x12')]][_0x8c14('0x13')],_0x8c14('0x14'));}else if(!_['isNil'](_0x52ed54[_0x8c14('0x14')])){_0x534cf6=[_0x52ed54[_0x8c14('0x14')]];}return _0x534cf6;}exports[_0x8c14('0x15')]=function(_0x21a225){_0x21a225[_0x8c14('0x16')]={};return new BPromise(function(_0x59517e,_0x24073f){var _0x56b654={'Start':function(_0x567e89){var _0x107e18=this;return new Promise(function(_0x2e5762,_0x1308af){if(_0x567e89){try{var _0x4b2f23=[];var _0x48a973=getId(_0x567e89[_0x8c14('0x17')],_0x567e89[_0x8c14('0x18')]?_0x567e89[_0x8c14('0x18')]['id']:0x0,_0x567e89[_0x8c14('0x19')]?_0x567e89[_0x8c14('0x19')]['id']:0x0);if(_0x567e89['applications']&&_[_0x8c14('0x1a')](_0x567e89[_0x8c14('0x1b')])&&_0x567e89[_0x8c14('0x1b')][_0x8c14('0x1c')]){for(var _0xf0404f=0x0;_0xf0404f<_0x567e89[_0x8c14('0x1b')][_0x8c14('0x1c')];_0xf0404f+=0x1){var _0x232146=_0x567e89[_0x8c14('0x1b')][_0xf0404f];if(fs[_0x8c14('0x1d')](path[_0x8c14('0x1e')](__dirname,_0x8c14('0x1b'),_0x232146['app']+_0x8c14('0x1f')))){var _0x19cd46=[];switch(_0x232146['app'][_0x8c14('0x20')]()){case _0x8c14('0x21'):var _0x26d56a=_0x232146[_0x8c14('0x22')][_0x8c14('0x23')](',');_0x19cd46[_0x8c14('0x24')](_0x26d56a[0x0]);_0x19cd46[_0x8c14('0x24')](_0x26d56a[_0x8c14('0x25')](0x1,_0x26d56a[_0x8c14('0x1c')])[_0x8c14('0x1e')](','));break;case'dialogflow':var _0x3b3003=_0x232146['appdata'][_0x8c14('0x23')](',');_0x19cd46['push'](_0x3b3003[0x0]);_0x19cd46[_0x8c14('0x24')](_0x3b3003[0x1]);_0x19cd46[_0x8c14('0x24')](_0x3b3003[_0x8c14('0x25')](0x2,_0x3b3003['length'])[_0x8c14('0x1e')](','));break;case _0x8c14('0x26'):var _0x2e5c01=_0x232146[_0x8c14('0x22')][_0x8c14('0x23')](',');_0x19cd46[_0x8c14('0x24')](_0x2e5c01[0x0]);_0x19cd46[_0x8c14('0x24')](_0x2e5c01[0x1]);_0x19cd46[_0x8c14('0x24')](_0x2e5c01[0x2]);_0x19cd46[_0x8c14('0x24')](_0x2e5c01[0x3]);_0x19cd46['push'](_0x2e5c01['slice'](0x4,_0x2e5c01['length'])[_0x8c14('0x1e')](','));break;case'message':_0x19cd46['push'](_0x232146['appdata']);break;case _0x8c14('0x27'):_0x19cd46['push'](_0x232146[_0x8c14('0x28')]);_0x19cd46[_0x8c14('0x24')](_0x232146[_0x8c14('0x22')]);break;default:_0x19cd46=_[_0x8c14('0x11')](_0x232146[_0x8c14('0x22')])?[]:_0x232146[_0x8c14('0x22')][_0x8c14('0x23')](',');}var _0x3e50e8={'id':util[_0x8c14('0xf')](_0x8c14('0x29'),_0x48a973,_0x232146['id'],_0x232146[_0x8c14('0x2a')]),'condition':require(_0x8c14('0x2b'))[_0x8c14('0x2c')](_0x48a973,getIntervals(_0x21a225[_0x8c14('0x2d')],_0x232146),_0x21a225),'consequence':require(_0x8c14('0x2e')+_0x232146[_0x8c14('0x2a')])[_0x8c14('0x2f')](_0x48a973,_0x19cd46,_0x21a225,_0x567e89),'p':_0x232146[_0x8c14('0x30')]||0x0};logger[_0x8c14('0x31')](_0x8c14('0x32'),_0x3e50e8['id'],_0x8c14('0x33'),getIntervals(_0x21a225[_0x8c14('0x2d')],_0x232146)[_0x8c14('0x1e')](_0x8c14('0x34')));_0x4b2f23[_0x8c14('0x24')](_0x3e50e8);}else{logger['error'](_0x8c14('0x35'),path[_0x8c14('0x1e')](__dirname,_0x8c14('0x1b'),_0x232146['app']+_0x8c14('0x1f')));}}_0x21a225[_0x8c14('0x16')][_0x48a973]=new RuleEngine(_0x4b2f23);_0x21a225[_0x8c14('0x16')][_0x48a973][_0x8c14('0x36')](_0x567e89,function(_0x56d44a){logger[_0x8c14('0x31')](_0x8c14('0x37'),JSON[_0x8c14('0x38')](_0x56d44a[_0x8c14('0x39')]));if(_0x21a225[_0x8c14('0x16')][_0x48a973]){_0x21a225[_0x8c14('0x16')][_0x48a973]['emit'](_0x8c14('0x3a'));}});return _0x2e5762({'code':0xc8,'message':_0x567e89});}else{logger[_0x8c14('0x31')](_0x8c14('0x3b'));return _0x2e5762({'code':0xc8,'message':_0x567e89});}}catch(_0xd24e68){logger[_0x8c14('0x3c')](_0xd24e68[_0x8c14('0x3d')]);return _0x1308af(_0x107e18[_0x8c14('0x3c')](0x1f4,_0xd24e68));}}return _0x1308af(_0x8c14('0x3e'));});},'AcceptMessage':function(_0x456291){var _0x5b4abf=this;return new Promise(function(_0x37bc0c,_0x542b81){if(_0x456291[_0x8c14('0x18')]&&_0x456291[_0x8c14('0x18')]['id']){try{var _0x224447=getId(_0x456291[_0x8c14('0x17')],_0x456291[_0x8c14('0x18')]?_0x456291['message']['id']:0x0,_0x456291[_0x8c14('0x19')]?_0x456291[_0x8c14('0x19')]['id']:0x0);if(_0x21a225[_0x8c14('0x16')][_0x224447]){_0x21a225[_0x8c14('0x16')][_0x224447][_0x8c14('0x3f')](_0x8c14('0x40'));if(rpc[_0x456291[_0x8c14('0x17')]+'QueueReport']){rpc[_0x456291[_0x8c14('0x17')]+_0x8c14('0x41')][_0x8c14('0x42')](_0x224447,{'UserId':_0x456291[_0x8c14('0x18')]['UserId']})[_0x8c14('0x43')](function(_0x438d78){logger['error'](_0x8c14('0x44'));});}}return _0x37bc0c({'code':0xc8,'message':_0x456291});}catch(_0x55107a){logger[_0x8c14('0x3c')](_0x55107a[_0x8c14('0x3d')]);return _0x542b81(_0x5b4abf[_0x8c14('0x3c')](0x1f4,_0x55107a));}}logger[_0x8c14('0x3c')]('message\x20is\x20empty');return _0x542b81(_0x5b4abf[_0x8c14('0x3c')](0x1f4,_0x8c14('0x45')));});},'RejectMessage':function(_0x58db22){var _0x533d12=this;return new Promise(function(_0x5d78d9,_0x2ba5c0){if(_0x58db22['agent']&&_0x58db22[_0x8c14('0x46')]['id']){try{if(_0x21a225[_0x8c14('0x47')][_0x58db22[_0x8c14('0x46')]['id']]){_0x21a225[_0x8c14('0x47')][_0x58db22[_0x8c14('0x46')]['id']][_0x8c14('0x48')]=![];_0x21a225['agents'][_0x58db22[_0x8c14('0x46')]['id']][_0x8c14('0x49')]=undefined;}return _0x5d78d9({'code':0xc8,'message':_0x58db22});}catch(_0xacd32e){logger[_0x8c14('0x3c')](_0xacd32e[_0x8c14('0x3d')]);return _0x2ba5c0(_0x533d12[_0x8c14('0x3c')](0x1f4,_0xacd32e));}}logger[_0x8c14('0x3c')](_0x8c14('0x45'));return _0x2ba5c0(_0x533d12['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x4689f4){var _0x19acd1=this;return new Promise(function(_0x34e60a,_0x3ab67b){if(_0x4689f4['channel']&&_0x4689f4[_0x8c14('0x19')]&&_0x4689f4[_0x8c14('0x19')]['id']){try{var _0x2081c4=getId(_0x4689f4[_0x8c14('0x17')],_0x4689f4[_0x8c14('0x18')]?_0x4689f4[_0x8c14('0x18')]['id']:0x0,_0x4689f4[_0x8c14('0x19')]?_0x4689f4[_0x8c14('0x19')]['id']:0x0);if(_0x21a225[_0x8c14('0x16')][_0x2081c4]){_0x21a225[_0x8c14('0x16')][_0x2081c4][_0x8c14('0x3f')](_0x8c14('0x40'));}return _0x34e60a({'code':0xc8,'message':_0x4689f4});}catch(_0x4f0e38){logger[_0x8c14('0x3c')](_0x4f0e38[_0x8c14('0x3d')]);return _0x3ab67b(_0x19acd1[_0x8c14('0x3c')](0x1f4,_0x4f0e38));}}logger['error']('message\x20is\x20empty');return _0x3ab67b(_0x19acd1[_0x8c14('0x3c')](0x1f4,_0x8c14('0x45')));});},'AgentCapacity':function(_0x26f16e){var _0x305615=this;return new Promise(function(_0xf3b6a1,_0x115ef1){if(_0x21a225['agents']['hasOwnProperty'](_0x26f16e['id'])){for(var _0x14eb5b in _0x26f16e['capacity']){if(_0x26f16e[_0x8c14('0x4a')][_0x8c14('0x4b')](_0x14eb5b)){if(_0x21a225['agents'][_0x26f16e['id']]['hasOwnProperty'](_0x14eb5b+_0x8c14('0x4c'))){_0x21a225[_0x8c14('0x47')][_0x26f16e['id']][_0x14eb5b+'CurrentCapacity']=parseInt(_0x26f16e['capacity'][_0x14eb5b],0xa);}}}_0x21a225['agents'][_0x26f16e['id']][_0x8c14('0x4d')]();return _0xf3b6a1({'code':0xc8,'message':_0x21a225[_0x8c14('0x47')][_0x26f16e['id']]});}else{return _0x115ef1(_0x305615[_0x8c14('0x3c')](0x1f4,_0x8c14('0x4e')));}});},'Agents':function(_0x3222f8){return new Promise(function(_0x433d87,_0x2ffe20){var _0xe05969=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x47')]);_0x433d87({'count':_0xe05969[_0x8c14('0x1c')],'rows':_0xe05969});});},'ChatQueues':function(_0x431e2f){return new Promise(function(_0x3e7ee3,_0x3eef3d){var _0x358e5d=[];for(var _0x18a0e9 in _0x21a225[_0x8c14('0x50')]){if(_0x21a225[_0x8c14('0x50')][_0x8c14('0x4b')](_0x18a0e9)){var _0x488798=_0x21a225[_0x8c14('0x50')][_0x18a0e9];var _0x4c5292={'id':_0x488798['id'],'available':_0x488798[_0x8c14('0x51')],'loggedIn':_0x488798['loggedIn'],'name':_0x488798[_0x8c14('0x52')],'paused':_0x488798['paused'],'waiting':_0x488798[_0x8c14('0x53')]};_0x358e5d[_0x8c14('0x24')](_0x4c5292);}}_0x3e7ee3({'count':_0x358e5d[_0x8c14('0x1c')],'rows':_0x358e5d});});},'MailQueues':function(_0x521934){return new Promise(function(_0x37f68e,_0x49a752){var _0x1dd11e=[];for(var _0x1e3e3c in _0x21a225[_0x8c14('0x54')]){if(_0x21a225[_0x8c14('0x54')][_0x8c14('0x4b')](_0x1e3e3c)){var _0x2c6e4a=_0x21a225[_0x8c14('0x54')][_0x1e3e3c];var _0x4d32ae={'id':_0x2c6e4a['id'],'available':_0x2c6e4a[_0x8c14('0x51')],'loggedIn':_0x2c6e4a['loggedIn'],'name':_0x2c6e4a[_0x8c14('0x52')],'paused':_0x2c6e4a['paused'],'waiting':_0x2c6e4a[_0x8c14('0x53')]};_0x1dd11e[_0x8c14('0x24')](_0x4d32ae);}}_0x37f68e({'count':_0x1dd11e[_0x8c14('0x1c')],'rows':_0x1dd11e});});},'OpenchannelQueues':function(_0x4e7c14){return new Promise(function(_0x292e39,_0x318a8e){var _0x546cb8=[];for(var _0x1b06a0 in _0x21a225[_0x8c14('0x55')]){if(_0x21a225[_0x8c14('0x55')][_0x8c14('0x4b')](_0x1b06a0)){var _0x5806c5=_0x21a225['openchannelQueues'][_0x1b06a0];var _0x5dcdc3={'id':_0x5806c5['id'],'available':_0x5806c5['available'],'loggedIn':_0x5806c5[_0x8c14('0x56')],'name':_0x5806c5[_0x8c14('0x52')],'paused':_0x5806c5['paused'],'waiting':_0x5806c5['waiting']};_0x546cb8[_0x8c14('0x24')](_0x5dcdc3);}}_0x292e39({'count':_0x546cb8[_0x8c14('0x1c')],'rows':_0x546cb8});});},'SmsQueues':function(_0x2ff7ad){return new Promise(function(_0x103a40,_0x42071f){var _0x175d72=[];for(var _0x340f1d in _0x21a225[_0x8c14('0x57')]){if(_0x21a225[_0x8c14('0x57')]['hasOwnProperty'](_0x340f1d)){var _0x113bec=_0x21a225[_0x8c14('0x57')][_0x340f1d];var _0x28ddd1={'id':_0x113bec['id'],'available':_0x113bec[_0x8c14('0x51')],'loggedIn':_0x113bec[_0x8c14('0x56')],'name':_0x113bec[_0x8c14('0x52')],'paused':_0x113bec[_0x8c14('0x58')],'waiting':_0x113bec[_0x8c14('0x53')]};_0x175d72[_0x8c14('0x24')](_0x28ddd1);}}_0x103a40({'count':_0x175d72[_0x8c14('0x1c')],'rows':_0x175d72});});},'FaxQueues':function(_0x575146){return new Promise(function(_0x98967c,_0x1ff368){var _0xca4f64=[];for(var _0x4deafe in _0x21a225['faxQueues']){if(_0x21a225[_0x8c14('0x59')]['hasOwnProperty'](_0x4deafe)){var _0x5fc2f1=_0x21a225[_0x8c14('0x59')][_0x4deafe];var _0xacd669={'id':_0x5fc2f1['id'],'available':_0x5fc2f1[_0x8c14('0x51')],'loggedIn':_0x5fc2f1[_0x8c14('0x56')],'name':_0x5fc2f1[_0x8c14('0x52')],'paused':_0x5fc2f1[_0x8c14('0x58')],'waiting':_0x5fc2f1[_0x8c14('0x53')]};_0xca4f64[_0x8c14('0x24')](_0xacd669);}}_0x98967c({'count':_0xca4f64[_0x8c14('0x1c')],'rows':_0xca4f64});});},'WhatsappQueues':function(_0xdf9c8){return new Promise(function(_0x396753,_0x2c5990){var _0x5e388c=[];for(var _0x3844fd in _0x21a225[_0x8c14('0x5a')]){if(_0x21a225['whatsappQueues'][_0x8c14('0x4b')](_0x3844fd)){var _0x3b25a0=_0x21a225[_0x8c14('0x5a')][_0x3844fd];var _0x450c57={'id':_0x3b25a0['id'],'available':_0x3b25a0[_0x8c14('0x51')],'loggedIn':_0x3b25a0[_0x8c14('0x56')],'name':_0x3b25a0['name'],'paused':_0x3b25a0[_0x8c14('0x58')],'waiting':_0x3b25a0[_0x8c14('0x53')]};_0x5e388c[_0x8c14('0x24')](_0x450c57);}}_0x396753({'count':_0x5e388c[_0x8c14('0x1c')],'rows':_0x5e388c});});},'ChatQueuesWaitingInteractions':function(_0x476d5f){return new Promise(function(_0x3ddd4a,_0x4eaefa){var _0x13ad10=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x5b')]);_0x3ddd4a({'count':_0x13ad10[_0x8c14('0x1c')],'rows':_0x13ad10});});},'MailQueuesWaitingInteractions':function(_0x52cff3){return new Promise(function(_0x33913d,_0xbdf74a){var _0x23f3c1=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x5c')]);_0x33913d({'count':_0x23f3c1[_0x8c14('0x1c')],'rows':_0x23f3c1});});},'OpenchannelQueuesWaitingInteractions':function(_0xd21005){return new Promise(function(_0x2c176a,_0x335adb){var _0x19ba60=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x5d')]);_0x2c176a({'count':_0x19ba60[_0x8c14('0x1c')],'rows':_0x19ba60});});},'SmsQueuesWaitingInteractions':function(_0x1cd537){return new Promise(function(_0x2e723e,_0x2e75f1){var _0x5834e1=_['values'](_0x21a225[_0x8c14('0x5e')]);_0x2e723e({'count':_0x5834e1[_0x8c14('0x1c')],'rows':_0x5834e1});});},'FaxQueuesWaitingInteractions':function(_0x1e182b){return new Promise(function(_0x168e82,_0xe340c0){var _0x160938=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x5f')]);_0x168e82({'count':_0x160938[_0x8c14('0x1c')],'rows':_0x160938});});},'WhatsappQueuesWaitingInteractions':function(_0x2be983){return new Promise(function(_0x52958c,_0x5c24fc){var _0x371e58=_[_0x8c14('0x4f')](_0x21a225[_0x8c14('0x60')]);_0x52958c({'count':_0x371e58[_0x8c14('0x1c')],'rows':_0x371e58});});}};var _0x806784=jayson[_0x8c14('0x61')](_0x56b654)[_0x8c14('0x62')]();_0x806784['on']('error',function(_0x58acfe){logger['error'](JSON[_0x8c14('0x38')](_0x58acfe));return _0x24073f(_0x58acfe);});_0x806784[_0x8c14('0x15')](0x232c,_0x8c14('0x63'),function(){console[_0x8c14('0x64')](_0x8c14('0x65'),0x232c);return _0x59517e(_0x8c14('0x66')+0x232c);});});};