e9d495e9853562c5e75efebbc4bbb4b7747d781f
[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 _0xfdb3=['values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','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','bluebird','../../../config/environment','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../lib/rule-engine','format','isNil','IntervalId','Intervals','map','interval','rules','message','interaction','isArray','applications','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','channel','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found'];(function(_0x3ef937,_0x12dc99){var _0x18fead=function(_0x355055){while(--_0x355055){_0x3ef937['push'](_0x3ef937['shift']());}};_0x18fead(++_0x12dc99);}(_0xfdb3,0xd8));var _0x3fdb=function(_0x2ebe07,_0x55dcec){_0x2ebe07=_0x2ebe07-0x0;var _0x1bc170=_0xfdb3[_0x2ebe07];return _0x1bc170;};'use strict';var _=require(_0x3fdb('0x0'));var util=require(_0x3fdb('0x1'));var path=require(_0x3fdb('0x2'));var fs=require('fs');var jayson=require(_0x3fdb('0x3'));var BPromise=require(_0x3fdb('0x4'));var uuid=require('uuid');var config=require(_0x3fdb('0x5'));var logger=require('../../../config/logger')('routing');var rpc={'openchannelQueueReport':require(_0x3fdb('0x6')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x3fdb('0x7')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x3fdb('0x8'));function getId(_0x5a0aae,_0x4bf41e,_0x24fa75){return util[_0x3fdb('0x9')]('%s.%s.%s',_0x5a0aae,_0x4bf41e||0x0,_0x24fa75||0x0);}function getIntervals(_0x24c989,_0x4fc997){var _0x569d16=[];if(!_[_0x3fdb('0xa')](_0x4fc997[_0x3fdb('0xb')])&&!_['isNil'](_0x24c989[_0x4fc997['IntervalId']])&&!_[_0x3fdb('0xa')](_0x24c989[_0x4fc997['IntervalId']][_0x3fdb('0xc')])){_0x569d16=_[_0x3fdb('0xd')](_0x24c989[_0x4fc997[_0x3fdb('0xb')]][_0x3fdb('0xc')],_0x3fdb('0xe'));}else if(!_[_0x3fdb('0xa')](_0x4fc997[_0x3fdb('0xe')])){_0x569d16=[_0x4fc997['interval']];}return _0x569d16;}exports['listen']=function(_0x5d7e11){_0x5d7e11[_0x3fdb('0xf')]={};return new BPromise(function(_0x7a94b,_0x3879e7){var _0x16b84b={'Start':function(_0x2e0c2f){var _0x4df52a=this;return new Promise(function(_0x1920a0,_0x45f957){if(_0x2e0c2f){try{var _0x560d69=[];var _0x100e0b=getId(_0x2e0c2f['channel'],_0x2e0c2f[_0x3fdb('0x10')]?_0x2e0c2f['message']['id']:0x0,_0x2e0c2f[_0x3fdb('0x11')]?_0x2e0c2f[_0x3fdb('0x11')]['id']:0x0);if(_0x2e0c2f['applications']&&_[_0x3fdb('0x12')](_0x2e0c2f[_0x3fdb('0x13')])&&_0x2e0c2f[_0x3fdb('0x13')][_0x3fdb('0x14')]){for(var _0x3266c8=0x0;_0x3266c8<_0x2e0c2f[_0x3fdb('0x13')][_0x3fdb('0x14')];_0x3266c8+=0x1){var _0x2542a0=_0x2e0c2f[_0x3fdb('0x13')][_0x3266c8];if(fs[_0x3fdb('0x15')](path[_0x3fdb('0x16')](__dirname,'applications',_0x2542a0[_0x3fdb('0x17')]+_0x3fdb('0x18')))){var _0x40ef69=[];switch(_0x2542a0[_0x3fdb('0x17')][_0x3fdb('0x19')]()){case _0x3fdb('0x1a'):var _0x192375=_0x2542a0[_0x3fdb('0x1b')][_0x3fdb('0x1c')](',');_0x40ef69['push'](_0x192375[0x0]);_0x40ef69[_0x3fdb('0x1d')](_0x192375[_0x3fdb('0x1e')](0x1,_0x192375['length'])['join'](','));break;case _0x3fdb('0x1f'):var _0x3ab825=_0x2542a0[_0x3fdb('0x1b')][_0x3fdb('0x1c')](',');_0x40ef69[_0x3fdb('0x1d')](_0x3ab825[0x0]);_0x40ef69[_0x3fdb('0x1d')](_0x3ab825[0x1]);_0x40ef69[_0x3fdb('0x1d')](_0x3ab825[_0x3fdb('0x1e')](0x2,_0x3ab825[_0x3fdb('0x14')])['join'](','));break;case _0x3fdb('0x20'):var _0x2375ab=_0x2542a0[_0x3fdb('0x1b')][_0x3fdb('0x1c')](',');_0x40ef69[_0x3fdb('0x1d')](_0x2375ab[0x0]);_0x40ef69[_0x3fdb('0x1d')](_0x2375ab[0x1]);_0x40ef69[_0x3fdb('0x1d')](_0x2375ab[0x2]);_0x40ef69[_0x3fdb('0x1d')](_0x2375ab[0x3]);_0x40ef69[_0x3fdb('0x1d')](_0x2375ab['slice'](0x4,_0x2375ab[_0x3fdb('0x14')])['join'](','));break;case _0x3fdb('0x21'):var _0x31f390=_0x2542a0[_0x3fdb('0x1b')][_0x3fdb('0x1c')](',');_0x40ef69[_0x3fdb('0x1d')](_0x31f390[0x0]);_0x40ef69[_0x3fdb('0x1d')](_0x31f390[0x1]);_0x40ef69['push'](_0x31f390[0x2]);_0x40ef69[_0x3fdb('0x1d')](_0x31f390[0x3]);_0x40ef69['push'](_0x31f390['slice'](0x4,_0x31f390['length'])[_0x3fdb('0x16')](','));break;case _0x3fdb('0x10'):_0x40ef69[_0x3fdb('0x1d')](_0x2542a0[_0x3fdb('0x1b')]);break;case _0x3fdb('0x22'):_0x40ef69[_0x3fdb('0x1d')](_0x2542a0[_0x3fdb('0x23')]);_0x40ef69[_0x3fdb('0x1d')](_0x2542a0[_0x3fdb('0x1b')]);break;default:_0x40ef69=_[_0x3fdb('0xa')](_0x2542a0[_0x3fdb('0x1b')])?[]:_0x2542a0['appdata'][_0x3fdb('0x1c')](',');}var _0x3410f5={'id':util[_0x3fdb('0x9')](_0x3fdb('0x24'),_0x100e0b,_0x2542a0['id'],_0x2542a0['app']),'condition':require(_0x3fdb('0x25'))[_0x3fdb('0x26')](_0x100e0b,getIntervals(_0x5d7e11[_0x3fdb('0x27')],_0x2542a0),_0x5d7e11),'consequence':require(_0x3fdb('0x28')+_0x2542a0[_0x3fdb('0x17')])['consequence'](_0x100e0b,_0x40ef69,_0x5d7e11,_0x2e0c2f),'p':_0x2542a0[_0x3fdb('0x29')]||0x0};logger[_0x3fdb('0x2a')](_0x3fdb('0x2b'),_0x3410f5['id'],_0x3fdb('0x2c'),getIntervals(_0x5d7e11[_0x3fdb('0x27')],_0x2542a0)[_0x3fdb('0x16')](_0x3fdb('0x2d')));_0x560d69[_0x3fdb('0x1d')](_0x3410f5);}else{logger[_0x3fdb('0x2e')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0x3fdb('0x13'),_0x2542a0[_0x3fdb('0x17')]+_0x3fdb('0x18')));}}_0x5d7e11[_0x3fdb('0xf')][_0x100e0b]=new RuleEngine(_0x560d69);_0x5d7e11['rules'][_0x100e0b][_0x3fdb('0x2f')](_0x2e0c2f,function(_0x4a5d87){logger[_0x3fdb('0x2a')]('Applications\x20executed',JSON[_0x3fdb('0x30')](_0x4a5d87[_0x3fdb('0x31')]));if(_0x5d7e11[_0x3fdb('0xf')][_0x100e0b]){_0x5d7e11[_0x3fdb('0xf')][_0x100e0b][_0x3fdb('0x32')](_0x3fdb('0x33'));}});return _0x1920a0({'code':0xc8,'message':_0x2e0c2f});}else{logger['info'](_0x3fdb('0x34'));return _0x1920a0({'code':0xc8,'message':_0x2e0c2f});}}catch(_0x4efec3){logger[_0x3fdb('0x2e')](_0x4efec3[_0x3fdb('0x35')]);return _0x45f957(_0x4df52a[_0x3fdb('0x2e')](0x1f4,_0x4efec3));}}return _0x45f957(_0x3fdb('0x36'));});},'AcceptMessage':function(_0x235e2c){var _0x184995=this;return new Promise(function(_0x5af558,_0x18869d){if(_0x235e2c[_0x3fdb('0x10')]&&_0x235e2c[_0x3fdb('0x10')]['id']){try{var _0x32c660=getId(_0x235e2c[_0x3fdb('0x37')],_0x235e2c[_0x3fdb('0x10')]?_0x235e2c['message']['id']:0x0,_0x235e2c[_0x3fdb('0x11')]?_0x235e2c[_0x3fdb('0x11')]['id']:0x0);if(_0x5d7e11[_0x3fdb('0xf')][_0x32c660]){_0x5d7e11[_0x3fdb('0xf')][_0x32c660]['emit'](_0x3fdb('0x38'));if(rpc[_0x235e2c['channel']+_0x3fdb('0x39')]){rpc[_0x235e2c['channel']+_0x3fdb('0x39')][_0x3fdb('0x3a')](_0x32c660,{'UserId':_0x235e2c[_0x3fdb('0x10')][_0x3fdb('0x3b')]})[_0x3fdb('0x3c')](function(_0x236e3a){logger[_0x3fdb('0x2e')](_0x3fdb('0x3d'));});}}return _0x5af558({'code':0xc8,'message':_0x235e2c});}catch(_0x24c50f){logger[_0x3fdb('0x2e')](_0x24c50f[_0x3fdb('0x35')]);return _0x18869d(_0x184995['error'](0x1f4,_0x24c50f));}}logger['error'](_0x3fdb('0x3e'));return _0x18869d(_0x184995['error'](0x1f4,_0x3fdb('0x3e')));});},'RejectMessage':function(_0x4059c2){var _0x19012e=this;return new Promise(function(_0x12db8c,_0x4e178a){if(_0x4059c2['agent']&&_0x4059c2[_0x3fdb('0x3f')]['id']){try{if(_0x5d7e11[_0x3fdb('0x40')][_0x4059c2[_0x3fdb('0x3f')]['id']]){_0x5d7e11['agents'][_0x4059c2[_0x3fdb('0x3f')]['id']][_0x3fdb('0x41')]=![];_0x5d7e11['agents'][_0x4059c2[_0x3fdb('0x3f')]['id']][_0x3fdb('0x42')]=undefined;}return _0x12db8c({'code':0xc8,'message':_0x4059c2});}catch(_0x367acd){logger['error'](_0x367acd[_0x3fdb('0x35')]);return _0x4e178a(_0x19012e[_0x3fdb('0x2e')](0x1f4,_0x367acd));}}logger[_0x3fdb('0x2e')](_0x3fdb('0x3e'));return _0x4e178a(_0x19012e['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x341295){var _0x4c6c82=this;return new Promise(function(_0x5467bb,_0x1ce3e3){if(_0x341295['channel']&&_0x341295['interaction']&&_0x341295['interaction']['id']){try{var _0x21e3d8=getId(_0x341295[_0x3fdb('0x37')],_0x341295[_0x3fdb('0x10')]?_0x341295[_0x3fdb('0x10')]['id']:0x0,_0x341295['interaction']?_0x341295[_0x3fdb('0x11')]['id']:0x0);if(_0x5d7e11[_0x3fdb('0xf')][_0x21e3d8]){_0x5d7e11[_0x3fdb('0xf')][_0x21e3d8]['emit']('end');}return _0x5467bb({'code':0xc8,'message':_0x341295});}catch(_0x342811){logger['error'](_0x342811[_0x3fdb('0x35')]);return _0x1ce3e3(_0x4c6c82[_0x3fdb('0x2e')](0x1f4,_0x342811));}}logger[_0x3fdb('0x2e')](_0x3fdb('0x3e'));return _0x1ce3e3(_0x4c6c82[_0x3fdb('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x4e5e61){var _0x27fefe=this;return new Promise(function(_0x242480,_0x1557e8){if(_0x5d7e11[_0x3fdb('0x40')][_0x3fdb('0x43')](_0x4e5e61['id'])){for(var _0x42af43 in _0x4e5e61[_0x3fdb('0x44')]){if(_0x4e5e61['capacity'][_0x3fdb('0x43')](_0x42af43)){if(_0x5d7e11[_0x3fdb('0x40')][_0x4e5e61['id']][_0x3fdb('0x43')](_0x42af43+_0x3fdb('0x45'))){_0x5d7e11[_0x3fdb('0x40')][_0x4e5e61['id']][_0x42af43+_0x3fdb('0x45')]=parseInt(_0x4e5e61[_0x3fdb('0x44')][_0x42af43],0xa);}}}_0x5d7e11[_0x3fdb('0x40')][_0x4e5e61['id']][_0x3fdb('0x46')]();return _0x242480({'code':0xc8,'message':_0x5d7e11[_0x3fdb('0x40')][_0x4e5e61['id']]});}else{return _0x1557e8(_0x27fefe['error'](0x1f4,_0x3fdb('0x47')));}});},'Agents':function(_0xa388bb){return new Promise(function(_0x52a59f,_0x1c2a23){var _0x33aaa5=_[_0x3fdb('0x48')](_0x5d7e11[_0x3fdb('0x40')]);_0x52a59f({'count':_0x33aaa5[_0x3fdb('0x14')],'rows':_0x33aaa5});});},'ChatQueues':function(_0x107796){return new Promise(function(_0x16bd1d,_0x60f00b){var _0x3efea8=[];for(var _0xe7d4c9 in _0x5d7e11[_0x3fdb('0x49')]){if(_0x5d7e11['chatQueues'][_0x3fdb('0x43')](_0xe7d4c9)){var _0x508ec1=_0x5d7e11['chatQueues'][_0xe7d4c9];var _0x500f1e={'id':_0x508ec1['id'],'available':_0x508ec1[_0x3fdb('0x4a')],'loggedIn':_0x508ec1[_0x3fdb('0x4b')],'name':_0x508ec1[_0x3fdb('0x4c')],'paused':_0x508ec1[_0x3fdb('0x4d')],'waiting':_0x508ec1[_0x3fdb('0x4e')]};_0x3efea8[_0x3fdb('0x1d')](_0x500f1e);}}_0x16bd1d({'count':_0x3efea8[_0x3fdb('0x14')],'rows':_0x3efea8});});},'MailQueues':function(_0x8ac6e3){return new Promise(function(_0x5a5854,_0x3e591d){var _0x3f06d9=[];for(var _0x51486a in _0x5d7e11[_0x3fdb('0x4f')]){if(_0x5d7e11[_0x3fdb('0x4f')][_0x3fdb('0x43')](_0x51486a)){var _0x3a2614=_0x5d7e11[_0x3fdb('0x4f')][_0x51486a];var _0x1df601={'id':_0x3a2614['id'],'available':_0x3a2614[_0x3fdb('0x4a')],'loggedIn':_0x3a2614[_0x3fdb('0x4b')],'name':_0x3a2614[_0x3fdb('0x4c')],'paused':_0x3a2614[_0x3fdb('0x4d')],'waiting':_0x3a2614['waiting']};_0x3f06d9['push'](_0x1df601);}}_0x5a5854({'count':_0x3f06d9[_0x3fdb('0x14')],'rows':_0x3f06d9});});},'OpenchannelQueues':function(_0x5baad4){return new Promise(function(_0x141cb9,_0x31567a){var _0x4dc552=[];for(var _0x119326 in _0x5d7e11[_0x3fdb('0x50')]){if(_0x5d7e11['openchannelQueues'][_0x3fdb('0x43')](_0x119326)){var _0x40a1ce=_0x5d7e11[_0x3fdb('0x50')][_0x119326];var _0x4007ed={'id':_0x40a1ce['id'],'available':_0x40a1ce[_0x3fdb('0x4a')],'loggedIn':_0x40a1ce['loggedIn'],'name':_0x40a1ce[_0x3fdb('0x4c')],'paused':_0x40a1ce[_0x3fdb('0x4d')],'waiting':_0x40a1ce['waiting']};_0x4dc552[_0x3fdb('0x1d')](_0x4007ed);}}_0x141cb9({'count':_0x4dc552[_0x3fdb('0x14')],'rows':_0x4dc552});});},'SmsQueues':function(_0x82308f){return new Promise(function(_0x31672a,_0x16fb30){var _0x2f2681=[];for(var _0x5239dd in _0x5d7e11[_0x3fdb('0x51')]){if(_0x5d7e11[_0x3fdb('0x51')][_0x3fdb('0x43')](_0x5239dd)){var _0x1ccae4=_0x5d7e11['smsQueues'][_0x5239dd];var _0x42bd6b={'id':_0x1ccae4['id'],'available':_0x1ccae4['available'],'loggedIn':_0x1ccae4[_0x3fdb('0x4b')],'name':_0x1ccae4['name'],'paused':_0x1ccae4[_0x3fdb('0x4d')],'waiting':_0x1ccae4[_0x3fdb('0x4e')]};_0x2f2681[_0x3fdb('0x1d')](_0x42bd6b);}}_0x31672a({'count':_0x2f2681[_0x3fdb('0x14')],'rows':_0x2f2681});});},'FaxQueues':function(_0x4b468e){return new Promise(function(_0x56af3c,_0x34c13d){var _0x5eaa18=[];for(var _0x2a51e3 in _0x5d7e11[_0x3fdb('0x52')]){if(_0x5d7e11['faxQueues'][_0x3fdb('0x43')](_0x2a51e3)){var _0x16a9de=_0x5d7e11[_0x3fdb('0x52')][_0x2a51e3];var _0x504a87={'id':_0x16a9de['id'],'available':_0x16a9de[_0x3fdb('0x4a')],'loggedIn':_0x16a9de['loggedIn'],'name':_0x16a9de[_0x3fdb('0x4c')],'paused':_0x16a9de['paused'],'waiting':_0x16a9de[_0x3fdb('0x4e')]};_0x5eaa18['push'](_0x504a87);}}_0x56af3c({'count':_0x5eaa18['length'],'rows':_0x5eaa18});});},'WhatsappQueues':function(_0x4d5821){return new Promise(function(_0x4c9dbb,_0x1b12b2){var _0x5cf454=[];for(var _0x25fe0d in _0x5d7e11[_0x3fdb('0x53')]){if(_0x5d7e11[_0x3fdb('0x53')][_0x3fdb('0x43')](_0x25fe0d)){var _0x14c4d1=_0x5d7e11[_0x3fdb('0x53')][_0x25fe0d];var _0x232bd7={'id':_0x14c4d1['id'],'available':_0x14c4d1[_0x3fdb('0x4a')],'loggedIn':_0x14c4d1['loggedIn'],'name':_0x14c4d1[_0x3fdb('0x4c')],'paused':_0x14c4d1[_0x3fdb('0x4d')],'waiting':_0x14c4d1[_0x3fdb('0x4e')]};_0x5cf454[_0x3fdb('0x1d')](_0x232bd7);}}_0x4c9dbb({'count':_0x5cf454['length'],'rows':_0x5cf454});});},'ChatQueuesWaitingInteractions':function(_0x14b702){return new Promise(function(_0x26de6b,_0x1db151){var _0x479728=_[_0x3fdb('0x48')](_0x5d7e11[_0x3fdb('0x54')]);_0x26de6b({'count':_0x479728['length'],'rows':_0x479728});});},'MailQueuesWaitingInteractions':function(_0x1c2658){return new Promise(function(_0x4ab5f3,_0x376e77){var _0x4f81c7=_['values'](_0x5d7e11[_0x3fdb('0x55')]);_0x4ab5f3({'count':_0x4f81c7[_0x3fdb('0x14')],'rows':_0x4f81c7});});},'OpenchannelQueuesWaitingInteractions':function(_0x2dce8c){return new Promise(function(_0x208994,_0x5dc287){var _0x1368b1=_[_0x3fdb('0x48')](_0x5d7e11[_0x3fdb('0x56')]);_0x208994({'count':_0x1368b1[_0x3fdb('0x14')],'rows':_0x1368b1});});},'SmsQueuesWaitingInteractions':function(_0x4a1ce1){return new Promise(function(_0x5922a5,_0x14b532){var _0xd6333a=_[_0x3fdb('0x48')](_0x5d7e11['smsQueuesWaitingInteractions']);_0x5922a5({'count':_0xd6333a[_0x3fdb('0x14')],'rows':_0xd6333a});});},'FaxQueuesWaitingInteractions':function(_0x4fd555){return new Promise(function(_0x1630cc,_0xd42b02){var _0x456982=_[_0x3fdb('0x48')](_0x5d7e11[_0x3fdb('0x57')]);_0x1630cc({'count':_0x456982['length'],'rows':_0x456982});});},'WhatsappQueuesWaitingInteractions':function(_0x509ee8){return new Promise(function(_0xbb3371,_0xa50d1d){var _0x181965=_[_0x3fdb('0x48')](_0x5d7e11[_0x3fdb('0x58')]);_0xbb3371({'count':_0x181965[_0x3fdb('0x14')],'rows':_0x181965});});}};var _0x106f90=jayson[_0x3fdb('0x59')](_0x16b84b)[_0x3fdb('0x5a')]();_0x106f90['on']('error',function(_0xef8ebc){logger[_0x3fdb('0x2e')](JSON[_0x3fdb('0x30')](_0xef8ebc));return _0x3879e7(_0xef8ebc);});_0x106f90[_0x3fdb('0x5b')](0x232c,_0x3fdb('0x5c'),function(){console[_0x3fdb('0x5d')](_0x3fdb('0x5e'),0x232c);return _0x7a94b(_0x3fdb('0x5f')+0x232c);});});};