ad5c5a0d6ae6fb063d67babb0229598d859012da
[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 _0x3140=['../lib/rule-engine','format','isNil','IntervalId','map','Intervals','interval','rules','channel','message','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','priority','Push\x20new\x20rule','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','info','stringify','emit','stack','routing\x20is\x20empty','agent','agents','busyQueue','interaction','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport'];(function(_0x5baed9,_0x409757){var _0x43aad3=function(_0x4e6713){while(--_0x4e6713){_0x5baed9['push'](_0x5baed9['shift']());}};_0x43aad3(++_0x409757);}(_0x3140,0xaf));var _0x0314=function(_0x465b0c,_0x569d90){_0x465b0c=_0x465b0c-0x0;var _0x502ff0=_0x3140[_0x465b0c];return _0x502ff0;};'use strict';var _=require(_0x0314('0x0'));var util=require(_0x0314('0x1'));var path=require(_0x0314('0x2'));var fs=require('fs');var jayson=require(_0x0314('0x3'));var BPromise=require('bluebird');var uuid=require('uuid');var config=require(_0x0314('0x4'));var logger=require(_0x0314('0x5'))(_0x0314('0x6'));var rpc={'openchannelQueueReport':require(_0x0314('0x7')),'mailQueueReport':require(_0x0314('0x8')),'chatQueueReport':require(_0x0314('0x9')),'smsQueueReport':require(_0x0314('0xa')),'faxQueueReport':require(_0x0314('0xb')),'whatsappQueueReport':require(_0x0314('0xc'))};var RuleEngine=require(_0x0314('0xd'));function getId(_0x176944,_0x495b27,_0x26031f){return util[_0x0314('0xe')]('%s.%s.%s',_0x176944,_0x495b27||0x0,_0x26031f||0x0);}function getIntervals(_0x5e9bca,_0xf2561e){var _0x4e6545=[];if(!_[_0x0314('0xf')](_0xf2561e[_0x0314('0x10')])&&!_[_0x0314('0xf')](_0x5e9bca[_0xf2561e[_0x0314('0x10')]])&&!_[_0x0314('0xf')](_0x5e9bca[_0xf2561e[_0x0314('0x10')]]['Intervals'])){_0x4e6545=_[_0x0314('0x11')](_0x5e9bca[_0xf2561e[_0x0314('0x10')]][_0x0314('0x12')],_0x0314('0x13'));}else if(!_[_0x0314('0xf')](_0xf2561e[_0x0314('0x13')])){_0x4e6545=[_0xf2561e[_0x0314('0x13')]];}return _0x4e6545;}exports['listen']=function(_0x1c26ff){_0x1c26ff[_0x0314('0x14')]={};return new BPromise(function(_0x1316a0,_0x12d026){var _0x40566e={'Start':function(_0x398c91){var _0x413bfa=this;return new Promise(function(_0x3ea356,_0x5e460f){if(_0x398c91){try{var _0xb9730b=[];var _0x24cd42=getId(_0x398c91[_0x0314('0x15')],_0x398c91['message']?_0x398c91[_0x0314('0x16')]['id']:0x0,_0x398c91['interaction']?_0x398c91['interaction']['id']:0x0);if(_0x398c91[_0x0314('0x17')]&&_[_0x0314('0x18')](_0x398c91['applications'])&&_0x398c91[_0x0314('0x17')][_0x0314('0x19')]){for(var _0x583ffa=0x0;_0x583ffa<_0x398c91[_0x0314('0x17')]['length'];_0x583ffa+=0x1){var _0xd03f0f=_0x398c91[_0x0314('0x17')][_0x583ffa];if(fs[_0x0314('0x1a')](path[_0x0314('0x1b')](__dirname,_0x0314('0x17'),_0xd03f0f[_0x0314('0x1c')]+'.js'))){var _0x56ef33=[];switch(_0xd03f0f[_0x0314('0x1c')][_0x0314('0x1d')]()){case _0x0314('0x1e'):var _0x174119=_0xd03f0f[_0x0314('0x1f')][_0x0314('0x20')](',');if(_0x398c91['channel']===_0x0314('0x21')){_0x56ef33[_0x0314('0x22')](_0x174119[0x0]);_0x56ef33['push'](_0x174119[0x1]);_0x56ef33[_0x0314('0x22')](_0x174119[_0x0314('0x23')](0x2,_0x174119[_0x0314('0x19')])[_0x0314('0x1b')](','));}else{_0x56ef33[_0x0314('0x22')](_0x174119[0x0]);_0x56ef33[_0x0314('0x22')](_0x174119['slice'](0x1,_0x174119[_0x0314('0x19')])[_0x0314('0x1b')](','));}break;case _0x0314('0x24'):var _0x47c2d1=_0xd03f0f[_0x0314('0x1f')][_0x0314('0x20')](',');_0x56ef33['push'](_0x47c2d1[0x0]);_0x56ef33['push'](_0x47c2d1[0x1]);_0x56ef33[_0x0314('0x22')](_0x47c2d1[_0x0314('0x23')](0x2,_0x47c2d1['length'])[_0x0314('0x1b')](','));break;case _0x0314('0x25'):var _0x5291c2=_0xd03f0f['appdata'][_0x0314('0x20')](',');_0x56ef33[_0x0314('0x22')](_0x5291c2[0x0]);_0x56ef33['push'](_0x5291c2[0x1]);_0x56ef33[_0x0314('0x22')](_0x5291c2[0x2]);_0x56ef33[_0x0314('0x22')](_0x5291c2[0x3]);_0x56ef33[_0x0314('0x22')](_0x5291c2['slice'](0x4,_0x5291c2[_0x0314('0x19')])[_0x0314('0x1b')](','));break;case _0x0314('0x26'):var _0x1e42f0=_0xd03f0f['appdata'][_0x0314('0x20')](',');_0x56ef33['push'](_0x1e42f0[0x0]);_0x56ef33['push'](_0x1e42f0[0x1]);_0x56ef33[_0x0314('0x22')](_0x1e42f0[0x2]);_0x56ef33[_0x0314('0x22')](_0x1e42f0[0x3]);_0x56ef33[_0x0314('0x22')](_0x1e42f0['slice'](0x4,_0x1e42f0[_0x0314('0x19')])['join'](','));break;case _0x0314('0x16'):_0x56ef33['push'](_0xd03f0f['appdata']);break;case _0x0314('0x27'):_0x56ef33['push'](_0xd03f0f[_0x0314('0x28')]);_0x56ef33[_0x0314('0x22')](_0xd03f0f[_0x0314('0x1f')]);break;default:_0x56ef33=_[_0x0314('0xf')](_0xd03f0f[_0x0314('0x1f')])?[]:_0xd03f0f[_0x0314('0x1f')][_0x0314('0x20')](',');}var _0x4c763e={'id':util[_0x0314('0xe')](_0x0314('0x29'),_0x24cd42,_0xd03f0f['id'],_0xd03f0f[_0x0314('0x1c')]),'condition':require(_0x0314('0x2a'))[_0x0314('0x2b')](_0x24cd42,getIntervals(_0x1c26ff[_0x0314('0x2c')],_0xd03f0f),_0x1c26ff),'consequence':require('./applications/'+_0xd03f0f[_0x0314('0x1c')])['consequence'](_0x24cd42,_0x56ef33,_0x1c26ff,_0x398c91),'p':_0xd03f0f[_0x0314('0x2d')]||0x0};logger['info'](_0x0314('0x2e'),_0x4c763e['id'],'on\x20interval',getIntervals(_0x1c26ff['intervals'],_0xd03f0f)['join'](_0x0314('0x2f')));_0xb9730b[_0x0314('0x22')](_0x4c763e);}else{logger[_0x0314('0x30')](_0x0314('0x31'),path[_0x0314('0x1b')](__dirname,'applications',_0xd03f0f[_0x0314('0x1c')]+_0x0314('0x32')));}}_0x1c26ff[_0x0314('0x14')][_0x24cd42]=new RuleEngine(_0xb9730b);_0x1c26ff['rules'][_0x24cd42][_0x0314('0x33')](_0x398c91,function(_0x58b650){logger[_0x0314('0x34')]('Applications\x20executed',JSON[_0x0314('0x35')](_0x58b650['matchPath']));if(_0x1c26ff['rules'][_0x24cd42]){_0x1c26ff[_0x0314('0x14')][_0x24cd42][_0x0314('0x36')]('complete');}});return _0x3ea356({'code':0xc8,'message':_0x398c91});}else{logger[_0x0314('0x34')]('No\x20applications\x20to\x20execute');return _0x3ea356({'code':0xc8,'message':_0x398c91});}}catch(_0x31a5b2){logger[_0x0314('0x30')](_0x31a5b2[_0x0314('0x37')]);return _0x5e460f(_0x413bfa[_0x0314('0x30')](0x1f4,_0x31a5b2));}}return _0x5e460f(_0x0314('0x38'));});},'AcceptMessage':function(_0x5751cf){var _0x52a71c=this;return new Promise(function(_0x37c07e,_0x3b070a){if(_0x5751cf['agent']&&_0x5751cf[_0x0314('0x39')]['id']){if(_0x1c26ff[_0x0314('0x3a')][_0x5751cf[_0x0314('0x39')]['id']]){_0x1c26ff['agents'][_0x5751cf[_0x0314('0x39')]['id']]['busy']=![];_0x1c26ff[_0x0314('0x3a')][_0x5751cf[_0x0314('0x39')]['id']][_0x0314('0x3b')]=undefined;}}if(_0x5751cf['message']&&_0x5751cf[_0x0314('0x16')]['id']){try{var _0xf4c4a1=getId(_0x5751cf['channel'],_0x5751cf['message']?_0x5751cf['message']['id']:0x0,_0x5751cf[_0x0314('0x3c')]?_0x5751cf[_0x0314('0x3c')]['id']:0x0);if(_0x1c26ff[_0x0314('0x14')][_0xf4c4a1]){_0x1c26ff['rules'][_0xf4c4a1][_0x0314('0x36')](_0x0314('0x3d'));if(rpc[_0x5751cf[_0x0314('0x15')]+_0x0314('0x3e')]){rpc[_0x5751cf[_0x0314('0x15')]+'QueueReport'][_0x0314('0x3f')](_0xf4c4a1,{'UserId':_0x5751cf[_0x0314('0x16')][_0x0314('0x40')]})[_0x0314('0x41')](function(_0x1b7292){logger[_0x0314('0x30')](_0x0314('0x42'));});}}return _0x37c07e({'code':0xc8,'message':_0x5751cf});}catch(_0x4cfa54){logger[_0x0314('0x30')](_0x4cfa54[_0x0314('0x37')]);return _0x3b070a(_0x52a71c['error'](0x1f4,_0x4cfa54));}}logger[_0x0314('0x30')](_0x0314('0x43'));return _0x3b070a(_0x52a71c[_0x0314('0x30')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x4a1850){var _0x128889=this;return new Promise(function(_0x1a4033,_0x2cbed3){if(_0x4a1850[_0x0314('0x39')]&&_0x4a1850[_0x0314('0x39')]['id']){try{if(_0x1c26ff[_0x0314('0x3a')][_0x4a1850[_0x0314('0x39')]['id']]){_0x1c26ff['agents'][_0x4a1850[_0x0314('0x39')]['id']]['busy']=![];_0x1c26ff[_0x0314('0x3a')][_0x4a1850[_0x0314('0x39')]['id']][_0x0314('0x3b')]=undefined;}return _0x1a4033({'code':0xc8,'message':_0x4a1850});}catch(_0x362b60){logger[_0x0314('0x30')](_0x362b60['stack']);return _0x2cbed3(_0x128889['error'](0x1f4,_0x362b60));}}logger[_0x0314('0x30')](_0x0314('0x43'));return _0x2cbed3(_0x128889[_0x0314('0x30')](0x1f4,_0x0314('0x43')));});},'AbandonInteraction':function(_0x5b3c49){var _0x2f206c=this;return new Promise(function(_0x295fa5,_0x2b601a){if(_0x5b3c49[_0x0314('0x15')]&&_0x5b3c49[_0x0314('0x3c')]&&_0x5b3c49[_0x0314('0x3c')]['id']){try{var _0x1d0a65=getId(_0x5b3c49['channel'],_0x5b3c49[_0x0314('0x16')]?_0x5b3c49[_0x0314('0x16')]['id']:0x0,_0x5b3c49[_0x0314('0x3c')]?_0x5b3c49['interaction']['id']:0x0);if(_0x1c26ff[_0x0314('0x14')][_0x1d0a65]){_0x1c26ff[_0x0314('0x14')][_0x1d0a65]['emit'](_0x0314('0x3d'));}return _0x295fa5({'code':0xc8,'message':_0x5b3c49});}catch(_0xfb5170){logger[_0x0314('0x30')](_0xfb5170[_0x0314('0x37')]);return _0x2b601a(_0x2f206c['error'](0x1f4,_0xfb5170));}}logger[_0x0314('0x30')](_0x0314('0x43'));return _0x2b601a(_0x2f206c[_0x0314('0x30')](0x1f4,_0x0314('0x43')));});},'AgentCapacity':function(_0x227ee1){var _0x10da3a=this;return new Promise(function(_0x35cf11,_0x275a60){if(_0x1c26ff[_0x0314('0x3a')][_0x0314('0x44')](_0x227ee1['id'])){for(var _0x573777 in _0x227ee1[_0x0314('0x45')]){if(_0x227ee1[_0x0314('0x45')][_0x0314('0x44')](_0x573777)){if(_0x1c26ff[_0x0314('0x3a')][_0x227ee1['id']][_0x0314('0x44')](_0x573777+_0x0314('0x46'))){_0x1c26ff[_0x0314('0x3a')][_0x227ee1['id']][_0x573777+'CurrentCapacity']=parseInt(_0x227ee1['capacity'][_0x573777],0xa);}}}_0x1c26ff['agents'][_0x227ee1['id']][_0x0314('0x47')]();return _0x35cf11({'code':0xc8,'message':_0x1c26ff[_0x0314('0x3a')][_0x227ee1['id']]});}else{return _0x275a60(_0x10da3a['error'](0x1f4,_0x0314('0x48')));}});},'Agents':function(_0x35c961){return new Promise(function(_0x2ef23f,_0x4b35d8){var _0x50e8dc=_[_0x0314('0x49')](_0x1c26ff[_0x0314('0x3a')]);_0x2ef23f({'count':_0x50e8dc['length'],'rows':_0x50e8dc});});},'ChatQueues':function(_0x27b7c4){return new Promise(function(_0x4b022a,_0x1b7cee){var _0x143d4c=[];for(var _0x1ba76c in _0x1c26ff[_0x0314('0x4a')]){if(_0x1c26ff['chatQueues'][_0x0314('0x44')](_0x1ba76c)){var _0x3fc295=_0x1c26ff[_0x0314('0x4a')][_0x1ba76c];var _0x59116e={'id':_0x3fc295['id'],'available':_0x3fc295[_0x0314('0x4b')],'loggedIn':_0x3fc295[_0x0314('0x4c')],'name':_0x3fc295[_0x0314('0x4d')],'paused':_0x3fc295[_0x0314('0x4e')],'waiting':_0x3fc295[_0x0314('0x4f')]};_0x143d4c[_0x0314('0x22')](_0x59116e);}}_0x4b022a({'count':_0x143d4c[_0x0314('0x19')],'rows':_0x143d4c});});},'MailQueues':function(_0x4ff97b){return new Promise(function(_0x340676,_0x597f7b){var _0x4d5da1=[];for(var _0xb114f9 in _0x1c26ff['mailQueues']){if(_0x1c26ff[_0x0314('0x50')][_0x0314('0x44')](_0xb114f9)){var _0x26c174=_0x1c26ff[_0x0314('0x50')][_0xb114f9];var _0x2a7b05={'id':_0x26c174['id'],'available':_0x26c174[_0x0314('0x4b')],'loggedIn':_0x26c174[_0x0314('0x4c')],'name':_0x26c174[_0x0314('0x4d')],'paused':_0x26c174['paused'],'waiting':_0x26c174['waiting']};_0x4d5da1[_0x0314('0x22')](_0x2a7b05);}}_0x340676({'count':_0x4d5da1[_0x0314('0x19')],'rows':_0x4d5da1});});},'OpenchannelQueues':function(_0xf480fe){return new Promise(function(_0x582451,_0x4b59b9){var _0x549aaa=[];for(var _0x6f0d19 in _0x1c26ff[_0x0314('0x51')]){if(_0x1c26ff['openchannelQueues'][_0x0314('0x44')](_0x6f0d19)){var _0x3befab=_0x1c26ff[_0x0314('0x51')][_0x6f0d19];var _0x3496a0={'id':_0x3befab['id'],'available':_0x3befab[_0x0314('0x4b')],'loggedIn':_0x3befab[_0x0314('0x4c')],'name':_0x3befab['name'],'paused':_0x3befab[_0x0314('0x4e')],'waiting':_0x3befab[_0x0314('0x4f')]};_0x549aaa[_0x0314('0x22')](_0x3496a0);}}_0x582451({'count':_0x549aaa['length'],'rows':_0x549aaa});});},'SmsQueues':function(_0x1adb61){return new Promise(function(_0x23b551,_0x2cbef3){var _0x51632e=[];for(var _0x2f818e in _0x1c26ff[_0x0314('0x52')]){if(_0x1c26ff['smsQueues'][_0x0314('0x44')](_0x2f818e)){var _0x35a5cc=_0x1c26ff[_0x0314('0x52')][_0x2f818e];var _0x2d0a38={'id':_0x35a5cc['id'],'available':_0x35a5cc[_0x0314('0x4b')],'loggedIn':_0x35a5cc['loggedIn'],'name':_0x35a5cc[_0x0314('0x4d')],'paused':_0x35a5cc[_0x0314('0x4e')],'waiting':_0x35a5cc['waiting']};_0x51632e['push'](_0x2d0a38);}}_0x23b551({'count':_0x51632e[_0x0314('0x19')],'rows':_0x51632e});});},'FaxQueues':function(_0x381a5d){return new Promise(function(_0x30726f,_0x44e3d7){var _0x3359a6=[];for(var _0x2bcaf5 in _0x1c26ff[_0x0314('0x53')]){if(_0x1c26ff['faxQueues'][_0x0314('0x44')](_0x2bcaf5)){var _0x1b6cc5=_0x1c26ff[_0x0314('0x53')][_0x2bcaf5];var _0x11fb3f={'id':_0x1b6cc5['id'],'available':_0x1b6cc5['available'],'loggedIn':_0x1b6cc5[_0x0314('0x4c')],'name':_0x1b6cc5[_0x0314('0x4d')],'paused':_0x1b6cc5['paused'],'waiting':_0x1b6cc5[_0x0314('0x4f')]};_0x3359a6[_0x0314('0x22')](_0x11fb3f);}}_0x30726f({'count':_0x3359a6['length'],'rows':_0x3359a6});});},'WhatsappQueues':function(_0x50f6fa){return new Promise(function(_0x138bf9,_0x572b50){var _0x2fdeb7=[];for(var _0x4aa544 in _0x1c26ff['whatsappQueues']){if(_0x1c26ff[_0x0314('0x54')][_0x0314('0x44')](_0x4aa544)){var _0x452ca7=_0x1c26ff[_0x0314('0x54')][_0x4aa544];var _0x30efcd={'id':_0x452ca7['id'],'available':_0x452ca7['available'],'loggedIn':_0x452ca7[_0x0314('0x4c')],'name':_0x452ca7[_0x0314('0x4d')],'paused':_0x452ca7[_0x0314('0x4e')],'waiting':_0x452ca7[_0x0314('0x4f')]};_0x2fdeb7[_0x0314('0x22')](_0x30efcd);}}_0x138bf9({'count':_0x2fdeb7[_0x0314('0x19')],'rows':_0x2fdeb7});});},'ChatQueuesWaitingInteractions':function(_0x144929){return new Promise(function(_0x68ac7f,_0x2d00ab){var _0x4ed0ed=_[_0x0314('0x49')](_0x1c26ff[_0x0314('0x55')]);_0x68ac7f({'count':_0x4ed0ed[_0x0314('0x19')],'rows':_0x4ed0ed});});},'MailQueuesWaitingInteractions':function(_0x453bf7){return new Promise(function(_0x2b3b46,_0x40fa77){var _0x43ae9c=_[_0x0314('0x49')](_0x1c26ff[_0x0314('0x56')]);_0x2b3b46({'count':_0x43ae9c[_0x0314('0x19')],'rows':_0x43ae9c});});},'OpenchannelQueuesWaitingInteractions':function(_0x1f289d){return new Promise(function(_0x55a6f2,_0x2238e8){var _0x2b1493=_[_0x0314('0x49')](_0x1c26ff['openchannelQueuesWaitingInteractions']);_0x55a6f2({'count':_0x2b1493[_0x0314('0x19')],'rows':_0x2b1493});});},'SmsQueuesWaitingInteractions':function(_0x29e115){return new Promise(function(_0x13ff4a,_0x2ff22c){var _0x1b2d62=_[_0x0314('0x49')](_0x1c26ff[_0x0314('0x57')]);_0x13ff4a({'count':_0x1b2d62[_0x0314('0x19')],'rows':_0x1b2d62});});},'FaxQueuesWaitingInteractions':function(_0xb220cf){return new Promise(function(_0x1c7120,_0x1459e0){var _0x54e58a=_[_0x0314('0x49')](_0x1c26ff[_0x0314('0x58')]);_0x1c7120({'count':_0x54e58a[_0x0314('0x19')],'rows':_0x54e58a});});},'WhatsappQueuesWaitingInteractions':function(_0x110212){return new Promise(function(_0x2da3db,_0x53639d){var _0x3bbd81=_['values'](_0x1c26ff[_0x0314('0x59')]);_0x2da3db({'count':_0x3bbd81['length'],'rows':_0x3bbd81});});}};var _0x4ddec0=jayson[_0x0314('0x5a')](_0x40566e)['http']();_0x4ddec0['on'](_0x0314('0x30'),function(_0x162a48){logger[_0x0314('0x30')](JSON[_0x0314('0x35')](_0x162a48));return _0x12d026(_0x162a48);});_0x4ddec0['listen'](0x232c,_0x0314('0x5b'),function(){console[_0x0314('0x5c')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x1316a0(_0x0314('0x5d')+0x232c);});});};