Built motion from commit (unavailable).|2.4.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 _0xea66=['app','.js','toLowerCase','autoreply','push','slice','dialogflow','appdata','split','tag','%s:%s:%s','./interval','condition','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','join','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','matchPath','emit','end','No\x20applications\x20to\x20execute','error','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','name','paused','waiting','mailQueues','available','openchannelQueues','smsQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','lodash','path','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync'];(function(_0x1ed555,_0x163bb2){var _0x2ade3d=function(_0x26cea2){while(--_0x26cea2){_0x1ed555['push'](_0x1ed555['shift']());}};_0x2ade3d(++_0x163bb2);}(_0xea66,0x9c));var _0x6ea6=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xea66[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require(_0x6ea6('0x0'));var util=require('util');var path=require(_0x6ea6('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x6ea6('0x2'));var uuid=require(_0x6ea6('0x3'));var config=require('../../../config/environment');var logger=require(_0x6ea6('0x4'))(_0x6ea6('0x5'));var rpc={'openchannelQueueReport':require(_0x6ea6('0x6'))};var rpc={'openchannelQueueReport':require(_0x6ea6('0x6')),'mailQueueReport':require(_0x6ea6('0x7')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x6ea6('0x8')),'faxQueueReport':require(_0x6ea6('0x9'))};var RuleEngine=require(_0x6ea6('0xa'));function getId(_0x493dd0,_0x4eb715,_0x27055f){return util[_0x6ea6('0xb')](_0x6ea6('0xc'),_0x493dd0,_0x4eb715||0x0,_0x27055f||0x0);}function getIntervals(_0x516924,_0x358717){var _0x4c914e=[];if(!_[_0x6ea6('0xd')](_0x358717[_0x6ea6('0xe')])&&!_[_0x6ea6('0xd')](_0x516924[_0x358717['IntervalId']])&&!_['isNil'](_0x516924[_0x358717['IntervalId']]['Intervals'])){_0x4c914e=_['map'](_0x516924[_0x358717[_0x6ea6('0xe')]][_0x6ea6('0xf')],_0x6ea6('0x10'));}else if(!_['isNil'](_0x358717[_0x6ea6('0x10')])){_0x4c914e=[_0x358717[_0x6ea6('0x10')]];}return _0x4c914e;}exports[_0x6ea6('0x11')]=function(_0x1fb468){_0x1fb468[_0x6ea6('0x12')]={};return new BPromise(function(_0x5f0e55,_0x3bca0b){var _0x5e1b86={'Start':function(_0x171fba){var _0x299cf6=this;return new Promise(function(_0x18f92a,_0x4b89c2){if(_0x171fba){try{var _0x126a66=[];var _0x1a2fb9=getId(_0x171fba[_0x6ea6('0x13')],_0x171fba[_0x6ea6('0x14')]?_0x171fba[_0x6ea6('0x14')]['id']:0x0,_0x171fba['interaction']?_0x171fba[_0x6ea6('0x15')]['id']:0x0);if(_0x171fba[_0x6ea6('0x16')]&&_[_0x6ea6('0x17')](_0x171fba[_0x6ea6('0x16')])&&_0x171fba[_0x6ea6('0x16')][_0x6ea6('0x18')]){for(var _0xf861d7=0x0;_0xf861d7<_0x171fba[_0x6ea6('0x16')][_0x6ea6('0x18')];_0xf861d7+=0x1){var _0x28d19e=_0x171fba[_0x6ea6('0x16')][_0xf861d7];if(fs[_0x6ea6('0x19')](path['join'](__dirname,_0x6ea6('0x16'),_0x28d19e[_0x6ea6('0x1a')]+_0x6ea6('0x1b')))){var _0x89fec2=[];switch(_0x28d19e[_0x6ea6('0x1a')][_0x6ea6('0x1c')]()){case _0x6ea6('0x1d'):var _0xfd602=_0x28d19e['appdata']['split'](',');_0x89fec2['push'](_0xfd602[0x0]);_0x89fec2[_0x6ea6('0x1e')](_0xfd602[_0x6ea6('0x1f')](0x1,_0xfd602['length'])['join'](','));break;case _0x6ea6('0x20'):var _0xfd602=_0x28d19e[_0x6ea6('0x21')][_0x6ea6('0x22')](',');_0x89fec2[_0x6ea6('0x1e')](_0xfd602[0x0]);_0x89fec2[_0x6ea6('0x1e')](_0xfd602[0x1]);_0x89fec2[_0x6ea6('0x1e')](_0xfd602[_0x6ea6('0x1f')](0x2,_0xfd602[_0x6ea6('0x18')])['join'](','));break;case'amazonlex':var _0xfd602=_0x28d19e[_0x6ea6('0x21')]['split'](',');_0x89fec2[_0x6ea6('0x1e')](_0xfd602[0x0]);_0x89fec2[_0x6ea6('0x1e')](_0xfd602[0x1]);_0x89fec2['push'](_0xfd602[0x2]);_0x89fec2[_0x6ea6('0x1e')](_0xfd602[0x3]);_0x89fec2['push'](_0xfd602[_0x6ea6('0x1f')](0x4,_0xfd602[_0x6ea6('0x18')])['join'](','));break;case _0x6ea6('0x14'):_0x89fec2[_0x6ea6('0x1e')](_0x28d19e['appdata']);break;case _0x6ea6('0x23'):_0x89fec2[_0x6ea6('0x1e')](_0x28d19e['TagId']);_0x89fec2[_0x6ea6('0x1e')](_0x28d19e[_0x6ea6('0x21')]);break;default:_0x89fec2=_[_0x6ea6('0xd')](_0x28d19e['appdata'])?[]:_0x28d19e['appdata'][_0x6ea6('0x22')](',');}var _0x49c355={'id':util[_0x6ea6('0xb')](_0x6ea6('0x24'),_0x1a2fb9,_0x28d19e['id'],_0x28d19e[_0x6ea6('0x1a')]),'condition':require(_0x6ea6('0x25'))[_0x6ea6('0x26')](_0x1a2fb9,getIntervals(_0x1fb468['intervals'],_0x28d19e),_0x1fb468),'consequence':require(_0x6ea6('0x27')+_0x28d19e['app'])[_0x6ea6('0x28')](_0x1a2fb9,_0x89fec2,_0x1fb468,_0x171fba),'p':_0x28d19e[_0x6ea6('0x29')]||0x0};logger['info'](_0x6ea6('0x2a'),_0x49c355['id'],_0x6ea6('0x2b'),getIntervals(_0x1fb468['intervals'],_0x28d19e)[_0x6ea6('0x2c')](_0x6ea6('0x2d')));_0x126a66['push'](_0x49c355);}else{logger['error'](_0x6ea6('0x2e'),path[_0x6ea6('0x2c')](__dirname,_0x6ea6('0x16'),_0x28d19e[_0x6ea6('0x1a')]+_0x6ea6('0x1b')));}}_0x1fb468[_0x6ea6('0x12')][_0x1a2fb9]=new RuleEngine(_0x126a66);_0x1fb468[_0x6ea6('0x12')][_0x1a2fb9][_0x6ea6('0x2f')](_0x171fba,function(_0x4a7b7e){logger[_0x6ea6('0x30')](_0x6ea6('0x31'),JSON['stringify'](_0x4a7b7e[_0x6ea6('0x32')]));if(_0x1fb468[_0x6ea6('0x12')][_0x1a2fb9]){_0x1fb468[_0x6ea6('0x12')][_0x1a2fb9][_0x6ea6('0x33')](_0x6ea6('0x34'));}});return _0x18f92a({'code':0xc8,'message':_0x171fba});}else{logger[_0x6ea6('0x30')](_0x6ea6('0x35'));return _0x18f92a({'code':0xc8,'message':_0x171fba});}}catch(_0x58b1c2){logger[_0x6ea6('0x36')](_0x58b1c2['stack']);return _0x4b89c2(_0x299cf6['error'](0x1f4,_0x58b1c2));}}return _0x4b89c2('routing\x20is\x20empty');});},'AcceptMessage':function(_0x23c94b){var _0x53f2b7=this;return new Promise(function(_0x216928,_0x9a0c6b){if(_0x23c94b[_0x6ea6('0x14')]&&_0x23c94b[_0x6ea6('0x14')]['id']){try{var _0xc5165a=getId(_0x23c94b[_0x6ea6('0x13')],_0x23c94b[_0x6ea6('0x14')]?_0x23c94b[_0x6ea6('0x14')]['id']:0x0,_0x23c94b[_0x6ea6('0x15')]?_0x23c94b[_0x6ea6('0x15')]['id']:0x0);if(_0x1fb468[_0x6ea6('0x12')][_0xc5165a]){_0x1fb468[_0x6ea6('0x12')][_0xc5165a][_0x6ea6('0x33')]('end');if(rpc[_0x23c94b['channel']+_0x6ea6('0x37')]){rpc[_0x23c94b[_0x6ea6('0x13')]+_0x6ea6('0x37')][_0x6ea6('0x38')](_0xc5165a,{'UserId':_0x23c94b['message'][_0x6ea6('0x39')]})[_0x6ea6('0x3a')](function(_0x1cae81){logger['error'](_0x6ea6('0x3b'));});}}return _0x216928({'code':0xc8,'message':_0x23c94b});}catch(_0x33561d){logger['error'](_0x33561d[_0x6ea6('0x3c')]);return _0x9a0c6b(_0x53f2b7[_0x6ea6('0x36')](0x1f4,_0x33561d));}}logger[_0x6ea6('0x36')](_0x6ea6('0x3d'));return _0x9a0c6b(_0x53f2b7['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x3ab8a8){var _0x20e205=this;return new Promise(function(_0x29770d,_0x10f42e){if(_0x3ab8a8[_0x6ea6('0x3e')]&&_0x3ab8a8[_0x6ea6('0x3e')]['id']){try{if(_0x1fb468[_0x6ea6('0x3f')][_0x3ab8a8[_0x6ea6('0x3e')]['id']]){_0x1fb468['agents'][_0x3ab8a8[_0x6ea6('0x3e')]['id']][_0x6ea6('0x40')]=![];_0x1fb468[_0x6ea6('0x3f')][_0x3ab8a8[_0x6ea6('0x3e')]['id']][_0x6ea6('0x41')]=undefined;}return _0x29770d({'code':0xc8,'message':_0x3ab8a8});}catch(_0x3b98f4){logger[_0x6ea6('0x36')](_0x3b98f4[_0x6ea6('0x3c')]);return _0x10f42e(_0x20e205[_0x6ea6('0x36')](0x1f4,_0x3b98f4));}}logger[_0x6ea6('0x36')]('message\x20is\x20empty');return _0x10f42e(_0x20e205[_0x6ea6('0x36')](0x1f4,_0x6ea6('0x3d')));});},'AbandonInteraction':function(_0xa8c87d){var _0x20a356=this;return new Promise(function(_0x243016,_0x1605a6){if(_0xa8c87d[_0x6ea6('0x13')]&&_0xa8c87d['interaction']&&_0xa8c87d[_0x6ea6('0x15')]['id']){try{var _0x1a957b=getId(_0xa8c87d['channel'],_0xa8c87d[_0x6ea6('0x14')]?_0xa8c87d[_0x6ea6('0x14')]['id']:0x0,_0xa8c87d[_0x6ea6('0x15')]?_0xa8c87d[_0x6ea6('0x15')]['id']:0x0);if(_0x1fb468['rules'][_0x1a957b]){_0x1fb468[_0x6ea6('0x12')][_0x1a957b]['emit'](_0x6ea6('0x34'));}return _0x243016({'code':0xc8,'message':_0xa8c87d});}catch(_0x571da7){logger[_0x6ea6('0x36')](_0x571da7[_0x6ea6('0x3c')]);return _0x1605a6(_0x20a356[_0x6ea6('0x36')](0x1f4,_0x571da7));}}logger['error'](_0x6ea6('0x3d'));return _0x1605a6(_0x20a356[_0x6ea6('0x36')](0x1f4,_0x6ea6('0x3d')));});},'AgentCapacity':function(_0x14b2d2){var _0x11fc9c=this;return new Promise(function(_0x4df83a,_0x65a6d){if(_0x1fb468[_0x6ea6('0x3f')][_0x6ea6('0x42')](_0x14b2d2['id'])){for(var _0x4eac98 in _0x14b2d2[_0x6ea6('0x43')]){if(_0x14b2d2[_0x6ea6('0x43')][_0x6ea6('0x42')](_0x4eac98)){if(_0x1fb468[_0x6ea6('0x3f')][_0x14b2d2['id']][_0x6ea6('0x42')](_0x4eac98+_0x6ea6('0x44'))){_0x1fb468[_0x6ea6('0x3f')][_0x14b2d2['id']][_0x4eac98+_0x6ea6('0x44')]=parseInt(_0x14b2d2[_0x6ea6('0x43')][_0x4eac98],0xa);}}}_0x1fb468[_0x6ea6('0x3f')][_0x14b2d2['id']][_0x6ea6('0x45')]();return _0x4df83a({'code':0xc8,'message':_0x1fb468['agents'][_0x14b2d2['id']]});}else{return _0x65a6d(_0x11fc9c['error'](0x1f4,_0x6ea6('0x46')));}});},'Agents':function(_0x4e4479){return new Promise(function(_0x2b1a2c,_0x19b3a6){var _0x367945=_[_0x6ea6('0x47')](_0x1fb468[_0x6ea6('0x3f')]);_0x2b1a2c({'count':_0x367945[_0x6ea6('0x18')],'rows':_0x367945});});},'ChatQueues':function(_0x4a3618){return new Promise(function(_0x3bdb62,_0x47070f){var _0xbdd77b=[];for(var _0x3e275d in _0x1fb468[_0x6ea6('0x48')]){if(_0x1fb468[_0x6ea6('0x48')][_0x6ea6('0x42')](_0x3e275d)){var _0x586140=_0x1fb468[_0x6ea6('0x48')][_0x3e275d];var _0x4f58ee={'id':_0x586140['id'],'available':_0x586140['available'],'loggedIn':_0x586140[_0x6ea6('0x49')],'name':_0x586140[_0x6ea6('0x4a')],'paused':_0x586140[_0x6ea6('0x4b')],'waiting':_0x586140[_0x6ea6('0x4c')]};_0xbdd77b[_0x6ea6('0x1e')](_0x4f58ee);}}_0x3bdb62({'count':_0xbdd77b['length'],'rows':_0xbdd77b});});},'MailQueues':function(_0x7d8aaf){return new Promise(function(_0x17b58e,_0x5ee24a){var _0x3c263a=[];for(var _0x51db00 in _0x1fb468[_0x6ea6('0x4d')]){if(_0x1fb468[_0x6ea6('0x4d')]['hasOwnProperty'](_0x51db00)){var _0x4b2eb5=_0x1fb468[_0x6ea6('0x4d')][_0x51db00];var _0x3c07ab={'id':_0x4b2eb5['id'],'available':_0x4b2eb5[_0x6ea6('0x4e')],'loggedIn':_0x4b2eb5[_0x6ea6('0x49')],'name':_0x4b2eb5[_0x6ea6('0x4a')],'paused':_0x4b2eb5[_0x6ea6('0x4b')],'waiting':_0x4b2eb5['waiting']};_0x3c263a[_0x6ea6('0x1e')](_0x3c07ab);}}_0x17b58e({'count':_0x3c263a[_0x6ea6('0x18')],'rows':_0x3c263a});});},'OpenchannelQueues':function(_0x435658){return new Promise(function(_0x218f60,_0x79c37d){var _0x31aa75=[];for(var _0x307042 in _0x1fb468[_0x6ea6('0x4f')]){if(_0x1fb468[_0x6ea6('0x4f')][_0x6ea6('0x42')](_0x307042)){var _0xf1cca1=_0x1fb468[_0x6ea6('0x4f')][_0x307042];var _0x37f898={'id':_0xf1cca1['id'],'available':_0xf1cca1[_0x6ea6('0x4e')],'loggedIn':_0xf1cca1[_0x6ea6('0x49')],'name':_0xf1cca1[_0x6ea6('0x4a')],'paused':_0xf1cca1[_0x6ea6('0x4b')],'waiting':_0xf1cca1[_0x6ea6('0x4c')]};_0x31aa75[_0x6ea6('0x1e')](_0x37f898);}}_0x218f60({'count':_0x31aa75[_0x6ea6('0x18')],'rows':_0x31aa75});});},'SmsQueues':function(_0x158aa3){return new Promise(function(_0x2b2cd0,_0x357b68){var _0x220d0f=[];for(var _0x4e8078 in _0x1fb468[_0x6ea6('0x50')]){if(_0x1fb468[_0x6ea6('0x50')][_0x6ea6('0x42')](_0x4e8078)){var _0x386d55=_0x1fb468[_0x6ea6('0x50')][_0x4e8078];var _0x2d5210={'id':_0x386d55['id'],'available':_0x386d55['available'],'loggedIn':_0x386d55[_0x6ea6('0x49')],'name':_0x386d55[_0x6ea6('0x4a')],'paused':_0x386d55['paused'],'waiting':_0x386d55[_0x6ea6('0x4c')]};_0x220d0f[_0x6ea6('0x1e')](_0x2d5210);}}_0x2b2cd0({'count':_0x220d0f[_0x6ea6('0x18')],'rows':_0x220d0f});});},'FaxQueues':function(_0x1dafad){return new Promise(function(_0x57aee3,_0x42f7df){var _0x542cdb=[];for(var _0x40fc2e in _0x1fb468[_0x6ea6('0x51')]){if(_0x1fb468[_0x6ea6('0x51')][_0x6ea6('0x42')](_0x40fc2e)){var _0x2062fc=_0x1fb468['faxQueues'][_0x40fc2e];var _0x771c60={'id':_0x2062fc['id'],'available':_0x2062fc[_0x6ea6('0x4e')],'loggedIn':_0x2062fc[_0x6ea6('0x49')],'name':_0x2062fc['name'],'paused':_0x2062fc[_0x6ea6('0x4b')],'waiting':_0x2062fc['waiting']};_0x542cdb[_0x6ea6('0x1e')](_0x771c60);}}_0x57aee3({'count':_0x542cdb[_0x6ea6('0x18')],'rows':_0x542cdb});});},'ChatQueuesWaitingInteractions':function(_0x56b063){return new Promise(function(_0x49f1a3,_0x42ba1f){var _0x84024a=_[_0x6ea6('0x47')](_0x1fb468['chatQueuesWaitingInteractions']);_0x49f1a3({'count':_0x84024a[_0x6ea6('0x18')],'rows':_0x84024a});});},'MailQueuesWaitingInteractions':function(_0x5df3c2){return new Promise(function(_0xab5a64,_0x3e7b34){var _0x2602d5=_[_0x6ea6('0x47')](_0x1fb468[_0x6ea6('0x52')]);_0xab5a64({'count':_0x2602d5[_0x6ea6('0x18')],'rows':_0x2602d5});});},'OpenchannelQueuesWaitingInteractions':function(_0x3559e3){return new Promise(function(_0x1f633a,_0xd99778){var _0x1cce03=_[_0x6ea6('0x47')](_0x1fb468[_0x6ea6('0x53')]);_0x1f633a({'count':_0x1cce03['length'],'rows':_0x1cce03});});},'SmsQueuesWaitingInteractions':function(_0x468cba){return new Promise(function(_0xcec052,_0x3f3837){var _0x15370e=_[_0x6ea6('0x47')](_0x1fb468[_0x6ea6('0x54')]);_0xcec052({'count':_0x15370e[_0x6ea6('0x18')],'rows':_0x15370e});});},'FaxQueuesWaitingInteractions':function(_0x36fed4){return new Promise(function(_0x329275,_0x13438c){var _0x195dc2=_[_0x6ea6('0x47')](_0x1fb468[_0x6ea6('0x55')]);_0x329275({'count':_0x195dc2[_0x6ea6('0x18')],'rows':_0x195dc2});});}};var _0x97fb33=jayson[_0x6ea6('0x56')](_0x5e1b86)[_0x6ea6('0x57')]();_0x97fb33['on'](_0x6ea6('0x36'),function(_0xd95615){logger['error'](JSON[_0x6ea6('0x58')](_0xd95615));return _0x3bca0b(_0xd95615);});_0x97fb33[_0x6ea6('0x11')](0x232c,_0x6ea6('0x59'),function(){console[_0x6ea6('0x5a')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x5f0e55('RPC\x20listening\x20on\x20port:'+0x232c);});});};