5bb258b0d5c1df16652d6d379f3dc6b7bc481196
[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 _0xe2f5=['TagId','./interval','intervals','consequence','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','Applications\x20executed','stringify','matchPath','emit','stack','end','QueueReport','channel','update','UserId','catch','message\x20is\x20empty','agent','agents','busy','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','openchannelQueues','smsQueues','name','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','map','interval','listen','rules','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','split','push','slice','dialogflow','appdata','amazonlex'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xe2f5,0x18f));var _0x5e2f=function(_0xa40b3,_0x32d921){_0xa40b3=_0xa40b3-0x0;var _0x29981e=_0xe2f5[_0xa40b3];return _0x29981e;};'use strict';var _=require(_0x5e2f('0x0'));var util=require(_0x5e2f('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x5e2f('0x2'));var BPromise=require('bluebird');var uuid=require('uuid');var config=require(_0x5e2f('0x3'));var logger=require(_0x5e2f('0x4'))('routing');var rpc={'openchannelQueueReport':require(_0x5e2f('0x5')),'mailQueueReport':require(_0x5e2f('0x6')),'chatQueueReport':require(_0x5e2f('0x7')),'smsQueueReport':require(_0x5e2f('0x8')),'faxQueueReport':require(_0x5e2f('0x9')),'whatsappQueueReport':require(_0x5e2f('0xa'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x3b964b,_0x3dd3d9,_0x411b77){return util[_0x5e2f('0xb')](_0x5e2f('0xc'),_0x3b964b,_0x3dd3d9||0x0,_0x411b77||0x0);}function getIntervals(_0x3bb6d0,_0x5efdfe){var _0x19d92d=[];if(!_[_0x5e2f('0xd')](_0x5efdfe[_0x5e2f('0xe')])&&!_[_0x5e2f('0xd')](_0x3bb6d0[_0x5efdfe[_0x5e2f('0xe')]])&&!_[_0x5e2f('0xd')](_0x3bb6d0[_0x5efdfe[_0x5e2f('0xe')]]['Intervals'])){_0x19d92d=_[_0x5e2f('0xf')](_0x3bb6d0[_0x5efdfe['IntervalId']]['Intervals'],_0x5e2f('0x10'));}else if(!_[_0x5e2f('0xd')](_0x5efdfe[_0x5e2f('0x10')])){_0x19d92d=[_0x5efdfe[_0x5e2f('0x10')]];}return _0x19d92d;}exports[_0x5e2f('0x11')]=function(_0x5899e5){_0x5899e5[_0x5e2f('0x12')]={};return new BPromise(function(_0x1ed300,_0x573b3c){var _0x4d5add={'Start':function(_0x13bbfc){var _0x4b6072=this;return new Promise(function(_0x2a68b4,_0x4f8cc9){if(_0x13bbfc){try{var _0x438228=[];var _0x5eba44=getId(_0x13bbfc['channel'],_0x13bbfc[_0x5e2f('0x13')]?_0x13bbfc[_0x5e2f('0x13')]['id']:0x0,_0x13bbfc[_0x5e2f('0x14')]?_0x13bbfc[_0x5e2f('0x14')]['id']:0x0);if(_0x13bbfc[_0x5e2f('0x15')]&&_[_0x5e2f('0x16')](_0x13bbfc[_0x5e2f('0x15')])&&_0x13bbfc[_0x5e2f('0x15')][_0x5e2f('0x17')]){for(var _0x17bfdf=0x0;_0x17bfdf<_0x13bbfc[_0x5e2f('0x15')][_0x5e2f('0x17')];_0x17bfdf+=0x1){var _0x3929ba=_0x13bbfc[_0x5e2f('0x15')][_0x17bfdf];if(fs[_0x5e2f('0x18')](path[_0x5e2f('0x19')](__dirname,_0x5e2f('0x15'),_0x3929ba[_0x5e2f('0x1a')]+_0x5e2f('0x1b')))){var _0x121a42=[];switch(_0x3929ba['app'][_0x5e2f('0x1c')]()){case _0x5e2f('0x1d'):var _0x3f2cb5=_0x3929ba['appdata'][_0x5e2f('0x1e')](',');_0x121a42[_0x5e2f('0x1f')](_0x3f2cb5[0x0]);_0x121a42[_0x5e2f('0x1f')](_0x3f2cb5[_0x5e2f('0x20')](0x1,_0x3f2cb5[_0x5e2f('0x17')])[_0x5e2f('0x19')](','));break;case _0x5e2f('0x21'):var _0x31e830=_0x3929ba[_0x5e2f('0x22')]['split'](',');_0x121a42['push'](_0x31e830[0x0]);_0x121a42[_0x5e2f('0x1f')](_0x31e830[0x1]);_0x121a42[_0x5e2f('0x1f')](_0x31e830[_0x5e2f('0x20')](0x2,_0x31e830[_0x5e2f('0x17')])['join'](','));break;case _0x5e2f('0x23'):var _0x592f75=_0x3929ba['appdata'][_0x5e2f('0x1e')](',');_0x121a42['push'](_0x592f75[0x0]);_0x121a42[_0x5e2f('0x1f')](_0x592f75[0x1]);_0x121a42[_0x5e2f('0x1f')](_0x592f75[0x2]);_0x121a42[_0x5e2f('0x1f')](_0x592f75[0x3]);_0x121a42[_0x5e2f('0x1f')](_0x592f75['slice'](0x4,_0x592f75['length'])['join'](','));break;case _0x5e2f('0x13'):_0x121a42[_0x5e2f('0x1f')](_0x3929ba[_0x5e2f('0x22')]);break;case'tag':_0x121a42[_0x5e2f('0x1f')](_0x3929ba[_0x5e2f('0x24')]);_0x121a42['push'](_0x3929ba['appdata']);break;default:_0x121a42=_['isNil'](_0x3929ba[_0x5e2f('0x22')])?[]:_0x3929ba['appdata'][_0x5e2f('0x1e')](',');}var _0x2608f4={'id':util[_0x5e2f('0xb')]('%s:%s:%s',_0x5eba44,_0x3929ba['id'],_0x3929ba['app']),'condition':require(_0x5e2f('0x25'))['condition'](_0x5eba44,getIntervals(_0x5899e5[_0x5e2f('0x26')],_0x3929ba),_0x5899e5),'consequence':require('./applications/'+_0x3929ba['app'])[_0x5e2f('0x27')](_0x5eba44,_0x121a42,_0x5899e5,_0x13bbfc),'p':_0x3929ba['priority']||0x0};logger['info'](_0x5e2f('0x28'),_0x2608f4['id'],_0x5e2f('0x29'),getIntervals(_0x5899e5['intervals'],_0x3929ba)['join'](_0x5e2f('0x2a')));_0x438228[_0x5e2f('0x1f')](_0x2608f4);}else{logger[_0x5e2f('0x2b')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x5e2f('0x19')](__dirname,'applications',_0x3929ba[_0x5e2f('0x1a')]+'.js'));}}_0x5899e5['rules'][_0x5eba44]=new RuleEngine(_0x438228);_0x5899e5[_0x5e2f('0x12')][_0x5eba44][_0x5e2f('0x2c')](_0x13bbfc,function(_0x1a0bed){logger['info'](_0x5e2f('0x2d'),JSON[_0x5e2f('0x2e')](_0x1a0bed[_0x5e2f('0x2f')]));if(_0x5899e5[_0x5e2f('0x12')][_0x5eba44]){_0x5899e5[_0x5e2f('0x12')][_0x5eba44][_0x5e2f('0x30')]('complete');}});return _0x2a68b4({'code':0xc8,'message':_0x13bbfc});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x2a68b4({'code':0xc8,'message':_0x13bbfc});}}catch(_0x54e201){logger[_0x5e2f('0x2b')](_0x54e201[_0x5e2f('0x31')]);return _0x4f8cc9(_0x4b6072[_0x5e2f('0x2b')](0x1f4,_0x54e201));}}return _0x4f8cc9('routing\x20is\x20empty');});},'AcceptMessage':function(_0x4c8daa){var _0x3642b6=this;return new Promise(function(_0x4a9b43,_0x25793f){if(_0x4c8daa[_0x5e2f('0x13')]&&_0x4c8daa[_0x5e2f('0x13')]['id']){try{var _0x5677c4=getId(_0x4c8daa['channel'],_0x4c8daa[_0x5e2f('0x13')]?_0x4c8daa[_0x5e2f('0x13')]['id']:0x0,_0x4c8daa['interaction']?_0x4c8daa[_0x5e2f('0x14')]['id']:0x0);if(_0x5899e5[_0x5e2f('0x12')][_0x5677c4]){_0x5899e5[_0x5e2f('0x12')][_0x5677c4][_0x5e2f('0x30')](_0x5e2f('0x32'));if(rpc[_0x4c8daa['channel']+_0x5e2f('0x33')]){rpc[_0x4c8daa[_0x5e2f('0x34')]+_0x5e2f('0x33')][_0x5e2f('0x35')](_0x5677c4,{'UserId':_0x4c8daa[_0x5e2f('0x13')][_0x5e2f('0x36')]})[_0x5e2f('0x37')](function(_0x43c1ba){logger[_0x5e2f('0x2b')]('error\x20update\x20queue\x20report');});}}return _0x4a9b43({'code':0xc8,'message':_0x4c8daa});}catch(_0x5701c2){logger[_0x5e2f('0x2b')](_0x5701c2[_0x5e2f('0x31')]);return _0x25793f(_0x3642b6[_0x5e2f('0x2b')](0x1f4,_0x5701c2));}}logger[_0x5e2f('0x2b')](_0x5e2f('0x38'));return _0x25793f(_0x3642b6[_0x5e2f('0x2b')](0x1f4,_0x5e2f('0x38')));});},'RejectMessage':function(_0x4adcee){var _0x44115c=this;return new Promise(function(_0x5b2ca1,_0x1c4bbe){if(_0x4adcee[_0x5e2f('0x39')]&&_0x4adcee['agent']['id']){try{if(_0x5899e5[_0x5e2f('0x3a')][_0x4adcee[_0x5e2f('0x39')]['id']]){_0x5899e5[_0x5e2f('0x3a')][_0x4adcee[_0x5e2f('0x39')]['id']][_0x5e2f('0x3b')]=![];_0x5899e5[_0x5e2f('0x3a')][_0x4adcee[_0x5e2f('0x39')]['id']]['busyQueue']=undefined;}return _0x5b2ca1({'code':0xc8,'message':_0x4adcee});}catch(_0x2e6ab6){logger['error'](_0x2e6ab6[_0x5e2f('0x31')]);return _0x1c4bbe(_0x44115c['error'](0x1f4,_0x2e6ab6));}}logger['error'](_0x5e2f('0x38'));return _0x1c4bbe(_0x44115c[_0x5e2f('0x2b')](0x1f4,_0x5e2f('0x38')));});},'AbandonInteraction':function(_0x34ef96){var _0x2781a2=this;return new Promise(function(_0x37c10b,_0x4d8ac3){if(_0x34ef96['channel']&&_0x34ef96['interaction']&&_0x34ef96[_0x5e2f('0x14')]['id']){try{var _0x5a94f3=getId(_0x34ef96['channel'],_0x34ef96[_0x5e2f('0x13')]?_0x34ef96[_0x5e2f('0x13')]['id']:0x0,_0x34ef96[_0x5e2f('0x14')]?_0x34ef96['interaction']['id']:0x0);if(_0x5899e5[_0x5e2f('0x12')][_0x5a94f3]){_0x5899e5[_0x5e2f('0x12')][_0x5a94f3][_0x5e2f('0x30')](_0x5e2f('0x32'));}return _0x37c10b({'code':0xc8,'message':_0x34ef96});}catch(_0x3631bd){logger[_0x5e2f('0x2b')](_0x3631bd[_0x5e2f('0x31')]);return _0x4d8ac3(_0x2781a2[_0x5e2f('0x2b')](0x1f4,_0x3631bd));}}logger['error'](_0x5e2f('0x38'));return _0x4d8ac3(_0x2781a2['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x273ab1){var _0x49bc63=this;return new Promise(function(_0x40192a,_0x59c084){if(_0x5899e5[_0x5e2f('0x3a')][_0x5e2f('0x3c')](_0x273ab1['id'])){for(var _0x5ee9a2 in _0x273ab1['capacity']){if(_0x273ab1[_0x5e2f('0x3d')]['hasOwnProperty'](_0x5ee9a2)){if(_0x5899e5[_0x5e2f('0x3a')][_0x273ab1['id']][_0x5e2f('0x3c')](_0x5ee9a2+_0x5e2f('0x3e'))){_0x5899e5[_0x5e2f('0x3a')][_0x273ab1['id']][_0x5ee9a2+_0x5e2f('0x3e')]=parseInt(_0x273ab1['capacity'][_0x5ee9a2],0xa);}}}_0x5899e5['agents'][_0x273ab1['id']][_0x5e2f('0x3f')]();return _0x40192a({'code':0xc8,'message':_0x5899e5[_0x5e2f('0x3a')][_0x273ab1['id']]});}else{return _0x59c084(_0x49bc63[_0x5e2f('0x2b')](0x1f4,_0x5e2f('0x40')));}});},'Agents':function(_0x50efff){return new Promise(function(_0x3bac83,_0x157dbf){var _0x36ec04=_[_0x5e2f('0x41')](_0x5899e5[_0x5e2f('0x3a')]);_0x3bac83({'count':_0x36ec04['length'],'rows':_0x36ec04});});},'ChatQueues':function(_0x3fe159){return new Promise(function(_0x509048,_0x27c992){var _0x37b3b7=[];for(var _0x4df409 in _0x5899e5['chatQueues']){if(_0x5899e5[_0x5e2f('0x42')]['hasOwnProperty'](_0x4df409)){var _0x1b9231=_0x5899e5['chatQueues'][_0x4df409];var _0xd5fd33={'id':_0x1b9231['id'],'available':_0x1b9231[_0x5e2f('0x43')],'loggedIn':_0x1b9231[_0x5e2f('0x44')],'name':_0x1b9231['name'],'paused':_0x1b9231[_0x5e2f('0x45')],'waiting':_0x1b9231[_0x5e2f('0x46')]};_0x37b3b7[_0x5e2f('0x1f')](_0xd5fd33);}}_0x509048({'count':_0x37b3b7[_0x5e2f('0x17')],'rows':_0x37b3b7});});},'MailQueues':function(_0x2347e8){return new Promise(function(_0x301a08,_0x39d027){var _0x14f109=[];for(var _0x34b148 in _0x5899e5[_0x5e2f('0x47')]){if(_0x5899e5[_0x5e2f('0x47')][_0x5e2f('0x3c')](_0x34b148)){var _0x397801=_0x5899e5['mailQueues'][_0x34b148];var _0x1d90f4={'id':_0x397801['id'],'available':_0x397801[_0x5e2f('0x43')],'loggedIn':_0x397801[_0x5e2f('0x44')],'name':_0x397801['name'],'paused':_0x397801[_0x5e2f('0x45')],'waiting':_0x397801[_0x5e2f('0x46')]};_0x14f109['push'](_0x1d90f4);}}_0x301a08({'count':_0x14f109[_0x5e2f('0x17')],'rows':_0x14f109});});},'OpenchannelQueues':function(_0x5b6b4a){return new Promise(function(_0x61abe8,_0x3c76ce){var _0x34a145=[];for(var _0x52d3a1 in _0x5899e5[_0x5e2f('0x48')]){if(_0x5899e5['openchannelQueues'][_0x5e2f('0x3c')](_0x52d3a1)){var _0x359eda=_0x5899e5['openchannelQueues'][_0x52d3a1];var _0x22c395={'id':_0x359eda['id'],'available':_0x359eda[_0x5e2f('0x43')],'loggedIn':_0x359eda[_0x5e2f('0x44')],'name':_0x359eda['name'],'paused':_0x359eda[_0x5e2f('0x45')],'waiting':_0x359eda['waiting']};_0x34a145[_0x5e2f('0x1f')](_0x22c395);}}_0x61abe8({'count':_0x34a145[_0x5e2f('0x17')],'rows':_0x34a145});});},'SmsQueues':function(_0x149f05){return new Promise(function(_0x1357e9,_0x3ee3ab){var _0x3c0c40=[];for(var _0x5bda76 in _0x5899e5[_0x5e2f('0x49')]){if(_0x5899e5[_0x5e2f('0x49')][_0x5e2f('0x3c')](_0x5bda76)){var _0x488f9f=_0x5899e5[_0x5e2f('0x49')][_0x5bda76];var _0x1d5851={'id':_0x488f9f['id'],'available':_0x488f9f[_0x5e2f('0x43')],'loggedIn':_0x488f9f[_0x5e2f('0x44')],'name':_0x488f9f[_0x5e2f('0x4a')],'paused':_0x488f9f[_0x5e2f('0x45')],'waiting':_0x488f9f[_0x5e2f('0x46')]};_0x3c0c40[_0x5e2f('0x1f')](_0x1d5851);}}_0x1357e9({'count':_0x3c0c40['length'],'rows':_0x3c0c40});});},'FaxQueues':function(_0x36405d){return new Promise(function(_0x1f9bf5,_0x3f07a9){var _0x68a5e6=[];for(var _0x145fb5 in _0x5899e5['faxQueues']){if(_0x5899e5['faxQueues']['hasOwnProperty'](_0x145fb5)){var _0x2179bb=_0x5899e5[_0x5e2f('0x4b')][_0x145fb5];var _0x272e07={'id':_0x2179bb['id'],'available':_0x2179bb[_0x5e2f('0x43')],'loggedIn':_0x2179bb[_0x5e2f('0x44')],'name':_0x2179bb['name'],'paused':_0x2179bb['paused'],'waiting':_0x2179bb['waiting']};_0x68a5e6[_0x5e2f('0x1f')](_0x272e07);}}_0x1f9bf5({'count':_0x68a5e6[_0x5e2f('0x17')],'rows':_0x68a5e6});});},'WhatsappQueues':function(_0x4559b0){return new Promise(function(_0x2005f3,_0x542259){var _0x5e6502=[];for(var _0x5d13bf in _0x5899e5['whatsappQueues']){if(_0x5899e5[_0x5e2f('0x4c')][_0x5e2f('0x3c')](_0x5d13bf)){var _0x5acee4=_0x5899e5[_0x5e2f('0x4c')][_0x5d13bf];var _0x5f3937={'id':_0x5acee4['id'],'available':_0x5acee4[_0x5e2f('0x43')],'loggedIn':_0x5acee4['loggedIn'],'name':_0x5acee4[_0x5e2f('0x4a')],'paused':_0x5acee4[_0x5e2f('0x45')],'waiting':_0x5acee4[_0x5e2f('0x46')]};_0x5e6502[_0x5e2f('0x1f')](_0x5f3937);}}_0x2005f3({'count':_0x5e6502[_0x5e2f('0x17')],'rows':_0x5e6502});});},'ChatQueuesWaitingInteractions':function(_0x496e8a){return new Promise(function(_0x26d6d1,_0x4761fb){var _0x250dab=_['values'](_0x5899e5['chatQueuesWaitingInteractions']);_0x26d6d1({'count':_0x250dab[_0x5e2f('0x17')],'rows':_0x250dab});});},'MailQueuesWaitingInteractions':function(_0x4e7e03){return new Promise(function(_0x1c9ffc,_0x5efa10){var _0x748602=_['values'](_0x5899e5[_0x5e2f('0x4d')]);_0x1c9ffc({'count':_0x748602[_0x5e2f('0x17')],'rows':_0x748602});});},'OpenchannelQueuesWaitingInteractions':function(_0x11162a){return new Promise(function(_0x1d218d,_0x80e208){var _0xf48263=_[_0x5e2f('0x41')](_0x5899e5[_0x5e2f('0x4e')]);_0x1d218d({'count':_0xf48263['length'],'rows':_0xf48263});});},'SmsQueuesWaitingInteractions':function(_0x221307){return new Promise(function(_0x44f52c,_0x1fda08){var _0x44ada3=_[_0x5e2f('0x41')](_0x5899e5[_0x5e2f('0x4f')]);_0x44f52c({'count':_0x44ada3[_0x5e2f('0x17')],'rows':_0x44ada3});});},'FaxQueuesWaitingInteractions':function(_0x38709f){return new Promise(function(_0x39ff31,_0x3801a4){var _0x39b136=_[_0x5e2f('0x41')](_0x5899e5[_0x5e2f('0x50')]);_0x39ff31({'count':_0x39b136[_0x5e2f('0x17')],'rows':_0x39b136});});},'WhatsappQueuesWaitingInteractions':function(_0x2900d9){return new Promise(function(_0x5abdb7,_0xe6caef){var _0x4d3cf0=_[_0x5e2f('0x41')](_0x5899e5[_0x5e2f('0x51')]);_0x5abdb7({'count':_0x4d3cf0[_0x5e2f('0x17')],'rows':_0x4d3cf0});});}};var _0x1ef2f5=jayson[_0x5e2f('0x52')](_0x4d5add)[_0x5e2f('0x53')]();_0x1ef2f5['on'](_0x5e2f('0x2b'),function(_0x3660a6){logger[_0x5e2f('0x2b')](JSON['stringify'](_0x3660a6));return _0x573b3c(_0x3660a6);});_0x1ef2f5['listen'](0x232c,_0x5e2f('0x54'),function(){console[_0x5e2f('0x55')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x1ed300(_0x5e2f('0x56')+0x232c);});});};