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 _0x1156=['lodash','util','bluebird','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','channel','message','interaction','applications','length','existsSync','app','.js','toLowerCase','split','push','slice','join','dialogflow','appdata','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','info','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','error','routing\x20is\x20empty','end','QueueReport','update','UserId','catch','agent','agents','busy','busyQueue','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','name','paused','waiting','mailQueues','openchannelQueues','available','loggedIn','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:'];(function(_0x106738,_0x673253){var _0x4059ea=function(_0x34d592){while(--_0x34d592){_0x106738['push'](_0x106738['shift']());}};_0x4059ea(++_0x673253);}(_0x1156,0xc0));var _0x6115=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0x1156[_0x10004e];return _0x5af990;};'use strict';var _=require(_0x6115('0x0'));var util=require(_0x6115('0x1'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x6115('0x2'));var uuid=require('uuid');var config=require(_0x6115('0x3'));var logger=require(_0x6115('0x4'))('routing');var rpc={'openchannelQueueReport':require(_0x6115('0x5')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x6115('0x6')),'smsQueueReport':require(_0x6115('0x7')),'faxQueueReport':require(_0x6115('0x8')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x6115('0x9'));function getId(_0x57d037,_0x26c274,_0x33292c){return util[_0x6115('0xa')](_0x6115('0xb'),_0x57d037,_0x26c274||0x0,_0x33292c||0x0);}function getIntervals(_0x1a345c,_0x51c0eb){var _0x7eb2dc=[];if(!_['isNil'](_0x51c0eb[_0x6115('0xc')])&&!_[_0x6115('0xd')](_0x1a345c[_0x51c0eb[_0x6115('0xc')]])&&!_['isNil'](_0x1a345c[_0x51c0eb[_0x6115('0xc')]][_0x6115('0xe')])){_0x7eb2dc=_[_0x6115('0xf')](_0x1a345c[_0x51c0eb[_0x6115('0xc')]]['Intervals'],_0x6115('0x10'));}else if(!_['isNil'](_0x51c0eb['interval'])){_0x7eb2dc=[_0x51c0eb[_0x6115('0x10')]];}return _0x7eb2dc;}exports[_0x6115('0x11')]=function(_0xd560ab){_0xd560ab['rules']={};return new BPromise(function(_0x33b0db,_0x1b67fa){var _0x2cf735={'Start':function(_0x484b44){var _0x46fe62=this;return new Promise(function(_0x327f87,_0x1cfee3){if(_0x484b44){try{var _0x35fb12=[];var _0x5e9d12=getId(_0x484b44[_0x6115('0x12')],_0x484b44[_0x6115('0x13')]?_0x484b44[_0x6115('0x13')]['id']:0x0,_0x484b44[_0x6115('0x14')]?_0x484b44[_0x6115('0x14')]['id']:0x0);if(_0x484b44[_0x6115('0x15')]&&_['isArray'](_0x484b44['applications'])&&_0x484b44[_0x6115('0x15')]['length']){for(var _0x56d24d=0x0;_0x56d24d<_0x484b44[_0x6115('0x15')][_0x6115('0x16')];_0x56d24d+=0x1){var _0xaaedca=_0x484b44[_0x6115('0x15')][_0x56d24d];if(fs[_0x6115('0x17')](path['join'](__dirname,_0x6115('0x15'),_0xaaedca[_0x6115('0x18')]+_0x6115('0x19')))){var _0x3bc13f=[];switch(_0xaaedca['app'][_0x6115('0x1a')]()){case'autoreply':var _0x362022=_0xaaedca['appdata'][_0x6115('0x1b')](',');_0x3bc13f[_0x6115('0x1c')](_0x362022[0x0]);_0x3bc13f[_0x6115('0x1c')](_0x362022[_0x6115('0x1d')](0x1,_0x362022[_0x6115('0x16')])[_0x6115('0x1e')](','));break;case _0x6115('0x1f'):var _0x35eb09=_0xaaedca[_0x6115('0x20')]['split'](',');_0x3bc13f[_0x6115('0x1c')](_0x35eb09[0x0]);_0x3bc13f[_0x6115('0x1c')](_0x35eb09[0x1]);_0x3bc13f[_0x6115('0x1c')](_0x35eb09[_0x6115('0x1d')](0x2,_0x35eb09[_0x6115('0x16')])['join'](','));break;case _0x6115('0x21'):var _0x4ae0b2=_0xaaedca[_0x6115('0x20')][_0x6115('0x1b')](',');_0x3bc13f[_0x6115('0x1c')](_0x4ae0b2[0x0]);_0x3bc13f[_0x6115('0x1c')](_0x4ae0b2[0x1]);_0x3bc13f['push'](_0x4ae0b2[0x2]);_0x3bc13f[_0x6115('0x1c')](_0x4ae0b2[0x3]);_0x3bc13f[_0x6115('0x1c')](_0x4ae0b2[_0x6115('0x1d')](0x4,_0x4ae0b2[_0x6115('0x16')])['join'](','));break;case'message':_0x3bc13f['push'](_0xaaedca[_0x6115('0x20')]);break;case _0x6115('0x22'):_0x3bc13f[_0x6115('0x1c')](_0xaaedca[_0x6115('0x23')]);_0x3bc13f['push'](_0xaaedca['appdata']);break;default:_0x3bc13f=_[_0x6115('0xd')](_0xaaedca['appdata'])?[]:_0xaaedca['appdata'][_0x6115('0x1b')](',');}var _0x482e3f={'id':util['format'](_0x6115('0x24'),_0x5e9d12,_0xaaedca['id'],_0xaaedca[_0x6115('0x18')]),'condition':require(_0x6115('0x25'))[_0x6115('0x26')](_0x5e9d12,getIntervals(_0xd560ab[_0x6115('0x27')],_0xaaedca),_0xd560ab),'consequence':require(_0x6115('0x28')+_0xaaedca[_0x6115('0x18')])[_0x6115('0x29')](_0x5e9d12,_0x3bc13f,_0xd560ab,_0x484b44),'p':_0xaaedca[_0x6115('0x2a')]||0x0};logger['info'](_0x6115('0x2b'),_0x482e3f['id'],_0x6115('0x2c'),getIntervals(_0xd560ab['intervals'],_0xaaedca)[_0x6115('0x1e')](_0x6115('0x2d')));_0x35fb12[_0x6115('0x1c')](_0x482e3f);}else{logger['error'](_0x6115('0x2e'),path['join'](__dirname,'applications',_0xaaedca[_0x6115('0x18')]+'.js'));}}_0xd560ab[_0x6115('0x2f')][_0x5e9d12]=new RuleEngine(_0x35fb12);_0xd560ab[_0x6115('0x2f')][_0x5e9d12][_0x6115('0x30')](_0x484b44,function(_0x5b9f18){logger[_0x6115('0x31')](_0x6115('0x32'),JSON[_0x6115('0x33')](_0x5b9f18[_0x6115('0x34')]));if(_0xd560ab[_0x6115('0x2f')][_0x5e9d12]){_0xd560ab[_0x6115('0x2f')][_0x5e9d12][_0x6115('0x35')](_0x6115('0x36'));}});return _0x327f87({'code':0xc8,'message':_0x484b44});}else{logger[_0x6115('0x31')](_0x6115('0x37'));return _0x327f87({'code':0xc8,'message':_0x484b44});}}catch(_0x31f9f1){logger['error'](_0x31f9f1[_0x6115('0x38')]);return _0x1cfee3(_0x46fe62[_0x6115('0x39')](0x1f4,_0x31f9f1));}}return _0x1cfee3(_0x6115('0x3a'));});},'AcceptMessage':function(_0x5eb231){var _0x4257e9=this;return new Promise(function(_0xd26c6e,_0x3d9919){if(_0x5eb231['message']&&_0x5eb231[_0x6115('0x13')]['id']){try{var _0x51878a=getId(_0x5eb231[_0x6115('0x12')],_0x5eb231[_0x6115('0x13')]?_0x5eb231['message']['id']:0x0,_0x5eb231[_0x6115('0x14')]?_0x5eb231[_0x6115('0x14')]['id']:0x0);if(_0xd560ab[_0x6115('0x2f')][_0x51878a]){_0xd560ab[_0x6115('0x2f')][_0x51878a]['emit'](_0x6115('0x3b'));if(rpc[_0x5eb231['channel']+_0x6115('0x3c')]){rpc[_0x5eb231[_0x6115('0x12')]+_0x6115('0x3c')][_0x6115('0x3d')](_0x51878a,{'UserId':_0x5eb231[_0x6115('0x13')][_0x6115('0x3e')]})[_0x6115('0x3f')](function(_0x1c3136){logger[_0x6115('0x39')]('error\x20update\x20queue\x20report');});}}return _0xd26c6e({'code':0xc8,'message':_0x5eb231});}catch(_0x57fb3a){logger[_0x6115('0x39')](_0x57fb3a[_0x6115('0x38')]);return _0x3d9919(_0x4257e9[_0x6115('0x39')](0x1f4,_0x57fb3a));}}logger[_0x6115('0x39')]('message\x20is\x20empty');return _0x3d9919(_0x4257e9[_0x6115('0x39')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x4b8a8d){var _0x17549d=this;return new Promise(function(_0xe51220,_0x5ca908){if(_0x4b8a8d[_0x6115('0x40')]&&_0x4b8a8d[_0x6115('0x40')]['id']){try{if(_0xd560ab['agents'][_0x4b8a8d[_0x6115('0x40')]['id']]){_0xd560ab[_0x6115('0x41')][_0x4b8a8d[_0x6115('0x40')]['id']][_0x6115('0x42')]=![];_0xd560ab[_0x6115('0x41')][_0x4b8a8d['agent']['id']][_0x6115('0x43')]=undefined;}return _0xe51220({'code':0xc8,'message':_0x4b8a8d});}catch(_0x4f19d4){logger[_0x6115('0x39')](_0x4f19d4[_0x6115('0x38')]);return _0x5ca908(_0x17549d[_0x6115('0x39')](0x1f4,_0x4f19d4));}}logger[_0x6115('0x39')]('message\x20is\x20empty');return _0x5ca908(_0x17549d[_0x6115('0x39')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x4e9be2){var _0x5d0b04=this;return new Promise(function(_0x54cd8c,_0x2a42cc){if(_0x4e9be2[_0x6115('0x12')]&&_0x4e9be2[_0x6115('0x14')]&&_0x4e9be2[_0x6115('0x14')]['id']){try{var _0x3c2e66=getId(_0x4e9be2[_0x6115('0x12')],_0x4e9be2['message']?_0x4e9be2[_0x6115('0x13')]['id']:0x0,_0x4e9be2['interaction']?_0x4e9be2[_0x6115('0x14')]['id']:0x0);if(_0xd560ab[_0x6115('0x2f')][_0x3c2e66]){_0xd560ab[_0x6115('0x2f')][_0x3c2e66][_0x6115('0x35')](_0x6115('0x3b'));}return _0x54cd8c({'code':0xc8,'message':_0x4e9be2});}catch(_0xfe6bb8){logger[_0x6115('0x39')](_0xfe6bb8[_0x6115('0x38')]);return _0x2a42cc(_0x5d0b04[_0x6115('0x39')](0x1f4,_0xfe6bb8));}}logger[_0x6115('0x39')](_0x6115('0x44'));return _0x2a42cc(_0x5d0b04['error'](0x1f4,_0x6115('0x44')));});},'AgentCapacity':function(_0x2f468f){var _0x5e29eb=this;return new Promise(function(_0x3f1bfd,_0x45bdcb){if(_0xd560ab[_0x6115('0x41')][_0x6115('0x45')](_0x2f468f['id'])){for(var _0x2cf88a in _0x2f468f['capacity']){if(_0x2f468f[_0x6115('0x46')][_0x6115('0x45')](_0x2cf88a)){if(_0xd560ab[_0x6115('0x41')][_0x2f468f['id']]['hasOwnProperty'](_0x2cf88a+_0x6115('0x47'))){_0xd560ab[_0x6115('0x41')][_0x2f468f['id']][_0x2cf88a+'CurrentCapacity']=parseInt(_0x2f468f[_0x6115('0x46')][_0x2cf88a],0xa);}}}_0xd560ab['agents'][_0x2f468f['id']][_0x6115('0x48')]();return _0x3f1bfd({'code':0xc8,'message':_0xd560ab[_0x6115('0x41')][_0x2f468f['id']]});}else{return _0x45bdcb(_0x5e29eb[_0x6115('0x39')](0x1f4,_0x6115('0x49')));}});},'Agents':function(_0x209143){return new Promise(function(_0x1b63f9,_0xc7e586){var _0x877dc4=_[_0x6115('0x4a')](_0xd560ab[_0x6115('0x41')]);_0x1b63f9({'count':_0x877dc4[_0x6115('0x16')],'rows':_0x877dc4});});},'ChatQueues':function(_0x40464b){return new Promise(function(_0x2de7aa,_0x4a6e72){var _0xf7903c=[];for(var _0x587cda in _0xd560ab[_0x6115('0x4b')]){if(_0xd560ab[_0x6115('0x4b')][_0x6115('0x45')](_0x587cda)){var _0x24c016=_0xd560ab[_0x6115('0x4b')][_0x587cda];var _0x23284a={'id':_0x24c016['id'],'available':_0x24c016['available'],'loggedIn':_0x24c016['loggedIn'],'name':_0x24c016[_0x6115('0x4c')],'paused':_0x24c016[_0x6115('0x4d')],'waiting':_0x24c016[_0x6115('0x4e')]};_0xf7903c['push'](_0x23284a);}}_0x2de7aa({'count':_0xf7903c['length'],'rows':_0xf7903c});});},'MailQueues':function(_0x914b04){return new Promise(function(_0x405e2c,_0x3db0b2){var _0x562465=[];for(var _0x338682 in _0xd560ab[_0x6115('0x4f')]){if(_0xd560ab[_0x6115('0x4f')][_0x6115('0x45')](_0x338682)){var _0x23071a=_0xd560ab[_0x6115('0x4f')][_0x338682];var _0x396667={'id':_0x23071a['id'],'available':_0x23071a['available'],'loggedIn':_0x23071a['loggedIn'],'name':_0x23071a[_0x6115('0x4c')],'paused':_0x23071a[_0x6115('0x4d')],'waiting':_0x23071a[_0x6115('0x4e')]};_0x562465[_0x6115('0x1c')](_0x396667);}}_0x405e2c({'count':_0x562465[_0x6115('0x16')],'rows':_0x562465});});},'OpenchannelQueues':function(_0x4c0dee){return new Promise(function(_0x3dd322,_0x5fcd32){var _0x42965e=[];for(var _0x266e31 in _0xd560ab[_0x6115('0x50')]){if(_0xd560ab[_0x6115('0x50')][_0x6115('0x45')](_0x266e31)){var _0x10f21c=_0xd560ab[_0x6115('0x50')][_0x266e31];var _0x30b519={'id':_0x10f21c['id'],'available':_0x10f21c[_0x6115('0x51')],'loggedIn':_0x10f21c[_0x6115('0x52')],'name':_0x10f21c['name'],'paused':_0x10f21c[_0x6115('0x4d')],'waiting':_0x10f21c['waiting']};_0x42965e[_0x6115('0x1c')](_0x30b519);}}_0x3dd322({'count':_0x42965e['length'],'rows':_0x42965e});});},'SmsQueues':function(_0x18794c){return new Promise(function(_0x3cc252,_0x14b58f){var _0xe60b62=[];for(var _0x35b17c in _0xd560ab[_0x6115('0x53')]){if(_0xd560ab[_0x6115('0x53')][_0x6115('0x45')](_0x35b17c)){var _0x46ef0c=_0xd560ab[_0x6115('0x53')][_0x35b17c];var _0x45b2f7={'id':_0x46ef0c['id'],'available':_0x46ef0c['available'],'loggedIn':_0x46ef0c[_0x6115('0x52')],'name':_0x46ef0c['name'],'paused':_0x46ef0c['paused'],'waiting':_0x46ef0c['waiting']};_0xe60b62[_0x6115('0x1c')](_0x45b2f7);}}_0x3cc252({'count':_0xe60b62[_0x6115('0x16')],'rows':_0xe60b62});});},'FaxQueues':function(_0x5dea47){return new Promise(function(_0x4d03b1,_0x4ce01d){var _0x1c61e2=[];for(var _0x2fc224 in _0xd560ab[_0x6115('0x54')]){if(_0xd560ab[_0x6115('0x54')]['hasOwnProperty'](_0x2fc224)){var _0x29d5a7=_0xd560ab[_0x6115('0x54')][_0x2fc224];var _0x74b012={'id':_0x29d5a7['id'],'available':_0x29d5a7[_0x6115('0x51')],'loggedIn':_0x29d5a7[_0x6115('0x52')],'name':_0x29d5a7[_0x6115('0x4c')],'paused':_0x29d5a7['paused'],'waiting':_0x29d5a7[_0x6115('0x4e')]};_0x1c61e2[_0x6115('0x1c')](_0x74b012);}}_0x4d03b1({'count':_0x1c61e2['length'],'rows':_0x1c61e2});});},'WhatsappQueues':function(_0x518650){return new Promise(function(_0x580100,_0x1a8712){var _0x54f1ca=[];for(var _0x43b313 in _0xd560ab[_0x6115('0x55')]){if(_0xd560ab['whatsappQueues'][_0x6115('0x45')](_0x43b313)){var _0x5b9409=_0xd560ab['whatsappQueues'][_0x43b313];var _0x48a26f={'id':_0x5b9409['id'],'available':_0x5b9409[_0x6115('0x51')],'loggedIn':_0x5b9409['loggedIn'],'name':_0x5b9409[_0x6115('0x4c')],'paused':_0x5b9409['paused'],'waiting':_0x5b9409['waiting']};_0x54f1ca['push'](_0x48a26f);}}_0x580100({'count':_0x54f1ca[_0x6115('0x16')],'rows':_0x54f1ca});});},'ChatQueuesWaitingInteractions':function(_0x2c3429){return new Promise(function(_0x156730,_0xfc2483){var _0xda5c23=_[_0x6115('0x4a')](_0xd560ab['chatQueuesWaitingInteractions']);_0x156730({'count':_0xda5c23[_0x6115('0x16')],'rows':_0xda5c23});});},'MailQueuesWaitingInteractions':function(_0x5064ac){return new Promise(function(_0x1b7046,_0x4659ea){var _0x224977=_[_0x6115('0x4a')](_0xd560ab[_0x6115('0x56')]);_0x1b7046({'count':_0x224977[_0x6115('0x16')],'rows':_0x224977});});},'OpenchannelQueuesWaitingInteractions':function(_0x25ab38){return new Promise(function(_0x1ad950,_0x19b17b){var _0x23b8ab=_[_0x6115('0x4a')](_0xd560ab[_0x6115('0x57')]);_0x1ad950({'count':_0x23b8ab[_0x6115('0x16')],'rows':_0x23b8ab});});},'SmsQueuesWaitingInteractions':function(_0x3157f4){return new Promise(function(_0x106ce4,_0x275b9f){var _0x4092a1=_[_0x6115('0x4a')](_0xd560ab[_0x6115('0x58')]);_0x106ce4({'count':_0x4092a1[_0x6115('0x16')],'rows':_0x4092a1});});},'FaxQueuesWaitingInteractions':function(_0x187f26){return new Promise(function(_0x25181a,_0x2e717b){var _0x2e3c97=_[_0x6115('0x4a')](_0xd560ab[_0x6115('0x59')]);_0x25181a({'count':_0x2e3c97[_0x6115('0x16')],'rows':_0x2e3c97});});},'WhatsappQueuesWaitingInteractions':function(_0xee81c8){return new Promise(function(_0x6f687b,_0x553e6c){var _0x1fa236=_['values'](_0xd560ab['whatsappQueuesWaitingInteractions']);_0x6f687b({'count':_0x1fa236[_0x6115('0x16')],'rows':_0x1fa236});});}};var _0x1bf7e1=jayson[_0x6115('0x5a')](_0x2cf735)[_0x6115('0x5b')]();_0x1bf7e1['on'](_0x6115('0x39'),function(_0x344a49){logger[_0x6115('0x39')](JSON[_0x6115('0x33')](_0x344a49));return _0x1b67fa(_0x344a49);});_0x1bf7e1['listen'](0x232c,_0x6115('0x5c'),function(){console[_0x6115('0x5d')](_0x6115('0x5e'),0x232c);return _0x33b0db(_0x6115('0x5f')+0x232c);});});};