Built motion from commit (unavailable).|2.5.15
[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 _0x1546=['openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','isNil','IntervalId','Intervals','map','interval','rules','message','interaction','applications','isArray','length','existsSync','join','app','.js','appdata','split','push','slice','dialogflow','dialogflowv2','amazonlex','tag','%s:%s:%s','condition','consequence','priority','on\x20interval','intervals','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','info','stringify','matchPath','emit','complete','stack','end','channel','QueueReport','update','UserId','catch','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues'];(function(_0x397e67,_0x4d8c3c){var _0x5994d6=function(_0x33a8e9){while(--_0x33a8e9){_0x397e67['push'](_0x397e67['shift']());}};_0x5994d6(++_0x4d8c3c);}(_0x1546,0x6a));var _0x6154=function(_0x24aa3b,_0x533ae1){_0x24aa3b=_0x24aa3b-0x0;var _0x27e47b=_0x1546[_0x24aa3b];return _0x27e47b;};'use strict';var _=require(_0x6154('0x0'));var util=require(_0x6154('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x6154('0x2'));var BPromise=require(_0x6154('0x3'));var uuid=require(_0x6154('0x4'));var config=require(_0x6154('0x5'));var logger=require(_0x6154('0x6'))('routing');var rpc={'openchannelQueueReport':require(_0x6154('0x7')),'mailQueueReport':require(_0x6154('0x8')),'chatQueueReport':require(_0x6154('0x9')),'smsQueueReport':require(_0x6154('0xa')),'faxQueueReport':require(_0x6154('0xb')),'whatsappQueueReport':require(_0x6154('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x22e37a,_0xdffa5b,_0x11cdd4){return util[_0x6154('0xd')]('%s.%s.%s',_0x22e37a,_0xdffa5b||0x0,_0x11cdd4||0x0);}function getIntervals(_0xe9dac6,_0x125e6f){var _0x56b1a1=[];if(!_[_0x6154('0xe')](_0x125e6f['IntervalId'])&&!_[_0x6154('0xe')](_0xe9dac6[_0x125e6f[_0x6154('0xf')]])&&!_[_0x6154('0xe')](_0xe9dac6[_0x125e6f[_0x6154('0xf')]][_0x6154('0x10')])){_0x56b1a1=_[_0x6154('0x11')](_0xe9dac6[_0x125e6f[_0x6154('0xf')]]['Intervals'],'interval');}else if(!_['isNil'](_0x125e6f[_0x6154('0x12')])){_0x56b1a1=[_0x125e6f['interval']];}return _0x56b1a1;}exports['listen']=function(_0x360eca){_0x360eca[_0x6154('0x13')]={};return new BPromise(function(_0x24f162,_0x1aa2f2){var _0x1f9a77={'Start':function(_0x52810e){var _0x5aec2e=this;return new Promise(function(_0x39a98f,_0xd1683c){if(_0x52810e){try{var _0x17d07c=[];var _0x511761=getId(_0x52810e['channel'],_0x52810e[_0x6154('0x14')]?_0x52810e['message']['id']:0x0,_0x52810e[_0x6154('0x15')]?_0x52810e[_0x6154('0x15')]['id']:0x0);if(_0x52810e[_0x6154('0x16')]&&_[_0x6154('0x17')](_0x52810e[_0x6154('0x16')])&&_0x52810e[_0x6154('0x16')][_0x6154('0x18')]){for(var _0x53f696=0x0;_0x53f696<_0x52810e[_0x6154('0x16')]['length'];_0x53f696+=0x1){var _0x2af09f=_0x52810e[_0x6154('0x16')][_0x53f696];if(fs[_0x6154('0x19')](path[_0x6154('0x1a')](__dirname,_0x6154('0x16'),_0x2af09f[_0x6154('0x1b')]+_0x6154('0x1c')))){var _0x2c64f5=[];switch(_0x2af09f[_0x6154('0x1b')]['toLowerCase']()){case'autoreply':var _0x177283=_0x2af09f[_0x6154('0x1d')][_0x6154('0x1e')](',');_0x2c64f5['push'](_0x177283[0x0]);_0x2c64f5[_0x6154('0x1f')](_0x177283[_0x6154('0x20')](0x1,_0x177283[_0x6154('0x18')])['join'](','));break;case _0x6154('0x21'):var _0x26587a=_0x2af09f['appdata'][_0x6154('0x1e')](',');_0x2c64f5[_0x6154('0x1f')](_0x26587a[0x0]);_0x2c64f5[_0x6154('0x1f')](_0x26587a[0x1]);_0x2c64f5[_0x6154('0x1f')](_0x26587a[_0x6154('0x20')](0x2,_0x26587a[_0x6154('0x18')])['join'](','));break;case _0x6154('0x22'):var _0x129e97=_0x2af09f[_0x6154('0x1d')]['split'](',');_0x2c64f5[_0x6154('0x1f')](_0x129e97[0x0]);_0x2c64f5[_0x6154('0x1f')](_0x129e97[0x1]);_0x2c64f5['push'](_0x129e97[0x2]);_0x2c64f5[_0x6154('0x1f')](_0x129e97[0x3]);_0x2c64f5[_0x6154('0x1f')](_0x129e97[_0x6154('0x20')](0x4,_0x129e97[_0x6154('0x18')])['join'](','));break;case _0x6154('0x23'):var _0x5ed8a0=_0x2af09f['appdata'][_0x6154('0x1e')](',');_0x2c64f5['push'](_0x5ed8a0[0x0]);_0x2c64f5[_0x6154('0x1f')](_0x5ed8a0[0x1]);_0x2c64f5[_0x6154('0x1f')](_0x5ed8a0[0x2]);_0x2c64f5[_0x6154('0x1f')](_0x5ed8a0[0x3]);_0x2c64f5[_0x6154('0x1f')](_0x5ed8a0[_0x6154('0x20')](0x4,_0x5ed8a0[_0x6154('0x18')])['join'](','));break;case _0x6154('0x14'):_0x2c64f5[_0x6154('0x1f')](_0x2af09f['appdata']);break;case _0x6154('0x24'):_0x2c64f5['push'](_0x2af09f['TagId']);_0x2c64f5[_0x6154('0x1f')](_0x2af09f[_0x6154('0x1d')]);break;default:_0x2c64f5=_[_0x6154('0xe')](_0x2af09f['appdata'])?[]:_0x2af09f[_0x6154('0x1d')][_0x6154('0x1e')](',');}var _0x51c205={'id':util['format'](_0x6154('0x25'),_0x511761,_0x2af09f['id'],_0x2af09f[_0x6154('0x1b')]),'condition':require('./interval')[_0x6154('0x26')](_0x511761,getIntervals(_0x360eca['intervals'],_0x2af09f),_0x360eca),'consequence':require('./applications/'+_0x2af09f[_0x6154('0x1b')])[_0x6154('0x27')](_0x511761,_0x2c64f5,_0x360eca,_0x52810e),'p':_0x2af09f[_0x6154('0x28')]||0x0};logger['info']('Push\x20new\x20rule',_0x51c205['id'],_0x6154('0x29'),getIntervals(_0x360eca[_0x6154('0x2a')],_0x2af09f)[_0x6154('0x1a')](_0x6154('0x2b')));_0x17d07c[_0x6154('0x1f')](_0x51c205);}else{logger[_0x6154('0x2c')](_0x6154('0x2d'),path[_0x6154('0x1a')](__dirname,_0x6154('0x16'),_0x2af09f['app']+_0x6154('0x1c')));}}_0x360eca[_0x6154('0x13')][_0x511761]=new RuleEngine(_0x17d07c);_0x360eca['rules'][_0x511761]['execute'](_0x52810e,function(_0x204889){logger[_0x6154('0x2e')]('Applications\x20executed',JSON[_0x6154('0x2f')](_0x204889[_0x6154('0x30')]));if(_0x360eca['rules'][_0x511761]){_0x360eca[_0x6154('0x13')][_0x511761][_0x6154('0x31')](_0x6154('0x32'));}});return _0x39a98f({'code':0xc8,'message':_0x52810e});}else{logger[_0x6154('0x2e')]('No\x20applications\x20to\x20execute');return _0x39a98f({'code':0xc8,'message':_0x52810e});}}catch(_0x1c3634){logger[_0x6154('0x2c')](_0x1c3634[_0x6154('0x33')]);return _0xd1683c(_0x5aec2e[_0x6154('0x2c')](0x1f4,_0x1c3634));}}return _0xd1683c('routing\x20is\x20empty');});},'AcceptMessage':function(_0x33d34e){var _0x2acb74=this;return new Promise(function(_0x134a54,_0x388c28){if(_0x33d34e[_0x6154('0x14')]&&_0x33d34e['message']['id']){try{var _0x214336=getId(_0x33d34e['channel'],_0x33d34e['message']?_0x33d34e[_0x6154('0x14')]['id']:0x0,_0x33d34e['interaction']?_0x33d34e[_0x6154('0x15')]['id']:0x0);if(_0x360eca[_0x6154('0x13')][_0x214336]){_0x360eca[_0x6154('0x13')][_0x214336]['emit'](_0x6154('0x34'));if(rpc[_0x33d34e['channel']+'QueueReport']){rpc[_0x33d34e[_0x6154('0x35')]+_0x6154('0x36')][_0x6154('0x37')](_0x214336,{'UserId':_0x33d34e[_0x6154('0x14')][_0x6154('0x38')]})[_0x6154('0x39')](function(_0x5f360e){logger[_0x6154('0x2c')]('error\x20update\x20queue\x20report');});}}return _0x134a54({'code':0xc8,'message':_0x33d34e});}catch(_0x14c684){logger[_0x6154('0x2c')](_0x14c684['stack']);return _0x388c28(_0x2acb74[_0x6154('0x2c')](0x1f4,_0x14c684));}}logger['error'](_0x6154('0x3a'));return _0x388c28(_0x2acb74[_0x6154('0x2c')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0xea1b17){var _0x13e3e8=this;return new Promise(function(_0x471f89,_0x4f95d4){if(_0xea1b17[_0x6154('0x3b')]&&_0xea1b17[_0x6154('0x3b')]['id']){try{if(_0x360eca[_0x6154('0x3c')][_0xea1b17[_0x6154('0x3b')]['id']]){_0x360eca[_0x6154('0x3c')][_0xea1b17['agent']['id']][_0x6154('0x3d')]=![];_0x360eca[_0x6154('0x3c')][_0xea1b17[_0x6154('0x3b')]['id']][_0x6154('0x3e')]=undefined;}return _0x471f89({'code':0xc8,'message':_0xea1b17});}catch(_0x1b93ae){logger[_0x6154('0x2c')](_0x1b93ae[_0x6154('0x33')]);return _0x4f95d4(_0x13e3e8['error'](0x1f4,_0x1b93ae));}}logger[_0x6154('0x2c')](_0x6154('0x3a'));return _0x4f95d4(_0x13e3e8['error'](0x1f4,_0x6154('0x3a')));});},'AbandonInteraction':function(_0x2cd2c6){var _0x341060=this;return new Promise(function(_0x2335a9,_0xaf5c84){if(_0x2cd2c6[_0x6154('0x35')]&&_0x2cd2c6[_0x6154('0x15')]&&_0x2cd2c6[_0x6154('0x15')]['id']){try{var _0x3736f6=getId(_0x2cd2c6[_0x6154('0x35')],_0x2cd2c6[_0x6154('0x14')]?_0x2cd2c6[_0x6154('0x14')]['id']:0x0,_0x2cd2c6['interaction']?_0x2cd2c6[_0x6154('0x15')]['id']:0x0);if(_0x360eca[_0x6154('0x13')][_0x3736f6]){_0x360eca['rules'][_0x3736f6][_0x6154('0x31')](_0x6154('0x34'));}return _0x2335a9({'code':0xc8,'message':_0x2cd2c6});}catch(_0x34c7dd){logger[_0x6154('0x2c')](_0x34c7dd['stack']);return _0xaf5c84(_0x341060[_0x6154('0x2c')](0x1f4,_0x34c7dd));}}logger['error'](_0x6154('0x3a'));return _0xaf5c84(_0x341060['error'](0x1f4,_0x6154('0x3a')));});},'AgentCapacity':function(_0x464d01){var _0x5ba78a=this;return new Promise(function(_0x409515,_0x3a1a7e){if(_0x360eca[_0x6154('0x3c')][_0x6154('0x3f')](_0x464d01['id'])){for(var _0x7a16ab in _0x464d01['capacity']){if(_0x464d01[_0x6154('0x40')][_0x6154('0x3f')](_0x7a16ab)){if(_0x360eca[_0x6154('0x3c')][_0x464d01['id']][_0x6154('0x3f')](_0x7a16ab+_0x6154('0x41'))){_0x360eca['agents'][_0x464d01['id']][_0x7a16ab+_0x6154('0x41')]=parseInt(_0x464d01[_0x6154('0x40')][_0x7a16ab],0xa);}}}_0x360eca[_0x6154('0x3c')][_0x464d01['id']][_0x6154('0x42')]();return _0x409515({'code':0xc8,'message':_0x360eca[_0x6154('0x3c')][_0x464d01['id']]});}else{return _0x3a1a7e(_0x5ba78a[_0x6154('0x2c')](0x1f4,_0x6154('0x43')));}});},'Agents':function(_0x2f1a9a){return new Promise(function(_0x3ce222,_0x2cb03d){var _0x1f316d=_[_0x6154('0x44')](_0x360eca[_0x6154('0x3c')]);_0x3ce222({'count':_0x1f316d[_0x6154('0x18')],'rows':_0x1f316d});});},'ChatQueues':function(_0xf4c3af){return new Promise(function(_0x51faac,_0x59042d){var _0x18c681=[];for(var _0x36db63 in _0x360eca[_0x6154('0x45')]){if(_0x360eca[_0x6154('0x45')][_0x6154('0x3f')](_0x36db63)){var _0x295457=_0x360eca[_0x6154('0x45')][_0x36db63];var _0x47d5ae={'id':_0x295457['id'],'available':_0x295457[_0x6154('0x46')],'loggedIn':_0x295457[_0x6154('0x47')],'name':_0x295457[_0x6154('0x48')],'paused':_0x295457[_0x6154('0x49')],'waiting':_0x295457[_0x6154('0x4a')]};_0x18c681[_0x6154('0x1f')](_0x47d5ae);}}_0x51faac({'count':_0x18c681['length'],'rows':_0x18c681});});},'MailQueues':function(_0x19507c){return new Promise(function(_0x309799,_0x53e8fb){var _0x25fdad=[];for(var _0x46a7f7 in _0x360eca[_0x6154('0x4b')]){if(_0x360eca[_0x6154('0x4b')][_0x6154('0x3f')](_0x46a7f7)){var _0x458ca0=_0x360eca[_0x6154('0x4b')][_0x46a7f7];var _0x2f7148={'id':_0x458ca0['id'],'available':_0x458ca0[_0x6154('0x46')],'loggedIn':_0x458ca0['loggedIn'],'name':_0x458ca0[_0x6154('0x48')],'paused':_0x458ca0[_0x6154('0x49')],'waiting':_0x458ca0[_0x6154('0x4a')]};_0x25fdad[_0x6154('0x1f')](_0x2f7148);}}_0x309799({'count':_0x25fdad[_0x6154('0x18')],'rows':_0x25fdad});});},'OpenchannelQueues':function(_0x11023a){return new Promise(function(_0x21376f,_0x28460b){var _0x2ccb3c=[];for(var _0x43ca65 in _0x360eca[_0x6154('0x4c')]){if(_0x360eca[_0x6154('0x4c')][_0x6154('0x3f')](_0x43ca65)){var _0x47da27=_0x360eca[_0x6154('0x4c')][_0x43ca65];var _0x11f19e={'id':_0x47da27['id'],'available':_0x47da27[_0x6154('0x46')],'loggedIn':_0x47da27[_0x6154('0x47')],'name':_0x47da27[_0x6154('0x48')],'paused':_0x47da27[_0x6154('0x49')],'waiting':_0x47da27['waiting']};_0x2ccb3c['push'](_0x11f19e);}}_0x21376f({'count':_0x2ccb3c[_0x6154('0x18')],'rows':_0x2ccb3c});});},'SmsQueues':function(_0x248892){return new Promise(function(_0x4326a5,_0x5ee1e4){var _0x50ec36=[];for(var _0x357ce9 in _0x360eca[_0x6154('0x4d')]){if(_0x360eca[_0x6154('0x4d')][_0x6154('0x3f')](_0x357ce9)){var _0x28cc58=_0x360eca[_0x6154('0x4d')][_0x357ce9];var _0xf5fd38={'id':_0x28cc58['id'],'available':_0x28cc58[_0x6154('0x46')],'loggedIn':_0x28cc58[_0x6154('0x47')],'name':_0x28cc58['name'],'paused':_0x28cc58[_0x6154('0x49')],'waiting':_0x28cc58['waiting']};_0x50ec36[_0x6154('0x1f')](_0xf5fd38);}}_0x4326a5({'count':_0x50ec36[_0x6154('0x18')],'rows':_0x50ec36});});},'FaxQueues':function(_0x5cd203){return new Promise(function(_0x5d3955,_0x54f36c){var _0x589b34=[];for(var _0x253816 in _0x360eca[_0x6154('0x4e')]){if(_0x360eca[_0x6154('0x4e')][_0x6154('0x3f')](_0x253816)){var _0x465d17=_0x360eca[_0x6154('0x4e')][_0x253816];var _0xc64450={'id':_0x465d17['id'],'available':_0x465d17['available'],'loggedIn':_0x465d17[_0x6154('0x47')],'name':_0x465d17['name'],'paused':_0x465d17[_0x6154('0x49')],'waiting':_0x465d17[_0x6154('0x4a')]};_0x589b34[_0x6154('0x1f')](_0xc64450);}}_0x5d3955({'count':_0x589b34[_0x6154('0x18')],'rows':_0x589b34});});},'WhatsappQueues':function(_0x16159a){return new Promise(function(_0x54bdf5,_0x44dd1c){var _0x23298b=[];for(var _0xe34916 in _0x360eca[_0x6154('0x4f')]){if(_0x360eca[_0x6154('0x4f')][_0x6154('0x3f')](_0xe34916)){var _0x48a3e4=_0x360eca['whatsappQueues'][_0xe34916];var _0x183eed={'id':_0x48a3e4['id'],'available':_0x48a3e4['available'],'loggedIn':_0x48a3e4['loggedIn'],'name':_0x48a3e4[_0x6154('0x48')],'paused':_0x48a3e4['paused'],'waiting':_0x48a3e4[_0x6154('0x4a')]};_0x23298b[_0x6154('0x1f')](_0x183eed);}}_0x54bdf5({'count':_0x23298b[_0x6154('0x18')],'rows':_0x23298b});});},'ChatQueuesWaitingInteractions':function(_0x46a967){return new Promise(function(_0x36548f,_0x4afa98){var _0x3b2f28=_[_0x6154('0x44')](_0x360eca[_0x6154('0x50')]);_0x36548f({'count':_0x3b2f28['length'],'rows':_0x3b2f28});});},'MailQueuesWaitingInteractions':function(_0x505643){return new Promise(function(_0x11f077,_0x1efca6){var _0x4b8f60=_[_0x6154('0x44')](_0x360eca[_0x6154('0x51')]);_0x11f077({'count':_0x4b8f60[_0x6154('0x18')],'rows':_0x4b8f60});});},'OpenchannelQueuesWaitingInteractions':function(_0x48dee1){return new Promise(function(_0x472c35,_0x15f32a){var _0x421113=_[_0x6154('0x44')](_0x360eca[_0x6154('0x52')]);_0x472c35({'count':_0x421113[_0x6154('0x18')],'rows':_0x421113});});},'SmsQueuesWaitingInteractions':function(_0x4510e9){return new Promise(function(_0x312cb2,_0x2bdc43){var _0x30064f=_[_0x6154('0x44')](_0x360eca[_0x6154('0x53')]);_0x312cb2({'count':_0x30064f[_0x6154('0x18')],'rows':_0x30064f});});},'FaxQueuesWaitingInteractions':function(_0x316498){return new Promise(function(_0x462cc6,_0x5e0793){var _0x4a804f=_[_0x6154('0x44')](_0x360eca[_0x6154('0x54')]);_0x462cc6({'count':_0x4a804f[_0x6154('0x18')],'rows':_0x4a804f});});},'WhatsappQueuesWaitingInteractions':function(_0x5466e1){return new Promise(function(_0x5a3fc4,_0x2e4cb7){var _0x99f402=_['values'](_0x360eca[_0x6154('0x55')]);_0x5a3fc4({'count':_0x99f402[_0x6154('0x18')],'rows':_0x99f402});});}};var _0x2a84e5=jayson[_0x6154('0x56')](_0x1f9a77)['http']();_0x2a84e5['on'](_0x6154('0x2c'),function(_0x5afbe1){logger[_0x6154('0x2c')](JSON[_0x6154('0x2f')](_0x5afbe1));return _0x1aa2f2(_0x5afbe1);});_0x2a84e5[_0x6154('0x57')](0x232c,_0x6154('0x58'),function(){console[_0x6154('0x59')](_0x6154('0x5a'),0x232c);return _0x24f162('RPC\x20listening\x20on\x20port:'+0x232c);});});};