97c17dd9087ac01c1b9be4acb6638578a02e0507
[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 _0xe9b6=['UserId','catch','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting','mailQueues','loggedIn','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','../../../config/environment','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','message','interaction','applications','isArray','length','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','amazonlex','TagId','%s:%s:%s','condition','intervals','consequence','info','Push\x20new\x20rule','on\x20interval','error','Please\x20create\x20a\x20new\x20file\x20under','rules','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','end','channel','QueueReport'];(function(_0x39de5f,_0x1d61ec){var _0x1940c7=function(_0x1bad59){while(--_0x1bad59){_0x39de5f['push'](_0x39de5f['shift']());}};_0x1940c7(++_0x1d61ec);}(_0xe9b6,0x79));var _0x6e9b=function(_0x4dfe8f,_0x4c7b55){_0x4dfe8f=_0x4dfe8f-0x0;var _0x3fc202=_0xe9b6[_0x4dfe8f];return _0x3fc202;};'use strict';var _=require(_0x6e9b('0x0'));var util=require(_0x6e9b('0x1'));var path=require(_0x6e9b('0x2'));var fs=require('fs');var jayson=require(_0x6e9b('0x3'));var BPromise=require('bluebird');var uuid=require('uuid');var config=require(_0x6e9b('0x4'));var logger=require('../../../config/logger')('routing');var rpc={'openchannelQueueReport':require(_0x6e9b('0x5')),'mailQueueReport':require(_0x6e9b('0x6')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x6e9b('0x7')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x6e9b('0x8'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x2096a7,_0x1d2d78,_0xdf1898){return util[_0x6e9b('0x9')](_0x6e9b('0xa'),_0x2096a7,_0x1d2d78||0x0,_0xdf1898||0x0);}function getIntervals(_0x2959a8,_0x3b538f){var _0x197bb3=[];if(!_[_0x6e9b('0xb')](_0x3b538f[_0x6e9b('0xc')])&&!_[_0x6e9b('0xb')](_0x2959a8[_0x3b538f[_0x6e9b('0xc')]])&&!_[_0x6e9b('0xb')](_0x2959a8[_0x3b538f[_0x6e9b('0xc')]][_0x6e9b('0xd')])){_0x197bb3=_['map'](_0x2959a8[_0x3b538f[_0x6e9b('0xc')]][_0x6e9b('0xd')],_0x6e9b('0xe'));}else if(!_[_0x6e9b('0xb')](_0x3b538f[_0x6e9b('0xe')])){_0x197bb3=[_0x3b538f[_0x6e9b('0xe')]];}return _0x197bb3;}exports[_0x6e9b('0xf')]=function(_0x49bc27){_0x49bc27['rules']={};return new BPromise(function(_0x1ab1e6,_0x567efe){var _0x2ac333={'Start':function(_0x474734){var _0x470447=this;return new Promise(function(_0x341712,_0x3b5061){if(_0x474734){try{var _0x40342b=[];var _0xf386f4=getId(_0x474734['channel'],_0x474734['message']?_0x474734[_0x6e9b('0x10')]['id']:0x0,_0x474734['interaction']?_0x474734[_0x6e9b('0x11')]['id']:0x0);if(_0x474734[_0x6e9b('0x12')]&&_[_0x6e9b('0x13')](_0x474734['applications'])&&_0x474734[_0x6e9b('0x12')][_0x6e9b('0x14')]){for(var _0x4e2d4f=0x0;_0x4e2d4f<_0x474734['applications'][_0x6e9b('0x14')];_0x4e2d4f+=0x1){var _0xa8a495=_0x474734['applications'][_0x4e2d4f];if(fs['existsSync'](path[_0x6e9b('0x15')](__dirname,_0x6e9b('0x12'),_0xa8a495[_0x6e9b('0x16')]+_0x6e9b('0x17')))){var _0x593e8d=[];switch(_0xa8a495[_0x6e9b('0x16')][_0x6e9b('0x18')]()){case _0x6e9b('0x19'):var _0x23ba13=_0xa8a495[_0x6e9b('0x1a')][_0x6e9b('0x1b')](',');_0x593e8d[_0x6e9b('0x1c')](_0x23ba13[0x0]);_0x593e8d[_0x6e9b('0x1c')](_0x23ba13[_0x6e9b('0x1d')](0x1,_0x23ba13[_0x6e9b('0x14')])[_0x6e9b('0x15')](','));break;case _0x6e9b('0x1e'):var _0x351203=_0xa8a495[_0x6e9b('0x1a')][_0x6e9b('0x1b')](',');_0x593e8d[_0x6e9b('0x1c')](_0x351203[0x0]);_0x593e8d[_0x6e9b('0x1c')](_0x351203[0x1]);_0x593e8d[_0x6e9b('0x1c')](_0x351203[_0x6e9b('0x1d')](0x2,_0x351203[_0x6e9b('0x14')])['join'](','));break;case _0x6e9b('0x1f'):var _0x1282be=_0xa8a495[_0x6e9b('0x1a')]['split'](',');_0x593e8d[_0x6e9b('0x1c')](_0x1282be[0x0]);_0x593e8d[_0x6e9b('0x1c')](_0x1282be[0x1]);_0x593e8d[_0x6e9b('0x1c')](_0x1282be[0x2]);_0x593e8d[_0x6e9b('0x1c')](_0x1282be[0x3]);_0x593e8d[_0x6e9b('0x1c')](_0x1282be[_0x6e9b('0x1d')](0x4,_0x1282be[_0x6e9b('0x14')])['join'](','));break;case _0x6e9b('0x10'):_0x593e8d['push'](_0xa8a495[_0x6e9b('0x1a')]);break;case'tag':_0x593e8d[_0x6e9b('0x1c')](_0xa8a495[_0x6e9b('0x20')]);_0x593e8d[_0x6e9b('0x1c')](_0xa8a495['appdata']);break;default:_0x593e8d=_[_0x6e9b('0xb')](_0xa8a495[_0x6e9b('0x1a')])?[]:_0xa8a495[_0x6e9b('0x1a')][_0x6e9b('0x1b')](',');}var _0x3d7c7a={'id':util[_0x6e9b('0x9')](_0x6e9b('0x21'),_0xf386f4,_0xa8a495['id'],_0xa8a495[_0x6e9b('0x16')]),'condition':require('./interval')[_0x6e9b('0x22')](_0xf386f4,getIntervals(_0x49bc27[_0x6e9b('0x23')],_0xa8a495),_0x49bc27),'consequence':require('./applications/'+_0xa8a495[_0x6e9b('0x16')])[_0x6e9b('0x24')](_0xf386f4,_0x593e8d,_0x49bc27,_0x474734),'p':_0xa8a495['priority']||0x0};logger[_0x6e9b('0x25')](_0x6e9b('0x26'),_0x3d7c7a['id'],_0x6e9b('0x27'),getIntervals(_0x49bc27[_0x6e9b('0x23')],_0xa8a495)['join']('\x20|\x20'));_0x40342b[_0x6e9b('0x1c')](_0x3d7c7a);}else{logger[_0x6e9b('0x28')](_0x6e9b('0x29'),path['join'](__dirname,'applications',_0xa8a495[_0x6e9b('0x16')]+'.js'));}}_0x49bc27[_0x6e9b('0x2a')][_0xf386f4]=new RuleEngine(_0x40342b);_0x49bc27['rules'][_0xf386f4]['execute'](_0x474734,function(_0x32b096){logger['info'](_0x6e9b('0x2b'),JSON[_0x6e9b('0x2c')](_0x32b096[_0x6e9b('0x2d')]));if(_0x49bc27[_0x6e9b('0x2a')][_0xf386f4]){_0x49bc27[_0x6e9b('0x2a')][_0xf386f4][_0x6e9b('0x2e')](_0x6e9b('0x2f'));}});return _0x341712({'code':0xc8,'message':_0x474734});}else{logger['info'](_0x6e9b('0x30'));return _0x341712({'code':0xc8,'message':_0x474734});}}catch(_0x3fbb17){logger[_0x6e9b('0x28')](_0x3fbb17[_0x6e9b('0x31')]);return _0x3b5061(_0x470447['error'](0x1f4,_0x3fbb17));}}return _0x3b5061('routing\x20is\x20empty');});},'AcceptMessage':function(_0xe62754){var _0xb3d5d3=this;return new Promise(function(_0x3a37d1,_0x1c26e5){if(_0xe62754[_0x6e9b('0x10')]&&_0xe62754[_0x6e9b('0x10')]['id']){try{var _0x59bdc1=getId(_0xe62754['channel'],_0xe62754['message']?_0xe62754[_0x6e9b('0x10')]['id']:0x0,_0xe62754['interaction']?_0xe62754[_0x6e9b('0x11')]['id']:0x0);if(_0x49bc27[_0x6e9b('0x2a')][_0x59bdc1]){_0x49bc27[_0x6e9b('0x2a')][_0x59bdc1][_0x6e9b('0x2e')](_0x6e9b('0x32'));if(rpc[_0xe62754[_0x6e9b('0x33')]+_0x6e9b('0x34')]){rpc[_0xe62754[_0x6e9b('0x33')]+_0x6e9b('0x34')]['update'](_0x59bdc1,{'UserId':_0xe62754['message'][_0x6e9b('0x35')]})[_0x6e9b('0x36')](function(_0x322202){logger[_0x6e9b('0x28')]('error\x20update\x20queue\x20report');});}}return _0x3a37d1({'code':0xc8,'message':_0xe62754});}catch(_0x4ce3ed){logger[_0x6e9b('0x28')](_0x4ce3ed[_0x6e9b('0x31')]);return _0x1c26e5(_0xb3d5d3[_0x6e9b('0x28')](0x1f4,_0x4ce3ed));}}logger[_0x6e9b('0x28')](_0x6e9b('0x37'));return _0x1c26e5(_0xb3d5d3[_0x6e9b('0x28')](0x1f4,_0x6e9b('0x37')));});},'RejectMessage':function(_0x53932a){var _0x2d0e40=this;return new Promise(function(_0x1f4a94,_0x252f6c){if(_0x53932a[_0x6e9b('0x38')]&&_0x53932a[_0x6e9b('0x38')]['id']){try{if(_0x49bc27['agents'][_0x53932a['agent']['id']]){_0x49bc27[_0x6e9b('0x39')][_0x53932a['agent']['id']][_0x6e9b('0x3a')]=![];_0x49bc27['agents'][_0x53932a['agent']['id']][_0x6e9b('0x3b')]=undefined;}return _0x1f4a94({'code':0xc8,'message':_0x53932a});}catch(_0x53d0c7){logger[_0x6e9b('0x28')](_0x53d0c7[_0x6e9b('0x31')]);return _0x252f6c(_0x2d0e40[_0x6e9b('0x28')](0x1f4,_0x53d0c7));}}logger['error'](_0x6e9b('0x37'));return _0x252f6c(_0x2d0e40[_0x6e9b('0x28')](0x1f4,_0x6e9b('0x37')));});},'AbandonInteraction':function(_0x3602a8){var _0x425e17=this;return new Promise(function(_0x561f40,_0x392a58){if(_0x3602a8[_0x6e9b('0x33')]&&_0x3602a8[_0x6e9b('0x11')]&&_0x3602a8['interaction']['id']){try{var _0x4ddfd0=getId(_0x3602a8[_0x6e9b('0x33')],_0x3602a8[_0x6e9b('0x10')]?_0x3602a8[_0x6e9b('0x10')]['id']:0x0,_0x3602a8[_0x6e9b('0x11')]?_0x3602a8['interaction']['id']:0x0);if(_0x49bc27['rules'][_0x4ddfd0]){_0x49bc27['rules'][_0x4ddfd0][_0x6e9b('0x2e')]('end');}return _0x561f40({'code':0xc8,'message':_0x3602a8});}catch(_0x3400ac){logger[_0x6e9b('0x28')](_0x3400ac[_0x6e9b('0x31')]);return _0x392a58(_0x425e17[_0x6e9b('0x28')](0x1f4,_0x3400ac));}}logger[_0x6e9b('0x28')](_0x6e9b('0x37'));return _0x392a58(_0x425e17[_0x6e9b('0x28')](0x1f4,_0x6e9b('0x37')));});},'AgentCapacity':function(_0x4cca10){var _0x1a9487=this;return new Promise(function(_0x3a9e0d,_0x2ef1f2){if(_0x49bc27['agents'][_0x6e9b('0x3c')](_0x4cca10['id'])){for(var _0x5c1c0a in _0x4cca10[_0x6e9b('0x3d')]){if(_0x4cca10['capacity'][_0x6e9b('0x3c')](_0x5c1c0a)){if(_0x49bc27['agents'][_0x4cca10['id']][_0x6e9b('0x3c')](_0x5c1c0a+'CurrentCapacity')){_0x49bc27[_0x6e9b('0x39')][_0x4cca10['id']][_0x5c1c0a+_0x6e9b('0x3e')]=parseInt(_0x4cca10[_0x6e9b('0x3d')][_0x5c1c0a],0xa);}}}_0x49bc27[_0x6e9b('0x39')][_0x4cca10['id']][_0x6e9b('0x3f')]();return _0x3a9e0d({'code':0xc8,'message':_0x49bc27[_0x6e9b('0x39')][_0x4cca10['id']]});}else{return _0x2ef1f2(_0x1a9487[_0x6e9b('0x28')](0x1f4,_0x6e9b('0x40')));}});},'Agents':function(_0x2ebffa){return new Promise(function(_0x555e00,_0x1e290b){var _0x457f4c=_[_0x6e9b('0x41')](_0x49bc27[_0x6e9b('0x39')]);_0x555e00({'count':_0x457f4c['length'],'rows':_0x457f4c});});},'ChatQueues':function(_0x2072d4){return new Promise(function(_0x3b4d59,_0x45c9a0){var _0x4a20b0=[];for(var _0x135f81 in _0x49bc27[_0x6e9b('0x42')]){if(_0x49bc27[_0x6e9b('0x42')][_0x6e9b('0x3c')](_0x135f81)){var _0x419ef7=_0x49bc27[_0x6e9b('0x42')][_0x135f81];var _0x50c8fc={'id':_0x419ef7['id'],'available':_0x419ef7[_0x6e9b('0x43')],'loggedIn':_0x419ef7['loggedIn'],'name':_0x419ef7[_0x6e9b('0x44')],'paused':_0x419ef7[_0x6e9b('0x45')],'waiting':_0x419ef7[_0x6e9b('0x46')]};_0x4a20b0['push'](_0x50c8fc);}}_0x3b4d59({'count':_0x4a20b0[_0x6e9b('0x14')],'rows':_0x4a20b0});});},'MailQueues':function(_0x231860){return new Promise(function(_0x417e3f,_0x48c8ea){var _0x12d30=[];for(var _0x1f3a70 in _0x49bc27[_0x6e9b('0x47')]){if(_0x49bc27[_0x6e9b('0x47')][_0x6e9b('0x3c')](_0x1f3a70)){var _0x2936fb=_0x49bc27[_0x6e9b('0x47')][_0x1f3a70];var _0x3bf957={'id':_0x2936fb['id'],'available':_0x2936fb[_0x6e9b('0x43')],'loggedIn':_0x2936fb[_0x6e9b('0x48')],'name':_0x2936fb[_0x6e9b('0x44')],'paused':_0x2936fb[_0x6e9b('0x45')],'waiting':_0x2936fb[_0x6e9b('0x46')]};_0x12d30[_0x6e9b('0x1c')](_0x3bf957);}}_0x417e3f({'count':_0x12d30[_0x6e9b('0x14')],'rows':_0x12d30});});},'OpenchannelQueues':function(_0x4ae07a){return new Promise(function(_0x4f5bcc,_0x2710ca){var _0x465912=[];for(var _0x272d71 in _0x49bc27[_0x6e9b('0x49')]){if(_0x49bc27[_0x6e9b('0x49')][_0x6e9b('0x3c')](_0x272d71)){var _0x2efa5d=_0x49bc27['openchannelQueues'][_0x272d71];var _0x358be8={'id':_0x2efa5d['id'],'available':_0x2efa5d[_0x6e9b('0x43')],'loggedIn':_0x2efa5d[_0x6e9b('0x48')],'name':_0x2efa5d[_0x6e9b('0x44')],'paused':_0x2efa5d['paused'],'waiting':_0x2efa5d[_0x6e9b('0x46')]};_0x465912['push'](_0x358be8);}}_0x4f5bcc({'count':_0x465912[_0x6e9b('0x14')],'rows':_0x465912});});},'SmsQueues':function(_0x2edf91){return new Promise(function(_0x4a52f1,_0x5d4225){var _0x4ba2fb=[];for(var _0x5c1887 in _0x49bc27[_0x6e9b('0x4a')]){if(_0x49bc27['smsQueues']['hasOwnProperty'](_0x5c1887)){var _0x531a49=_0x49bc27['smsQueues'][_0x5c1887];var _0x497a8e={'id':_0x531a49['id'],'available':_0x531a49['available'],'loggedIn':_0x531a49[_0x6e9b('0x48')],'name':_0x531a49['name'],'paused':_0x531a49[_0x6e9b('0x45')],'waiting':_0x531a49[_0x6e9b('0x46')]};_0x4ba2fb[_0x6e9b('0x1c')](_0x497a8e);}}_0x4a52f1({'count':_0x4ba2fb[_0x6e9b('0x14')],'rows':_0x4ba2fb});});},'FaxQueues':function(_0x1249c0){return new Promise(function(_0x443cdb,_0x5e7b48){var _0x57a415=[];for(var _0x199d49 in _0x49bc27[_0x6e9b('0x4b')]){if(_0x49bc27[_0x6e9b('0x4b')][_0x6e9b('0x3c')](_0x199d49)){var _0x2e88f9=_0x49bc27[_0x6e9b('0x4b')][_0x199d49];var _0xcf5994={'id':_0x2e88f9['id'],'available':_0x2e88f9[_0x6e9b('0x43')],'loggedIn':_0x2e88f9[_0x6e9b('0x48')],'name':_0x2e88f9['name'],'paused':_0x2e88f9[_0x6e9b('0x45')],'waiting':_0x2e88f9['waiting']};_0x57a415[_0x6e9b('0x1c')](_0xcf5994);}}_0x443cdb({'count':_0x57a415[_0x6e9b('0x14')],'rows':_0x57a415});});},'WhatsappQueues':function(_0x23b148){return new Promise(function(_0xa8497e,_0xe06ced){var _0x566ab1=[];for(var _0x2d199f in _0x49bc27[_0x6e9b('0x4c')]){if(_0x49bc27[_0x6e9b('0x4c')][_0x6e9b('0x3c')](_0x2d199f)){var _0x484121=_0x49bc27['whatsappQueues'][_0x2d199f];var _0x4f0bcb={'id':_0x484121['id'],'available':_0x484121[_0x6e9b('0x43')],'loggedIn':_0x484121['loggedIn'],'name':_0x484121[_0x6e9b('0x44')],'paused':_0x484121[_0x6e9b('0x45')],'waiting':_0x484121['waiting']};_0x566ab1['push'](_0x4f0bcb);}}_0xa8497e({'count':_0x566ab1[_0x6e9b('0x14')],'rows':_0x566ab1});});},'ChatQueuesWaitingInteractions':function(_0x228b92){return new Promise(function(_0x15a47d,_0x2a0cf8){var _0x49e81c=_[_0x6e9b('0x41')](_0x49bc27[_0x6e9b('0x4d')]);_0x15a47d({'count':_0x49e81c[_0x6e9b('0x14')],'rows':_0x49e81c});});},'MailQueuesWaitingInteractions':function(_0xf17334){return new Promise(function(_0x1e2bc7,_0x13aa16){var _0x1533a9=_[_0x6e9b('0x41')](_0x49bc27[_0x6e9b('0x4e')]);_0x1e2bc7({'count':_0x1533a9[_0x6e9b('0x14')],'rows':_0x1533a9});});},'OpenchannelQueuesWaitingInteractions':function(_0x51fa23){return new Promise(function(_0x4fb446,_0x4018fe){var _0x16d668=_['values'](_0x49bc27[_0x6e9b('0x4f')]);_0x4fb446({'count':_0x16d668['length'],'rows':_0x16d668});});},'SmsQueuesWaitingInteractions':function(_0x506266){return new Promise(function(_0x544ce0,_0x127e0c){var _0x4d44ab=_[_0x6e9b('0x41')](_0x49bc27[_0x6e9b('0x50')]);_0x544ce0({'count':_0x4d44ab[_0x6e9b('0x14')],'rows':_0x4d44ab});});},'FaxQueuesWaitingInteractions':function(_0x219cee){return new Promise(function(_0x2f9d6e,_0x569b71){var _0x4790b4=_[_0x6e9b('0x41')](_0x49bc27[_0x6e9b('0x51')]);_0x2f9d6e({'count':_0x4790b4['length'],'rows':_0x4790b4});});},'WhatsappQueuesWaitingInteractions':function(_0x5cb52c){return new Promise(function(_0x369382,_0xb2e749){var _0x20d7af=_['values'](_0x49bc27['whatsappQueuesWaitingInteractions']);_0x369382({'count':_0x20d7af['length'],'rows':_0x20d7af});});}};var _0x3b7141=jayson[_0x6e9b('0x52')](_0x2ac333)[_0x6e9b('0x53')]();_0x3b7141['on']('error',function(_0x47955d){logger['error'](JSON[_0x6e9b('0x2c')](_0x47955d));return _0x567efe(_0x47955d);});_0x3b7141[_0x6e9b('0xf')](0x232c,_0x6e9b('0x54'),function(){console['log'](_0x6e9b('0x55'),0x232c);return _0x1ab1e6(_0x6e9b('0x56')+0x232c);});});};