ebb1e0dc576c3166c60ac8309a8fcdad9cb4b377
[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 _0xad49=['../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','channel','interaction','applications','isArray','length','join','app','.js','autoreply','appdata','split','push','slice','dialogflow','amazonlex','message','tag','TagId','%s:%s:%s','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','Applications\x20executed','matchPath','emit','complete','error','stack','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agents','agent\x20not\x20found','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','server','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','bluebird','uuid','../../../config/environment','routing'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0xad49,0x15e));var _0x9ad4=function(_0x321e97,_0x3d88d5){_0x321e97=_0x321e97-0x0;var _0x591f04=_0xad49[_0x321e97];return _0x591f04;};'use strict';var _=require(_0x9ad4('0x0'));var util=require('util');var path=require('path');var fs=require('fs');var jayson=require(_0x9ad4('0x1'));var BPromise=require(_0x9ad4('0x2'));var uuid=require(_0x9ad4('0x3'));var config=require(_0x9ad4('0x4'));var logger=require('../../../config/logger')(_0x9ad4('0x5'));var rpc={'openchannelQueueReport':require(_0x9ad4('0x6'))};var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x9ad4('0x7')),'chatQueueReport':require(_0x9ad4('0x8')),'smsQueueReport':require(_0x9ad4('0x9')),'faxQueueReport':require(_0x9ad4('0xa'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x292f8b,_0x252792,_0x1376f5){return util[_0x9ad4('0xb')](_0x9ad4('0xc'),_0x292f8b,_0x252792||0x0,_0x1376f5||0x0);}function getIntervals(_0x216b39,_0x2c8bca){var _0xd504f9=[];if(!_[_0x9ad4('0xd')](_0x2c8bca['IntervalId'])&&!_['isNil'](_0x216b39[_0x2c8bca[_0x9ad4('0xe')]])&&!_[_0x9ad4('0xd')](_0x216b39[_0x2c8bca[_0x9ad4('0xe')]][_0x9ad4('0xf')])){_0xd504f9=_[_0x9ad4('0x10')](_0x216b39[_0x2c8bca[_0x9ad4('0xe')]][_0x9ad4('0xf')],'interval');}else if(!_[_0x9ad4('0xd')](_0x2c8bca[_0x9ad4('0x11')])){_0xd504f9=[_0x2c8bca[_0x9ad4('0x11')]];}return _0xd504f9;}exports['listen']=function(_0x564571){_0x564571['rules']={};return new BPromise(function(_0x53e6f6,_0x192130){var _0x54c460={'Start':function(_0x2c42d0){var _0x25d013=this;return new Promise(function(_0x116a23,_0x71fb4c){if(_0x2c42d0){try{var _0xb0bf70=[];var _0x80c072=getId(_0x2c42d0[_0x9ad4('0x12')],_0x2c42d0['message']?_0x2c42d0['message']['id']:0x0,_0x2c42d0[_0x9ad4('0x13')]?_0x2c42d0[_0x9ad4('0x13')]['id']:0x0);if(_0x2c42d0[_0x9ad4('0x14')]&&_[_0x9ad4('0x15')](_0x2c42d0[_0x9ad4('0x14')])&&_0x2c42d0[_0x9ad4('0x14')]['length']){for(var _0x4fb258=0x0;_0x4fb258<_0x2c42d0[_0x9ad4('0x14')][_0x9ad4('0x16')];_0x4fb258+=0x1){var _0x54cebd=_0x2c42d0[_0x9ad4('0x14')][_0x4fb258];if(fs['existsSync'](path[_0x9ad4('0x17')](__dirname,'applications',_0x54cebd[_0x9ad4('0x18')]+_0x9ad4('0x19')))){var _0x1d8739=[];switch(_0x54cebd[_0x9ad4('0x18')]['toLowerCase']()){case _0x9ad4('0x1a'):var _0x15920b=_0x54cebd[_0x9ad4('0x1b')][_0x9ad4('0x1c')](',');_0x1d8739[_0x9ad4('0x1d')](_0x15920b[0x0]);_0x1d8739[_0x9ad4('0x1d')](_0x15920b[_0x9ad4('0x1e')](0x1,_0x15920b[_0x9ad4('0x16')])[_0x9ad4('0x17')](','));break;case _0x9ad4('0x1f'):var _0x36d586=_0x54cebd['appdata'][_0x9ad4('0x1c')](',');_0x1d8739[_0x9ad4('0x1d')](_0x36d586[0x0]);_0x1d8739[_0x9ad4('0x1d')](_0x36d586[0x1]);_0x1d8739[_0x9ad4('0x1d')](_0x36d586[_0x9ad4('0x1e')](0x2,_0x36d586[_0x9ad4('0x16')])[_0x9ad4('0x17')](','));break;case _0x9ad4('0x20'):var _0xd3564c=_0x54cebd['appdata']['split'](',');_0x1d8739[_0x9ad4('0x1d')](_0xd3564c[0x0]);_0x1d8739['push'](_0xd3564c[0x1]);_0x1d8739[_0x9ad4('0x1d')](_0xd3564c[0x2]);_0x1d8739[_0x9ad4('0x1d')](_0xd3564c[0x3]);_0x1d8739[_0x9ad4('0x1d')](_0xd3564c['slice'](0x4,_0xd3564c[_0x9ad4('0x16')])['join'](','));break;case _0x9ad4('0x21'):_0x1d8739['push'](_0x54cebd[_0x9ad4('0x1b')]);break;case _0x9ad4('0x22'):_0x1d8739[_0x9ad4('0x1d')](_0x54cebd[_0x9ad4('0x23')]);_0x1d8739[_0x9ad4('0x1d')](_0x54cebd['appdata']);break;default:_0x1d8739=_[_0x9ad4('0xd')](_0x54cebd[_0x9ad4('0x1b')])?[]:_0x54cebd[_0x9ad4('0x1b')][_0x9ad4('0x1c')](',');}var _0x399632={'id':util[_0x9ad4('0xb')](_0x9ad4('0x24'),_0x80c072,_0x54cebd['id'],_0x54cebd[_0x9ad4('0x18')]),'condition':require(_0x9ad4('0x25'))['condition'](_0x80c072,getIntervals(_0x564571[_0x9ad4('0x26')],_0x54cebd),_0x564571),'consequence':require(_0x9ad4('0x27')+_0x54cebd[_0x9ad4('0x18')])[_0x9ad4('0x28')](_0x80c072,_0x1d8739,_0x564571,_0x2c42d0),'p':_0x54cebd[_0x9ad4('0x29')]||0x0};logger[_0x9ad4('0x2a')](_0x9ad4('0x2b'),_0x399632['id'],_0x9ad4('0x2c'),getIntervals(_0x564571[_0x9ad4('0x26')],_0x54cebd)[_0x9ad4('0x17')](_0x9ad4('0x2d')));_0xb0bf70[_0x9ad4('0x1d')](_0x399632);}else{logger['error'](_0x9ad4('0x2e'),path[_0x9ad4('0x17')](__dirname,_0x9ad4('0x14'),_0x54cebd[_0x9ad4('0x18')]+'.js'));}}_0x564571[_0x9ad4('0x2f')][_0x80c072]=new RuleEngine(_0xb0bf70);_0x564571[_0x9ad4('0x2f')][_0x80c072][_0x9ad4('0x30')](_0x2c42d0,function(_0x1dce86){logger['info'](_0x9ad4('0x31'),JSON['stringify'](_0x1dce86[_0x9ad4('0x32')]));if(_0x564571[_0x9ad4('0x2f')][_0x80c072]){_0x564571[_0x9ad4('0x2f')][_0x80c072][_0x9ad4('0x33')](_0x9ad4('0x34'));}});return _0x116a23({'code':0xc8,'message':_0x2c42d0});}else{logger[_0x9ad4('0x2a')]('No\x20applications\x20to\x20execute');return _0x116a23({'code':0xc8,'message':_0x2c42d0});}}catch(_0x51eb14){logger[_0x9ad4('0x35')](_0x51eb14[_0x9ad4('0x36')]);return _0x71fb4c(_0x25d013[_0x9ad4('0x35')](0x1f4,_0x51eb14));}}return _0x71fb4c('routing\x20is\x20empty');});},'AcceptMessage':function(_0x1aee5a){var _0x159820=this;return new Promise(function(_0x19f6d3,_0x4a38f0){if(_0x1aee5a[_0x9ad4('0x21')]&&_0x1aee5a['message']['id']){try{var _0xdd8d22=getId(_0x1aee5a[_0x9ad4('0x12')],_0x1aee5a['message']?_0x1aee5a['message']['id']:0x0,_0x1aee5a[_0x9ad4('0x13')]?_0x1aee5a[_0x9ad4('0x13')]['id']:0x0);if(_0x564571['rules'][_0xdd8d22]){_0x564571[_0x9ad4('0x2f')][_0xdd8d22][_0x9ad4('0x33')](_0x9ad4('0x37'));if(rpc[_0x1aee5a[_0x9ad4('0x12')]+_0x9ad4('0x38')]){rpc[_0x1aee5a[_0x9ad4('0x12')]+_0x9ad4('0x38')][_0x9ad4('0x39')](_0xdd8d22,{'UserId':_0x1aee5a[_0x9ad4('0x21')][_0x9ad4('0x3a')]})[_0x9ad4('0x3b')](function(_0x32bc59){logger['error'](_0x9ad4('0x3c'));});}}return _0x19f6d3({'code':0xc8,'message':_0x1aee5a});}catch(_0x29a6e5){logger[_0x9ad4('0x35')](_0x29a6e5[_0x9ad4('0x36')]);return _0x4a38f0(_0x159820['error'](0x1f4,_0x29a6e5));}}logger[_0x9ad4('0x35')](_0x9ad4('0x3d'));return _0x4a38f0(_0x159820[_0x9ad4('0x35')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x415c26){var _0x417b3a=this;return new Promise(function(_0x1b51ab,_0x21a1cc){if(_0x415c26[_0x9ad4('0x3e')]&&_0x415c26[_0x9ad4('0x3e')]['id']){try{if(_0x564571['agents'][_0x415c26[_0x9ad4('0x3e')]['id']]){_0x564571['agents'][_0x415c26[_0x9ad4('0x3e')]['id']][_0x9ad4('0x3f')]=![];_0x564571['agents'][_0x415c26['agent']['id']][_0x9ad4('0x40')]=undefined;}return _0x1b51ab({'code':0xc8,'message':_0x415c26});}catch(_0x5bd6f2){logger['error'](_0x5bd6f2[_0x9ad4('0x36')]);return _0x21a1cc(_0x417b3a[_0x9ad4('0x35')](0x1f4,_0x5bd6f2));}}logger[_0x9ad4('0x35')]('message\x20is\x20empty');return _0x21a1cc(_0x417b3a[_0x9ad4('0x35')](0x1f4,_0x9ad4('0x3d')));});},'AbandonInteraction':function(_0x10bdbd){var _0x531379=this;return new Promise(function(_0x4d1002,_0x398ea6){if(_0x10bdbd['channel']&&_0x10bdbd[_0x9ad4('0x13')]&&_0x10bdbd['interaction']['id']){try{var _0x34ef8f=getId(_0x10bdbd[_0x9ad4('0x12')],_0x10bdbd['message']?_0x10bdbd[_0x9ad4('0x21')]['id']:0x0,_0x10bdbd[_0x9ad4('0x13')]?_0x10bdbd[_0x9ad4('0x13')]['id']:0x0);if(_0x564571[_0x9ad4('0x2f')][_0x34ef8f]){_0x564571[_0x9ad4('0x2f')][_0x34ef8f]['emit'](_0x9ad4('0x37'));}return _0x4d1002({'code':0xc8,'message':_0x10bdbd});}catch(_0x476467){logger[_0x9ad4('0x35')](_0x476467[_0x9ad4('0x36')]);return _0x398ea6(_0x531379[_0x9ad4('0x35')](0x1f4,_0x476467));}}logger[_0x9ad4('0x35')]('message\x20is\x20empty');return _0x398ea6(_0x531379[_0x9ad4('0x35')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x42750a){var _0x506304=this;return new Promise(function(_0x1db9f8,_0x1efb32){if(_0x564571['agents'][_0x9ad4('0x41')](_0x42750a['id'])){for(var _0x4f8e0f in _0x42750a[_0x9ad4('0x42')]){if(_0x42750a[_0x9ad4('0x42')][_0x9ad4('0x41')](_0x4f8e0f)){if(_0x564571['agents'][_0x42750a['id']]['hasOwnProperty'](_0x4f8e0f+_0x9ad4('0x43'))){_0x564571['agents'][_0x42750a['id']][_0x4f8e0f+_0x9ad4('0x43')]=parseInt(_0x42750a[_0x9ad4('0x42')][_0x4f8e0f],0xa);}}}_0x564571[_0x9ad4('0x44')][_0x42750a['id']]['updateRealtime']();return _0x1db9f8({'code':0xc8,'message':_0x564571[_0x9ad4('0x44')][_0x42750a['id']]});}else{return _0x1efb32(_0x506304['error'](0x1f4,_0x9ad4('0x45')));}});},'Agents':function(_0x295adf){return new Promise(function(_0x18b75a,_0x1c50c3){var _0x1bd4e6=_[_0x9ad4('0x46')](_0x564571['agents']);_0x18b75a({'count':_0x1bd4e6[_0x9ad4('0x16')],'rows':_0x1bd4e6});});},'ChatQueues':function(_0x1c6cd8){return new Promise(function(_0xbf2861,_0x148948){var _0x27c980=[];for(var _0x5d89ab in _0x564571[_0x9ad4('0x47')]){if(_0x564571[_0x9ad4('0x47')][_0x9ad4('0x41')](_0x5d89ab)){var _0x11bd64=_0x564571['chatQueues'][_0x5d89ab];var _0x266059={'id':_0x11bd64['id'],'available':_0x11bd64[_0x9ad4('0x48')],'loggedIn':_0x11bd64[_0x9ad4('0x49')],'name':_0x11bd64['name'],'paused':_0x11bd64[_0x9ad4('0x4a')],'waiting':_0x11bd64[_0x9ad4('0x4b')]};_0x27c980['push'](_0x266059);}}_0xbf2861({'count':_0x27c980[_0x9ad4('0x16')],'rows':_0x27c980});});},'MailQueues':function(_0x338f09){return new Promise(function(_0x212ae5,_0x152144){var _0x358d09=[];for(var _0x123ac3 in _0x564571[_0x9ad4('0x4c')]){if(_0x564571[_0x9ad4('0x4c')][_0x9ad4('0x41')](_0x123ac3)){var _0x39df71=_0x564571[_0x9ad4('0x4c')][_0x123ac3];var _0x545f0b={'id':_0x39df71['id'],'available':_0x39df71['available'],'loggedIn':_0x39df71[_0x9ad4('0x49')],'name':_0x39df71[_0x9ad4('0x4d')],'paused':_0x39df71[_0x9ad4('0x4a')],'waiting':_0x39df71[_0x9ad4('0x4b')]};_0x358d09[_0x9ad4('0x1d')](_0x545f0b);}}_0x212ae5({'count':_0x358d09[_0x9ad4('0x16')],'rows':_0x358d09});});},'OpenchannelQueues':function(_0x453277){return new Promise(function(_0x10bf91,_0x3ee6b5){var _0x11225b=[];for(var _0x53c14a in _0x564571[_0x9ad4('0x4e')]){if(_0x564571[_0x9ad4('0x4e')][_0x9ad4('0x41')](_0x53c14a)){var _0x403dce=_0x564571[_0x9ad4('0x4e')][_0x53c14a];var _0x6ca06c={'id':_0x403dce['id'],'available':_0x403dce['available'],'loggedIn':_0x403dce[_0x9ad4('0x49')],'name':_0x403dce[_0x9ad4('0x4d')],'paused':_0x403dce['paused'],'waiting':_0x403dce[_0x9ad4('0x4b')]};_0x11225b['push'](_0x6ca06c);}}_0x10bf91({'count':_0x11225b[_0x9ad4('0x16')],'rows':_0x11225b});});},'SmsQueues':function(_0x1e0ea7){return new Promise(function(_0x26d289,_0x5c9cb2){var _0x377f27=[];for(var _0x100838 in _0x564571['smsQueues']){if(_0x564571[_0x9ad4('0x4f')]['hasOwnProperty'](_0x100838)){var _0x28cd4d=_0x564571[_0x9ad4('0x4f')][_0x100838];var _0x555028={'id':_0x28cd4d['id'],'available':_0x28cd4d[_0x9ad4('0x48')],'loggedIn':_0x28cd4d[_0x9ad4('0x49')],'name':_0x28cd4d[_0x9ad4('0x4d')],'paused':_0x28cd4d['paused'],'waiting':_0x28cd4d[_0x9ad4('0x4b')]};_0x377f27[_0x9ad4('0x1d')](_0x555028);}}_0x26d289({'count':_0x377f27['length'],'rows':_0x377f27});});},'FaxQueues':function(_0x21ab43){return new Promise(function(_0x39f145,_0x50affc){var _0x57f30d=[];for(var _0x3eac9b in _0x564571[_0x9ad4('0x50')]){if(_0x564571[_0x9ad4('0x50')][_0x9ad4('0x41')](_0x3eac9b)){var _0x4bfbc1=_0x564571[_0x9ad4('0x50')][_0x3eac9b];var _0x460b41={'id':_0x4bfbc1['id'],'available':_0x4bfbc1[_0x9ad4('0x48')],'loggedIn':_0x4bfbc1[_0x9ad4('0x49')],'name':_0x4bfbc1['name'],'paused':_0x4bfbc1[_0x9ad4('0x4a')],'waiting':_0x4bfbc1[_0x9ad4('0x4b')]};_0x57f30d[_0x9ad4('0x1d')](_0x460b41);}}_0x39f145({'count':_0x57f30d[_0x9ad4('0x16')],'rows':_0x57f30d});});},'ChatQueuesWaitingInteractions':function(_0x568701){return new Promise(function(_0x42868c,_0x19cafd){var _0x2021c5=_[_0x9ad4('0x46')](_0x564571[_0x9ad4('0x51')]);_0x42868c({'count':_0x2021c5['length'],'rows':_0x2021c5});});},'MailQueuesWaitingInteractions':function(_0x4f0d84){return new Promise(function(_0x2d32e2,_0x13dc08){var _0x28ae45=_['values'](_0x564571[_0x9ad4('0x52')]);_0x2d32e2({'count':_0x28ae45[_0x9ad4('0x16')],'rows':_0x28ae45});});},'OpenchannelQueuesWaitingInteractions':function(_0x255b62){return new Promise(function(_0x2c22e2,_0x3ac119){var _0x31f117=_[_0x9ad4('0x46')](_0x564571[_0x9ad4('0x53')]);_0x2c22e2({'count':_0x31f117[_0x9ad4('0x16')],'rows':_0x31f117});});},'SmsQueuesWaitingInteractions':function(_0x52d236){return new Promise(function(_0x448405,_0x10be6f){var _0x556eca=_[_0x9ad4('0x46')](_0x564571['smsQueuesWaitingInteractions']);_0x448405({'count':_0x556eca[_0x9ad4('0x16')],'rows':_0x556eca});});},'FaxQueuesWaitingInteractions':function(_0x62a275){return new Promise(function(_0x4a337b,_0x2f9eb0){var _0x1137a4=_[_0x9ad4('0x46')](_0x564571['faxQueuesWaitingInteractions']);_0x4a337b({'count':_0x1137a4[_0x9ad4('0x16')],'rows':_0x1137a4});});}};var _0x116b3c=jayson[_0x9ad4('0x54')](_0x54c460)['http']();_0x116b3c['on'](_0x9ad4('0x35'),function(_0x30c0bc){logger['error'](JSON[_0x9ad4('0x55')](_0x30c0bc));return _0x192130(_0x30c0bc);});_0x116b3c['listen'](0x232c,_0x9ad4('0x56'),function(){console[_0x9ad4('0x57')](_0x9ad4('0x58'),0x232c);return _0x53e6f6('RPC\x20listening\x20on\x20port:'+0x232c);});});};