Built motion from commit (unavailable).|2.5.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 _0xcac9=['priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','end','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','values','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','jayson/promise','uuid','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','amazonlex','TagId','%s:%s:%s','./interval','condition','intervals','./applications/'];(function(_0x3cf349,_0x103264){var _0x332600=function(_0x1c9bed){while(--_0x1c9bed){_0x3cf349['push'](_0x3cf349['shift']());}};_0x332600(++_0x103264);}(_0xcac9,0x199));var _0x9cac=function(_0x10d670,_0x178996){_0x10d670=_0x10d670-0x0;var _0x20d6f8=_0xcac9[_0x10d670];return _0x20d6f8;};'use strict';var _=require(_0x9cac('0x0'));var util=require(_0x9cac('0x1'));var path=require(_0x9cac('0x2'));var fs=require('fs');var jayson=require(_0x9cac('0x3'));var BPromise=require('bluebird');var uuid=require(_0x9cac('0x4'));var config=require('../../../config/environment');var logger=require(_0x9cac('0x5'))('routing');var rpc={'openchannelQueueReport':require(_0x9cac('0x6')),'mailQueueReport':require(_0x9cac('0x7')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x9cac('0x8')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x9cac('0x9'))};var RuleEngine=require(_0x9cac('0xa'));function getId(_0x1566e3,_0x28faa9,_0x5c9165){return util['format']('%s.%s.%s',_0x1566e3,_0x28faa9||0x0,_0x5c9165||0x0);}function getIntervals(_0x9cc6ab,_0x4de1e9){var _0x5d4469=[];if(!_[_0x9cac('0xb')](_0x4de1e9[_0x9cac('0xc')])&&!_[_0x9cac('0xb')](_0x9cc6ab[_0x4de1e9[_0x9cac('0xc')]])&&!_[_0x9cac('0xb')](_0x9cc6ab[_0x4de1e9[_0x9cac('0xc')]][_0x9cac('0xd')])){_0x5d4469=_[_0x9cac('0xe')](_0x9cc6ab[_0x4de1e9[_0x9cac('0xc')]][_0x9cac('0xd')],_0x9cac('0xf'));}else if(!_[_0x9cac('0xb')](_0x4de1e9['interval'])){_0x5d4469=[_0x4de1e9['interval']];}return _0x5d4469;}exports['listen']=function(_0x56813d){_0x56813d[_0x9cac('0x10')]={};return new BPromise(function(_0x2ebff6,_0x471b7d){var _0x5d29c5={'Start':function(_0x4ed8fa){var _0x59e01d=this;return new Promise(function(_0xbdac46,_0x2ef10a){if(_0x4ed8fa){try{var _0x9c05c8=[];var _0x574230=getId(_0x4ed8fa[_0x9cac('0x11')],_0x4ed8fa[_0x9cac('0x12')]?_0x4ed8fa['message']['id']:0x0,_0x4ed8fa['interaction']?_0x4ed8fa[_0x9cac('0x13')]['id']:0x0);if(_0x4ed8fa[_0x9cac('0x14')]&&_[_0x9cac('0x15')](_0x4ed8fa[_0x9cac('0x14')])&&_0x4ed8fa['applications'][_0x9cac('0x16')]){for(var _0x8e4f4f=0x0;_0x8e4f4f<_0x4ed8fa['applications'][_0x9cac('0x16')];_0x8e4f4f+=0x1){var _0xe67d38=_0x4ed8fa[_0x9cac('0x14')][_0x8e4f4f];if(fs[_0x9cac('0x17')](path[_0x9cac('0x18')](__dirname,_0x9cac('0x14'),_0xe67d38[_0x9cac('0x19')]+_0x9cac('0x1a')))){var _0x374013=[];switch(_0xe67d38['app'][_0x9cac('0x1b')]()){case _0x9cac('0x1c'):var _0x2d680c=_0xe67d38[_0x9cac('0x1d')][_0x9cac('0x1e')](',');_0x374013[_0x9cac('0x1f')](_0x2d680c[0x0]);_0x374013['push'](_0x2d680c[_0x9cac('0x20')](0x1,_0x2d680c['length'])[_0x9cac('0x18')](','));break;case _0x9cac('0x21'):var _0xa671cd=_0xe67d38[_0x9cac('0x1d')]['split'](',');_0x374013[_0x9cac('0x1f')](_0xa671cd[0x0]);_0x374013[_0x9cac('0x1f')](_0xa671cd[0x1]);_0x374013[_0x9cac('0x1f')](_0xa671cd['slice'](0x2,_0xa671cd[_0x9cac('0x16')])[_0x9cac('0x18')](','));break;case _0x9cac('0x22'):var _0x53c278=_0xe67d38[_0x9cac('0x1d')][_0x9cac('0x1e')](',');_0x374013['push'](_0x53c278[0x0]);_0x374013['push'](_0x53c278[0x1]);_0x374013[_0x9cac('0x1f')](_0x53c278[0x2]);_0x374013['push'](_0x53c278[0x3]);_0x374013[_0x9cac('0x1f')](_0x53c278[_0x9cac('0x20')](0x4,_0x53c278[_0x9cac('0x16')])[_0x9cac('0x18')](','));break;case _0x9cac('0x12'):_0x374013[_0x9cac('0x1f')](_0xe67d38[_0x9cac('0x1d')]);break;case'tag':_0x374013[_0x9cac('0x1f')](_0xe67d38[_0x9cac('0x23')]);_0x374013[_0x9cac('0x1f')](_0xe67d38[_0x9cac('0x1d')]);break;default:_0x374013=_[_0x9cac('0xb')](_0xe67d38[_0x9cac('0x1d')])?[]:_0xe67d38[_0x9cac('0x1d')][_0x9cac('0x1e')](',');}var _0x5130e2={'id':util['format'](_0x9cac('0x24'),_0x574230,_0xe67d38['id'],_0xe67d38[_0x9cac('0x19')]),'condition':require(_0x9cac('0x25'))[_0x9cac('0x26')](_0x574230,getIntervals(_0x56813d[_0x9cac('0x27')],_0xe67d38),_0x56813d),'consequence':require(_0x9cac('0x28')+_0xe67d38['app'])['consequence'](_0x574230,_0x374013,_0x56813d,_0x4ed8fa),'p':_0xe67d38[_0x9cac('0x29')]||0x0};logger[_0x9cac('0x2a')](_0x9cac('0x2b'),_0x5130e2['id'],_0x9cac('0x2c'),getIntervals(_0x56813d['intervals'],_0xe67d38)[_0x9cac('0x18')](_0x9cac('0x2d')));_0x9c05c8[_0x9cac('0x1f')](_0x5130e2);}else{logger[_0x9cac('0x2e')](_0x9cac('0x2f'),path[_0x9cac('0x18')](__dirname,_0x9cac('0x14'),_0xe67d38['app']+'.js'));}}_0x56813d[_0x9cac('0x10')][_0x574230]=new RuleEngine(_0x9c05c8);_0x56813d[_0x9cac('0x10')][_0x574230][_0x9cac('0x30')](_0x4ed8fa,function(_0x24d7c6){logger[_0x9cac('0x2a')]('Applications\x20executed',JSON[_0x9cac('0x31')](_0x24d7c6[_0x9cac('0x32')]));if(_0x56813d[_0x9cac('0x10')][_0x574230]){_0x56813d['rules'][_0x574230][_0x9cac('0x33')](_0x9cac('0x34'));}});return _0xbdac46({'code':0xc8,'message':_0x4ed8fa});}else{logger[_0x9cac('0x2a')](_0x9cac('0x35'));return _0xbdac46({'code':0xc8,'message':_0x4ed8fa});}}catch(_0x25c030){logger[_0x9cac('0x2e')](_0x25c030[_0x9cac('0x36')]);return _0x2ef10a(_0x59e01d[_0x9cac('0x2e')](0x1f4,_0x25c030));}}return _0x2ef10a(_0x9cac('0x37'));});},'AcceptMessage':function(_0x3198da){var _0x4117c6=this;return new Promise(function(_0x142262,_0x2d258e){if(_0x3198da[_0x9cac('0x12')]&&_0x3198da['message']['id']){try{var _0x4a48ce=getId(_0x3198da[_0x9cac('0x11')],_0x3198da[_0x9cac('0x12')]?_0x3198da[_0x9cac('0x12')]['id']:0x0,_0x3198da['interaction']?_0x3198da[_0x9cac('0x13')]['id']:0x0);if(_0x56813d[_0x9cac('0x10')][_0x4a48ce]){_0x56813d[_0x9cac('0x10')][_0x4a48ce][_0x9cac('0x33')](_0x9cac('0x38'));if(rpc[_0x3198da[_0x9cac('0x11')]+'QueueReport']){rpc[_0x3198da[_0x9cac('0x11')]+'QueueReport'][_0x9cac('0x39')](_0x4a48ce,{'UserId':_0x3198da[_0x9cac('0x12')][_0x9cac('0x3a')]})[_0x9cac('0x3b')](function(_0x2853c1){logger[_0x9cac('0x2e')](_0x9cac('0x3c'));});}}return _0x142262({'code':0xc8,'message':_0x3198da});}catch(_0x5cc044){logger[_0x9cac('0x2e')](_0x5cc044['stack']);return _0x2d258e(_0x4117c6[_0x9cac('0x2e')](0x1f4,_0x5cc044));}}logger['error'](_0x9cac('0x3d'));return _0x2d258e(_0x4117c6['error'](0x1f4,_0x9cac('0x3d')));});},'RejectMessage':function(_0x12a0a4){var _0xc45d12=this;return new Promise(function(_0x43fb51,_0x11a1b6){if(_0x12a0a4[_0x9cac('0x3e')]&&_0x12a0a4['agent']['id']){try{if(_0x56813d[_0x9cac('0x3f')][_0x12a0a4[_0x9cac('0x3e')]['id']]){_0x56813d['agents'][_0x12a0a4['agent']['id']][_0x9cac('0x40')]=![];_0x56813d[_0x9cac('0x3f')][_0x12a0a4[_0x9cac('0x3e')]['id']][_0x9cac('0x41')]=undefined;}return _0x43fb51({'code':0xc8,'message':_0x12a0a4});}catch(_0x5b042f){logger[_0x9cac('0x2e')](_0x5b042f[_0x9cac('0x36')]);return _0x11a1b6(_0xc45d12[_0x9cac('0x2e')](0x1f4,_0x5b042f));}}logger[_0x9cac('0x2e')]('message\x20is\x20empty');return _0x11a1b6(_0xc45d12[_0x9cac('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x58ef35){var _0x12dbdc=this;return new Promise(function(_0x54d41f,_0xa25613){if(_0x58ef35['channel']&&_0x58ef35[_0x9cac('0x13')]&&_0x58ef35[_0x9cac('0x13')]['id']){try{var _0x198492=getId(_0x58ef35[_0x9cac('0x11')],_0x58ef35[_0x9cac('0x12')]?_0x58ef35['message']['id']:0x0,_0x58ef35[_0x9cac('0x13')]?_0x58ef35[_0x9cac('0x13')]['id']:0x0);if(_0x56813d['rules'][_0x198492]){_0x56813d[_0x9cac('0x10')][_0x198492][_0x9cac('0x33')]('end');}return _0x54d41f({'code':0xc8,'message':_0x58ef35});}catch(_0x17a1f6){logger['error'](_0x17a1f6['stack']);return _0xa25613(_0x12dbdc[_0x9cac('0x2e')](0x1f4,_0x17a1f6));}}logger[_0x9cac('0x2e')]('message\x20is\x20empty');return _0xa25613(_0x12dbdc[_0x9cac('0x2e')](0x1f4,_0x9cac('0x3d')));});},'AgentCapacity':function(_0x192e1a){var _0x50eac1=this;return new Promise(function(_0x5b6e98,_0x2a9875){if(_0x56813d[_0x9cac('0x3f')][_0x9cac('0x42')](_0x192e1a['id'])){for(var _0x12d93b in _0x192e1a[_0x9cac('0x43')]){if(_0x192e1a[_0x9cac('0x43')]['hasOwnProperty'](_0x12d93b)){if(_0x56813d['agents'][_0x192e1a['id']][_0x9cac('0x42')](_0x12d93b+_0x9cac('0x44'))){_0x56813d[_0x9cac('0x3f')][_0x192e1a['id']][_0x12d93b+_0x9cac('0x44')]=parseInt(_0x192e1a[_0x9cac('0x43')][_0x12d93b],0xa);}}}_0x56813d[_0x9cac('0x3f')][_0x192e1a['id']][_0x9cac('0x45')]();return _0x5b6e98({'code':0xc8,'message':_0x56813d[_0x9cac('0x3f')][_0x192e1a['id']]});}else{return _0x2a9875(_0x50eac1[_0x9cac('0x2e')](0x1f4,_0x9cac('0x46')));}});},'Agents':function(_0x29dcf0){return new Promise(function(_0x2be5fb,_0x39f7ba){var _0x28c8f0=_['values'](_0x56813d[_0x9cac('0x3f')]);_0x2be5fb({'count':_0x28c8f0[_0x9cac('0x16')],'rows':_0x28c8f0});});},'ChatQueues':function(_0x13ef26){return new Promise(function(_0x553fe8,_0x210690){var _0x17c6c7=[];for(var _0xf0eb6c in _0x56813d[_0x9cac('0x47')]){if(_0x56813d[_0x9cac('0x47')][_0x9cac('0x42')](_0xf0eb6c)){var _0x4b0ee7=_0x56813d[_0x9cac('0x47')][_0xf0eb6c];var _0xa7c977={'id':_0x4b0ee7['id'],'available':_0x4b0ee7['available'],'loggedIn':_0x4b0ee7[_0x9cac('0x48')],'name':_0x4b0ee7[_0x9cac('0x49')],'paused':_0x4b0ee7[_0x9cac('0x4a')],'waiting':_0x4b0ee7[_0x9cac('0x4b')]};_0x17c6c7[_0x9cac('0x1f')](_0xa7c977);}}_0x553fe8({'count':_0x17c6c7[_0x9cac('0x16')],'rows':_0x17c6c7});});},'MailQueues':function(_0x4404a5){return new Promise(function(_0x2ada7b,_0x5450f6){var _0x729365=[];for(var _0x440020 in _0x56813d[_0x9cac('0x4c')]){if(_0x56813d[_0x9cac('0x4c')][_0x9cac('0x42')](_0x440020)){var _0x45a1f3=_0x56813d['mailQueues'][_0x440020];var _0x4ed389={'id':_0x45a1f3['id'],'available':_0x45a1f3['available'],'loggedIn':_0x45a1f3[_0x9cac('0x48')],'name':_0x45a1f3['name'],'paused':_0x45a1f3['paused'],'waiting':_0x45a1f3[_0x9cac('0x4b')]};_0x729365[_0x9cac('0x1f')](_0x4ed389);}}_0x2ada7b({'count':_0x729365[_0x9cac('0x16')],'rows':_0x729365});});},'OpenchannelQueues':function(_0xc24b8b){return new Promise(function(_0xaa428d,_0x3cdf96){var _0x2b3dbb=[];for(var _0x2313b6 in _0x56813d[_0x9cac('0x4d')]){if(_0x56813d[_0x9cac('0x4d')]['hasOwnProperty'](_0x2313b6)){var _0x2c4ae0=_0x56813d[_0x9cac('0x4d')][_0x2313b6];var _0x13e33d={'id':_0x2c4ae0['id'],'available':_0x2c4ae0[_0x9cac('0x4e')],'loggedIn':_0x2c4ae0[_0x9cac('0x48')],'name':_0x2c4ae0[_0x9cac('0x49')],'paused':_0x2c4ae0['paused'],'waiting':_0x2c4ae0[_0x9cac('0x4b')]};_0x2b3dbb[_0x9cac('0x1f')](_0x13e33d);}}_0xaa428d({'count':_0x2b3dbb[_0x9cac('0x16')],'rows':_0x2b3dbb});});},'SmsQueues':function(_0x288133){return new Promise(function(_0x453b98,_0x3ed65f){var _0x21eb10=[];for(var _0x261b13 in _0x56813d[_0x9cac('0x4f')]){if(_0x56813d[_0x9cac('0x4f')][_0x9cac('0x42')](_0x261b13)){var _0x2fd54d=_0x56813d[_0x9cac('0x4f')][_0x261b13];var _0x33071f={'id':_0x2fd54d['id'],'available':_0x2fd54d[_0x9cac('0x4e')],'loggedIn':_0x2fd54d[_0x9cac('0x48')],'name':_0x2fd54d['name'],'paused':_0x2fd54d[_0x9cac('0x4a')],'waiting':_0x2fd54d[_0x9cac('0x4b')]};_0x21eb10[_0x9cac('0x1f')](_0x33071f);}}_0x453b98({'count':_0x21eb10['length'],'rows':_0x21eb10});});},'FaxQueues':function(_0x4a15c6){return new Promise(function(_0x179b65,_0x5acbf5){var _0x1795e9=[];for(var _0x498fc7 in _0x56813d['faxQueues']){if(_0x56813d['faxQueues'][_0x9cac('0x42')](_0x498fc7)){var _0x4d946b=_0x56813d[_0x9cac('0x50')][_0x498fc7];var _0x28530a={'id':_0x4d946b['id'],'available':_0x4d946b[_0x9cac('0x4e')],'loggedIn':_0x4d946b['loggedIn'],'name':_0x4d946b[_0x9cac('0x49')],'paused':_0x4d946b[_0x9cac('0x4a')],'waiting':_0x4d946b[_0x9cac('0x4b')]};_0x1795e9[_0x9cac('0x1f')](_0x28530a);}}_0x179b65({'count':_0x1795e9[_0x9cac('0x16')],'rows':_0x1795e9});});},'WhatsappQueues':function(_0x1bcc0e){return new Promise(function(_0x238b42,_0x68bb02){var _0x5ae0ec=[];for(var _0x4c94be in _0x56813d[_0x9cac('0x51')]){if(_0x56813d[_0x9cac('0x51')][_0x9cac('0x42')](_0x4c94be)){var _0x2b05bb=_0x56813d['whatsappQueues'][_0x4c94be];var _0x565569={'id':_0x2b05bb['id'],'available':_0x2b05bb[_0x9cac('0x4e')],'loggedIn':_0x2b05bb[_0x9cac('0x48')],'name':_0x2b05bb[_0x9cac('0x49')],'paused':_0x2b05bb[_0x9cac('0x4a')],'waiting':_0x2b05bb[_0x9cac('0x4b')]};_0x5ae0ec[_0x9cac('0x1f')](_0x565569);}}_0x238b42({'count':_0x5ae0ec[_0x9cac('0x16')],'rows':_0x5ae0ec});});},'ChatQueuesWaitingInteractions':function(_0x74485d){return new Promise(function(_0x36d686,_0x4a7ad6){var _0x4e520b=_[_0x9cac('0x52')](_0x56813d['chatQueuesWaitingInteractions']);_0x36d686({'count':_0x4e520b[_0x9cac('0x16')],'rows':_0x4e520b});});},'MailQueuesWaitingInteractions':function(_0x1d2fec){return new Promise(function(_0x52de8e,_0x173bab){var _0x2551b3=_[_0x9cac('0x52')](_0x56813d['mailQueuesWaitingInteractions']);_0x52de8e({'count':_0x2551b3[_0x9cac('0x16')],'rows':_0x2551b3});});},'OpenchannelQueuesWaitingInteractions':function(_0x3d3249){return new Promise(function(_0x4431dd,_0xe35a38){var _0x852e9a=_[_0x9cac('0x52')](_0x56813d[_0x9cac('0x53')]);_0x4431dd({'count':_0x852e9a[_0x9cac('0x16')],'rows':_0x852e9a});});},'SmsQueuesWaitingInteractions':function(_0x2f3b73){return new Promise(function(_0xf5d63,_0x58975e){var _0x5e44b9=_['values'](_0x56813d[_0x9cac('0x54')]);_0xf5d63({'count':_0x5e44b9[_0x9cac('0x16')],'rows':_0x5e44b9});});},'FaxQueuesWaitingInteractions':function(_0x1690eb){return new Promise(function(_0x4a650a,_0x5caa11){var _0x2480ee=_[_0x9cac('0x52')](_0x56813d[_0x9cac('0x55')]);_0x4a650a({'count':_0x2480ee['length'],'rows':_0x2480ee});});},'WhatsappQueuesWaitingInteractions':function(_0x550155){return new Promise(function(_0x2eee5a,_0x3d1857){var _0x27f9db=_[_0x9cac('0x52')](_0x56813d['whatsappQueuesWaitingInteractions']);_0x2eee5a({'count':_0x27f9db[_0x9cac('0x16')],'rows':_0x27f9db});});}};var _0x47ecb1=jayson['server'](_0x5d29c5)['http']();_0x47ecb1['on']('error',function(_0xa32547){logger[_0x9cac('0x2e')](JSON[_0x9cac('0x31')](_0xa32547));return _0x471b7d(_0xa32547);});_0x47ecb1[_0x9cac('0x56')](0x232c,_0x9cac('0x57'),function(){console[_0x9cac('0x58')](_0x9cac('0x59'),0x232c);return _0x2ebff6('RPC\x20listening\x20on\x20port:'+0x232c);});});};