c7da55ed625b2fa98cc59f92c928811fab54f044
[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 _0xc1c8=['Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','autoreply','split','push','slice','dialogflow','appdata','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','info','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','server','http','log','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','IntervalId','isNil'];(function(_0x1e9424,_0x191cba){var _0x1bd96c=function(_0x5e952d){while(--_0x5e952d){_0x1e9424['push'](_0x1e9424['shift']());}};_0x1bd96c(++_0x191cba);}(_0xc1c8,0x160));var _0x8c1c=function(_0x502bcf,_0x2abf07){_0x502bcf=_0x502bcf-0x0;var _0x286c0f=_0xc1c8[_0x502bcf];return _0x286c0f;};'use strict';var _=require(_0x8c1c('0x0'));var util=require(_0x8c1c('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x8c1c('0x2'));var BPromise=require(_0x8c1c('0x3'));var uuid=require(_0x8c1c('0x4'));var config=require(_0x8c1c('0x5'));var logger=require(_0x8c1c('0x6'))('routing');var rpc={'openchannelQueueReport':require(_0x8c1c('0x7'))};var rpc={'openchannelQueueReport':require(_0x8c1c('0x7')),'mailQueueReport':require(_0x8c1c('0x8')),'chatQueueReport':require(_0x8c1c('0x9')),'smsQueueReport':require(_0x8c1c('0xa')),'faxQueueReport':require(_0x8c1c('0xb'))};var RuleEngine=require(_0x8c1c('0xc'));function getId(_0x557c9a,_0x34f958,_0x3e384f){return util[_0x8c1c('0xd')]('%s.%s.%s',_0x557c9a,_0x34f958||0x0,_0x3e384f||0x0);}function getIntervals(_0x2170e6,_0x4521b9){var _0x53e332=[];if(!_['isNil'](_0x4521b9['IntervalId'])&&!_['isNil'](_0x2170e6[_0x4521b9[_0x8c1c('0xe')]])&&!_[_0x8c1c('0xf')](_0x2170e6[_0x4521b9['IntervalId']][_0x8c1c('0x10')])){_0x53e332=_['map'](_0x2170e6[_0x4521b9[_0x8c1c('0xe')]][_0x8c1c('0x10')],_0x8c1c('0x11'));}else if(!_[_0x8c1c('0xf')](_0x4521b9['interval'])){_0x53e332=[_0x4521b9[_0x8c1c('0x11')]];}return _0x53e332;}exports[_0x8c1c('0x12')]=function(_0x15a029){_0x15a029[_0x8c1c('0x13')]={};return new BPromise(function(_0xe687ac,_0x1e3d95){var _0x497b3e={'Start':function(_0x12efe8){var _0x9fc675=this;return new Promise(function(_0x16d9b3,_0x12252e){if(_0x12efe8){try{var _0x3f7b92=[];var _0x46cb0a=getId(_0x12efe8[_0x8c1c('0x14')],_0x12efe8[_0x8c1c('0x15')]?_0x12efe8[_0x8c1c('0x15')]['id']:0x0,_0x12efe8[_0x8c1c('0x16')]?_0x12efe8['interaction']['id']:0x0);if(_0x12efe8[_0x8c1c('0x17')]&&_[_0x8c1c('0x18')](_0x12efe8[_0x8c1c('0x17')])&&_0x12efe8[_0x8c1c('0x17')][_0x8c1c('0x19')]){for(var _0x3a35b1=0x0;_0x3a35b1<_0x12efe8[_0x8c1c('0x17')][_0x8c1c('0x19')];_0x3a35b1+=0x1){var _0x75d4d=_0x12efe8[_0x8c1c('0x17')][_0x3a35b1];if(fs[_0x8c1c('0x1a')](path[_0x8c1c('0x1b')](__dirname,_0x8c1c('0x17'),_0x75d4d['app']+'.js'))){var _0x1e71a9=[];switch(_0x75d4d[_0x8c1c('0x1c')]['toLowerCase']()){case _0x8c1c('0x1d'):var _0x5b71b8=_0x75d4d['appdata'][_0x8c1c('0x1e')](',');_0x1e71a9[_0x8c1c('0x1f')](_0x5b71b8[0x0]);_0x1e71a9[_0x8c1c('0x1f')](_0x5b71b8[_0x8c1c('0x20')](0x1,_0x5b71b8[_0x8c1c('0x19')])['join'](','));break;case _0x8c1c('0x21'):var _0x262b03=_0x75d4d[_0x8c1c('0x22')]['split'](',');_0x1e71a9[_0x8c1c('0x1f')](_0x262b03[0x0]);_0x1e71a9['push'](_0x262b03[0x1]);_0x1e71a9['push'](_0x262b03[_0x8c1c('0x20')](0x2,_0x262b03[_0x8c1c('0x19')])[_0x8c1c('0x1b')](','));break;case _0x8c1c('0x23'):var _0x3dbe2e=_0x75d4d[_0x8c1c('0x22')][_0x8c1c('0x1e')](',');_0x1e71a9[_0x8c1c('0x1f')](_0x3dbe2e[0x0]);_0x1e71a9[_0x8c1c('0x1f')](_0x3dbe2e[0x1]);_0x1e71a9[_0x8c1c('0x1f')](_0x3dbe2e[0x2]);_0x1e71a9[_0x8c1c('0x1f')](_0x3dbe2e[0x3]);_0x1e71a9[_0x8c1c('0x1f')](_0x3dbe2e[_0x8c1c('0x20')](0x4,_0x3dbe2e['length'])[_0x8c1c('0x1b')](','));break;case _0x8c1c('0x15'):_0x1e71a9[_0x8c1c('0x1f')](_0x75d4d[_0x8c1c('0x22')]);break;case _0x8c1c('0x24'):_0x1e71a9[_0x8c1c('0x1f')](_0x75d4d[_0x8c1c('0x25')]);_0x1e71a9['push'](_0x75d4d['appdata']);break;default:_0x1e71a9=_['isNil'](_0x75d4d[_0x8c1c('0x22')])?[]:_0x75d4d['appdata']['split'](',');}var _0x592e73={'id':util[_0x8c1c('0xd')](_0x8c1c('0x26'),_0x46cb0a,_0x75d4d['id'],_0x75d4d[_0x8c1c('0x1c')]),'condition':require(_0x8c1c('0x27'))[_0x8c1c('0x28')](_0x46cb0a,getIntervals(_0x15a029['intervals'],_0x75d4d),_0x15a029),'consequence':require(_0x8c1c('0x29')+_0x75d4d[_0x8c1c('0x1c')])[_0x8c1c('0x2a')](_0x46cb0a,_0x1e71a9,_0x15a029,_0x12efe8),'p':_0x75d4d[_0x8c1c('0x2b')]||0x0};logger['info'](_0x8c1c('0x2c'),_0x592e73['id'],_0x8c1c('0x2d'),getIntervals(_0x15a029[_0x8c1c('0x2e')],_0x75d4d)[_0x8c1c('0x1b')](_0x8c1c('0x2f')));_0x3f7b92[_0x8c1c('0x1f')](_0x592e73);}else{logger[_0x8c1c('0x30')](_0x8c1c('0x31'),path[_0x8c1c('0x1b')](__dirname,_0x8c1c('0x17'),_0x75d4d[_0x8c1c('0x1c')]+_0x8c1c('0x32')));}}_0x15a029['rules'][_0x46cb0a]=new RuleEngine(_0x3f7b92);_0x15a029[_0x8c1c('0x13')][_0x46cb0a][_0x8c1c('0x33')](_0x12efe8,function(_0x7e189d){logger[_0x8c1c('0x34')](_0x8c1c('0x35'),JSON[_0x8c1c('0x36')](_0x7e189d[_0x8c1c('0x37')]));if(_0x15a029[_0x8c1c('0x13')][_0x46cb0a]){_0x15a029[_0x8c1c('0x13')][_0x46cb0a][_0x8c1c('0x38')](_0x8c1c('0x39'));}});return _0x16d9b3({'code':0xc8,'message':_0x12efe8});}else{logger['info'](_0x8c1c('0x3a'));return _0x16d9b3({'code':0xc8,'message':_0x12efe8});}}catch(_0x9d371f){logger[_0x8c1c('0x30')](_0x9d371f[_0x8c1c('0x3b')]);return _0x12252e(_0x9fc675['error'](0x1f4,_0x9d371f));}}return _0x12252e('routing\x20is\x20empty');});},'AcceptMessage':function(_0x4356fc){var _0x522230=this;return new Promise(function(_0x2e83ef,_0x12ef2a){if(_0x4356fc[_0x8c1c('0x15')]&&_0x4356fc['message']['id']){try{var _0x3177b6=getId(_0x4356fc['channel'],_0x4356fc[_0x8c1c('0x15')]?_0x4356fc['message']['id']:0x0,_0x4356fc['interaction']?_0x4356fc[_0x8c1c('0x16')]['id']:0x0);if(_0x15a029['rules'][_0x3177b6]){_0x15a029['rules'][_0x3177b6][_0x8c1c('0x38')](_0x8c1c('0x3c'));if(rpc[_0x4356fc[_0x8c1c('0x14')]+'QueueReport']){rpc[_0x4356fc[_0x8c1c('0x14')]+_0x8c1c('0x3d')][_0x8c1c('0x3e')](_0x3177b6,{'UserId':_0x4356fc['message'][_0x8c1c('0x3f')]})[_0x8c1c('0x40')](function(_0x29f7d6){logger['error'](_0x8c1c('0x41'));});}}return _0x2e83ef({'code':0xc8,'message':_0x4356fc});}catch(_0xd608ce){logger['error'](_0xd608ce['stack']);return _0x12ef2a(_0x522230[_0x8c1c('0x30')](0x1f4,_0xd608ce));}}logger[_0x8c1c('0x30')]('message\x20is\x20empty');return _0x12ef2a(_0x522230[_0x8c1c('0x30')](0x1f4,_0x8c1c('0x42')));});},'RejectMessage':function(_0x4b74ed){var _0x414c6f=this;return new Promise(function(_0x27055f,_0x1c9fff){if(_0x4b74ed[_0x8c1c('0x43')]&&_0x4b74ed[_0x8c1c('0x43')]['id']){try{if(_0x15a029[_0x8c1c('0x44')][_0x4b74ed[_0x8c1c('0x43')]['id']]){_0x15a029['agents'][_0x4b74ed[_0x8c1c('0x43')]['id']][_0x8c1c('0x45')]=![];_0x15a029[_0x8c1c('0x44')][_0x4b74ed[_0x8c1c('0x43')]['id']][_0x8c1c('0x46')]=undefined;}return _0x27055f({'code':0xc8,'message':_0x4b74ed});}catch(_0x3b5777){logger[_0x8c1c('0x30')](_0x3b5777[_0x8c1c('0x3b')]);return _0x1c9fff(_0x414c6f[_0x8c1c('0x30')](0x1f4,_0x3b5777));}}logger[_0x8c1c('0x30')](_0x8c1c('0x42'));return _0x1c9fff(_0x414c6f['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x1912de){var _0x5b0736=this;return new Promise(function(_0x106b3b,_0x1583b3){if(_0x1912de['channel']&&_0x1912de[_0x8c1c('0x16')]&&_0x1912de[_0x8c1c('0x16')]['id']){try{var _0xf6f2d2=getId(_0x1912de[_0x8c1c('0x14')],_0x1912de[_0x8c1c('0x15')]?_0x1912de[_0x8c1c('0x15')]['id']:0x0,_0x1912de[_0x8c1c('0x16')]?_0x1912de[_0x8c1c('0x16')]['id']:0x0);if(_0x15a029[_0x8c1c('0x13')][_0xf6f2d2]){_0x15a029['rules'][_0xf6f2d2][_0x8c1c('0x38')]('end');}return _0x106b3b({'code':0xc8,'message':_0x1912de});}catch(_0x4223b6){logger['error'](_0x4223b6[_0x8c1c('0x3b')]);return _0x1583b3(_0x5b0736[_0x8c1c('0x30')](0x1f4,_0x4223b6));}}logger['error'](_0x8c1c('0x42'));return _0x1583b3(_0x5b0736[_0x8c1c('0x30')](0x1f4,_0x8c1c('0x42')));});},'AgentCapacity':function(_0x1b3e0){var _0x5ceec1=this;return new Promise(function(_0x1f3ef8,_0x50de09){if(_0x15a029[_0x8c1c('0x44')][_0x8c1c('0x47')](_0x1b3e0['id'])){for(var _0x558579 in _0x1b3e0[_0x8c1c('0x48')]){if(_0x1b3e0['capacity'][_0x8c1c('0x47')](_0x558579)){if(_0x15a029[_0x8c1c('0x44')][_0x1b3e0['id']][_0x8c1c('0x47')](_0x558579+'CurrentCapacity')){_0x15a029[_0x8c1c('0x44')][_0x1b3e0['id']][_0x558579+_0x8c1c('0x49')]=parseInt(_0x1b3e0['capacity'][_0x558579],0xa);}}}_0x15a029[_0x8c1c('0x44')][_0x1b3e0['id']]['updateRealtime']();return _0x1f3ef8({'code':0xc8,'message':_0x15a029[_0x8c1c('0x44')][_0x1b3e0['id']]});}else{return _0x50de09(_0x5ceec1[_0x8c1c('0x30')](0x1f4,_0x8c1c('0x4a')));}});},'Agents':function(_0x3664c8){return new Promise(function(_0x85cee7,_0x45233b){var _0x3764a4=_[_0x8c1c('0x4b')](_0x15a029['agents']);_0x85cee7({'count':_0x3764a4['length'],'rows':_0x3764a4});});},'ChatQueues':function(_0x5397f0){return new Promise(function(_0x45fadd,_0x5811b8){var _0x1608c8=[];for(var _0x114b5b in _0x15a029[_0x8c1c('0x4c')]){if(_0x15a029[_0x8c1c('0x4c')][_0x8c1c('0x47')](_0x114b5b)){var _0x2cb75d=_0x15a029[_0x8c1c('0x4c')][_0x114b5b];var _0x46411b={'id':_0x2cb75d['id'],'available':_0x2cb75d[_0x8c1c('0x4d')],'loggedIn':_0x2cb75d[_0x8c1c('0x4e')],'name':_0x2cb75d['name'],'paused':_0x2cb75d[_0x8c1c('0x4f')],'waiting':_0x2cb75d[_0x8c1c('0x50')]};_0x1608c8[_0x8c1c('0x1f')](_0x46411b);}}_0x45fadd({'count':_0x1608c8[_0x8c1c('0x19')],'rows':_0x1608c8});});},'MailQueues':function(_0x4db53c){return new Promise(function(_0x14186c,_0x5bbcdc){var _0x5b8cf4=[];for(var _0x5915da in _0x15a029[_0x8c1c('0x51')]){if(_0x15a029[_0x8c1c('0x51')][_0x8c1c('0x47')](_0x5915da)){var _0x90fca8=_0x15a029[_0x8c1c('0x51')][_0x5915da];var _0xf3871f={'id':_0x90fca8['id'],'available':_0x90fca8[_0x8c1c('0x4d')],'loggedIn':_0x90fca8[_0x8c1c('0x4e')],'name':_0x90fca8[_0x8c1c('0x52')],'paused':_0x90fca8[_0x8c1c('0x4f')],'waiting':_0x90fca8['waiting']};_0x5b8cf4[_0x8c1c('0x1f')](_0xf3871f);}}_0x14186c({'count':_0x5b8cf4[_0x8c1c('0x19')],'rows':_0x5b8cf4});});},'OpenchannelQueues':function(_0x22d6a2){return new Promise(function(_0x2bbdba,_0x304ac8){var _0x58aaca=[];for(var _0x368d9e in _0x15a029[_0x8c1c('0x53')]){if(_0x15a029['openchannelQueues'][_0x8c1c('0x47')](_0x368d9e)){var _0x4fab3f=_0x15a029[_0x8c1c('0x53')][_0x368d9e];var _0x1289a0={'id':_0x4fab3f['id'],'available':_0x4fab3f[_0x8c1c('0x4d')],'loggedIn':_0x4fab3f[_0x8c1c('0x4e')],'name':_0x4fab3f[_0x8c1c('0x52')],'paused':_0x4fab3f['paused'],'waiting':_0x4fab3f[_0x8c1c('0x50')]};_0x58aaca[_0x8c1c('0x1f')](_0x1289a0);}}_0x2bbdba({'count':_0x58aaca[_0x8c1c('0x19')],'rows':_0x58aaca});});},'SmsQueues':function(_0x1b7608){return new Promise(function(_0xc52ec3,_0x2afa74){var _0x4feb10=[];for(var _0x319ed0 in _0x15a029[_0x8c1c('0x54')]){if(_0x15a029[_0x8c1c('0x54')]['hasOwnProperty'](_0x319ed0)){var _0x258595=_0x15a029[_0x8c1c('0x54')][_0x319ed0];var _0x3e68ee={'id':_0x258595['id'],'available':_0x258595[_0x8c1c('0x4d')],'loggedIn':_0x258595[_0x8c1c('0x4e')],'name':_0x258595[_0x8c1c('0x52')],'paused':_0x258595[_0x8c1c('0x4f')],'waiting':_0x258595[_0x8c1c('0x50')]};_0x4feb10[_0x8c1c('0x1f')](_0x3e68ee);}}_0xc52ec3({'count':_0x4feb10['length'],'rows':_0x4feb10});});},'FaxQueues':function(_0x27d95e){return new Promise(function(_0x11d9d1,_0xa24a5c){var _0x5e7ae9=[];for(var _0x1f28a4 in _0x15a029[_0x8c1c('0x55')]){if(_0x15a029[_0x8c1c('0x55')]['hasOwnProperty'](_0x1f28a4)){var _0xfa8ae5=_0x15a029[_0x8c1c('0x55')][_0x1f28a4];var _0xdca786={'id':_0xfa8ae5['id'],'available':_0xfa8ae5[_0x8c1c('0x4d')],'loggedIn':_0xfa8ae5[_0x8c1c('0x4e')],'name':_0xfa8ae5[_0x8c1c('0x52')],'paused':_0xfa8ae5[_0x8c1c('0x4f')],'waiting':_0xfa8ae5[_0x8c1c('0x50')]};_0x5e7ae9[_0x8c1c('0x1f')](_0xdca786);}}_0x11d9d1({'count':_0x5e7ae9[_0x8c1c('0x19')],'rows':_0x5e7ae9});});},'ChatQueuesWaitingInteractions':function(_0x1b4f36){return new Promise(function(_0x2bb0fc,_0x3da72f){var _0x4a4135=_[_0x8c1c('0x4b')](_0x15a029[_0x8c1c('0x56')]);_0x2bb0fc({'count':_0x4a4135['length'],'rows':_0x4a4135});});},'MailQueuesWaitingInteractions':function(_0x3009c4){return new Promise(function(_0x21c1b4,_0x32494f){var _0x52b37f=_[_0x8c1c('0x4b')](_0x15a029['mailQueuesWaitingInteractions']);_0x21c1b4({'count':_0x52b37f[_0x8c1c('0x19')],'rows':_0x52b37f});});},'OpenchannelQueuesWaitingInteractions':function(_0x1d5410){return new Promise(function(_0x246250,_0x23f3df){var _0x3d6d39=_[_0x8c1c('0x4b')](_0x15a029[_0x8c1c('0x57')]);_0x246250({'count':_0x3d6d39[_0x8c1c('0x19')],'rows':_0x3d6d39});});},'SmsQueuesWaitingInteractions':function(_0x564423){return new Promise(function(_0x5271a5,_0x480194){var _0x137081=_['values'](_0x15a029[_0x8c1c('0x58')]);_0x5271a5({'count':_0x137081['length'],'rows':_0x137081});});},'FaxQueuesWaitingInteractions':function(_0x30d1e8){return new Promise(function(_0x582fa7,_0x53d897){var _0xbfc8dc=_['values'](_0x15a029['faxQueuesWaitingInteractions']);_0x582fa7({'count':_0xbfc8dc[_0x8c1c('0x19')],'rows':_0xbfc8dc});});}};var _0x134d6c=jayson[_0x8c1c('0x59')](_0x497b3e)[_0x8c1c('0x5a')]();_0x134d6c['on'](_0x8c1c('0x30'),function(_0x5b90c4){logger['error'](JSON[_0x8c1c('0x36')](_0x5b90c4));return _0x1e3d95(_0x5b90c4);});_0x134d6c['listen'](0x232c,'127.0.0.1',function(){console[_0x8c1c('0x5b')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0xe687ac('RPC\x20listening\x20on\x20port:'+0x232c);});});};