Built motion from commit (unavailable).|2.3.1
[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 _0x443a=['routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','message','interaction','applications','existsSync','join','app','.js','toLowerCase','autoreply','push','slice','length','dialogflow','appdata','amazonlex','tag','TagId','split','%s:%s:%s','./interval','condition','intervals','./applications/','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','stringify','matchPath','emit','end','routing\x20is\x20empty','channel','QueueReport','update','UserId','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','agents','busy','agent','busyQueue','hasOwnProperty','capacity','CurrentCapacity','values','chatQueues','available','paused','waiting','mailQueues','loggedIn','name','openchannelQueues','smsQueues','faxQueues','faxQueuesWaitingInteractions','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/logger'];(function(_0x5d70e0,_0xb2fa39){var _0x11d97b=function(_0x23f8be){while(--_0x23f8be){_0x5d70e0['push'](_0x5d70e0['shift']());}};_0x11d97b(++_0xb2fa39);}(_0x443a,0xf8));var _0xa443=function(_0x25e5fc,_0x32b839){_0x25e5fc=_0x25e5fc-0x0;var _0x2fafb0=_0x443a[_0x25e5fc];return _0x2fafb0;};'use strict';var _=require(_0xa443('0x0'));var util=require(_0xa443('0x1'));var path=require(_0xa443('0x2'));var fs=require('fs');var jayson=require(_0xa443('0x3'));var BPromise=require(_0xa443('0x4'));var uuid=require(_0xa443('0x5'));var config=require('../../../config/environment');var logger=require(_0xa443('0x6'))(_0xa443('0x7'));var rpc={'openchannelQueueReport':require(_0xa443('0x8'))};var rpc={'openchannelQueueReport':require(_0xa443('0x8')),'mailQueueReport':require(_0xa443('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xa443('0xa'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x134462,_0x2e4f3b,_0x5cfdf3){return util[_0xa443('0xb')](_0xa443('0xc'),_0x134462,_0x2e4f3b||0x0,_0x5cfdf3||0x0);}function getIntervals(_0xf667d9,_0xcaf62a){var _0x36e9bf=[];if(!_['isNil'](_0xcaf62a[_0xa443('0xd')])&&!_['isNil'](_0xf667d9[_0xcaf62a['IntervalId']])&&!_[_0xa443('0xe')](_0xf667d9[_0xcaf62a[_0xa443('0xd')]][_0xa443('0xf')])){_0x36e9bf=_[_0xa443('0x10')](_0xf667d9[_0xcaf62a[_0xa443('0xd')]][_0xa443('0xf')],_0xa443('0x11'));}else if(!_[_0xa443('0xe')](_0xcaf62a[_0xa443('0x11')])){_0x36e9bf=[_0xcaf62a[_0xa443('0x11')]];}return _0x36e9bf;}exports[_0xa443('0x12')]=function(_0x451d03){_0x451d03[_0xa443('0x13')]={};return new BPromise(function(_0x15d3f1,_0x5340c2){var _0x48ce3d={'Start':function(_0x557323){var _0x25ea20=this;return new Promise(function(_0x54e49f,_0x524a71){if(_0x557323){try{var _0x4ae271=[];var _0x2193d7=getId(_0x557323['channel'],_0x557323[_0xa443('0x14')]?_0x557323[_0xa443('0x14')]['id']:0x0,_0x557323[_0xa443('0x15')]?_0x557323[_0xa443('0x15')]['id']:0x0);if(_0x557323[_0xa443('0x16')]&&_['isArray'](_0x557323['applications'])&&_0x557323[_0xa443('0x16')]['length']){for(var _0x31534a=0x0;_0x31534a<_0x557323['applications']['length'];_0x31534a+=0x1){var _0xdfc92b=_0x557323['applications'][_0x31534a];if(fs[_0xa443('0x17')](path[_0xa443('0x18')](__dirname,_0xa443('0x16'),_0xdfc92b[_0xa443('0x19')]+_0xa443('0x1a')))){var _0x20a786=[];switch(_0xdfc92b[_0xa443('0x19')][_0xa443('0x1b')]()){case _0xa443('0x1c'):var _0x1a2a14=_0xdfc92b['appdata']['split'](',');_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x0]);_0x20a786['push'](_0x1a2a14[_0xa443('0x1e')](0x1,_0x1a2a14[_0xa443('0x1f')])[_0xa443('0x18')](','));break;case _0xa443('0x20'):var _0x1a2a14=_0xdfc92b[_0xa443('0x21')]['split'](',');_0x20a786['push'](_0x1a2a14[0x0]);_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x1]);_0x20a786['push'](_0x1a2a14[_0xa443('0x1e')](0x2,_0x1a2a14['length'])[_0xa443('0x18')](','));break;case _0xa443('0x22'):var _0x1a2a14=_0xdfc92b['appdata']['split'](',');_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x0]);_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x1]);_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x2]);_0x20a786[_0xa443('0x1d')](_0x1a2a14[0x3]);_0x20a786[_0xa443('0x1d')](_0x1a2a14[_0xa443('0x1e')](0x4,_0x1a2a14[_0xa443('0x1f')])['join'](','));break;case _0xa443('0x14'):_0x20a786['push'](_0xdfc92b[_0xa443('0x21')]);break;case _0xa443('0x23'):_0x20a786[_0xa443('0x1d')](_0xdfc92b[_0xa443('0x24')]);_0x20a786[_0xa443('0x1d')](_0xdfc92b[_0xa443('0x21')]);break;default:_0x20a786=_[_0xa443('0xe')](_0xdfc92b[_0xa443('0x21')])?[]:_0xdfc92b[_0xa443('0x21')][_0xa443('0x25')](',');}var _0x350119={'id':util[_0xa443('0xb')](_0xa443('0x26'),_0x2193d7,_0xdfc92b['id'],_0xdfc92b[_0xa443('0x19')]),'condition':require(_0xa443('0x27'))[_0xa443('0x28')](_0x2193d7,getIntervals(_0x451d03[_0xa443('0x29')],_0xdfc92b),_0x451d03),'consequence':require(_0xa443('0x2a')+_0xdfc92b[_0xa443('0x19')])['consequence'](_0x2193d7,_0x20a786,_0x451d03,_0x557323),'p':_0xdfc92b['priority']||0x0};logger['info'](_0xa443('0x2b'),_0x350119['id'],_0xa443('0x2c'),getIntervals(_0x451d03[_0xa443('0x29')],_0xdfc92b)[_0xa443('0x18')](_0xa443('0x2d')));_0x4ae271[_0xa443('0x1d')](_0x350119);}else{logger[_0xa443('0x2e')](_0xa443('0x2f'),path[_0xa443('0x18')](__dirname,_0xa443('0x16'),_0xdfc92b[_0xa443('0x19')]+_0xa443('0x1a')));}}_0x451d03['rules'][_0x2193d7]=new RuleEngine(_0x4ae271);_0x451d03['rules'][_0x2193d7][_0xa443('0x30')](_0x557323,function(_0x478bea){logger[_0xa443('0x31')](_0xa443('0x32'),JSON[_0xa443('0x33')](_0x478bea[_0xa443('0x34')]));if(_0x451d03[_0xa443('0x13')][_0x2193d7]){_0x451d03[_0xa443('0x13')][_0x2193d7][_0xa443('0x35')](_0xa443('0x36'));}});return _0x54e49f({'code':0xc8,'message':_0x557323});}else{logger[_0xa443('0x31')]('No\x20applications\x20to\x20execute');return _0x54e49f({'code':0xc8,'message':_0x557323});}}catch(_0x14a437){logger[_0xa443('0x2e')](_0x14a437['stack']);return _0x524a71(_0x25ea20[_0xa443('0x2e')](0x1f4,_0x14a437));}}return _0x524a71(_0xa443('0x37'));});},'AcceptMessage':function(_0x9af72e){var _0x27abb4=this;return new Promise(function(_0x50c068,_0x8df722){if(_0x9af72e[_0xa443('0x14')]&&_0x9af72e[_0xa443('0x14')]['id']){try{var _0x1cf23c=getId(_0x9af72e[_0xa443('0x38')],_0x9af72e[_0xa443('0x14')]?_0x9af72e[_0xa443('0x14')]['id']:0x0,_0x9af72e['interaction']?_0x9af72e[_0xa443('0x15')]['id']:0x0);if(_0x451d03[_0xa443('0x13')][_0x1cf23c]){_0x451d03[_0xa443('0x13')][_0x1cf23c][_0xa443('0x35')]('end');if(rpc[_0x9af72e[_0xa443('0x38')]+_0xa443('0x39')]){rpc[_0x9af72e['channel']+_0xa443('0x39')][_0xa443('0x3a')](_0x1cf23c,{'UserId':_0x9af72e[_0xa443('0x14')][_0xa443('0x3b')]})['catch'](function(_0x18d7f5){logger['error'](_0xa443('0x3c'));});}}return _0x50c068({'code':0xc8,'message':_0x9af72e});}catch(_0x2e6d7c){logger[_0xa443('0x2e')](_0x2e6d7c[_0xa443('0x3d')]);return _0x8df722(_0x27abb4[_0xa443('0x2e')](0x1f4,_0x2e6d7c));}}logger[_0xa443('0x2e')](_0xa443('0x3e'));return _0x8df722(_0x27abb4[_0xa443('0x2e')](0x1f4,_0xa443('0x3e')));});},'RejectMessage':function(_0x4353bb){var _0x2c7048=this;return new Promise(function(_0x2f49cd,_0x5014a6){if(_0x4353bb['agent']&&_0x4353bb['agent']['id']){try{if(_0x451d03[_0xa443('0x3f')][_0x4353bb['agent']['id']]){_0x451d03[_0xa443('0x3f')][_0x4353bb['agent']['id']][_0xa443('0x40')]=![];_0x451d03[_0xa443('0x3f')][_0x4353bb[_0xa443('0x41')]['id']][_0xa443('0x42')]=undefined;}return _0x2f49cd({'code':0xc8,'message':_0x4353bb});}catch(_0x1a96d0){logger[_0xa443('0x2e')](_0x1a96d0[_0xa443('0x3d')]);return _0x5014a6(_0x2c7048[_0xa443('0x2e')](0x1f4,_0x1a96d0));}}logger[_0xa443('0x2e')](_0xa443('0x3e'));return _0x5014a6(_0x2c7048[_0xa443('0x2e')](0x1f4,_0xa443('0x3e')));});},'AbandonInteraction':function(_0x3d3baa){var _0x1298a2=this;return new Promise(function(_0x49226e,_0x2bca97){if(_0x3d3baa['channel']&&_0x3d3baa[_0xa443('0x15')]&&_0x3d3baa[_0xa443('0x15')]['id']){try{var _0x4bf36a=getId(_0x3d3baa[_0xa443('0x38')],_0x3d3baa[_0xa443('0x14')]?_0x3d3baa['message']['id']:0x0,_0x3d3baa[_0xa443('0x15')]?_0x3d3baa[_0xa443('0x15')]['id']:0x0);if(_0x451d03['rules'][_0x4bf36a]){_0x451d03[_0xa443('0x13')][_0x4bf36a][_0xa443('0x35')](_0xa443('0x36'));}return _0x49226e({'code':0xc8,'message':_0x3d3baa});}catch(_0x21a69a){logger['error'](_0x21a69a[_0xa443('0x3d')]);return _0x2bca97(_0x1298a2[_0xa443('0x2e')](0x1f4,_0x21a69a));}}logger[_0xa443('0x2e')](_0xa443('0x3e'));return _0x2bca97(_0x1298a2[_0xa443('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x3a3e4e){var _0x1b9dad=this;return new Promise(function(_0x312033,_0x63e95a){if(_0x451d03[_0xa443('0x3f')][_0xa443('0x43')](_0x3a3e4e['id'])){for(var _0x22eb4f in _0x3a3e4e[_0xa443('0x44')]){if(_0x3a3e4e[_0xa443('0x44')][_0xa443('0x43')](_0x22eb4f)){if(_0x451d03[_0xa443('0x3f')][_0x3a3e4e['id']][_0xa443('0x43')](_0x22eb4f+_0xa443('0x45'))){_0x451d03[_0xa443('0x3f')][_0x3a3e4e['id']][_0x22eb4f+_0xa443('0x45')]=parseInt(_0x3a3e4e[_0xa443('0x44')][_0x22eb4f],0xa);}}}_0x451d03['agents'][_0x3a3e4e['id']]['updateRealtime']();return _0x312033({'code':0xc8,'message':_0x451d03[_0xa443('0x3f')][_0x3a3e4e['id']]});}else{return _0x63e95a(_0x1b9dad['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x163e6f){return new Promise(function(_0xa00478,_0x365418){var _0x30ee45=_[_0xa443('0x46')](_0x451d03[_0xa443('0x3f')]);_0xa00478({'count':_0x30ee45[_0xa443('0x1f')],'rows':_0x30ee45});});},'ChatQueues':function(_0x5c8c15){return new Promise(function(_0x36298d,_0x3fe80e){var _0x4c0d1d=[];for(var _0x29d9b9 in _0x451d03['chatQueues']){if(_0x451d03[_0xa443('0x47')]['hasOwnProperty'](_0x29d9b9)){var _0x4c1ccf=_0x451d03[_0xa443('0x47')][_0x29d9b9];var _0x5c551a={'id':_0x4c1ccf['id'],'available':_0x4c1ccf[_0xa443('0x48')],'loggedIn':_0x4c1ccf['loggedIn'],'name':_0x4c1ccf['name'],'paused':_0x4c1ccf[_0xa443('0x49')],'waiting':_0x4c1ccf[_0xa443('0x4a')]};_0x4c0d1d[_0xa443('0x1d')](_0x5c551a);}}_0x36298d({'count':_0x4c0d1d[_0xa443('0x1f')],'rows':_0x4c0d1d});});},'MailQueues':function(_0x25860c){return new Promise(function(_0x387a6e,_0x3f21c2){var _0x32b4e0=[];for(var _0x33969f in _0x451d03[_0xa443('0x4b')]){if(_0x451d03[_0xa443('0x4b')][_0xa443('0x43')](_0x33969f)){var _0x392c53=_0x451d03['mailQueues'][_0x33969f];var _0x5c5af0={'id':_0x392c53['id'],'available':_0x392c53[_0xa443('0x48')],'loggedIn':_0x392c53[_0xa443('0x4c')],'name':_0x392c53[_0xa443('0x4d')],'paused':_0x392c53[_0xa443('0x49')],'waiting':_0x392c53[_0xa443('0x4a')]};_0x32b4e0['push'](_0x5c5af0);}}_0x387a6e({'count':_0x32b4e0['length'],'rows':_0x32b4e0});});},'OpenchannelQueues':function(_0x230d6c){return new Promise(function(_0x119cd6,_0x45538a){var _0xedf90d=[];for(var _0x594135 in _0x451d03[_0xa443('0x4e')]){if(_0x451d03['openchannelQueues'][_0xa443('0x43')](_0x594135)){var _0x2b2fea=_0x451d03[_0xa443('0x4e')][_0x594135];var _0x55665a={'id':_0x2b2fea['id'],'available':_0x2b2fea[_0xa443('0x48')],'loggedIn':_0x2b2fea[_0xa443('0x4c')],'name':_0x2b2fea[_0xa443('0x4d')],'paused':_0x2b2fea['paused'],'waiting':_0x2b2fea[_0xa443('0x4a')]};_0xedf90d['push'](_0x55665a);}}_0x119cd6({'count':_0xedf90d[_0xa443('0x1f')],'rows':_0xedf90d});});},'SmsQueues':function(_0x31af73){return new Promise(function(_0x275ac4,_0x5bc2af){var _0x487398=[];for(var _0x19a7ac in _0x451d03[_0xa443('0x4f')]){if(_0x451d03[_0xa443('0x4f')][_0xa443('0x43')](_0x19a7ac)){var _0x391ca5=_0x451d03['smsQueues'][_0x19a7ac];var _0x3b59cf={'id':_0x391ca5['id'],'available':_0x391ca5[_0xa443('0x48')],'loggedIn':_0x391ca5['loggedIn'],'name':_0x391ca5['name'],'paused':_0x391ca5[_0xa443('0x49')],'waiting':_0x391ca5[_0xa443('0x4a')]};_0x487398[_0xa443('0x1d')](_0x3b59cf);}}_0x275ac4({'count':_0x487398[_0xa443('0x1f')],'rows':_0x487398});});},'FaxQueues':function(_0x500507){return new Promise(function(_0x3d3260,_0x33449a){var _0x3eee6e=[];for(var _0x1334e5 in _0x451d03[_0xa443('0x50')]){if(_0x451d03[_0xa443('0x50')][_0xa443('0x43')](_0x1334e5)){var _0x209223=_0x451d03['faxQueues'][_0x1334e5];var _0x59d7f3={'id':_0x209223['id'],'available':_0x209223[_0xa443('0x48')],'loggedIn':_0x209223['loggedIn'],'name':_0x209223[_0xa443('0x4d')],'paused':_0x209223[_0xa443('0x49')],'waiting':_0x209223[_0xa443('0x4a')]};_0x3eee6e[_0xa443('0x1d')](_0x59d7f3);}}_0x3d3260({'count':_0x3eee6e[_0xa443('0x1f')],'rows':_0x3eee6e});});},'ChatQueuesWaitingInteractions':function(_0x2b4366){return new Promise(function(_0x487d55,_0x5e6fd0){var _0x535877=_['values'](_0x451d03['chatQueuesWaitingInteractions']);_0x487d55({'count':_0x535877['length'],'rows':_0x535877});});},'MailQueuesWaitingInteractions':function(_0x22bdb7){return new Promise(function(_0x43a6ab,_0x1881b6){var _0xc79616=_[_0xa443('0x46')](_0x451d03['mailQueuesWaitingInteractions']);_0x43a6ab({'count':_0xc79616['length'],'rows':_0xc79616});});},'OpenchannelQueuesWaitingInteractions':function(_0x141ec3){return new Promise(function(_0x4060ec,_0x4acd05){var _0x3312d3=_[_0xa443('0x46')](_0x451d03['openchannelQueuesWaitingInteractions']);_0x4060ec({'count':_0x3312d3[_0xa443('0x1f')],'rows':_0x3312d3});});},'SmsQueuesWaitingInteractions':function(_0x19d695){return new Promise(function(_0x514fa8,_0x22a7d8){var _0x439b1c=_[_0xa443('0x46')](_0x451d03['smsQueuesWaitingInteractions']);_0x514fa8({'count':_0x439b1c[_0xa443('0x1f')],'rows':_0x439b1c});});},'FaxQueuesWaitingInteractions':function(_0x59ae88){return new Promise(function(_0x34b2fd,_0x16b00d){var _0x3e5ddc=_[_0xa443('0x46')](_0x451d03[_0xa443('0x51')]);_0x34b2fd({'count':_0x3e5ddc[_0xa443('0x1f')],'rows':_0x3e5ddc});});}};var _0x2fefdd=jayson['server'](_0x48ce3d)['http']();_0x2fefdd['on']('error',function(_0x1ee4db){logger[_0xa443('0x2e')](JSON[_0xa443('0x33')](_0x1ee4db));return _0x5340c2(_0x1ee4db);});_0x2fefdd['listen'](0x232c,'127.0.0.1',function(){console[_0xa443('0x52')](_0xa443('0x53'),0x232c);return _0x15d3f1(_0xa443('0x54')+0x232c);});});};