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 _0xd32d=['chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','http','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','routing','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','push','slice','split','join','amazonlex','tag','TagId','format','./interval','condition','intervals','./applications/','consequence','priority','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','stack','routing\x20is\x20empty','QueueReport','UserId','agent','agents','busy','busyQueue','message\x20is\x20empty','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','available','loggedIn','paused','mailQueues','name','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values'];(function(_0x183001,_0x18a97d){var _0x3aff6a=function(_0x6ed9ba){while(--_0x6ed9ba){_0x183001['push'](_0x183001['shift']());}};_0x3aff6a(++_0x18a97d);}(_0xd32d,0xb8));var _0xdd32=function(_0x2b244a,_0x285256){_0x2b244a=_0x2b244a-0x0;var _0x18291f=_0xd32d[_0x2b244a];return _0x18291f;};'use strict';var _=require('lodash');var util=require(_0xdd32('0x0'));var path=require(_0xdd32('0x1'));var fs=require('fs');var jayson=require(_0xdd32('0x2'));var BPromise=require(_0xdd32('0x3'));var uuid=require(_0xdd32('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xdd32('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0xdd32('0x6')),'smsQueueReport':require(_0xdd32('0x7')),'faxQueueReport':require(_0xdd32('0x8')),'whatsappQueueReport':require(_0xdd32('0x9'))};var RuleEngine=require(_0xdd32('0xa'));function getId(_0x59ce1c,_0x22b951,_0x14ca67){return util['format'](_0xdd32('0xb'),_0x59ce1c,_0x22b951||0x0,_0x14ca67||0x0);}function getIntervals(_0x1d0001,_0x5a58c0){var _0x292ab9=[];if(!_[_0xdd32('0xc')](_0x5a58c0['IntervalId'])&&!_[_0xdd32('0xc')](_0x1d0001[_0x5a58c0[_0xdd32('0xd')]])&&!_[_0xdd32('0xc')](_0x1d0001[_0x5a58c0[_0xdd32('0xd')]][_0xdd32('0xe')])){_0x292ab9=_[_0xdd32('0xf')](_0x1d0001[_0x5a58c0[_0xdd32('0xd')]][_0xdd32('0xe')],_0xdd32('0x10'));}else if(!_[_0xdd32('0xc')](_0x5a58c0[_0xdd32('0x10')])){_0x292ab9=[_0x5a58c0['interval']];}return _0x292ab9;}exports['listen']=function(_0x472f94){_0x472f94[_0xdd32('0x11')]={};return new BPromise(function(_0x1a9514,_0x4cbbd0){var _0x1bceea={'Start':function(_0xfa0e9){var _0x55742e=this;return new Promise(function(_0x40eaa,_0x2cbaa6){if(_0xfa0e9){try{var _0x41c964=[];var _0x381765=getId(_0xfa0e9[_0xdd32('0x12')],_0xfa0e9[_0xdd32('0x13')]?_0xfa0e9[_0xdd32('0x13')]['id']:0x0,_0xfa0e9[_0xdd32('0x14')]?_0xfa0e9['interaction']['id']:0x0);if(_0xfa0e9[_0xdd32('0x15')]&&_[_0xdd32('0x16')](_0xfa0e9[_0xdd32('0x15')])&&_0xfa0e9[_0xdd32('0x15')][_0xdd32('0x17')]){for(var _0x1d6a42=0x0;_0x1d6a42<_0xfa0e9[_0xdd32('0x15')][_0xdd32('0x17')];_0x1d6a42+=0x1){var _0xb76cb5=_0xfa0e9['applications'][_0x1d6a42];if(fs[_0xdd32('0x18')](path['join'](__dirname,_0xdd32('0x15'),_0xb76cb5[_0xdd32('0x19')]+_0xdd32('0x1a')))){var _0x5a0d72=[];switch(_0xb76cb5[_0xdd32('0x19')][_0xdd32('0x1b')]()){case _0xdd32('0x1c'):var _0x28d18d=_0xb76cb5[_0xdd32('0x1d')]['split'](',');_0x5a0d72[_0xdd32('0x1e')](_0x28d18d[0x0]);_0x5a0d72['push'](_0x28d18d[_0xdd32('0x1f')](0x1,_0x28d18d['length'])['join'](','));break;case'dialogflow':var _0x178cda=_0xb76cb5['appdata'][_0xdd32('0x20')](',');_0x5a0d72['push'](_0x178cda[0x0]);_0x5a0d72[_0xdd32('0x1e')](_0x178cda[0x1]);_0x5a0d72[_0xdd32('0x1e')](_0x178cda[_0xdd32('0x1f')](0x2,_0x178cda['length'])[_0xdd32('0x21')](','));break;case _0xdd32('0x22'):var _0x450499=_0xb76cb5[_0xdd32('0x1d')]['split'](',');_0x5a0d72['push'](_0x450499[0x0]);_0x5a0d72[_0xdd32('0x1e')](_0x450499[0x1]);_0x5a0d72[_0xdd32('0x1e')](_0x450499[0x2]);_0x5a0d72[_0xdd32('0x1e')](_0x450499[0x3]);_0x5a0d72[_0xdd32('0x1e')](_0x450499[_0xdd32('0x1f')](0x4,_0x450499['length'])[_0xdd32('0x21')](','));break;case _0xdd32('0x13'):_0x5a0d72[_0xdd32('0x1e')](_0xb76cb5[_0xdd32('0x1d')]);break;case _0xdd32('0x23'):_0x5a0d72[_0xdd32('0x1e')](_0xb76cb5[_0xdd32('0x24')]);_0x5a0d72[_0xdd32('0x1e')](_0xb76cb5['appdata']);break;default:_0x5a0d72=_[_0xdd32('0xc')](_0xb76cb5['appdata'])?[]:_0xb76cb5[_0xdd32('0x1d')][_0xdd32('0x20')](',');}var _0x27f5aa={'id':util[_0xdd32('0x25')]('%s:%s:%s',_0x381765,_0xb76cb5['id'],_0xb76cb5[_0xdd32('0x19')]),'condition':require(_0xdd32('0x26'))[_0xdd32('0x27')](_0x381765,getIntervals(_0x472f94[_0xdd32('0x28')],_0xb76cb5),_0x472f94),'consequence':require(_0xdd32('0x29')+_0xb76cb5['app'])[_0xdd32('0x2a')](_0x381765,_0x5a0d72,_0x472f94,_0xfa0e9),'p':_0xb76cb5[_0xdd32('0x2b')]||0x0};logger['info']('Push\x20new\x20rule',_0x27f5aa['id'],_0xdd32('0x2c'),getIntervals(_0x472f94[_0xdd32('0x28')],_0xb76cb5)['join'](_0xdd32('0x2d')));_0x41c964[_0xdd32('0x1e')](_0x27f5aa);}else{logger[_0xdd32('0x2e')](_0xdd32('0x2f'),path[_0xdd32('0x21')](__dirname,_0xdd32('0x15'),_0xb76cb5[_0xdd32('0x19')]+_0xdd32('0x1a')));}}_0x472f94[_0xdd32('0x11')][_0x381765]=new RuleEngine(_0x41c964);_0x472f94['rules'][_0x381765][_0xdd32('0x30')](_0xfa0e9,function(_0x249a47){logger['info'](_0xdd32('0x31'),JSON[_0xdd32('0x32')](_0x249a47[_0xdd32('0x33')]));if(_0x472f94[_0xdd32('0x11')][_0x381765]){_0x472f94[_0xdd32('0x11')][_0x381765][_0xdd32('0x34')]('complete');}});return _0x40eaa({'code':0xc8,'message':_0xfa0e9});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x40eaa({'code':0xc8,'message':_0xfa0e9});}}catch(_0x3eef88){logger[_0xdd32('0x2e')](_0x3eef88[_0xdd32('0x35')]);return _0x2cbaa6(_0x55742e[_0xdd32('0x2e')](0x1f4,_0x3eef88));}}return _0x2cbaa6(_0xdd32('0x36'));});},'AcceptMessage':function(_0x89e071){var _0xab87a5=this;return new Promise(function(_0x595511,_0x86b368){if(_0x89e071[_0xdd32('0x13')]&&_0x89e071[_0xdd32('0x13')]['id']){try{var _0x4d7030=getId(_0x89e071[_0xdd32('0x12')],_0x89e071[_0xdd32('0x13')]?_0x89e071[_0xdd32('0x13')]['id']:0x0,_0x89e071[_0xdd32('0x14')]?_0x89e071[_0xdd32('0x14')]['id']:0x0);if(_0x472f94['rules'][_0x4d7030]){_0x472f94[_0xdd32('0x11')][_0x4d7030][_0xdd32('0x34')]('end');if(rpc[_0x89e071['channel']+_0xdd32('0x37')]){rpc[_0x89e071[_0xdd32('0x12')]+'QueueReport']['update'](_0x4d7030,{'UserId':_0x89e071[_0xdd32('0x13')][_0xdd32('0x38')]})['catch'](function(_0x5eb263){logger['error']('error\x20update\x20queue\x20report');});}}return _0x595511({'code':0xc8,'message':_0x89e071});}catch(_0x3c1311){logger[_0xdd32('0x2e')](_0x3c1311[_0xdd32('0x35')]);return _0x86b368(_0xab87a5['error'](0x1f4,_0x3c1311));}}logger[_0xdd32('0x2e')]('message\x20is\x20empty');return _0x86b368(_0xab87a5[_0xdd32('0x2e')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x1aa8ce){var _0x1fc446=this;return new Promise(function(_0x7f234b,_0x30228a){if(_0x1aa8ce[_0xdd32('0x39')]&&_0x1aa8ce[_0xdd32('0x39')]['id']){try{if(_0x472f94[_0xdd32('0x3a')][_0x1aa8ce[_0xdd32('0x39')]['id']]){_0x472f94['agents'][_0x1aa8ce['agent']['id']][_0xdd32('0x3b')]=![];_0x472f94[_0xdd32('0x3a')][_0x1aa8ce[_0xdd32('0x39')]['id']][_0xdd32('0x3c')]=undefined;}return _0x7f234b({'code':0xc8,'message':_0x1aa8ce});}catch(_0x1b04b6){logger['error'](_0x1b04b6['stack']);return _0x30228a(_0x1fc446[_0xdd32('0x2e')](0x1f4,_0x1b04b6));}}logger['error']('message\x20is\x20empty');return _0x30228a(_0x1fc446['error'](0x1f4,_0xdd32('0x3d')));});},'AbandonInteraction':function(_0x69df0f){var _0x12721c=this;return new Promise(function(_0x2505e4,_0xb00dd4){if(_0x69df0f[_0xdd32('0x12')]&&_0x69df0f[_0xdd32('0x14')]&&_0x69df0f['interaction']['id']){try{var _0x3c9784=getId(_0x69df0f[_0xdd32('0x12')],_0x69df0f['message']?_0x69df0f[_0xdd32('0x13')]['id']:0x0,_0x69df0f[_0xdd32('0x14')]?_0x69df0f[_0xdd32('0x14')]['id']:0x0);if(_0x472f94[_0xdd32('0x11')][_0x3c9784]){_0x472f94['rules'][_0x3c9784]['emit'](_0xdd32('0x3e'));}return _0x2505e4({'code':0xc8,'message':_0x69df0f});}catch(_0x1558d3){logger['error'](_0x1558d3['stack']);return _0xb00dd4(_0x12721c[_0xdd32('0x2e')](0x1f4,_0x1558d3));}}logger['error'](_0xdd32('0x3d'));return _0xb00dd4(_0x12721c[_0xdd32('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x28b6fe){var _0x341246=this;return new Promise(function(_0x5b1a88,_0x57aa54){if(_0x472f94[_0xdd32('0x3a')][_0xdd32('0x3f')](_0x28b6fe['id'])){for(var _0x26e1cd in _0x28b6fe[_0xdd32('0x40')]){if(_0x28b6fe['capacity']['hasOwnProperty'](_0x26e1cd)){if(_0x472f94[_0xdd32('0x3a')][_0x28b6fe['id']][_0xdd32('0x3f')](_0x26e1cd+_0xdd32('0x41'))){_0x472f94['agents'][_0x28b6fe['id']][_0x26e1cd+_0xdd32('0x41')]=parseInt(_0x28b6fe[_0xdd32('0x40')][_0x26e1cd],0xa);}}}_0x472f94[_0xdd32('0x3a')][_0x28b6fe['id']][_0xdd32('0x42')]();return _0x5b1a88({'code':0xc8,'message':_0x472f94[_0xdd32('0x3a')][_0x28b6fe['id']]});}else{return _0x57aa54(_0x341246['error'](0x1f4,_0xdd32('0x43')));}});},'Agents':function(_0x29e92d){return new Promise(function(_0x16e47f,_0x334217){var _0x20e7b0=_['values'](_0x472f94[_0xdd32('0x3a')]);_0x16e47f({'count':_0x20e7b0[_0xdd32('0x17')],'rows':_0x20e7b0});});},'ChatQueues':function(_0x5979ab){return new Promise(function(_0x2ca05d,_0xe42a99){var _0x1d5609=[];for(var _0x2b4e0b in _0x472f94['chatQueues']){if(_0x472f94['chatQueues'][_0xdd32('0x3f')](_0x2b4e0b)){var _0x2c81c3=_0x472f94[_0xdd32('0x44')][_0x2b4e0b];var _0x10638a={'id':_0x2c81c3['id'],'available':_0x2c81c3[_0xdd32('0x45')],'loggedIn':_0x2c81c3[_0xdd32('0x46')],'name':_0x2c81c3['name'],'paused':_0x2c81c3[_0xdd32('0x47')],'waiting':_0x2c81c3['waiting']};_0x1d5609[_0xdd32('0x1e')](_0x10638a);}}_0x2ca05d({'count':_0x1d5609[_0xdd32('0x17')],'rows':_0x1d5609});});},'MailQueues':function(_0x853621){return new Promise(function(_0x59a49b,_0x465854){var _0x5bc3f2=[];for(var _0x4fa977 in _0x472f94['mailQueues']){if(_0x472f94[_0xdd32('0x48')][_0xdd32('0x3f')](_0x4fa977)){var _0x2978a2=_0x472f94[_0xdd32('0x48')][_0x4fa977];var _0x299134={'id':_0x2978a2['id'],'available':_0x2978a2[_0xdd32('0x45')],'loggedIn':_0x2978a2[_0xdd32('0x46')],'name':_0x2978a2[_0xdd32('0x49')],'paused':_0x2978a2['paused'],'waiting':_0x2978a2[_0xdd32('0x4a')]};_0x5bc3f2[_0xdd32('0x1e')](_0x299134);}}_0x59a49b({'count':_0x5bc3f2['length'],'rows':_0x5bc3f2});});},'OpenchannelQueues':function(_0x1eb27c){return new Promise(function(_0xcf3737,_0x5e3230){var _0x4270ce=[];for(var _0x21d5f1 in _0x472f94[_0xdd32('0x4b')]){if(_0x472f94[_0xdd32('0x4b')][_0xdd32('0x3f')](_0x21d5f1)){var _0x152c54=_0x472f94['openchannelQueues'][_0x21d5f1];var _0x4013ff={'id':_0x152c54['id'],'available':_0x152c54[_0xdd32('0x45')],'loggedIn':_0x152c54[_0xdd32('0x46')],'name':_0x152c54[_0xdd32('0x49')],'paused':_0x152c54['paused'],'waiting':_0x152c54[_0xdd32('0x4a')]};_0x4270ce[_0xdd32('0x1e')](_0x4013ff);}}_0xcf3737({'count':_0x4270ce[_0xdd32('0x17')],'rows':_0x4270ce});});},'SmsQueues':function(_0x474720){return new Promise(function(_0x485006,_0x4f4b7e){var _0x57fe6f=[];for(var _0x463390 in _0x472f94[_0xdd32('0x4c')]){if(_0x472f94[_0xdd32('0x4c')][_0xdd32('0x3f')](_0x463390)){var _0x30b4e2=_0x472f94[_0xdd32('0x4c')][_0x463390];var _0x2038bf={'id':_0x30b4e2['id'],'available':_0x30b4e2['available'],'loggedIn':_0x30b4e2['loggedIn'],'name':_0x30b4e2['name'],'paused':_0x30b4e2['paused'],'waiting':_0x30b4e2[_0xdd32('0x4a')]};_0x57fe6f[_0xdd32('0x1e')](_0x2038bf);}}_0x485006({'count':_0x57fe6f[_0xdd32('0x17')],'rows':_0x57fe6f});});},'FaxQueues':function(_0x59d330){return new Promise(function(_0x9cc46c,_0x153446){var _0x211164=[];for(var _0x10c604 in _0x472f94[_0xdd32('0x4d')]){if(_0x472f94[_0xdd32('0x4d')]['hasOwnProperty'](_0x10c604)){var _0x231825=_0x472f94['faxQueues'][_0x10c604];var _0x2c9fea={'id':_0x231825['id'],'available':_0x231825['available'],'loggedIn':_0x231825['loggedIn'],'name':_0x231825['name'],'paused':_0x231825[_0xdd32('0x47')],'waiting':_0x231825[_0xdd32('0x4a')]};_0x211164['push'](_0x2c9fea);}}_0x9cc46c({'count':_0x211164[_0xdd32('0x17')],'rows':_0x211164});});},'WhatsappQueues':function(_0x530bae){return new Promise(function(_0xc74c96,_0x49f616){var _0x492064=[];for(var _0x420068 in _0x472f94['whatsappQueues']){if(_0x472f94[_0xdd32('0x4e')][_0xdd32('0x3f')](_0x420068)){var _0x18dac5=_0x472f94['whatsappQueues'][_0x420068];var _0x2dc3c8={'id':_0x18dac5['id'],'available':_0x18dac5['available'],'loggedIn':_0x18dac5[_0xdd32('0x46')],'name':_0x18dac5[_0xdd32('0x49')],'paused':_0x18dac5[_0xdd32('0x47')],'waiting':_0x18dac5[_0xdd32('0x4a')]};_0x492064['push'](_0x2dc3c8);}}_0xc74c96({'count':_0x492064[_0xdd32('0x17')],'rows':_0x492064});});},'ChatQueuesWaitingInteractions':function(_0x31d102){return new Promise(function(_0x378f53,_0x51820b){var _0x154d65=_[_0xdd32('0x4f')](_0x472f94[_0xdd32('0x50')]);_0x378f53({'count':_0x154d65['length'],'rows':_0x154d65});});},'MailQueuesWaitingInteractions':function(_0x15d2ad){return new Promise(function(_0x3618d3,_0x4d876f){var _0x3d8c3b=_[_0xdd32('0x4f')](_0x472f94[_0xdd32('0x51')]);_0x3618d3({'count':_0x3d8c3b[_0xdd32('0x17')],'rows':_0x3d8c3b});});},'OpenchannelQueuesWaitingInteractions':function(_0xb26f09){return new Promise(function(_0x9c4934,_0x3733c5){var _0x58712a=_[_0xdd32('0x4f')](_0x472f94['openchannelQueuesWaitingInteractions']);_0x9c4934({'count':_0x58712a['length'],'rows':_0x58712a});});},'SmsQueuesWaitingInteractions':function(_0x544a4b){return new Promise(function(_0x2c2782,_0x2853bc){var _0x3fed01=_[_0xdd32('0x4f')](_0x472f94[_0xdd32('0x52')]);_0x2c2782({'count':_0x3fed01[_0xdd32('0x17')],'rows':_0x3fed01});});},'FaxQueuesWaitingInteractions':function(_0x5216fb){return new Promise(function(_0x2878b1,_0x57cb66){var _0x1f404c=_['values'](_0x472f94[_0xdd32('0x53')]);_0x2878b1({'count':_0x1f404c[_0xdd32('0x17')],'rows':_0x1f404c});});},'WhatsappQueuesWaitingInteractions':function(_0x4dee82){return new Promise(function(_0x1ca055,_0x3b720f){var _0x461364=_[_0xdd32('0x4f')](_0x472f94['whatsappQueuesWaitingInteractions']);_0x1ca055({'count':_0x461364['length'],'rows':_0x461364});});}};var _0x58f6ef=jayson['server'](_0x1bceea)[_0xdd32('0x54')]();_0x58f6ef['on'](_0xdd32('0x2e'),function(_0x708765){logger['error'](JSON['stringify'](_0x708765));return _0x4cbbd0(_0x708765);});_0x58f6ef['listen'](0x232c,'127.0.0.1',function(){console[_0xdd32('0x55')](_0xdd32('0x56'),0x232c);return _0x1a9514(_0xdd32('0x57')+0x232c);});});};