Built motion from commit (unavailable).|2.5.16
[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 _0x1118=['message','interaction','applications','app','.js','toLowerCase','autoreply','appdata','split','push','slice','length','join','dialogflow','dialogflowv2','tag','TagId','./interval','condition','intervals','./applications/','consequence','info','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','map','Intervals','interval','rules','channel'];(function(_0x4812c3,_0x283fbb){var _0x35af9b=function(_0x3bb633){while(--_0x3bb633){_0x4812c3['push'](_0x4812c3['shift']());}};_0x35af9b(++_0x283fbb);}(_0x1118,0xf5));var _0x8111=function(_0x18d6f0,_0x546d92){_0x18d6f0=_0x18d6f0-0x0;var _0x4fab64=_0x1118[_0x18d6f0];return _0x4fab64;};'use strict';var _=require(_0x8111('0x0'));var util=require(_0x8111('0x1'));var path=require(_0x8111('0x2'));var fs=require('fs');var jayson=require(_0x8111('0x3'));var BPromise=require(_0x8111('0x4'));var uuid=require(_0x8111('0x5'));var config=require('../../../config/environment');var logger=require(_0x8111('0x6'))(_0x8111('0x7'));var rpc={'openchannelQueueReport':require(_0x8111('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x8111('0x9'));function getId(_0xb922cd,_0x5deef8,_0x308b7a){return util[_0x8111('0xa')](_0x8111('0xb'),_0xb922cd,_0x5deef8||0x0,_0x308b7a||0x0);}function getIntervals(_0x112731,_0x2b7edb){var _0x4b95d3=[];if(!_['isNil'](_0x2b7edb[_0x8111('0xc')])&&!_[_0x8111('0xd')](_0x112731[_0x2b7edb[_0x8111('0xc')]])&&!_[_0x8111('0xd')](_0x112731[_0x2b7edb[_0x8111('0xc')]]['Intervals'])){_0x4b95d3=_[_0x8111('0xe')](_0x112731[_0x2b7edb[_0x8111('0xc')]][_0x8111('0xf')],_0x8111('0x10'));}else if(!_[_0x8111('0xd')](_0x2b7edb[_0x8111('0x10')])){_0x4b95d3=[_0x2b7edb[_0x8111('0x10')]];}return _0x4b95d3;}exports['listen']=function(_0x5cf6c8){_0x5cf6c8[_0x8111('0x11')]={};return new BPromise(function(_0x53ba31,_0x404eab){var _0x56cfbd={'Start':function(_0x1bee1b){var _0x256ebd=this;return new Promise(function(_0x389bde,_0x10e175){if(_0x1bee1b){try{var _0x1383f1=[];var _0x20cca6=getId(_0x1bee1b[_0x8111('0x12')],_0x1bee1b[_0x8111('0x13')]?_0x1bee1b[_0x8111('0x13')]['id']:0x0,_0x1bee1b['interaction']?_0x1bee1b[_0x8111('0x14')]['id']:0x0);if(_0x1bee1b[_0x8111('0x15')]&&_['isArray'](_0x1bee1b[_0x8111('0x15')])&&_0x1bee1b[_0x8111('0x15')]['length']){for(var _0x4aa890=0x0;_0x4aa890<_0x1bee1b[_0x8111('0x15')]['length'];_0x4aa890+=0x1){var _0x4f6623=_0x1bee1b[_0x8111('0x15')][_0x4aa890];if(fs['existsSync'](path['join'](__dirname,_0x8111('0x15'),_0x4f6623[_0x8111('0x16')]+_0x8111('0x17')))){var _0x21ff5f=[];switch(_0x4f6623[_0x8111('0x16')][_0x8111('0x18')]()){case _0x8111('0x19'):var _0x1f3027=_0x4f6623[_0x8111('0x1a')][_0x8111('0x1b')](',');_0x21ff5f[_0x8111('0x1c')](_0x1f3027[0x0]);_0x21ff5f[_0x8111('0x1c')](_0x1f3027[_0x8111('0x1d')](0x1,_0x1f3027[_0x8111('0x1e')])[_0x8111('0x1f')](','));break;case _0x8111('0x20'):var _0x1145c1=_0x4f6623[_0x8111('0x1a')][_0x8111('0x1b')](',');_0x21ff5f[_0x8111('0x1c')](_0x1145c1[0x0]);_0x21ff5f['push'](_0x1145c1[0x1]);_0x21ff5f[_0x8111('0x1c')](_0x1145c1[_0x8111('0x1d')](0x2,_0x1145c1[_0x8111('0x1e')])[_0x8111('0x1f')](','));break;case _0x8111('0x21'):var _0x1f7ce8=_0x4f6623[_0x8111('0x1a')]['split'](',');_0x21ff5f['push'](_0x1f7ce8[0x0]);_0x21ff5f[_0x8111('0x1c')](_0x1f7ce8[0x1]);_0x21ff5f[_0x8111('0x1c')](_0x1f7ce8[0x2]);_0x21ff5f[_0x8111('0x1c')](_0x1f7ce8[0x3]);_0x21ff5f['push'](_0x1f7ce8[_0x8111('0x1d')](0x4,_0x1f7ce8[_0x8111('0x1e')])[_0x8111('0x1f')](','));break;case'amazonlex':var _0x30f9f8=_0x4f6623[_0x8111('0x1a')][_0x8111('0x1b')](',');_0x21ff5f[_0x8111('0x1c')](_0x30f9f8[0x0]);_0x21ff5f[_0x8111('0x1c')](_0x30f9f8[0x1]);_0x21ff5f[_0x8111('0x1c')](_0x30f9f8[0x2]);_0x21ff5f[_0x8111('0x1c')](_0x30f9f8[0x3]);_0x21ff5f[_0x8111('0x1c')](_0x30f9f8[_0x8111('0x1d')](0x4,_0x30f9f8[_0x8111('0x1e')])['join'](','));break;case _0x8111('0x13'):_0x21ff5f[_0x8111('0x1c')](_0x4f6623[_0x8111('0x1a')]);break;case _0x8111('0x22'):_0x21ff5f[_0x8111('0x1c')](_0x4f6623[_0x8111('0x23')]);_0x21ff5f[_0x8111('0x1c')](_0x4f6623[_0x8111('0x1a')]);break;default:_0x21ff5f=_['isNil'](_0x4f6623[_0x8111('0x1a')])?[]:_0x4f6623[_0x8111('0x1a')]['split'](',');}var _0x5d2fb2={'id':util[_0x8111('0xa')]('%s:%s:%s',_0x20cca6,_0x4f6623['id'],_0x4f6623['app']),'condition':require(_0x8111('0x24'))[_0x8111('0x25')](_0x20cca6,getIntervals(_0x5cf6c8[_0x8111('0x26')],_0x4f6623),_0x5cf6c8),'consequence':require(_0x8111('0x27')+_0x4f6623['app'])[_0x8111('0x28')](_0x20cca6,_0x21ff5f,_0x5cf6c8,_0x1bee1b),'p':_0x4f6623['priority']||0x0};logger[_0x8111('0x29')]('Push\x20new\x20rule',_0x5d2fb2['id'],'on\x20interval',getIntervals(_0x5cf6c8['intervals'],_0x4f6623)[_0x8111('0x1f')](_0x8111('0x2a')));_0x1383f1[_0x8111('0x1c')](_0x5d2fb2);}else{logger['error'](_0x8111('0x2b'),path[_0x8111('0x1f')](__dirname,'applications',_0x4f6623[_0x8111('0x16')]+_0x8111('0x17')));}}_0x5cf6c8['rules'][_0x20cca6]=new RuleEngine(_0x1383f1);_0x5cf6c8[_0x8111('0x11')][_0x20cca6][_0x8111('0x2c')](_0x1bee1b,function(_0x430aa5){logger[_0x8111('0x29')](_0x8111('0x2d'),JSON[_0x8111('0x2e')](_0x430aa5[_0x8111('0x2f')]));if(_0x5cf6c8[_0x8111('0x11')][_0x20cca6]){_0x5cf6c8['rules'][_0x20cca6][_0x8111('0x30')](_0x8111('0x31'));}});return _0x389bde({'code':0xc8,'message':_0x1bee1b});}else{logger['info'](_0x8111('0x32'));return _0x389bde({'code':0xc8,'message':_0x1bee1b});}}catch(_0x2a1dc9){logger[_0x8111('0x33')](_0x2a1dc9[_0x8111('0x34')]);return _0x10e175(_0x256ebd[_0x8111('0x33')](0x1f4,_0x2a1dc9));}}return _0x10e175(_0x8111('0x35'));});},'AcceptMessage':function(_0x586865){var _0x24cee3=this;return new Promise(function(_0x210e57,_0x31a49a){if(_0x586865['agent']&&_0x586865[_0x8111('0x36')]['id']){if(_0x5cf6c8[_0x8111('0x37')][_0x586865['agent']['id']]){_0x5cf6c8[_0x8111('0x37')][_0x586865[_0x8111('0x36')]['id']][_0x8111('0x38')]=![];_0x5cf6c8['agents'][_0x586865[_0x8111('0x36')]['id']]['busyQueue']=undefined;}}if(_0x586865[_0x8111('0x13')]&&_0x586865[_0x8111('0x13')]['id']){try{var _0x38066e=getId(_0x586865[_0x8111('0x12')],_0x586865[_0x8111('0x13')]?_0x586865[_0x8111('0x13')]['id']:0x0,_0x586865['interaction']?_0x586865[_0x8111('0x14')]['id']:0x0);if(_0x5cf6c8['rules'][_0x38066e]){_0x5cf6c8[_0x8111('0x11')][_0x38066e][_0x8111('0x30')](_0x8111('0x39'));if(rpc[_0x586865[_0x8111('0x12')]+_0x8111('0x3a')]){rpc[_0x586865[_0x8111('0x12')]+'QueueReport'][_0x8111('0x3b')](_0x38066e,{'UserId':_0x586865[_0x8111('0x13')][_0x8111('0x3c')]})['catch'](function(_0x28c388){logger['error'](_0x8111('0x3d'));});}}return _0x210e57({'code':0xc8,'message':_0x586865});}catch(_0x5b730c){logger[_0x8111('0x33')](_0x5b730c[_0x8111('0x34')]);return _0x31a49a(_0x24cee3[_0x8111('0x33')](0x1f4,_0x5b730c));}}logger[_0x8111('0x33')](_0x8111('0x3e'));return _0x31a49a(_0x24cee3[_0x8111('0x33')](0x1f4,_0x8111('0x3e')));});},'RejectMessage':function(_0x1dbfa8){var _0x15fe01=this;return new Promise(function(_0xd6250c,_0x898b00){if(_0x1dbfa8[_0x8111('0x36')]&&_0x1dbfa8[_0x8111('0x36')]['id']){try{if(_0x5cf6c8[_0x8111('0x37')][_0x1dbfa8[_0x8111('0x36')]['id']]){_0x5cf6c8[_0x8111('0x37')][_0x1dbfa8[_0x8111('0x36')]['id']][_0x8111('0x38')]=![];_0x5cf6c8['agents'][_0x1dbfa8[_0x8111('0x36')]['id']][_0x8111('0x3f')]=undefined;}return _0xd6250c({'code':0xc8,'message':_0x1dbfa8});}catch(_0x53d436){logger['error'](_0x53d436[_0x8111('0x34')]);return _0x898b00(_0x15fe01[_0x8111('0x33')](0x1f4,_0x53d436));}}logger[_0x8111('0x33')]('message\x20is\x20empty');return _0x898b00(_0x15fe01[_0x8111('0x33')](0x1f4,_0x8111('0x3e')));});},'AbandonInteraction':function(_0x473648){var _0xf4a3f4=this;return new Promise(function(_0x3eb0ba,_0x4bce0d){if(_0x473648[_0x8111('0x12')]&&_0x473648[_0x8111('0x14')]&&_0x473648[_0x8111('0x14')]['id']){try{var _0x421ca8=getId(_0x473648[_0x8111('0x12')],_0x473648[_0x8111('0x13')]?_0x473648[_0x8111('0x13')]['id']:0x0,_0x473648['interaction']?_0x473648[_0x8111('0x14')]['id']:0x0);if(_0x5cf6c8[_0x8111('0x11')][_0x421ca8]){_0x5cf6c8['rules'][_0x421ca8][_0x8111('0x30')](_0x8111('0x39'));}return _0x3eb0ba({'code':0xc8,'message':_0x473648});}catch(_0x46f302){logger['error'](_0x46f302['stack']);return _0x4bce0d(_0xf4a3f4['error'](0x1f4,_0x46f302));}}logger[_0x8111('0x33')](_0x8111('0x3e'));return _0x4bce0d(_0xf4a3f4['error'](0x1f4,_0x8111('0x3e')));});},'AgentCapacity':function(_0x45ada5){var _0x25fd45=this;return new Promise(function(_0x34b19c,_0x40d3b5){if(_0x5cf6c8[_0x8111('0x37')][_0x8111('0x40')](_0x45ada5['id'])){for(var _0x2390dc in _0x45ada5[_0x8111('0x41')]){if(_0x45ada5['capacity'][_0x8111('0x40')](_0x2390dc)){if(_0x5cf6c8[_0x8111('0x37')][_0x45ada5['id']]['hasOwnProperty'](_0x2390dc+_0x8111('0x42'))){_0x5cf6c8[_0x8111('0x37')][_0x45ada5['id']][_0x2390dc+'CurrentCapacity']=parseInt(_0x45ada5[_0x8111('0x41')][_0x2390dc],0xa);}}}_0x5cf6c8['agents'][_0x45ada5['id']]['updateRealtime']();return _0x34b19c({'code':0xc8,'message':_0x5cf6c8[_0x8111('0x37')][_0x45ada5['id']]});}else{return _0x40d3b5(_0x25fd45[_0x8111('0x33')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x18bfdf){return new Promise(function(_0x295cec,_0x403bef){var _0x3ba484=_[_0x8111('0x43')](_0x5cf6c8[_0x8111('0x37')]);_0x295cec({'count':_0x3ba484[_0x8111('0x1e')],'rows':_0x3ba484});});},'ChatQueues':function(_0x492e42){return new Promise(function(_0x4d42bb,_0x38d58a){var _0x207d2b=[];for(var _0x40feee in _0x5cf6c8[_0x8111('0x44')]){if(_0x5cf6c8[_0x8111('0x44')]['hasOwnProperty'](_0x40feee)){var _0x2767e1=_0x5cf6c8[_0x8111('0x44')][_0x40feee];var _0x4100bd={'id':_0x2767e1['id'],'available':_0x2767e1[_0x8111('0x45')],'loggedIn':_0x2767e1[_0x8111('0x46')],'name':_0x2767e1['name'],'paused':_0x2767e1[_0x8111('0x47')],'waiting':_0x2767e1[_0x8111('0x48')]};_0x207d2b['push'](_0x4100bd);}}_0x4d42bb({'count':_0x207d2b[_0x8111('0x1e')],'rows':_0x207d2b});});},'MailQueues':function(_0x3fb576){return new Promise(function(_0x5b7e0c,_0x348299){var _0x217f2e=[];for(var _0x27311b in _0x5cf6c8['mailQueues']){if(_0x5cf6c8[_0x8111('0x49')][_0x8111('0x40')](_0x27311b)){var _0x361266=_0x5cf6c8[_0x8111('0x49')][_0x27311b];var _0x388f8e={'id':_0x361266['id'],'available':_0x361266[_0x8111('0x45')],'loggedIn':_0x361266[_0x8111('0x46')],'name':_0x361266[_0x8111('0x4a')],'paused':_0x361266[_0x8111('0x47')],'waiting':_0x361266[_0x8111('0x48')]};_0x217f2e['push'](_0x388f8e);}}_0x5b7e0c({'count':_0x217f2e['length'],'rows':_0x217f2e});});},'OpenchannelQueues':function(_0x46afde){return new Promise(function(_0x1f68f7,_0x3771f8){var _0x2b91d0=[];for(var _0x510e75 in _0x5cf6c8[_0x8111('0x4b')]){if(_0x5cf6c8[_0x8111('0x4b')][_0x8111('0x40')](_0x510e75)){var _0xb7ba0c=_0x5cf6c8[_0x8111('0x4b')][_0x510e75];var _0x3c8b2a={'id':_0xb7ba0c['id'],'available':_0xb7ba0c[_0x8111('0x45')],'loggedIn':_0xb7ba0c[_0x8111('0x46')],'name':_0xb7ba0c[_0x8111('0x4a')],'paused':_0xb7ba0c[_0x8111('0x47')],'waiting':_0xb7ba0c[_0x8111('0x48')]};_0x2b91d0['push'](_0x3c8b2a);}}_0x1f68f7({'count':_0x2b91d0[_0x8111('0x1e')],'rows':_0x2b91d0});});},'SmsQueues':function(_0x124222){return new Promise(function(_0x610103,_0x21770a){var _0x561c42=[];for(var _0x4c383a in _0x5cf6c8[_0x8111('0x4c')]){if(_0x5cf6c8[_0x8111('0x4c')]['hasOwnProperty'](_0x4c383a)){var _0x558d2e=_0x5cf6c8[_0x8111('0x4c')][_0x4c383a];var _0x2df26e={'id':_0x558d2e['id'],'available':_0x558d2e[_0x8111('0x45')],'loggedIn':_0x558d2e[_0x8111('0x46')],'name':_0x558d2e['name'],'paused':_0x558d2e['paused'],'waiting':_0x558d2e[_0x8111('0x48')]};_0x561c42[_0x8111('0x1c')](_0x2df26e);}}_0x610103({'count':_0x561c42[_0x8111('0x1e')],'rows':_0x561c42});});},'FaxQueues':function(_0x38314a){return new Promise(function(_0x11cbe4,_0x5ef29a){var _0x55f4c4=[];for(var _0x2d62f4 in _0x5cf6c8['faxQueues']){if(_0x5cf6c8[_0x8111('0x4d')][_0x8111('0x40')](_0x2d62f4)){var _0x1707b6=_0x5cf6c8[_0x8111('0x4d')][_0x2d62f4];var _0x2897ac={'id':_0x1707b6['id'],'available':_0x1707b6[_0x8111('0x45')],'loggedIn':_0x1707b6[_0x8111('0x46')],'name':_0x1707b6[_0x8111('0x4a')],'paused':_0x1707b6[_0x8111('0x47')],'waiting':_0x1707b6[_0x8111('0x48')]};_0x55f4c4[_0x8111('0x1c')](_0x2897ac);}}_0x11cbe4({'count':_0x55f4c4[_0x8111('0x1e')],'rows':_0x55f4c4});});},'WhatsappQueues':function(_0x8c1f46){return new Promise(function(_0x388849,_0x1f4ea5){var _0x1886d9=[];for(var _0x4f90e5 in _0x5cf6c8[_0x8111('0x4e')]){if(_0x5cf6c8[_0x8111('0x4e')][_0x8111('0x40')](_0x4f90e5)){var _0x3f1020=_0x5cf6c8['whatsappQueues'][_0x4f90e5];var _0x518ef0={'id':_0x3f1020['id'],'available':_0x3f1020[_0x8111('0x45')],'loggedIn':_0x3f1020['loggedIn'],'name':_0x3f1020[_0x8111('0x4a')],'paused':_0x3f1020[_0x8111('0x47')],'waiting':_0x3f1020[_0x8111('0x48')]};_0x1886d9['push'](_0x518ef0);}}_0x388849({'count':_0x1886d9['length'],'rows':_0x1886d9});});},'ChatQueuesWaitingInteractions':function(_0x384ebf){return new Promise(function(_0x1e9642,_0x663a45){var _0x10e57c=_[_0x8111('0x43')](_0x5cf6c8[_0x8111('0x4f')]);_0x1e9642({'count':_0x10e57c['length'],'rows':_0x10e57c});});},'MailQueuesWaitingInteractions':function(_0x1f24e2){return new Promise(function(_0x163c56,_0x598ecc){var _0x5e9aa9=_['values'](_0x5cf6c8[_0x8111('0x50')]);_0x163c56({'count':_0x5e9aa9[_0x8111('0x1e')],'rows':_0x5e9aa9});});},'OpenchannelQueuesWaitingInteractions':function(_0x106783){return new Promise(function(_0x52b9d1,_0x4c9c12){var _0x393832=_[_0x8111('0x43')](_0x5cf6c8[_0x8111('0x51')]);_0x52b9d1({'count':_0x393832[_0x8111('0x1e')],'rows':_0x393832});});},'SmsQueuesWaitingInteractions':function(_0x41a8d0){return new Promise(function(_0x1d702f,_0x42b0fb){var _0x2d2c02=_[_0x8111('0x43')](_0x5cf6c8['smsQueuesWaitingInteractions']);_0x1d702f({'count':_0x2d2c02['length'],'rows':_0x2d2c02});});},'FaxQueuesWaitingInteractions':function(_0x2354ff){return new Promise(function(_0x234ee6,_0x528d98){var _0x1cb1da=_[_0x8111('0x43')](_0x5cf6c8[_0x8111('0x52')]);_0x234ee6({'count':_0x1cb1da['length'],'rows':_0x1cb1da});});},'WhatsappQueuesWaitingInteractions':function(_0x1fd8c5){return new Promise(function(_0x3099e0,_0x4dbdb1){var _0x1e0363=_['values'](_0x5cf6c8[_0x8111('0x53')]);_0x3099e0({'count':_0x1e0363[_0x8111('0x1e')],'rows':_0x1e0363});});}};var _0x597c0f=jayson[_0x8111('0x54')](_0x56cfbd)[_0x8111('0x55')]();_0x597c0f['on'](_0x8111('0x33'),function(_0x59ab47){logger['error'](JSON[_0x8111('0x2e')](_0x59ab47));return _0x404eab(_0x59ab47);});_0x597c0f['listen'](0x232c,'127.0.0.1',function(){console['log'](_0x8111('0x56'),0x232c);return _0x53ba31(_0x8111('0x57')+0x232c);});});};