Built motion from commit (unavailable).|2.5.5
[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 _0x1e66=['faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','IntervalId','isNil','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','push','slice','dialogflow','split','amazonlex','TagId','%s:%s:%s','./interval','condition','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','end','QueueReport','update','stack','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions'];(function(_0x495633,_0x1145ef){var _0x2cd348=function(_0x283ed2){while(--_0x283ed2){_0x495633['push'](_0x495633['shift']());}};_0x2cd348(++_0x1145ef);}(_0x1e66,0x108));var _0x61e6=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x1e66[_0x3e44fa];return _0x2a0aba;};'use strict';var _=require('lodash');var util=require(_0x61e6('0x0'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x61e6('0x1'));var uuid=require('uuid');var config=require(_0x61e6('0x2'));var logger=require(_0x61e6('0x3'))(_0x61e6('0x4'));var rpc={'openchannelQueueReport':require(_0x61e6('0x5')),'mailQueueReport':require(_0x61e6('0x6')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x61e6('0x7')),'faxQueueReport':require(_0x61e6('0x8')),'whatsappQueueReport':require(_0x61e6('0x9'))};var RuleEngine=require(_0x61e6('0xa'));function getId(_0x3b6525,_0x46f0d2,_0x4f9e6a){return util[_0x61e6('0xb')]('%s.%s.%s',_0x3b6525,_0x46f0d2||0x0,_0x4f9e6a||0x0);}function getIntervals(_0x894a66,_0xcba9a0){var _0x549c4c=[];if(!_['isNil'](_0xcba9a0[_0x61e6('0xc')])&&!_[_0x61e6('0xd')](_0x894a66[_0xcba9a0[_0x61e6('0xc')]])&&!_[_0x61e6('0xd')](_0x894a66[_0xcba9a0['IntervalId']][_0x61e6('0xe')])){_0x549c4c=_['map'](_0x894a66[_0xcba9a0[_0x61e6('0xc')]][_0x61e6('0xe')],'interval');}else if(!_[_0x61e6('0xd')](_0xcba9a0[_0x61e6('0xf')])){_0x549c4c=[_0xcba9a0[_0x61e6('0xf')]];}return _0x549c4c;}exports[_0x61e6('0x10')]=function(_0x33a9be){_0x33a9be[_0x61e6('0x11')]={};return new BPromise(function(_0x10bf8d,_0x4003e9){var _0x57aed1={'Start':function(_0xd06f8d){var _0x4262d6=this;return new Promise(function(_0x5b75c1,_0x5c6d25){if(_0xd06f8d){try{var _0x3f88f7=[];var _0x561f69=getId(_0xd06f8d[_0x61e6('0x12')],_0xd06f8d['message']?_0xd06f8d[_0x61e6('0x13')]['id']:0x0,_0xd06f8d[_0x61e6('0x14')]?_0xd06f8d[_0x61e6('0x14')]['id']:0x0);if(_0xd06f8d[_0x61e6('0x15')]&&_[_0x61e6('0x16')](_0xd06f8d['applications'])&&_0xd06f8d[_0x61e6('0x15')][_0x61e6('0x17')]){for(var _0xdea5a5=0x0;_0xdea5a5<_0xd06f8d[_0x61e6('0x15')]['length'];_0xdea5a5+=0x1){var _0xb30131=_0xd06f8d[_0x61e6('0x15')][_0xdea5a5];if(fs[_0x61e6('0x18')](path[_0x61e6('0x19')](__dirname,'applications',_0xb30131[_0x61e6('0x1a')]+_0x61e6('0x1b')))){var _0x5d9a3a=[];switch(_0xb30131['app'][_0x61e6('0x1c')]()){case _0x61e6('0x1d'):var _0x330654=_0xb30131[_0x61e6('0x1e')]['split'](',');_0x5d9a3a[_0x61e6('0x1f')](_0x330654[0x0]);_0x5d9a3a[_0x61e6('0x1f')](_0x330654[_0x61e6('0x20')](0x1,_0x330654[_0x61e6('0x17')])[_0x61e6('0x19')](','));break;case _0x61e6('0x21'):var _0x3e5287=_0xb30131['appdata'][_0x61e6('0x22')](',');_0x5d9a3a[_0x61e6('0x1f')](_0x3e5287[0x0]);_0x5d9a3a[_0x61e6('0x1f')](_0x3e5287[0x1]);_0x5d9a3a[_0x61e6('0x1f')](_0x3e5287[_0x61e6('0x20')](0x2,_0x3e5287[_0x61e6('0x17')])[_0x61e6('0x19')](','));break;case _0x61e6('0x23'):var _0x2edd25=_0xb30131[_0x61e6('0x1e')][_0x61e6('0x22')](',');_0x5d9a3a['push'](_0x2edd25[0x0]);_0x5d9a3a['push'](_0x2edd25[0x1]);_0x5d9a3a['push'](_0x2edd25[0x2]);_0x5d9a3a['push'](_0x2edd25[0x3]);_0x5d9a3a[_0x61e6('0x1f')](_0x2edd25[_0x61e6('0x20')](0x4,_0x2edd25['length'])['join'](','));break;case'message':_0x5d9a3a[_0x61e6('0x1f')](_0xb30131[_0x61e6('0x1e')]);break;case'tag':_0x5d9a3a[_0x61e6('0x1f')](_0xb30131[_0x61e6('0x24')]);_0x5d9a3a['push'](_0xb30131[_0x61e6('0x1e')]);break;default:_0x5d9a3a=_['isNil'](_0xb30131[_0x61e6('0x1e')])?[]:_0xb30131[_0x61e6('0x1e')][_0x61e6('0x22')](',');}var _0x2f7dba={'id':util['format'](_0x61e6('0x25'),_0x561f69,_0xb30131['id'],_0xb30131[_0x61e6('0x1a')]),'condition':require(_0x61e6('0x26'))[_0x61e6('0x27')](_0x561f69,getIntervals(_0x33a9be['intervals'],_0xb30131),_0x33a9be),'consequence':require('./applications/'+_0xb30131[_0x61e6('0x1a')])[_0x61e6('0x28')](_0x561f69,_0x5d9a3a,_0x33a9be,_0xd06f8d),'p':_0xb30131[_0x61e6('0x29')]||0x0};logger[_0x61e6('0x2a')](_0x61e6('0x2b'),_0x2f7dba['id'],_0x61e6('0x2c'),getIntervals(_0x33a9be['intervals'],_0xb30131)[_0x61e6('0x19')](_0x61e6('0x2d')));_0x3f88f7['push'](_0x2f7dba);}else{logger[_0x61e6('0x2e')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x61e6('0x19')](__dirname,_0x61e6('0x15'),_0xb30131['app']+_0x61e6('0x1b')));}}_0x33a9be[_0x61e6('0x11')][_0x561f69]=new RuleEngine(_0x3f88f7);_0x33a9be[_0x61e6('0x11')][_0x561f69][_0x61e6('0x2f')](_0xd06f8d,function(_0x3f1895){logger[_0x61e6('0x2a')]('Applications\x20executed',JSON[_0x61e6('0x30')](_0x3f1895[_0x61e6('0x31')]));if(_0x33a9be['rules'][_0x561f69]){_0x33a9be[_0x61e6('0x11')][_0x561f69][_0x61e6('0x32')](_0x61e6('0x33'));}});return _0x5b75c1({'code':0xc8,'message':_0xd06f8d});}else{logger[_0x61e6('0x2a')](_0x61e6('0x34'));return _0x5b75c1({'code':0xc8,'message':_0xd06f8d});}}catch(_0x11e716){logger[_0x61e6('0x2e')](_0x11e716['stack']);return _0x5c6d25(_0x4262d6['error'](0x1f4,_0x11e716));}}return _0x5c6d25(_0x61e6('0x35'));});},'AcceptMessage':function(_0x214bf5){var _0x3978f1=this;return new Promise(function(_0x47f6ab,_0x15a5e8){if(_0x214bf5['message']&&_0x214bf5[_0x61e6('0x13')]['id']){try{var _0x544773=getId(_0x214bf5[_0x61e6('0x12')],_0x214bf5[_0x61e6('0x13')]?_0x214bf5['message']['id']:0x0,_0x214bf5[_0x61e6('0x14')]?_0x214bf5[_0x61e6('0x14')]['id']:0x0);if(_0x33a9be['rules'][_0x544773]){_0x33a9be['rules'][_0x544773][_0x61e6('0x32')](_0x61e6('0x36'));if(rpc[_0x214bf5[_0x61e6('0x12')]+'QueueReport']){rpc[_0x214bf5[_0x61e6('0x12')]+_0x61e6('0x37')][_0x61e6('0x38')](_0x544773,{'UserId':_0x214bf5[_0x61e6('0x13')]['UserId']})['catch'](function(_0x536538){logger[_0x61e6('0x2e')]('error\x20update\x20queue\x20report');});}}return _0x47f6ab({'code':0xc8,'message':_0x214bf5});}catch(_0x55db3b){logger['error'](_0x55db3b[_0x61e6('0x39')]);return _0x15a5e8(_0x3978f1[_0x61e6('0x2e')](0x1f4,_0x55db3b));}}logger[_0x61e6('0x2e')]('message\x20is\x20empty');return _0x15a5e8(_0x3978f1[_0x61e6('0x2e')](0x1f4,_0x61e6('0x3a')));});},'RejectMessage':function(_0x54ba15){var _0x40fe62=this;return new Promise(function(_0x1eeb96,_0x5c6eff){if(_0x54ba15[_0x61e6('0x3b')]&&_0x54ba15[_0x61e6('0x3b')]['id']){try{if(_0x33a9be['agents'][_0x54ba15[_0x61e6('0x3b')]['id']]){_0x33a9be[_0x61e6('0x3c')][_0x54ba15['agent']['id']][_0x61e6('0x3d')]=![];_0x33a9be[_0x61e6('0x3c')][_0x54ba15['agent']['id']][_0x61e6('0x3e')]=undefined;}return _0x1eeb96({'code':0xc8,'message':_0x54ba15});}catch(_0x2a7539){logger[_0x61e6('0x2e')](_0x2a7539['stack']);return _0x5c6eff(_0x40fe62[_0x61e6('0x2e')](0x1f4,_0x2a7539));}}logger[_0x61e6('0x2e')](_0x61e6('0x3a'));return _0x5c6eff(_0x40fe62[_0x61e6('0x2e')](0x1f4,_0x61e6('0x3a')));});},'AbandonInteraction':function(_0x3f42d6){var _0x4ce438=this;return new Promise(function(_0x1eb6f8,_0xab051e){if(_0x3f42d6[_0x61e6('0x12')]&&_0x3f42d6['interaction']&&_0x3f42d6[_0x61e6('0x14')]['id']){try{var _0x5f0331=getId(_0x3f42d6['channel'],_0x3f42d6['message']?_0x3f42d6['message']['id']:0x0,_0x3f42d6[_0x61e6('0x14')]?_0x3f42d6['interaction']['id']:0x0);if(_0x33a9be[_0x61e6('0x11')][_0x5f0331]){_0x33a9be[_0x61e6('0x11')][_0x5f0331][_0x61e6('0x32')]('end');}return _0x1eb6f8({'code':0xc8,'message':_0x3f42d6});}catch(_0x4a3afb){logger[_0x61e6('0x2e')](_0x4a3afb[_0x61e6('0x39')]);return _0xab051e(_0x4ce438[_0x61e6('0x2e')](0x1f4,_0x4a3afb));}}logger['error'](_0x61e6('0x3a'));return _0xab051e(_0x4ce438[_0x61e6('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x50fc08){var _0x102ae6=this;return new Promise(function(_0xf3b6b,_0x381f84){if(_0x33a9be[_0x61e6('0x3c')][_0x61e6('0x3f')](_0x50fc08['id'])){for(var _0x2e4944 in _0x50fc08['capacity']){if(_0x50fc08[_0x61e6('0x40')][_0x61e6('0x3f')](_0x2e4944)){if(_0x33a9be[_0x61e6('0x3c')][_0x50fc08['id']][_0x61e6('0x3f')](_0x2e4944+'CurrentCapacity')){_0x33a9be[_0x61e6('0x3c')][_0x50fc08['id']][_0x2e4944+_0x61e6('0x41')]=parseInt(_0x50fc08[_0x61e6('0x40')][_0x2e4944],0xa);}}}_0x33a9be[_0x61e6('0x3c')][_0x50fc08['id']]['updateRealtime']();return _0xf3b6b({'code':0xc8,'message':_0x33a9be['agents'][_0x50fc08['id']]});}else{return _0x381f84(_0x102ae6[_0x61e6('0x2e')](0x1f4,_0x61e6('0x42')));}});},'Agents':function(_0x56a464){return new Promise(function(_0x4a2985,_0x54f5e1){var _0x3f3c00=_[_0x61e6('0x43')](_0x33a9be[_0x61e6('0x3c')]);_0x4a2985({'count':_0x3f3c00['length'],'rows':_0x3f3c00});});},'ChatQueues':function(_0x5613ca){return new Promise(function(_0x6809dc,_0x48da7c){var _0x3dd038=[];for(var _0x29c895 in _0x33a9be[_0x61e6('0x44')]){if(_0x33a9be['chatQueues'][_0x61e6('0x3f')](_0x29c895)){var _0x51d58a=_0x33a9be[_0x61e6('0x44')][_0x29c895];var _0x21c3fc={'id':_0x51d58a['id'],'available':_0x51d58a[_0x61e6('0x45')],'loggedIn':_0x51d58a[_0x61e6('0x46')],'name':_0x51d58a[_0x61e6('0x47')],'paused':_0x51d58a[_0x61e6('0x48')],'waiting':_0x51d58a[_0x61e6('0x49')]};_0x3dd038[_0x61e6('0x1f')](_0x21c3fc);}}_0x6809dc({'count':_0x3dd038[_0x61e6('0x17')],'rows':_0x3dd038});});},'MailQueues':function(_0x36f1df){return new Promise(function(_0xcd952b,_0x49ec36){var _0x375c8b=[];for(var _0x1861bf in _0x33a9be['mailQueues']){if(_0x33a9be[_0x61e6('0x4a')]['hasOwnProperty'](_0x1861bf)){var _0x2b09f5=_0x33a9be['mailQueues'][_0x1861bf];var _0x1c0b94={'id':_0x2b09f5['id'],'available':_0x2b09f5[_0x61e6('0x45')],'loggedIn':_0x2b09f5['loggedIn'],'name':_0x2b09f5[_0x61e6('0x47')],'paused':_0x2b09f5['paused'],'waiting':_0x2b09f5[_0x61e6('0x49')]};_0x375c8b[_0x61e6('0x1f')](_0x1c0b94);}}_0xcd952b({'count':_0x375c8b[_0x61e6('0x17')],'rows':_0x375c8b});});},'OpenchannelQueues':function(_0x3ce428){return new Promise(function(_0x489f47,_0x1aa8d8){var _0x19ffbf=[];for(var _0x14edb5 in _0x33a9be[_0x61e6('0x4b')]){if(_0x33a9be['openchannelQueues']['hasOwnProperty'](_0x14edb5)){var _0x5269fc=_0x33a9be[_0x61e6('0x4b')][_0x14edb5];var _0x4e3354={'id':_0x5269fc['id'],'available':_0x5269fc[_0x61e6('0x45')],'loggedIn':_0x5269fc[_0x61e6('0x46')],'name':_0x5269fc['name'],'paused':_0x5269fc['paused'],'waiting':_0x5269fc[_0x61e6('0x49')]};_0x19ffbf[_0x61e6('0x1f')](_0x4e3354);}}_0x489f47({'count':_0x19ffbf[_0x61e6('0x17')],'rows':_0x19ffbf});});},'SmsQueues':function(_0x533566){return new Promise(function(_0x1faae0,_0xf54b13){var _0x6665f5=[];for(var _0x4966e4 in _0x33a9be[_0x61e6('0x4c')]){if(_0x33a9be[_0x61e6('0x4c')][_0x61e6('0x3f')](_0x4966e4)){var _0x5ca8b1=_0x33a9be['smsQueues'][_0x4966e4];var _0x3f418f={'id':_0x5ca8b1['id'],'available':_0x5ca8b1['available'],'loggedIn':_0x5ca8b1[_0x61e6('0x46')],'name':_0x5ca8b1[_0x61e6('0x47')],'paused':_0x5ca8b1[_0x61e6('0x48')],'waiting':_0x5ca8b1[_0x61e6('0x49')]};_0x6665f5[_0x61e6('0x1f')](_0x3f418f);}}_0x1faae0({'count':_0x6665f5[_0x61e6('0x17')],'rows':_0x6665f5});});},'FaxQueues':function(_0x5de146){return new Promise(function(_0x56be5c,_0x44b30e){var _0x2eedc5=[];for(var _0x3c7e7c in _0x33a9be[_0x61e6('0x4d')]){if(_0x33a9be[_0x61e6('0x4d')]['hasOwnProperty'](_0x3c7e7c)){var _0x18e510=_0x33a9be[_0x61e6('0x4d')][_0x3c7e7c];var _0x9b089f={'id':_0x18e510['id'],'available':_0x18e510['available'],'loggedIn':_0x18e510[_0x61e6('0x46')],'name':_0x18e510[_0x61e6('0x47')],'paused':_0x18e510[_0x61e6('0x48')],'waiting':_0x18e510[_0x61e6('0x49')]};_0x2eedc5[_0x61e6('0x1f')](_0x9b089f);}}_0x56be5c({'count':_0x2eedc5[_0x61e6('0x17')],'rows':_0x2eedc5});});},'WhatsappQueues':function(_0x579160){return new Promise(function(_0x531a4e,_0x507024){var _0x52f873=[];for(var _0x563f4a in _0x33a9be['whatsappQueues']){if(_0x33a9be[_0x61e6('0x4e')]['hasOwnProperty'](_0x563f4a)){var _0x3b6e04=_0x33a9be['whatsappQueues'][_0x563f4a];var _0x3e8f27={'id':_0x3b6e04['id'],'available':_0x3b6e04[_0x61e6('0x45')],'loggedIn':_0x3b6e04[_0x61e6('0x46')],'name':_0x3b6e04['name'],'paused':_0x3b6e04[_0x61e6('0x48')],'waiting':_0x3b6e04[_0x61e6('0x49')]};_0x52f873[_0x61e6('0x1f')](_0x3e8f27);}}_0x531a4e({'count':_0x52f873[_0x61e6('0x17')],'rows':_0x52f873});});},'ChatQueuesWaitingInteractions':function(_0x4f4ffb){return new Promise(function(_0x15a55c,_0x16d788){var _0x5a5e35=_[_0x61e6('0x43')](_0x33a9be['chatQueuesWaitingInteractions']);_0x15a55c({'count':_0x5a5e35[_0x61e6('0x17')],'rows':_0x5a5e35});});},'MailQueuesWaitingInteractions':function(_0x88afe1){return new Promise(function(_0x47ed64,_0x3ca174){var _0x2a4bd5=_[_0x61e6('0x43')](_0x33a9be[_0x61e6('0x4f')]);_0x47ed64({'count':_0x2a4bd5[_0x61e6('0x17')],'rows':_0x2a4bd5});});},'OpenchannelQueuesWaitingInteractions':function(_0x4bf033){return new Promise(function(_0x290d35,_0x27eddc){var _0x5276b3=_['values'](_0x33a9be['openchannelQueuesWaitingInteractions']);_0x290d35({'count':_0x5276b3[_0x61e6('0x17')],'rows':_0x5276b3});});},'SmsQueuesWaitingInteractions':function(_0x394106){return new Promise(function(_0x249bd0,_0x2c9da0){var _0xdb9ecd=_[_0x61e6('0x43')](_0x33a9be['smsQueuesWaitingInteractions']);_0x249bd0({'count':_0xdb9ecd[_0x61e6('0x17')],'rows':_0xdb9ecd});});},'FaxQueuesWaitingInteractions':function(_0x29831a){return new Promise(function(_0x3d56d5,_0x30c29e){var _0x28e6d6=_[_0x61e6('0x43')](_0x33a9be[_0x61e6('0x50')]);_0x3d56d5({'count':_0x28e6d6[_0x61e6('0x17')],'rows':_0x28e6d6});});},'WhatsappQueuesWaitingInteractions':function(_0xb15c0c){return new Promise(function(_0x32778b,_0xc81c08){var _0x230799=_['values'](_0x33a9be[_0x61e6('0x51')]);_0x32778b({'count':_0x230799[_0x61e6('0x17')],'rows':_0x230799});});}};var _0x549304=jayson[_0x61e6('0x52')](_0x57aed1)['http']();_0x549304['on'](_0x61e6('0x2e'),function(_0x1ca579){logger[_0x61e6('0x2e')](JSON[_0x61e6('0x30')](_0x1ca579));return _0x4003e9(_0x1ca579);});_0x549304[_0x61e6('0x10')](0x232c,'127.0.0.1',function(){console[_0x61e6('0x53')](_0x61e6('0x54'),0x232c);return _0x10bf8d(_0x61e6('0x55')+0x232c);});});};