46388ee23f25f4c76a3452af4f75adaf45e6389d
[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 _0x8fd2=['lodash','util','path','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','message','interaction','isArray','applications','length','existsSync','app','toLowerCase','appdata','split','push','slice','join','amazonlex','tag','TagId','format','%s:%s:%s','./interval','condition','./applications/','priority','info','on\x20interval','intervals','\x20|\x20','error','.js','execute','Applications\x20executed','stringify','matchPath','emit','end','No\x20applications\x20to\x20execute','routing\x20is\x20empty','channel','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','agent','agents','busy','busyQueue','capacity','hasOwnProperty','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting','mailQueues','loggedIn','openchannelQueues','smsQueues','faxQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!'];(function(_0x52e3dc,_0x4594fc){var _0x4a51b4=function(_0x486d07){while(--_0x486d07){_0x52e3dc['push'](_0x52e3dc['shift']());}};_0x4a51b4(++_0x4594fc);}(_0x8fd2,0xb8));var _0x28fd=function(_0x526fb1,_0x429960){_0x526fb1=_0x526fb1-0x0;var _0x167b6a=_0x8fd2[_0x526fb1];return _0x167b6a;};'use strict';var _=require(_0x28fd('0x0'));var util=require(_0x28fd('0x1'));var path=require(_0x28fd('0x2'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x28fd('0x3'));var uuid=require(_0x28fd('0x4'));var config=require(_0x28fd('0x5'));var logger=require(_0x28fd('0x6'))(_0x28fd('0x7'));var rpc={'openchannelQueueReport':require(_0x28fd('0x8'))};var rpc={'openchannelQueueReport':require(_0x28fd('0x8')),'mailQueueReport':require(_0x28fd('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x28fd('0xa')),'faxQueueReport':require(_0x28fd('0xb'))};var RuleEngine=require(_0x28fd('0xc'));function getId(_0x12e84b,_0x4de53d,_0x4e69e2){return util['format'](_0x28fd('0xd'),_0x12e84b,_0x4de53d||0x0,_0x4e69e2||0x0);}function getIntervals(_0x2c4dae,_0xe60edc){var _0x3962d0=[];if(!_['isNil'](_0xe60edc[_0x28fd('0xe')])&&!_[_0x28fd('0xf')](_0x2c4dae[_0xe60edc[_0x28fd('0xe')]])&&!_[_0x28fd('0xf')](_0x2c4dae[_0xe60edc[_0x28fd('0xe')]][_0x28fd('0x10')])){_0x3962d0=_[_0x28fd('0x11')](_0x2c4dae[_0xe60edc[_0x28fd('0xe')]][_0x28fd('0x10')],_0x28fd('0x12'));}else if(!_['isNil'](_0xe60edc[_0x28fd('0x12')])){_0x3962d0=[_0xe60edc[_0x28fd('0x12')]];}return _0x3962d0;}exports[_0x28fd('0x13')]=function(_0x589a8e){_0x589a8e[_0x28fd('0x14')]={};return new BPromise(function(_0x5681ae,_0x305533){var _0x2e6251={'Start':function(_0x254817){var _0x1360aa=this;return new Promise(function(_0x58d07c,_0x23d8e5){if(_0x254817){try{var _0x19dc4d=[];var _0x2697ac=getId(_0x254817['channel'],_0x254817[_0x28fd('0x15')]?_0x254817[_0x28fd('0x15')]['id']:0x0,_0x254817[_0x28fd('0x16')]?_0x254817[_0x28fd('0x16')]['id']:0x0);if(_0x254817['applications']&&_[_0x28fd('0x17')](_0x254817[_0x28fd('0x18')])&&_0x254817['applications']['length']){for(var _0x32ec47=0x0;_0x32ec47<_0x254817['applications'][_0x28fd('0x19')];_0x32ec47+=0x1){var _0x39eea0=_0x254817[_0x28fd('0x18')][_0x32ec47];if(fs[_0x28fd('0x1a')](path['join'](__dirname,_0x28fd('0x18'),_0x39eea0[_0x28fd('0x1b')]+'.js'))){var _0x2ce7fb=[];switch(_0x39eea0[_0x28fd('0x1b')][_0x28fd('0x1c')]()){case'autoreply':var _0x1b398b=_0x39eea0[_0x28fd('0x1d')][_0x28fd('0x1e')](',');_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x0]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[_0x28fd('0x20')](0x1,_0x1b398b[_0x28fd('0x19')])[_0x28fd('0x21')](','));break;case'dialogflow':var _0x1b398b=_0x39eea0[_0x28fd('0x1d')]['split'](',');_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x0]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x1]);_0x2ce7fb['push'](_0x1b398b[_0x28fd('0x20')](0x2,_0x1b398b[_0x28fd('0x19')])[_0x28fd('0x21')](','));break;case _0x28fd('0x22'):var _0x1b398b=_0x39eea0['appdata'][_0x28fd('0x1e')](',');_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x0]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x1]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x2]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[0x3]);_0x2ce7fb[_0x28fd('0x1f')](_0x1b398b[_0x28fd('0x20')](0x4,_0x1b398b['length'])[_0x28fd('0x21')](','));break;case _0x28fd('0x15'):_0x2ce7fb[_0x28fd('0x1f')](_0x39eea0[_0x28fd('0x1d')]);break;case _0x28fd('0x23'):_0x2ce7fb[_0x28fd('0x1f')](_0x39eea0[_0x28fd('0x24')]);_0x2ce7fb[_0x28fd('0x1f')](_0x39eea0[_0x28fd('0x1d')]);break;default:_0x2ce7fb=_[_0x28fd('0xf')](_0x39eea0[_0x28fd('0x1d')])?[]:_0x39eea0['appdata']['split'](',');}var _0x348c47={'id':util[_0x28fd('0x25')](_0x28fd('0x26'),_0x2697ac,_0x39eea0['id'],_0x39eea0['app']),'condition':require(_0x28fd('0x27'))[_0x28fd('0x28')](_0x2697ac,getIntervals(_0x589a8e['intervals'],_0x39eea0),_0x589a8e),'consequence':require(_0x28fd('0x29')+_0x39eea0[_0x28fd('0x1b')])['consequence'](_0x2697ac,_0x2ce7fb,_0x589a8e,_0x254817),'p':_0x39eea0[_0x28fd('0x2a')]||0x0};logger[_0x28fd('0x2b')]('Push\x20new\x20rule',_0x348c47['id'],_0x28fd('0x2c'),getIntervals(_0x589a8e[_0x28fd('0x2d')],_0x39eea0)['join'](_0x28fd('0x2e')));_0x19dc4d[_0x28fd('0x1f')](_0x348c47);}else{logger[_0x28fd('0x2f')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x28fd('0x21')](__dirname,'applications',_0x39eea0['app']+_0x28fd('0x30')));}}_0x589a8e[_0x28fd('0x14')][_0x2697ac]=new RuleEngine(_0x19dc4d);_0x589a8e['rules'][_0x2697ac][_0x28fd('0x31')](_0x254817,function(_0x438840){logger[_0x28fd('0x2b')](_0x28fd('0x32'),JSON[_0x28fd('0x33')](_0x438840[_0x28fd('0x34')]));if(_0x589a8e[_0x28fd('0x14')][_0x2697ac]){_0x589a8e[_0x28fd('0x14')][_0x2697ac][_0x28fd('0x35')](_0x28fd('0x36'));}});return _0x58d07c({'code':0xc8,'message':_0x254817});}else{logger['info'](_0x28fd('0x37'));return _0x58d07c({'code':0xc8,'message':_0x254817});}}catch(_0x278bf8){logger['error'](_0x278bf8['stack']);return _0x23d8e5(_0x1360aa[_0x28fd('0x2f')](0x1f4,_0x278bf8));}}return _0x23d8e5(_0x28fd('0x38'));});},'AcceptMessage':function(_0x6bd1cd){var _0xb5a4e2=this;return new Promise(function(_0x29f006,_0xf78f4){if(_0x6bd1cd[_0x28fd('0x15')]&&_0x6bd1cd[_0x28fd('0x15')]['id']){try{var _0x41d3cc=getId(_0x6bd1cd['channel'],_0x6bd1cd[_0x28fd('0x15')]?_0x6bd1cd[_0x28fd('0x15')]['id']:0x0,_0x6bd1cd[_0x28fd('0x16')]?_0x6bd1cd['interaction']['id']:0x0);if(_0x589a8e[_0x28fd('0x14')][_0x41d3cc]){_0x589a8e[_0x28fd('0x14')][_0x41d3cc]['emit']('end');if(rpc[_0x6bd1cd['channel']+'QueueReport']){rpc[_0x6bd1cd[_0x28fd('0x39')]+_0x28fd('0x3a')][_0x28fd('0x3b')](_0x41d3cc,{'UserId':_0x6bd1cd[_0x28fd('0x15')][_0x28fd('0x3c')]})[_0x28fd('0x3d')](function(_0x3ce158){logger['error'](_0x28fd('0x3e'));});}}return _0x29f006({'code':0xc8,'message':_0x6bd1cd});}catch(_0xf8a3e9){logger[_0x28fd('0x2f')](_0xf8a3e9[_0x28fd('0x3f')]);return _0xf78f4(_0xb5a4e2[_0x28fd('0x2f')](0x1f4,_0xf8a3e9));}}logger[_0x28fd('0x2f')](_0x28fd('0x40'));return _0xf78f4(_0xb5a4e2['error'](0x1f4,_0x28fd('0x40')));});},'RejectMessage':function(_0x1ffde6){var _0x202b11=this;return new Promise(function(_0x1e63d5,_0x23931b){if(_0x1ffde6[_0x28fd('0x41')]&&_0x1ffde6['agent']['id']){try{if(_0x589a8e[_0x28fd('0x42')][_0x1ffde6[_0x28fd('0x41')]['id']]){_0x589a8e[_0x28fd('0x42')][_0x1ffde6[_0x28fd('0x41')]['id']][_0x28fd('0x43')]=![];_0x589a8e['agents'][_0x1ffde6['agent']['id']][_0x28fd('0x44')]=undefined;}return _0x1e63d5({'code':0xc8,'message':_0x1ffde6});}catch(_0x36c646){logger[_0x28fd('0x2f')](_0x36c646[_0x28fd('0x3f')]);return _0x23931b(_0x202b11[_0x28fd('0x2f')](0x1f4,_0x36c646));}}logger[_0x28fd('0x2f')](_0x28fd('0x40'));return _0x23931b(_0x202b11[_0x28fd('0x2f')](0x1f4,_0x28fd('0x40')));});},'AbandonInteraction':function(_0x55963f){var _0x851e01=this;return new Promise(function(_0x208158,_0x59f0a8){if(_0x55963f[_0x28fd('0x39')]&&_0x55963f[_0x28fd('0x16')]&&_0x55963f[_0x28fd('0x16')]['id']){try{var _0x34aeb7=getId(_0x55963f['channel'],_0x55963f[_0x28fd('0x15')]?_0x55963f[_0x28fd('0x15')]['id']:0x0,_0x55963f['interaction']?_0x55963f['interaction']['id']:0x0);if(_0x589a8e['rules'][_0x34aeb7]){_0x589a8e['rules'][_0x34aeb7][_0x28fd('0x35')](_0x28fd('0x36'));}return _0x208158({'code':0xc8,'message':_0x55963f});}catch(_0xb62f8f){logger[_0x28fd('0x2f')](_0xb62f8f[_0x28fd('0x3f')]);return _0x59f0a8(_0x851e01[_0x28fd('0x2f')](0x1f4,_0xb62f8f));}}logger[_0x28fd('0x2f')](_0x28fd('0x40'));return _0x59f0a8(_0x851e01['error'](0x1f4,_0x28fd('0x40')));});},'AgentCapacity':function(_0x33ae4e){var _0x149aa5=this;return new Promise(function(_0x314df3,_0xc1de22){if(_0x589a8e[_0x28fd('0x42')]['hasOwnProperty'](_0x33ae4e['id'])){for(var _0x8820 in _0x33ae4e['capacity']){if(_0x33ae4e[_0x28fd('0x45')][_0x28fd('0x46')](_0x8820)){if(_0x589a8e[_0x28fd('0x42')][_0x33ae4e['id']][_0x28fd('0x46')](_0x8820+_0x28fd('0x47'))){_0x589a8e['agents'][_0x33ae4e['id']][_0x8820+_0x28fd('0x47')]=parseInt(_0x33ae4e[_0x28fd('0x45')][_0x8820],0xa);}}}_0x589a8e[_0x28fd('0x42')][_0x33ae4e['id']]['updateRealtime']();return _0x314df3({'code':0xc8,'message':_0x589a8e['agents'][_0x33ae4e['id']]});}else{return _0xc1de22(_0x149aa5[_0x28fd('0x2f')](0x1f4,_0x28fd('0x48')));}});},'Agents':function(_0x41ea16){return new Promise(function(_0xbd3739,_0x3284ff){var _0x2f4c95=_[_0x28fd('0x49')](_0x589a8e['agents']);_0xbd3739({'count':_0x2f4c95['length'],'rows':_0x2f4c95});});},'ChatQueues':function(_0x1aeba9){return new Promise(function(_0x3d5400,_0x48c7eb){var _0x5d30b2=[];for(var _0x589443 in _0x589a8e[_0x28fd('0x4a')]){if(_0x589a8e[_0x28fd('0x4a')]['hasOwnProperty'](_0x589443)){var _0x46e273=_0x589a8e[_0x28fd('0x4a')][_0x589443];var _0x59ef93={'id':_0x46e273['id'],'available':_0x46e273[_0x28fd('0x4b')],'loggedIn':_0x46e273['loggedIn'],'name':_0x46e273[_0x28fd('0x4c')],'paused':_0x46e273[_0x28fd('0x4d')],'waiting':_0x46e273[_0x28fd('0x4e')]};_0x5d30b2['push'](_0x59ef93);}}_0x3d5400({'count':_0x5d30b2[_0x28fd('0x19')],'rows':_0x5d30b2});});},'MailQueues':function(_0x252022){return new Promise(function(_0x110137,_0x23d559){var _0x52763c=[];for(var _0x5f3cc9 in _0x589a8e[_0x28fd('0x4f')]){if(_0x589a8e[_0x28fd('0x4f')]['hasOwnProperty'](_0x5f3cc9)){var _0x45b7c2=_0x589a8e['mailQueues'][_0x5f3cc9];var _0x3a9509={'id':_0x45b7c2['id'],'available':_0x45b7c2[_0x28fd('0x4b')],'loggedIn':_0x45b7c2[_0x28fd('0x50')],'name':_0x45b7c2[_0x28fd('0x4c')],'paused':_0x45b7c2[_0x28fd('0x4d')],'waiting':_0x45b7c2[_0x28fd('0x4e')]};_0x52763c[_0x28fd('0x1f')](_0x3a9509);}}_0x110137({'count':_0x52763c[_0x28fd('0x19')],'rows':_0x52763c});});},'OpenchannelQueues':function(_0x382229){return new Promise(function(_0x46625f,_0x14b87d){var _0x6ff97a=[];for(var _0x154bc0 in _0x589a8e[_0x28fd('0x51')]){if(_0x589a8e['openchannelQueues'][_0x28fd('0x46')](_0x154bc0)){var _0x32c838=_0x589a8e[_0x28fd('0x51')][_0x154bc0];var _0x101313={'id':_0x32c838['id'],'available':_0x32c838[_0x28fd('0x4b')],'loggedIn':_0x32c838[_0x28fd('0x50')],'name':_0x32c838[_0x28fd('0x4c')],'paused':_0x32c838[_0x28fd('0x4d')],'waiting':_0x32c838[_0x28fd('0x4e')]};_0x6ff97a[_0x28fd('0x1f')](_0x101313);}}_0x46625f({'count':_0x6ff97a[_0x28fd('0x19')],'rows':_0x6ff97a});});},'SmsQueues':function(_0x531087){return new Promise(function(_0x27a557,_0x3b562c){var _0x4ad88e=[];for(var _0x19792d in _0x589a8e[_0x28fd('0x52')]){if(_0x589a8e['smsQueues']['hasOwnProperty'](_0x19792d)){var _0x5465e7=_0x589a8e[_0x28fd('0x52')][_0x19792d];var _0x1ae5be={'id':_0x5465e7['id'],'available':_0x5465e7[_0x28fd('0x4b')],'loggedIn':_0x5465e7[_0x28fd('0x50')],'name':_0x5465e7[_0x28fd('0x4c')],'paused':_0x5465e7[_0x28fd('0x4d')],'waiting':_0x5465e7['waiting']};_0x4ad88e['push'](_0x1ae5be);}}_0x27a557({'count':_0x4ad88e[_0x28fd('0x19')],'rows':_0x4ad88e});});},'FaxQueues':function(_0x1ba8f7){return new Promise(function(_0x250e52,_0x528824){var _0x1fd537=[];for(var _0x4556b4 in _0x589a8e[_0x28fd('0x53')]){if(_0x589a8e[_0x28fd('0x53')][_0x28fd('0x46')](_0x4556b4)){var _0x517f5d=_0x589a8e[_0x28fd('0x53')][_0x4556b4];var _0x185f95={'id':_0x517f5d['id'],'available':_0x517f5d['available'],'loggedIn':_0x517f5d[_0x28fd('0x50')],'name':_0x517f5d[_0x28fd('0x4c')],'paused':_0x517f5d[_0x28fd('0x4d')],'waiting':_0x517f5d[_0x28fd('0x4e')]};_0x1fd537['push'](_0x185f95);}}_0x250e52({'count':_0x1fd537['length'],'rows':_0x1fd537});});},'ChatQueuesWaitingInteractions':function(_0x2e69e7){return new Promise(function(_0x38e785,_0x212a88){var _0x431939=_[_0x28fd('0x49')](_0x589a8e[_0x28fd('0x54')]);_0x38e785({'count':_0x431939[_0x28fd('0x19')],'rows':_0x431939});});},'MailQueuesWaitingInteractions':function(_0x55ade9){return new Promise(function(_0x599c0b,_0x245a73){var _0x32fe06=_['values'](_0x589a8e['mailQueuesWaitingInteractions']);_0x599c0b({'count':_0x32fe06[_0x28fd('0x19')],'rows':_0x32fe06});});},'OpenchannelQueuesWaitingInteractions':function(_0x380307){return new Promise(function(_0x12ae16,_0x3007e0){var _0x5c3605=_['values'](_0x589a8e[_0x28fd('0x55')]);_0x12ae16({'count':_0x5c3605[_0x28fd('0x19')],'rows':_0x5c3605});});},'SmsQueuesWaitingInteractions':function(_0x1365ff){return new Promise(function(_0xff145,_0x48b476){var _0x1eec5f=_['values'](_0x589a8e['smsQueuesWaitingInteractions']);_0xff145({'count':_0x1eec5f['length'],'rows':_0x1eec5f});});},'FaxQueuesWaitingInteractions':function(_0x2d41c8){return new Promise(function(_0x3f86f7,_0x5e7ba3){var _0x381977=_[_0x28fd('0x49')](_0x589a8e[_0x28fd('0x56')]);_0x3f86f7({'count':_0x381977[_0x28fd('0x19')],'rows':_0x381977});});}};var _0x27790d=jayson[_0x28fd('0x57')](_0x2e6251)[_0x28fd('0x58')]();_0x27790d['on'](_0x28fd('0x2f'),function(_0x24a724){logger[_0x28fd('0x2f')](JSON['stringify'](_0x24a724));return _0x305533(_0x24a724);});_0x27790d[_0x28fd('0x13')](0x232c,_0x28fd('0x59'),function(){console[_0x28fd('0x5a')](_0x28fd('0x5b'),0x232c);return _0x5681ae('RPC\x20listening\x20on\x20port:'+0x232c);});});};