aff388ea437e0369e435ef9d8bc2eaf08c44fa93
[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 _0x83c2=['CurrentCapacity','updateRealtime','values','chatQueues','name','paused','waiting','mailQueues','available','loggedIn','openchannelQueues','smsQueues','faxQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','map','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','app','.js','toLowerCase','autoreply','appdata','push','slice','join','split','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','stringify','complete','stack','routing\x20is\x20empty','emit','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','end','hasOwnProperty','capacity'];(function(_0x401e3d,_0x55ac65){var _0x2bbc4e=function(_0x275c96){while(--_0x275c96){_0x401e3d['push'](_0x401e3d['shift']());}};_0x2bbc4e(++_0x55ac65);}(_0x83c2,0x17d));var _0x283c=function(_0x5216e0,_0x4f8cb9){_0x5216e0=_0x5216e0-0x0;var _0x5b3f40=_0x83c2[_0x5216e0];return _0x5b3f40;};'use strict';var _=require('lodash');var util=require(_0x283c('0x0'));var path=require(_0x283c('0x1'));var fs=require('fs');var jayson=require(_0x283c('0x2'));var BPromise=require(_0x283c('0x3'));var uuid=require(_0x283c('0x4'));var config=require('../../../config/environment');var logger=require(_0x283c('0x5'))('routing');var rpc={'openchannelQueueReport':require(_0x283c('0x6'))};var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x283c('0x7')),'chatQueueReport':require(_0x283c('0x8')),'smsQueueReport':require(_0x283c('0x9')),'faxQueueReport':require(_0x283c('0xa'))};var RuleEngine=require(_0x283c('0xb'));function getId(_0x48c91a,_0x4fe540,_0x52f675){return util[_0x283c('0xc')](_0x283c('0xd'),_0x48c91a,_0x4fe540||0x0,_0x52f675||0x0);}function getIntervals(_0x233e1a,_0x46299e){var _0x5b6700=[];if(!_['isNil'](_0x46299e[_0x283c('0xe')])&&!_['isNil'](_0x233e1a[_0x46299e[_0x283c('0xe')]])&&!_[_0x283c('0xf')](_0x233e1a[_0x46299e[_0x283c('0xe')]]['Intervals'])){_0x5b6700=_[_0x283c('0x10')](_0x233e1a[_0x46299e['IntervalId']][_0x283c('0x11')],_0x283c('0x12'));}else if(!_['isNil'](_0x46299e['interval'])){_0x5b6700=[_0x46299e[_0x283c('0x12')]];}return _0x5b6700;}exports[_0x283c('0x13')]=function(_0x296bf5){_0x296bf5[_0x283c('0x14')]={};return new BPromise(function(_0x267632,_0x55d5b3){var _0x24fec0={'Start':function(_0x45bf62){var _0x1915db=this;return new Promise(function(_0x6a4518,_0x4eb6b6){if(_0x45bf62){try{var _0x178b40=[];var _0x4625d7=getId(_0x45bf62[_0x283c('0x15')],_0x45bf62[_0x283c('0x16')]?_0x45bf62[_0x283c('0x16')]['id']:0x0,_0x45bf62[_0x283c('0x17')]?_0x45bf62['interaction']['id']:0x0);if(_0x45bf62[_0x283c('0x18')]&&_[_0x283c('0x19')](_0x45bf62[_0x283c('0x18')])&&_0x45bf62[_0x283c('0x18')][_0x283c('0x1a')]){for(var _0x5140ce=0x0;_0x5140ce<_0x45bf62[_0x283c('0x18')]['length'];_0x5140ce+=0x1){var _0x2a3322=_0x45bf62[_0x283c('0x18')][_0x5140ce];if(fs['existsSync'](path['join'](__dirname,_0x283c('0x18'),_0x2a3322[_0x283c('0x1b')]+_0x283c('0x1c')))){var _0x38ad79=[];switch(_0x2a3322[_0x283c('0x1b')][_0x283c('0x1d')]()){case _0x283c('0x1e'):var _0x2cc01b=_0x2a3322[_0x283c('0x1f')]['split'](',');_0x38ad79[_0x283c('0x20')](_0x2cc01b[0x0]);_0x38ad79[_0x283c('0x20')](_0x2cc01b[_0x283c('0x21')](0x1,_0x2cc01b['length'])[_0x283c('0x22')](','));break;case'dialogflow':var _0x58ed91=_0x2a3322['appdata'][_0x283c('0x23')](',');_0x38ad79[_0x283c('0x20')](_0x58ed91[0x0]);_0x38ad79[_0x283c('0x20')](_0x58ed91[0x1]);_0x38ad79[_0x283c('0x20')](_0x58ed91[_0x283c('0x21')](0x2,_0x58ed91[_0x283c('0x1a')])[_0x283c('0x22')](','));break;case _0x283c('0x24'):var _0x2fe280=_0x2a3322[_0x283c('0x1f')][_0x283c('0x23')](',');_0x38ad79[_0x283c('0x20')](_0x2fe280[0x0]);_0x38ad79['push'](_0x2fe280[0x1]);_0x38ad79[_0x283c('0x20')](_0x2fe280[0x2]);_0x38ad79[_0x283c('0x20')](_0x2fe280[0x3]);_0x38ad79['push'](_0x2fe280[_0x283c('0x21')](0x4,_0x2fe280[_0x283c('0x1a')])[_0x283c('0x22')](','));break;case'message':_0x38ad79[_0x283c('0x20')](_0x2a3322[_0x283c('0x1f')]);break;case _0x283c('0x25'):_0x38ad79[_0x283c('0x20')](_0x2a3322[_0x283c('0x26')]);_0x38ad79[_0x283c('0x20')](_0x2a3322['appdata']);break;default:_0x38ad79=_[_0x283c('0xf')](_0x2a3322[_0x283c('0x1f')])?[]:_0x2a3322[_0x283c('0x1f')][_0x283c('0x23')](',');}var _0x5cc1df={'id':util['format'](_0x283c('0x27'),_0x4625d7,_0x2a3322['id'],_0x2a3322[_0x283c('0x1b')]),'condition':require(_0x283c('0x28'))[_0x283c('0x29')](_0x4625d7,getIntervals(_0x296bf5[_0x283c('0x2a')],_0x2a3322),_0x296bf5),'consequence':require(_0x283c('0x2b')+_0x2a3322[_0x283c('0x1b')])[_0x283c('0x2c')](_0x4625d7,_0x38ad79,_0x296bf5,_0x45bf62),'p':_0x2a3322[_0x283c('0x2d')]||0x0};logger['info'](_0x283c('0x2e'),_0x5cc1df['id'],'on\x20interval',getIntervals(_0x296bf5['intervals'],_0x2a3322)['join'](_0x283c('0x2f')));_0x178b40['push'](_0x5cc1df);}else{logger[_0x283c('0x30')](_0x283c('0x31'),path[_0x283c('0x22')](__dirname,_0x283c('0x18'),_0x2a3322[_0x283c('0x1b')]+_0x283c('0x1c')));}}_0x296bf5[_0x283c('0x14')][_0x4625d7]=new RuleEngine(_0x178b40);_0x296bf5[_0x283c('0x14')][_0x4625d7][_0x283c('0x32')](_0x45bf62,function(_0x4be646){logger[_0x283c('0x33')](_0x283c('0x34'),JSON[_0x283c('0x35')](_0x4be646['matchPath']));if(_0x296bf5[_0x283c('0x14')][_0x4625d7]){_0x296bf5[_0x283c('0x14')][_0x4625d7]['emit'](_0x283c('0x36'));}});return _0x6a4518({'code':0xc8,'message':_0x45bf62});}else{logger[_0x283c('0x33')]('No\x20applications\x20to\x20execute');return _0x6a4518({'code':0xc8,'message':_0x45bf62});}}catch(_0x463dfe){logger[_0x283c('0x30')](_0x463dfe[_0x283c('0x37')]);return _0x4eb6b6(_0x1915db['error'](0x1f4,_0x463dfe));}}return _0x4eb6b6(_0x283c('0x38'));});},'AcceptMessage':function(_0x3b3aa5){var _0x56f46b=this;return new Promise(function(_0x51dc81,_0x30c6e1){if(_0x3b3aa5['message']&&_0x3b3aa5[_0x283c('0x16')]['id']){try{var _0x4d6bae=getId(_0x3b3aa5['channel'],_0x3b3aa5[_0x283c('0x16')]?_0x3b3aa5[_0x283c('0x16')]['id']:0x0,_0x3b3aa5[_0x283c('0x17')]?_0x3b3aa5[_0x283c('0x17')]['id']:0x0);if(_0x296bf5[_0x283c('0x14')][_0x4d6bae]){_0x296bf5['rules'][_0x4d6bae][_0x283c('0x39')]('end');if(rpc[_0x3b3aa5[_0x283c('0x15')]+_0x283c('0x3a')]){rpc[_0x3b3aa5['channel']+_0x283c('0x3a')][_0x283c('0x3b')](_0x4d6bae,{'UserId':_0x3b3aa5[_0x283c('0x16')][_0x283c('0x3c')]})[_0x283c('0x3d')](function(_0x25549f){logger[_0x283c('0x30')](_0x283c('0x3e'));});}}return _0x51dc81({'code':0xc8,'message':_0x3b3aa5});}catch(_0xa26f09){logger[_0x283c('0x30')](_0xa26f09[_0x283c('0x37')]);return _0x30c6e1(_0x56f46b[_0x283c('0x30')](0x1f4,_0xa26f09));}}logger['error'](_0x283c('0x3f'));return _0x30c6e1(_0x56f46b[_0x283c('0x30')](0x1f4,_0x283c('0x3f')));});},'RejectMessage':function(_0x36f6b1){var _0x35e9f2=this;return new Promise(function(_0x48e96c,_0x1815a6){if(_0x36f6b1['agent']&&_0x36f6b1[_0x283c('0x40')]['id']){try{if(_0x296bf5[_0x283c('0x41')][_0x36f6b1[_0x283c('0x40')]['id']]){_0x296bf5[_0x283c('0x41')][_0x36f6b1[_0x283c('0x40')]['id']]['busy']=![];_0x296bf5[_0x283c('0x41')][_0x36f6b1[_0x283c('0x40')]['id']]['busyQueue']=undefined;}return _0x48e96c({'code':0xc8,'message':_0x36f6b1});}catch(_0x20f58e){logger[_0x283c('0x30')](_0x20f58e[_0x283c('0x37')]);return _0x1815a6(_0x35e9f2['error'](0x1f4,_0x20f58e));}}logger[_0x283c('0x30')](_0x283c('0x3f'));return _0x1815a6(_0x35e9f2[_0x283c('0x30')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x2b60c2){var _0x467dda=this;return new Promise(function(_0x40008a,_0x4d98e5){if(_0x2b60c2[_0x283c('0x15')]&&_0x2b60c2[_0x283c('0x17')]&&_0x2b60c2[_0x283c('0x17')]['id']){try{var _0x9b1282=getId(_0x2b60c2[_0x283c('0x15')],_0x2b60c2['message']?_0x2b60c2[_0x283c('0x16')]['id']:0x0,_0x2b60c2[_0x283c('0x17')]?_0x2b60c2[_0x283c('0x17')]['id']:0x0);if(_0x296bf5[_0x283c('0x14')][_0x9b1282]){_0x296bf5[_0x283c('0x14')][_0x9b1282][_0x283c('0x39')](_0x283c('0x42'));}return _0x40008a({'code':0xc8,'message':_0x2b60c2});}catch(_0xc900f8){logger[_0x283c('0x30')](_0xc900f8[_0x283c('0x37')]);return _0x4d98e5(_0x467dda[_0x283c('0x30')](0x1f4,_0xc900f8));}}logger[_0x283c('0x30')]('message\x20is\x20empty');return _0x4d98e5(_0x467dda[_0x283c('0x30')](0x1f4,_0x283c('0x3f')));});},'AgentCapacity':function(_0x4875a7){var _0x2ea77b=this;return new Promise(function(_0x28aeec,_0x51f63a){if(_0x296bf5['agents'][_0x283c('0x43')](_0x4875a7['id'])){for(var _0x340e1a in _0x4875a7[_0x283c('0x44')]){if(_0x4875a7[_0x283c('0x44')][_0x283c('0x43')](_0x340e1a)){if(_0x296bf5[_0x283c('0x41')][_0x4875a7['id']][_0x283c('0x43')](_0x340e1a+_0x283c('0x45'))){_0x296bf5[_0x283c('0x41')][_0x4875a7['id']][_0x340e1a+_0x283c('0x45')]=parseInt(_0x4875a7[_0x283c('0x44')][_0x340e1a],0xa);}}}_0x296bf5['agents'][_0x4875a7['id']][_0x283c('0x46')]();return _0x28aeec({'code':0xc8,'message':_0x296bf5['agents'][_0x4875a7['id']]});}else{return _0x51f63a(_0x2ea77b[_0x283c('0x30')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x23574d){return new Promise(function(_0x238474,_0x3a12ba){var _0x2c12f6=_[_0x283c('0x47')](_0x296bf5[_0x283c('0x41')]);_0x238474({'count':_0x2c12f6[_0x283c('0x1a')],'rows':_0x2c12f6});});},'ChatQueues':function(_0x1af169){return new Promise(function(_0x330c46,_0x427bef){var _0x5d97ab=[];for(var _0x54547b in _0x296bf5[_0x283c('0x48')]){if(_0x296bf5[_0x283c('0x48')]['hasOwnProperty'](_0x54547b)){var _0x175c39=_0x296bf5[_0x283c('0x48')][_0x54547b];var _0x32719e={'id':_0x175c39['id'],'available':_0x175c39['available'],'loggedIn':_0x175c39['loggedIn'],'name':_0x175c39[_0x283c('0x49')],'paused':_0x175c39[_0x283c('0x4a')],'waiting':_0x175c39[_0x283c('0x4b')]};_0x5d97ab[_0x283c('0x20')](_0x32719e);}}_0x330c46({'count':_0x5d97ab['length'],'rows':_0x5d97ab});});},'MailQueues':function(_0x596665){return new Promise(function(_0x1e48ba,_0x97613f){var _0x5a2476=[];for(var _0x4a39ee in _0x296bf5['mailQueues']){if(_0x296bf5[_0x283c('0x4c')][_0x283c('0x43')](_0x4a39ee)){var _0x2b0ca4=_0x296bf5[_0x283c('0x4c')][_0x4a39ee];var _0x3a4cb8={'id':_0x2b0ca4['id'],'available':_0x2b0ca4[_0x283c('0x4d')],'loggedIn':_0x2b0ca4[_0x283c('0x4e')],'name':_0x2b0ca4[_0x283c('0x49')],'paused':_0x2b0ca4['paused'],'waiting':_0x2b0ca4['waiting']};_0x5a2476[_0x283c('0x20')](_0x3a4cb8);}}_0x1e48ba({'count':_0x5a2476['length'],'rows':_0x5a2476});});},'OpenchannelQueues':function(_0x251411){return new Promise(function(_0x6bd953,_0x5b5784){var _0x2070c2=[];for(var _0x3b2068 in _0x296bf5[_0x283c('0x4f')]){if(_0x296bf5[_0x283c('0x4f')][_0x283c('0x43')](_0x3b2068)){var _0x4de7b6=_0x296bf5[_0x283c('0x4f')][_0x3b2068];var _0x32755e={'id':_0x4de7b6['id'],'available':_0x4de7b6[_0x283c('0x4d')],'loggedIn':_0x4de7b6['loggedIn'],'name':_0x4de7b6[_0x283c('0x49')],'paused':_0x4de7b6[_0x283c('0x4a')],'waiting':_0x4de7b6[_0x283c('0x4b')]};_0x2070c2[_0x283c('0x20')](_0x32755e);}}_0x6bd953({'count':_0x2070c2[_0x283c('0x1a')],'rows':_0x2070c2});});},'SmsQueues':function(_0xf74830){return new Promise(function(_0x30cd4d,_0x153cc8){var _0x222bcd=[];for(var _0x159191 in _0x296bf5['smsQueues']){if(_0x296bf5[_0x283c('0x50')][_0x283c('0x43')](_0x159191)){var _0x270b90=_0x296bf5['smsQueues'][_0x159191];var _0x3e1794={'id':_0x270b90['id'],'available':_0x270b90[_0x283c('0x4d')],'loggedIn':_0x270b90['loggedIn'],'name':_0x270b90['name'],'paused':_0x270b90[_0x283c('0x4a')],'waiting':_0x270b90[_0x283c('0x4b')]};_0x222bcd['push'](_0x3e1794);}}_0x30cd4d({'count':_0x222bcd[_0x283c('0x1a')],'rows':_0x222bcd});});},'FaxQueues':function(_0x1b7164){return new Promise(function(_0x14637f,_0x164fb2){var _0x5de3d5=[];for(var _0x4e4176 in _0x296bf5[_0x283c('0x51')]){if(_0x296bf5[_0x283c('0x51')][_0x283c('0x43')](_0x4e4176)){var _0x813d5=_0x296bf5['faxQueues'][_0x4e4176];var _0xb7244a={'id':_0x813d5['id'],'available':_0x813d5[_0x283c('0x4d')],'loggedIn':_0x813d5['loggedIn'],'name':_0x813d5['name'],'paused':_0x813d5[_0x283c('0x4a')],'waiting':_0x813d5[_0x283c('0x4b')]};_0x5de3d5[_0x283c('0x20')](_0xb7244a);}}_0x14637f({'count':_0x5de3d5[_0x283c('0x1a')],'rows':_0x5de3d5});});},'ChatQueuesWaitingInteractions':function(_0x694b39){return new Promise(function(_0x1a0b33,_0xa01ed6){var _0x1133f0=_[_0x283c('0x47')](_0x296bf5[_0x283c('0x52')]);_0x1a0b33({'count':_0x1133f0['length'],'rows':_0x1133f0});});},'MailQueuesWaitingInteractions':function(_0x3a6130){return new Promise(function(_0x4a09fe,_0x336e5e){var _0x3b7201=_[_0x283c('0x47')](_0x296bf5[_0x283c('0x53')]);_0x4a09fe({'count':_0x3b7201[_0x283c('0x1a')],'rows':_0x3b7201});});},'OpenchannelQueuesWaitingInteractions':function(_0x155fc5){return new Promise(function(_0x540caa,_0x236800){var _0x214386=_[_0x283c('0x47')](_0x296bf5[_0x283c('0x54')]);_0x540caa({'count':_0x214386[_0x283c('0x1a')],'rows':_0x214386});});},'SmsQueuesWaitingInteractions':function(_0x33db20){return new Promise(function(_0x28565d,_0x493e4e){var _0x3fd472=_[_0x283c('0x47')](_0x296bf5['smsQueuesWaitingInteractions']);_0x28565d({'count':_0x3fd472[_0x283c('0x1a')],'rows':_0x3fd472});});},'FaxQueuesWaitingInteractions':function(_0x4643f0){return new Promise(function(_0x327155,_0x5a9cb0){var _0xe8cf36=_[_0x283c('0x47')](_0x296bf5[_0x283c('0x55')]);_0x327155({'count':_0xe8cf36['length'],'rows':_0xe8cf36});});}};var _0x10896d=jayson['server'](_0x24fec0)['http']();_0x10896d['on'](_0x283c('0x30'),function(_0x25a188){logger[_0x283c('0x30')](JSON[_0x283c('0x35')](_0x25a188));return _0x55d5b3(_0x25a188);});_0x10896d[_0x283c('0x13')](0x232c,_0x283c('0x56'),function(){console[_0x283c('0x57')](_0x283c('0x58'),0x232c);return _0x267632(_0x283c('0x59')+0x232c);});});};