Built motion from commit (unavailable).|2.5.4
[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 _0x09c2=['channel','message','interaction','isArray','applications','length','existsSync','join','app','.js','autoreply','appdata','split','push','slice','amazonlex','tag','TagId','%s:%s:%s','./interval','intervals','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','name','paused','mailQueues','waiting','smsQueues','faxQueues','available','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules'];(function(_0x505a40,_0x59994f){var _0x472c12=function(_0x189593){while(--_0x189593){_0x505a40['push'](_0x505a40['shift']());}};_0x472c12(++_0x59994f);}(_0x09c2,0x9e));var _0x209c=function(_0x4a96d2,_0x689504){_0x4a96d2=_0x4a96d2-0x0;var _0x38af04=_0x09c2[_0x4a96d2];return _0x38af04;};'use strict';var _=require(_0x209c('0x0'));var util=require(_0x209c('0x1'));var path=require(_0x209c('0x2'));var fs=require('fs');var jayson=require(_0x209c('0x3'));var BPromise=require('bluebird');var uuid=require(_0x209c('0x4'));var config=require(_0x209c('0x5'));var logger=require(_0x209c('0x6'))('routing');var rpc={'openchannelQueueReport':require(_0x209c('0x7')),'mailQueueReport':require(_0x209c('0x8')),'chatQueueReport':require(_0x209c('0x9')),'smsQueueReport':require(_0x209c('0xa')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x209c('0xb'));function getId(_0xb83a42,_0x413d70,_0x557486){return util['format'](_0x209c('0xc'),_0xb83a42,_0x413d70||0x0,_0x557486||0x0);}function getIntervals(_0x4c6dd4,_0xb24d3c){var _0x26796f=[];if(!_['isNil'](_0xb24d3c[_0x209c('0xd')])&&!_[_0x209c('0xe')](_0x4c6dd4[_0xb24d3c[_0x209c('0xd')]])&&!_[_0x209c('0xe')](_0x4c6dd4[_0xb24d3c['IntervalId']][_0x209c('0xf')])){_0x26796f=_[_0x209c('0x10')](_0x4c6dd4[_0xb24d3c[_0x209c('0xd')]]['Intervals'],_0x209c('0x11'));}else if(!_['isNil'](_0xb24d3c[_0x209c('0x11')])){_0x26796f=[_0xb24d3c[_0x209c('0x11')]];}return _0x26796f;}exports[_0x209c('0x12')]=function(_0x4c1991){_0x4c1991[_0x209c('0x13')]={};return new BPromise(function(_0x5a0532,_0xbd78b5){var _0x43b20f={'Start':function(_0x1319e8){var _0x325bdf=this;return new Promise(function(_0x5d7003,_0x4ce4fb){if(_0x1319e8){try{var _0x4f8f41=[];var _0x38e704=getId(_0x1319e8[_0x209c('0x14')],_0x1319e8[_0x209c('0x15')]?_0x1319e8[_0x209c('0x15')]['id']:0x0,_0x1319e8[_0x209c('0x16')]?_0x1319e8['interaction']['id']:0x0);if(_0x1319e8['applications']&&_[_0x209c('0x17')](_0x1319e8[_0x209c('0x18')])&&_0x1319e8[_0x209c('0x18')][_0x209c('0x19')]){for(var _0x4138aa=0x0;_0x4138aa<_0x1319e8[_0x209c('0x18')][_0x209c('0x19')];_0x4138aa+=0x1){var _0x4a1f47=_0x1319e8[_0x209c('0x18')][_0x4138aa];if(fs[_0x209c('0x1a')](path[_0x209c('0x1b')](__dirname,_0x209c('0x18'),_0x4a1f47[_0x209c('0x1c')]+_0x209c('0x1d')))){var _0x22d576=[];switch(_0x4a1f47[_0x209c('0x1c')]['toLowerCase']()){case _0x209c('0x1e'):var _0x1ac816=_0x4a1f47[_0x209c('0x1f')][_0x209c('0x20')](',');_0x22d576[_0x209c('0x21')](_0x1ac816[0x0]);_0x22d576['push'](_0x1ac816[_0x209c('0x22')](0x1,_0x1ac816[_0x209c('0x19')])[_0x209c('0x1b')](','));break;case'dialogflow':var _0x51abc2=_0x4a1f47[_0x209c('0x1f')][_0x209c('0x20')](',');_0x22d576[_0x209c('0x21')](_0x51abc2[0x0]);_0x22d576[_0x209c('0x21')](_0x51abc2[0x1]);_0x22d576['push'](_0x51abc2['slice'](0x2,_0x51abc2[_0x209c('0x19')])[_0x209c('0x1b')](','));break;case _0x209c('0x23'):var _0x17b644=_0x4a1f47[_0x209c('0x1f')][_0x209c('0x20')](',');_0x22d576[_0x209c('0x21')](_0x17b644[0x0]);_0x22d576[_0x209c('0x21')](_0x17b644[0x1]);_0x22d576[_0x209c('0x21')](_0x17b644[0x2]);_0x22d576[_0x209c('0x21')](_0x17b644[0x3]);_0x22d576[_0x209c('0x21')](_0x17b644['slice'](0x4,_0x17b644['length'])[_0x209c('0x1b')](','));break;case _0x209c('0x15'):_0x22d576[_0x209c('0x21')](_0x4a1f47[_0x209c('0x1f')]);break;case _0x209c('0x24'):_0x22d576[_0x209c('0x21')](_0x4a1f47[_0x209c('0x25')]);_0x22d576[_0x209c('0x21')](_0x4a1f47[_0x209c('0x1f')]);break;default:_0x22d576=_['isNil'](_0x4a1f47[_0x209c('0x1f')])?[]:_0x4a1f47[_0x209c('0x1f')][_0x209c('0x20')](',');}var _0x3c46b2={'id':util['format'](_0x209c('0x26'),_0x38e704,_0x4a1f47['id'],_0x4a1f47[_0x209c('0x1c')]),'condition':require(_0x209c('0x27'))['condition'](_0x38e704,getIntervals(_0x4c1991[_0x209c('0x28')],_0x4a1f47),_0x4c1991),'consequence':require('./applications/'+_0x4a1f47['app'])[_0x209c('0x29')](_0x38e704,_0x22d576,_0x4c1991,_0x1319e8),'p':_0x4a1f47[_0x209c('0x2a')]||0x0};logger[_0x209c('0x2b')](_0x209c('0x2c'),_0x3c46b2['id'],'on\x20interval',getIntervals(_0x4c1991[_0x209c('0x28')],_0x4a1f47)[_0x209c('0x1b')](_0x209c('0x2d')));_0x4f8f41['push'](_0x3c46b2);}else{logger['error'](_0x209c('0x2e'),path[_0x209c('0x1b')](__dirname,_0x209c('0x18'),_0x4a1f47[_0x209c('0x1c')]+'.js'));}}_0x4c1991['rules'][_0x38e704]=new RuleEngine(_0x4f8f41);_0x4c1991[_0x209c('0x13')][_0x38e704][_0x209c('0x2f')](_0x1319e8,function(_0xad7fa){logger[_0x209c('0x2b')](_0x209c('0x30'),JSON[_0x209c('0x31')](_0xad7fa['matchPath']));if(_0x4c1991[_0x209c('0x13')][_0x38e704]){_0x4c1991[_0x209c('0x13')][_0x38e704][_0x209c('0x32')](_0x209c('0x33'));}});return _0x5d7003({'code':0xc8,'message':_0x1319e8});}else{logger[_0x209c('0x2b')](_0x209c('0x34'));return _0x5d7003({'code':0xc8,'message':_0x1319e8});}}catch(_0x212071){logger[_0x209c('0x35')](_0x212071[_0x209c('0x36')]);return _0x4ce4fb(_0x325bdf[_0x209c('0x35')](0x1f4,_0x212071));}}return _0x4ce4fb(_0x209c('0x37'));});},'AcceptMessage':function(_0x39a3dd){var _0x1b0a4f=this;return new Promise(function(_0x6b6617,_0x115ddf){if(_0x39a3dd[_0x209c('0x15')]&&_0x39a3dd[_0x209c('0x15')]['id']){try{var _0x4e0763=getId(_0x39a3dd[_0x209c('0x14')],_0x39a3dd[_0x209c('0x15')]?_0x39a3dd[_0x209c('0x15')]['id']:0x0,_0x39a3dd[_0x209c('0x16')]?_0x39a3dd[_0x209c('0x16')]['id']:0x0);if(_0x4c1991[_0x209c('0x13')][_0x4e0763]){_0x4c1991[_0x209c('0x13')][_0x4e0763][_0x209c('0x32')]('end');if(rpc[_0x39a3dd['channel']+_0x209c('0x38')]){rpc[_0x39a3dd[_0x209c('0x14')]+_0x209c('0x38')][_0x209c('0x39')](_0x4e0763,{'UserId':_0x39a3dd[_0x209c('0x15')][_0x209c('0x3a')]})[_0x209c('0x3b')](function(_0x138d92){logger[_0x209c('0x35')](_0x209c('0x3c'));});}}return _0x6b6617({'code':0xc8,'message':_0x39a3dd});}catch(_0x25bbf1){logger['error'](_0x25bbf1['stack']);return _0x115ddf(_0x1b0a4f[_0x209c('0x35')](0x1f4,_0x25bbf1));}}logger['error'](_0x209c('0x3d'));return _0x115ddf(_0x1b0a4f[_0x209c('0x35')](0x1f4,_0x209c('0x3d')));});},'RejectMessage':function(_0x1758b4){var _0x22dc02=this;return new Promise(function(_0x3eb09e,_0x4cf096){if(_0x1758b4[_0x209c('0x3e')]&&_0x1758b4['agent']['id']){try{if(_0x4c1991[_0x209c('0x3f')][_0x1758b4['agent']['id']]){_0x4c1991['agents'][_0x1758b4[_0x209c('0x3e')]['id']][_0x209c('0x40')]=![];_0x4c1991[_0x209c('0x3f')][_0x1758b4[_0x209c('0x3e')]['id']][_0x209c('0x41')]=undefined;}return _0x3eb09e({'code':0xc8,'message':_0x1758b4});}catch(_0x224880){logger[_0x209c('0x35')](_0x224880['stack']);return _0x4cf096(_0x22dc02[_0x209c('0x35')](0x1f4,_0x224880));}}logger[_0x209c('0x35')](_0x209c('0x3d'));return _0x4cf096(_0x22dc02[_0x209c('0x35')](0x1f4,_0x209c('0x3d')));});},'AbandonInteraction':function(_0x161f06){var _0x52d02f=this;return new Promise(function(_0x2e677e,_0x2ceb94){if(_0x161f06[_0x209c('0x14')]&&_0x161f06[_0x209c('0x16')]&&_0x161f06[_0x209c('0x16')]['id']){try{var _0x44669b=getId(_0x161f06[_0x209c('0x14')],_0x161f06[_0x209c('0x15')]?_0x161f06['message']['id']:0x0,_0x161f06[_0x209c('0x16')]?_0x161f06[_0x209c('0x16')]['id']:0x0);if(_0x4c1991[_0x209c('0x13')][_0x44669b]){_0x4c1991[_0x209c('0x13')][_0x44669b][_0x209c('0x32')]('end');}return _0x2e677e({'code':0xc8,'message':_0x161f06});}catch(_0xa47038){logger[_0x209c('0x35')](_0xa47038[_0x209c('0x36')]);return _0x2ceb94(_0x52d02f[_0x209c('0x35')](0x1f4,_0xa47038));}}logger[_0x209c('0x35')]('message\x20is\x20empty');return _0x2ceb94(_0x52d02f[_0x209c('0x35')](0x1f4,_0x209c('0x3d')));});},'AgentCapacity':function(_0x4a5a4e){var _0x5a47bc=this;return new Promise(function(_0xe8bda5,_0x7ed1a1){if(_0x4c1991['agents'][_0x209c('0x42')](_0x4a5a4e['id'])){for(var _0x2ccb2b in _0x4a5a4e[_0x209c('0x43')]){if(_0x4a5a4e['capacity'][_0x209c('0x42')](_0x2ccb2b)){if(_0x4c1991[_0x209c('0x3f')][_0x4a5a4e['id']][_0x209c('0x42')](_0x2ccb2b+_0x209c('0x44'))){_0x4c1991[_0x209c('0x3f')][_0x4a5a4e['id']][_0x2ccb2b+_0x209c('0x44')]=parseInt(_0x4a5a4e[_0x209c('0x43')][_0x2ccb2b],0xa);}}}_0x4c1991[_0x209c('0x3f')][_0x4a5a4e['id']][_0x209c('0x45')]();return _0xe8bda5({'code':0xc8,'message':_0x4c1991[_0x209c('0x3f')][_0x4a5a4e['id']]});}else{return _0x7ed1a1(_0x5a47bc[_0x209c('0x35')](0x1f4,_0x209c('0x46')));}});},'Agents':function(_0x16e17e){return new Promise(function(_0x481d71,_0xfd0007){var _0x26f749=_[_0x209c('0x47')](_0x4c1991[_0x209c('0x3f')]);_0x481d71({'count':_0x26f749[_0x209c('0x19')],'rows':_0x26f749});});},'ChatQueues':function(_0x1306ae){return new Promise(function(_0x229da4,_0x4c1a8b){var _0x200baf=[];for(var _0x26ffda in _0x4c1991['chatQueues']){if(_0x4c1991[_0x209c('0x48')][_0x209c('0x42')](_0x26ffda)){var _0x52739e=_0x4c1991[_0x209c('0x48')][_0x26ffda];var _0x3310dd={'id':_0x52739e['id'],'available':_0x52739e['available'],'loggedIn':_0x52739e[_0x209c('0x49')],'name':_0x52739e[_0x209c('0x4a')],'paused':_0x52739e[_0x209c('0x4b')],'waiting':_0x52739e['waiting']};_0x200baf[_0x209c('0x21')](_0x3310dd);}}_0x229da4({'count':_0x200baf['length'],'rows':_0x200baf});});},'MailQueues':function(_0x391b58){return new Promise(function(_0x534d97,_0x42766a){var _0x53b94d=[];for(var _0x1efd8a in _0x4c1991[_0x209c('0x4c')]){if(_0x4c1991[_0x209c('0x4c')]['hasOwnProperty'](_0x1efd8a)){var _0x2c8f52=_0x4c1991[_0x209c('0x4c')][_0x1efd8a];var _0x20332d={'id':_0x2c8f52['id'],'available':_0x2c8f52['available'],'loggedIn':_0x2c8f52[_0x209c('0x49')],'name':_0x2c8f52['name'],'paused':_0x2c8f52[_0x209c('0x4b')],'waiting':_0x2c8f52[_0x209c('0x4d')]};_0x53b94d['push'](_0x20332d);}}_0x534d97({'count':_0x53b94d[_0x209c('0x19')],'rows':_0x53b94d});});},'OpenchannelQueues':function(_0x58e475){return new Promise(function(_0x27d2d0,_0xb88d2f){var _0x47817d=[];for(var _0xcfe3ff in _0x4c1991['openchannelQueues']){if(_0x4c1991['openchannelQueues'][_0x209c('0x42')](_0xcfe3ff)){var _0x2e536e=_0x4c1991['openchannelQueues'][_0xcfe3ff];var _0x2b1c4b={'id':_0x2e536e['id'],'available':_0x2e536e['available'],'loggedIn':_0x2e536e['loggedIn'],'name':_0x2e536e[_0x209c('0x4a')],'paused':_0x2e536e[_0x209c('0x4b')],'waiting':_0x2e536e[_0x209c('0x4d')]};_0x47817d[_0x209c('0x21')](_0x2b1c4b);}}_0x27d2d0({'count':_0x47817d['length'],'rows':_0x47817d});});},'SmsQueues':function(_0x4dd843){return new Promise(function(_0x1637f2,_0x4f6430){var _0x2b9a62=[];for(var _0x474a72 in _0x4c1991[_0x209c('0x4e')]){if(_0x4c1991[_0x209c('0x4e')][_0x209c('0x42')](_0x474a72)){var _0x1acb17=_0x4c1991[_0x209c('0x4e')][_0x474a72];var _0x906960={'id':_0x1acb17['id'],'available':_0x1acb17['available'],'loggedIn':_0x1acb17['loggedIn'],'name':_0x1acb17['name'],'paused':_0x1acb17[_0x209c('0x4b')],'waiting':_0x1acb17['waiting']};_0x2b9a62[_0x209c('0x21')](_0x906960);}}_0x1637f2({'count':_0x2b9a62[_0x209c('0x19')],'rows':_0x2b9a62});});},'FaxQueues':function(_0x3c9949){return new Promise(function(_0x51ab98,_0x35da24){var _0x490f36=[];for(var _0x4f6fff in _0x4c1991[_0x209c('0x4f')]){if(_0x4c1991[_0x209c('0x4f')][_0x209c('0x42')](_0x4f6fff)){var _0x3a27f4=_0x4c1991[_0x209c('0x4f')][_0x4f6fff];var _0x597c49={'id':_0x3a27f4['id'],'available':_0x3a27f4[_0x209c('0x50')],'loggedIn':_0x3a27f4[_0x209c('0x49')],'name':_0x3a27f4[_0x209c('0x4a')],'paused':_0x3a27f4[_0x209c('0x4b')],'waiting':_0x3a27f4[_0x209c('0x4d')]};_0x490f36[_0x209c('0x21')](_0x597c49);}}_0x51ab98({'count':_0x490f36[_0x209c('0x19')],'rows':_0x490f36});});},'WhatsappQueues':function(_0x4a36c5){return new Promise(function(_0x40b265,_0x109d01){var _0x3f7127=[];for(var _0x5629a2 in _0x4c1991[_0x209c('0x51')]){if(_0x4c1991[_0x209c('0x51')][_0x209c('0x42')](_0x5629a2)){var _0x4b291e=_0x4c1991[_0x209c('0x51')][_0x5629a2];var _0x48ecfb={'id':_0x4b291e['id'],'available':_0x4b291e['available'],'loggedIn':_0x4b291e[_0x209c('0x49')],'name':_0x4b291e[_0x209c('0x4a')],'paused':_0x4b291e[_0x209c('0x4b')],'waiting':_0x4b291e[_0x209c('0x4d')]};_0x3f7127[_0x209c('0x21')](_0x48ecfb);}}_0x40b265({'count':_0x3f7127[_0x209c('0x19')],'rows':_0x3f7127});});},'ChatQueuesWaitingInteractions':function(_0x23b89d){return new Promise(function(_0x36e7da,_0x3f5ad3){var _0x2ebc8a=_[_0x209c('0x47')](_0x4c1991[_0x209c('0x52')]);_0x36e7da({'count':_0x2ebc8a[_0x209c('0x19')],'rows':_0x2ebc8a});});},'MailQueuesWaitingInteractions':function(_0x5ad7a4){return new Promise(function(_0xbfc24a,_0x34bcfd){var _0x52b56b=_['values'](_0x4c1991[_0x209c('0x53')]);_0xbfc24a({'count':_0x52b56b[_0x209c('0x19')],'rows':_0x52b56b});});},'OpenchannelQueuesWaitingInteractions':function(_0x16cfdd){return new Promise(function(_0x2eff1c,_0x5af181){var _0x188930=_['values'](_0x4c1991[_0x209c('0x54')]);_0x2eff1c({'count':_0x188930[_0x209c('0x19')],'rows':_0x188930});});},'SmsQueuesWaitingInteractions':function(_0x3f2577){return new Promise(function(_0x1dd3ec,_0x6e6fb1){var _0x5be559=_[_0x209c('0x47')](_0x4c1991[_0x209c('0x55')]);_0x1dd3ec({'count':_0x5be559['length'],'rows':_0x5be559});});},'FaxQueuesWaitingInteractions':function(_0x59cf15){return new Promise(function(_0x498747,_0x3faf40){var _0x8dbba9=_[_0x209c('0x47')](_0x4c1991['faxQueuesWaitingInteractions']);_0x498747({'count':_0x8dbba9[_0x209c('0x19')],'rows':_0x8dbba9});});},'WhatsappQueuesWaitingInteractions':function(_0x5e2328){return new Promise(function(_0x379c88,_0x7106ca){var _0x102ddd=_[_0x209c('0x47')](_0x4c1991['whatsappQueuesWaitingInteractions']);_0x379c88({'count':_0x102ddd['length'],'rows':_0x102ddd});});}};var _0x2098d2=jayson['server'](_0x43b20f)[_0x209c('0x56')]();_0x2098d2['on'](_0x209c('0x35'),function(_0x232c2f){logger[_0x209c('0x35')](JSON[_0x209c('0x31')](_0x232c2f));return _0xbd78b5(_0x232c2f);});_0x2098d2['listen'](0x232c,'127.0.0.1',function(){console['log'](_0x209c('0x57'),0x232c);return _0x5a0532(_0x209c('0x58')+0x232c);});});};