a3dfbf93ec3e034bb9a3f7248078417060deafbe
[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 _0xa01d=['routing\x20is\x20empty','channel','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','mailQueues','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','isNil','IntervalId','Intervals','interval','rules','message','interaction','applications','isArray','length','existsSync','app','toLowerCase','appdata','split','push','slice','join','tag','TagId','format','condition','intervals','priority','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','info','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','error','stack'];(function(_0x17603f,_0xde12c5){var _0x188285=function(_0x38f0f8){while(--_0x38f0f8){_0x17603f['push'](_0x17603f['shift']());}};_0x188285(++_0xde12c5);}(_0xa01d,0xda));var _0xda01=function(_0x1ad30f,_0x4e8faa){_0x1ad30f=_0x1ad30f-0x0;var _0x572b1a=_0xa01d[_0x1ad30f];return _0x572b1a;};'use strict';var _=require(_0xda01('0x0'));var util=require(_0xda01('0x1'));var path=require(_0xda01('0x2'));var fs=require('fs');var jayson=require(_0xda01('0x3'));var BPromise=require('bluebird');var uuid=require('uuid');var config=require(_0xda01('0x4'));var logger=require('../../../config/logger')(_0xda01('0x5'));var rpc={'openchannelQueueReport':require(_0xda01('0x6')),'mailQueueReport':require(_0xda01('0x7')),'chatQueueReport':require(_0xda01('0x8')),'smsQueueReport':require(_0xda01('0x9')),'faxQueueReport':require(_0xda01('0xa')),'whatsappQueueReport':require(_0xda01('0xb'))};var RuleEngine=require(_0xda01('0xc'));function getId(_0x11cfc1,_0x4f9d75,_0x5dc872){return util['format']('%s.%s.%s',_0x11cfc1,_0x4f9d75||0x0,_0x5dc872||0x0);}function getIntervals(_0x34546d,_0x2e0317){var _0x2f9756=[];if(!_['isNil'](_0x2e0317['IntervalId'])&&!_[_0xda01('0xd')](_0x34546d[_0x2e0317[_0xda01('0xe')]])&&!_[_0xda01('0xd')](_0x34546d[_0x2e0317['IntervalId']][_0xda01('0xf')])){_0x2f9756=_['map'](_0x34546d[_0x2e0317[_0xda01('0xe')]][_0xda01('0xf')],_0xda01('0x10'));}else if(!_[_0xda01('0xd')](_0x2e0317[_0xda01('0x10')])){_0x2f9756=[_0x2e0317['interval']];}return _0x2f9756;}exports['listen']=function(_0x7fcd26){_0x7fcd26[_0xda01('0x11')]={};return new BPromise(function(_0x1121fe,_0x2b19f3){var _0x3fab4f={'Start':function(_0x29282b){var _0x4bd117=this;return new Promise(function(_0x14d7a7,_0x261ce7){if(_0x29282b){try{var _0x160c7a=[];var _0x56707f=getId(_0x29282b['channel'],_0x29282b[_0xda01('0x12')]?_0x29282b[_0xda01('0x12')]['id']:0x0,_0x29282b[_0xda01('0x13')]?_0x29282b[_0xda01('0x13')]['id']:0x0);if(_0x29282b[_0xda01('0x14')]&&_[_0xda01('0x15')](_0x29282b[_0xda01('0x14')])&&_0x29282b[_0xda01('0x14')][_0xda01('0x16')]){for(var _0x325028=0x0;_0x325028<_0x29282b[_0xda01('0x14')]['length'];_0x325028+=0x1){var _0x5150ef=_0x29282b[_0xda01('0x14')][_0x325028];if(fs[_0xda01('0x17')](path['join'](__dirname,_0xda01('0x14'),_0x5150ef[_0xda01('0x18')]+'.js'))){var _0xa269b1=[];switch(_0x5150ef['app'][_0xda01('0x19')]()){case'autoreply':var _0x244257=_0x5150ef[_0xda01('0x1a')][_0xda01('0x1b')](',');_0xa269b1[_0xda01('0x1c')](_0x244257[0x0]);_0xa269b1['push'](_0x244257[_0xda01('0x1d')](0x1,_0x244257[_0xda01('0x16')])[_0xda01('0x1e')](','));break;case'dialogflow':var _0x1f4a65=_0x5150ef[_0xda01('0x1a')][_0xda01('0x1b')](',');_0xa269b1[_0xda01('0x1c')](_0x1f4a65[0x0]);_0xa269b1[_0xda01('0x1c')](_0x1f4a65[0x1]);_0xa269b1[_0xda01('0x1c')](_0x1f4a65[_0xda01('0x1d')](0x2,_0x1f4a65[_0xda01('0x16')])[_0xda01('0x1e')](','));break;case'amazonlex':var _0x3303a6=_0x5150ef[_0xda01('0x1a')][_0xda01('0x1b')](',');_0xa269b1[_0xda01('0x1c')](_0x3303a6[0x0]);_0xa269b1['push'](_0x3303a6[0x1]);_0xa269b1[_0xda01('0x1c')](_0x3303a6[0x2]);_0xa269b1['push'](_0x3303a6[0x3]);_0xa269b1[_0xda01('0x1c')](_0x3303a6[_0xda01('0x1d')](0x4,_0x3303a6[_0xda01('0x16')])[_0xda01('0x1e')](','));break;case _0xda01('0x12'):_0xa269b1['push'](_0x5150ef[_0xda01('0x1a')]);break;case _0xda01('0x1f'):_0xa269b1[_0xda01('0x1c')](_0x5150ef[_0xda01('0x20')]);_0xa269b1[_0xda01('0x1c')](_0x5150ef['appdata']);break;default:_0xa269b1=_[_0xda01('0xd')](_0x5150ef[_0xda01('0x1a')])?[]:_0x5150ef[_0xda01('0x1a')][_0xda01('0x1b')](',');}var _0x5d3d3f={'id':util[_0xda01('0x21')]('%s:%s:%s',_0x56707f,_0x5150ef['id'],_0x5150ef[_0xda01('0x18')]),'condition':require('./interval')[_0xda01('0x22')](_0x56707f,getIntervals(_0x7fcd26[_0xda01('0x23')],_0x5150ef),_0x7fcd26),'consequence':require('./applications/'+_0x5150ef['app'])['consequence'](_0x56707f,_0xa269b1,_0x7fcd26,_0x29282b),'p':_0x5150ef[_0xda01('0x24')]||0x0};logger['info'](_0xda01('0x25'),_0x5d3d3f['id'],_0xda01('0x26'),getIntervals(_0x7fcd26[_0xda01('0x23')],_0x5150ef)[_0xda01('0x1e')](_0xda01('0x27')));_0x160c7a[_0xda01('0x1c')](_0x5d3d3f);}else{logger['error'](_0xda01('0x28'),path[_0xda01('0x1e')](__dirname,_0xda01('0x14'),_0x5150ef['app']+'.js'));}}_0x7fcd26[_0xda01('0x11')][_0x56707f]=new RuleEngine(_0x160c7a);_0x7fcd26[_0xda01('0x11')][_0x56707f]['execute'](_0x29282b,function(_0x2080b3){logger[_0xda01('0x29')](_0xda01('0x2a'),JSON[_0xda01('0x2b')](_0x2080b3['matchPath']));if(_0x7fcd26[_0xda01('0x11')][_0x56707f]){_0x7fcd26[_0xda01('0x11')][_0x56707f][_0xda01('0x2c')](_0xda01('0x2d'));}});return _0x14d7a7({'code':0xc8,'message':_0x29282b});}else{logger['info'](_0xda01('0x2e'));return _0x14d7a7({'code':0xc8,'message':_0x29282b});}}catch(_0x3e4a9c){logger[_0xda01('0x2f')](_0x3e4a9c[_0xda01('0x30')]);return _0x261ce7(_0x4bd117[_0xda01('0x2f')](0x1f4,_0x3e4a9c));}}return _0x261ce7(_0xda01('0x31'));});},'AcceptMessage':function(_0x36dcda){var _0x2a8e88=this;return new Promise(function(_0xba13c4,_0x10a98e){if(_0x36dcda[_0xda01('0x12')]&&_0x36dcda[_0xda01('0x12')]['id']){try{var _0x20f6e4=getId(_0x36dcda[_0xda01('0x32')],_0x36dcda[_0xda01('0x12')]?_0x36dcda[_0xda01('0x12')]['id']:0x0,_0x36dcda[_0xda01('0x13')]?_0x36dcda[_0xda01('0x13')]['id']:0x0);if(_0x7fcd26[_0xda01('0x11')][_0x20f6e4]){_0x7fcd26['rules'][_0x20f6e4][_0xda01('0x2c')]('end');if(rpc[_0x36dcda[_0xda01('0x32')]+'QueueReport']){rpc[_0x36dcda[_0xda01('0x32')]+_0xda01('0x33')][_0xda01('0x34')](_0x20f6e4,{'UserId':_0x36dcda[_0xda01('0x12')]['UserId']})[_0xda01('0x35')](function(_0x32899a){logger[_0xda01('0x2f')](_0xda01('0x36'));});}}return _0xba13c4({'code':0xc8,'message':_0x36dcda});}catch(_0x3f72d6){logger['error'](_0x3f72d6[_0xda01('0x30')]);return _0x10a98e(_0x2a8e88[_0xda01('0x2f')](0x1f4,_0x3f72d6));}}logger[_0xda01('0x2f')]('message\x20is\x20empty');return _0x10a98e(_0x2a8e88[_0xda01('0x2f')](0x1f4,_0xda01('0x37')));});},'RejectMessage':function(_0x384880){var _0x192131=this;return new Promise(function(_0x1ea9a4,_0x261eab){if(_0x384880['agent']&&_0x384880[_0xda01('0x38')]['id']){try{if(_0x7fcd26[_0xda01('0x39')][_0x384880['agent']['id']]){_0x7fcd26[_0xda01('0x39')][_0x384880['agent']['id']][_0xda01('0x3a')]=![];_0x7fcd26['agents'][_0x384880[_0xda01('0x38')]['id']][_0xda01('0x3b')]=undefined;}return _0x1ea9a4({'code':0xc8,'message':_0x384880});}catch(_0x414ca3){logger['error'](_0x414ca3[_0xda01('0x30')]);return _0x261eab(_0x192131[_0xda01('0x2f')](0x1f4,_0x414ca3));}}logger['error']('message\x20is\x20empty');return _0x261eab(_0x192131[_0xda01('0x2f')](0x1f4,_0xda01('0x37')));});},'AbandonInteraction':function(_0x204922){var _0x4c3f96=this;return new Promise(function(_0x4c6c60,_0x389513){if(_0x204922['channel']&&_0x204922['interaction']&&_0x204922[_0xda01('0x13')]['id']){try{var _0x1e3804=getId(_0x204922[_0xda01('0x32')],_0x204922[_0xda01('0x12')]?_0x204922[_0xda01('0x12')]['id']:0x0,_0x204922['interaction']?_0x204922[_0xda01('0x13')]['id']:0x0);if(_0x7fcd26['rules'][_0x1e3804]){_0x7fcd26[_0xda01('0x11')][_0x1e3804]['emit'](_0xda01('0x3c'));}return _0x4c6c60({'code':0xc8,'message':_0x204922});}catch(_0x2ba038){logger['error'](_0x2ba038['stack']);return _0x389513(_0x4c3f96[_0xda01('0x2f')](0x1f4,_0x2ba038));}}logger[_0xda01('0x2f')](_0xda01('0x37'));return _0x389513(_0x4c3f96[_0xda01('0x2f')](0x1f4,_0xda01('0x37')));});},'AgentCapacity':function(_0x306b4b){var _0x4e35a4=this;return new Promise(function(_0x3b8f10,_0x3b4632){if(_0x7fcd26['agents'][_0xda01('0x3d')](_0x306b4b['id'])){for(var _0x5a2b59 in _0x306b4b[_0xda01('0x3e')]){if(_0x306b4b['capacity'][_0xda01('0x3d')](_0x5a2b59)){if(_0x7fcd26[_0xda01('0x39')][_0x306b4b['id']]['hasOwnProperty'](_0x5a2b59+'CurrentCapacity')){_0x7fcd26['agents'][_0x306b4b['id']][_0x5a2b59+_0xda01('0x3f')]=parseInt(_0x306b4b[_0xda01('0x3e')][_0x5a2b59],0xa);}}}_0x7fcd26[_0xda01('0x39')][_0x306b4b['id']][_0xda01('0x40')]();return _0x3b8f10({'code':0xc8,'message':_0x7fcd26[_0xda01('0x39')][_0x306b4b['id']]});}else{return _0x3b4632(_0x4e35a4['error'](0x1f4,_0xda01('0x41')));}});},'Agents':function(_0x5a17e9){return new Promise(function(_0x3163ac,_0x3a5d55){var _0x2843f2=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x39')]);_0x3163ac({'count':_0x2843f2[_0xda01('0x16')],'rows':_0x2843f2});});},'ChatQueues':function(_0x336128){return new Promise(function(_0x2b09d2,_0xca65af){var _0x100f7e=[];for(var _0x5df680 in _0x7fcd26[_0xda01('0x43')]){if(_0x7fcd26['chatQueues'][_0xda01('0x3d')](_0x5df680)){var _0xc915af=_0x7fcd26[_0xda01('0x43')][_0x5df680];var _0x2a7d91={'id':_0xc915af['id'],'available':_0xc915af[_0xda01('0x44')],'loggedIn':_0xc915af[_0xda01('0x45')],'name':_0xc915af[_0xda01('0x46')],'paused':_0xc915af[_0xda01('0x47')],'waiting':_0xc915af['waiting']};_0x100f7e[_0xda01('0x1c')](_0x2a7d91);}}_0x2b09d2({'count':_0x100f7e['length'],'rows':_0x100f7e});});},'MailQueues':function(_0x5e9a9f){return new Promise(function(_0xe756d3,_0x9af364){var _0x351a59=[];for(var _0x1fee43 in _0x7fcd26[_0xda01('0x48')]){if(_0x7fcd26[_0xda01('0x48')][_0xda01('0x3d')](_0x1fee43)){var _0x5c14b9=_0x7fcd26[_0xda01('0x48')][_0x1fee43];var _0x287c01={'id':_0x5c14b9['id'],'available':_0x5c14b9[_0xda01('0x44')],'loggedIn':_0x5c14b9[_0xda01('0x45')],'name':_0x5c14b9['name'],'paused':_0x5c14b9[_0xda01('0x47')],'waiting':_0x5c14b9[_0xda01('0x49')]};_0x351a59[_0xda01('0x1c')](_0x287c01);}}_0xe756d3({'count':_0x351a59[_0xda01('0x16')],'rows':_0x351a59});});},'OpenchannelQueues':function(_0x3a8cd1){return new Promise(function(_0x5f4850,_0x3fecf7){var _0x5245de=[];for(var _0x1c46c5 in _0x7fcd26[_0xda01('0x4a')]){if(_0x7fcd26[_0xda01('0x4a')]['hasOwnProperty'](_0x1c46c5)){var _0x378ca9=_0x7fcd26['openchannelQueues'][_0x1c46c5];var _0x3079b8={'id':_0x378ca9['id'],'available':_0x378ca9[_0xda01('0x44')],'loggedIn':_0x378ca9['loggedIn'],'name':_0x378ca9[_0xda01('0x46')],'paused':_0x378ca9[_0xda01('0x47')],'waiting':_0x378ca9[_0xda01('0x49')]};_0x5245de[_0xda01('0x1c')](_0x3079b8);}}_0x5f4850({'count':_0x5245de['length'],'rows':_0x5245de});});},'SmsQueues':function(_0x546f5f){return new Promise(function(_0x49907a,_0xb49199){var _0x32ae6b=[];for(var _0x1c055f in _0x7fcd26[_0xda01('0x4b')]){if(_0x7fcd26['smsQueues']['hasOwnProperty'](_0x1c055f)){var _0x8cfcb4=_0x7fcd26[_0xda01('0x4b')][_0x1c055f];var _0x394f42={'id':_0x8cfcb4['id'],'available':_0x8cfcb4[_0xda01('0x44')],'loggedIn':_0x8cfcb4[_0xda01('0x45')],'name':_0x8cfcb4['name'],'paused':_0x8cfcb4[_0xda01('0x47')],'waiting':_0x8cfcb4[_0xda01('0x49')]};_0x32ae6b[_0xda01('0x1c')](_0x394f42);}}_0x49907a({'count':_0x32ae6b['length'],'rows':_0x32ae6b});});},'FaxQueues':function(_0x175023){return new Promise(function(_0x337aca,_0x401775){var _0x465950=[];for(var _0x3a3076 in _0x7fcd26[_0xda01('0x4c')]){if(_0x7fcd26['faxQueues'][_0xda01('0x3d')](_0x3a3076)){var _0x4d5539=_0x7fcd26[_0xda01('0x4c')][_0x3a3076];var _0x27942e={'id':_0x4d5539['id'],'available':_0x4d5539[_0xda01('0x44')],'loggedIn':_0x4d5539[_0xda01('0x45')],'name':_0x4d5539['name'],'paused':_0x4d5539['paused'],'waiting':_0x4d5539[_0xda01('0x49')]};_0x465950['push'](_0x27942e);}}_0x337aca({'count':_0x465950[_0xda01('0x16')],'rows':_0x465950});});},'WhatsappQueues':function(_0x2e424b){return new Promise(function(_0x5a54e6,_0x539b61){var _0x15b892=[];for(var _0x1d6c31 in _0x7fcd26['whatsappQueues']){if(_0x7fcd26[_0xda01('0x4d')][_0xda01('0x3d')](_0x1d6c31)){var _0x337737=_0x7fcd26[_0xda01('0x4d')][_0x1d6c31];var _0x20586e={'id':_0x337737['id'],'available':_0x337737[_0xda01('0x44')],'loggedIn':_0x337737[_0xda01('0x45')],'name':_0x337737[_0xda01('0x46')],'paused':_0x337737[_0xda01('0x47')],'waiting':_0x337737[_0xda01('0x49')]};_0x15b892[_0xda01('0x1c')](_0x20586e);}}_0x5a54e6({'count':_0x15b892[_0xda01('0x16')],'rows':_0x15b892});});},'ChatQueuesWaitingInteractions':function(_0x3092e3){return new Promise(function(_0x4ffaba,_0x4f0a5c){var _0x3311f0=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x4e')]);_0x4ffaba({'count':_0x3311f0[_0xda01('0x16')],'rows':_0x3311f0});});},'MailQueuesWaitingInteractions':function(_0x23aff4){return new Promise(function(_0x20ea27,_0x4c2256){var _0x2a2273=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x4f')]);_0x20ea27({'count':_0x2a2273['length'],'rows':_0x2a2273});});},'OpenchannelQueuesWaitingInteractions':function(_0xbce293){return new Promise(function(_0xa23817,_0x40e545){var _0x52a8bc=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x50')]);_0xa23817({'count':_0x52a8bc[_0xda01('0x16')],'rows':_0x52a8bc});});},'SmsQueuesWaitingInteractions':function(_0x42081b){return new Promise(function(_0x18c2b6,_0x3a875d){var _0x37977a=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x51')]);_0x18c2b6({'count':_0x37977a[_0xda01('0x16')],'rows':_0x37977a});});},'FaxQueuesWaitingInteractions':function(_0x1b570e){return new Promise(function(_0x4f880c,_0x158523){var _0x3c0bbb=_['values'](_0x7fcd26['faxQueuesWaitingInteractions']);_0x4f880c({'count':_0x3c0bbb[_0xda01('0x16')],'rows':_0x3c0bbb});});},'WhatsappQueuesWaitingInteractions':function(_0x5eb28f){return new Promise(function(_0x107b52,_0x3f477c){var _0x3cdba6=_[_0xda01('0x42')](_0x7fcd26[_0xda01('0x52')]);_0x107b52({'count':_0x3cdba6[_0xda01('0x16')],'rows':_0x3cdba6});});}};var _0x29c1ae=jayson[_0xda01('0x53')](_0x3fab4f)['http']();_0x29c1ae['on'](_0xda01('0x2f'),function(_0x57123a){logger[_0xda01('0x2f')](JSON[_0xda01('0x2b')](_0x57123a));return _0x2b19f3(_0x57123a);});_0x29c1ae[_0xda01('0x54')](0x232c,_0xda01('0x55'),function(){console[_0xda01('0x56')](_0xda01('0x57'),0x232c);return _0x1121fe(_0xda01('0x58')+0x232c);});});};