Built motion from commit (unavailable).|2.5.22
[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 _0xb28a=['listen','rules','message','interaction','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','channel','mail','push','dialogflow','slice','dialogflowv2','%s:%s:%s','./interval','condition','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','routing\x20is\x20empty','agents','agent','busyQueue','update','UserId','catch','stack','message\x20is\x20empty','busy','end','hasOwnProperty','CurrentCapacity','capacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','name','waiting','mailQueues','loggedIn','paused','openchannelQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','bluebird','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval'];(function(_0x474d03,_0x5291a1){var _0x562c21=function(_0x32cb22){while(--_0x32cb22){_0x474d03['push'](_0x474d03['shift']());}};_0x562c21(++_0x5291a1);}(_0xb28a,0x166));var _0xab28=function(_0x1f2142,_0x3b88ba){_0x1f2142=_0x1f2142-0x0;var _0x108b15=_0xb28a[_0x1f2142];return _0x108b15;};'use strict';var _=require('lodash');var util=require(_0xab28('0x0'));var path=require(_0xab28('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xab28('0x2'));var uuid=require('uuid');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xab28('0x3'));var rpc={'openchannelQueueReport':require(_0xab28('0x4')),'mailQueueReport':require(_0xab28('0x5')),'chatQueueReport':require(_0xab28('0x6')),'smsQueueReport':require(_0xab28('0x7')),'faxQueueReport':require(_0xab28('0x8')),'whatsappQueueReport':require(_0xab28('0x9'))};var RuleEngine=require(_0xab28('0xa'));function getId(_0x48949b,_0x479267,_0x294e36){return util[_0xab28('0xb')](_0xab28('0xc'),_0x48949b,_0x479267||0x0,_0x294e36||0x0);}function getIntervals(_0x2508ef,_0x1f1956){var _0x2ac052=[];if(!_['isNil'](_0x1f1956[_0xab28('0xd')])&&!_['isNil'](_0x2508ef[_0x1f1956[_0xab28('0xd')]])&&!_[_0xab28('0xe')](_0x2508ef[_0x1f1956[_0xab28('0xd')]][_0xab28('0xf')])){_0x2ac052=_[_0xab28('0x10')](_0x2508ef[_0x1f1956[_0xab28('0xd')]][_0xab28('0xf')],_0xab28('0x11'));}else if(!_['isNil'](_0x1f1956[_0xab28('0x11')])){_0x2ac052=[_0x1f1956[_0xab28('0x11')]];}return _0x2ac052;}exports[_0xab28('0x12')]=function(_0x389fc3){_0x389fc3[_0xab28('0x13')]={};return new BPromise(function(_0x19029e,_0x554954){var _0x5c9694={'Start':function(_0x7c1921){var _0x3d133e=this;return new Promise(function(_0x14e8b4,_0xaaeb24){if(_0x7c1921){try{var _0x53c5c7=[];var _0x28ebe2=getId(_0x7c1921['channel'],_0x7c1921[_0xab28('0x14')]?_0x7c1921['message']['id']:0x0,_0x7c1921[_0xab28('0x15')]?_0x7c1921[_0xab28('0x15')]['id']:0x0);if(_0x7c1921[_0xab28('0x16')]&&_[_0xab28('0x17')](_0x7c1921[_0xab28('0x16')])&&_0x7c1921[_0xab28('0x16')][_0xab28('0x18')]){for(var _0x300cbd=0x0;_0x300cbd<_0x7c1921['applications'][_0xab28('0x18')];_0x300cbd+=0x1){var _0x18af35=_0x7c1921[_0xab28('0x16')][_0x300cbd];if(fs[_0xab28('0x19')](path[_0xab28('0x1a')](__dirname,_0xab28('0x16'),_0x18af35[_0xab28('0x1b')]+'.js'))){var _0x116c2c=[];switch(_0x18af35['app'][_0xab28('0x1c')]()){case _0xab28('0x1d'):var _0x4a9c6d=_0x18af35[_0xab28('0x1e')][_0xab28('0x1f')](',');if(_0x7c1921[_0xab28('0x20')]===_0xab28('0x21')){_0x116c2c[_0xab28('0x22')](_0x4a9c6d[0x0]);_0x116c2c[_0xab28('0x22')](_0x4a9c6d[0x1]);_0x116c2c[_0xab28('0x22')](_0x4a9c6d['slice'](0x2,_0x4a9c6d[_0xab28('0x18')])['join'](','));}else{_0x116c2c[_0xab28('0x22')](_0x4a9c6d[0x0]);_0x116c2c[_0xab28('0x22')](_0x4a9c6d['slice'](0x1,_0x4a9c6d[_0xab28('0x18')])['join'](','));}break;case _0xab28('0x23'):var _0x2a3405=_0x18af35[_0xab28('0x1e')]['split'](',');_0x116c2c[_0xab28('0x22')](_0x2a3405[0x0]);_0x116c2c[_0xab28('0x22')](_0x2a3405[0x1]);_0x116c2c['push'](_0x2a3405[_0xab28('0x24')](0x2,_0x2a3405[_0xab28('0x18')])[_0xab28('0x1a')](','));break;case _0xab28('0x25'):var _0x537f64=_0x18af35[_0xab28('0x1e')][_0xab28('0x1f')](',');_0x116c2c[_0xab28('0x22')](_0x537f64[0x0]);_0x116c2c[_0xab28('0x22')](_0x537f64[0x1]);_0x116c2c[_0xab28('0x22')](_0x537f64[0x2]);_0x116c2c[_0xab28('0x22')](_0x537f64[0x3]);_0x116c2c[_0xab28('0x22')](_0x537f64[_0xab28('0x24')](0x4,_0x537f64[_0xab28('0x18')])[_0xab28('0x1a')](','));break;case'amazonlex':var _0x520bc2=_0x18af35[_0xab28('0x1e')]['split'](',');_0x116c2c['push'](_0x520bc2[0x0]);_0x116c2c[_0xab28('0x22')](_0x520bc2[0x1]);_0x116c2c[_0xab28('0x22')](_0x520bc2[0x2]);_0x116c2c[_0xab28('0x22')](_0x520bc2[0x3]);_0x116c2c[_0xab28('0x22')](_0x520bc2[_0xab28('0x24')](0x4,_0x520bc2[_0xab28('0x18')])['join'](','));break;case _0xab28('0x14'):_0x116c2c[_0xab28('0x22')](_0x18af35[_0xab28('0x1e')]);break;case'tag':_0x116c2c[_0xab28('0x22')](_0x18af35['TagId']);_0x116c2c[_0xab28('0x22')](_0x18af35[_0xab28('0x1e')]);break;default:_0x116c2c=_['isNil'](_0x18af35[_0xab28('0x1e')])?[]:_0x18af35[_0xab28('0x1e')][_0xab28('0x1f')](',');}var _0xb5e561={'id':util[_0xab28('0xb')](_0xab28('0x26'),_0x28ebe2,_0x18af35['id'],_0x18af35['app']),'condition':require(_0xab28('0x27'))[_0xab28('0x28')](_0x28ebe2,getIntervals(_0x389fc3['intervals'],_0x18af35),_0x389fc3),'consequence':require(_0xab28('0x29')+_0x18af35[_0xab28('0x1b')])[_0xab28('0x2a')](_0x28ebe2,_0x116c2c,_0x389fc3,_0x7c1921),'p':_0x18af35[_0xab28('0x2b')]||0x0};logger[_0xab28('0x2c')](_0xab28('0x2d'),_0xb5e561['id'],_0xab28('0x2e'),getIntervals(_0x389fc3[_0xab28('0x2f')],_0x18af35)['join'](_0xab28('0x30')));_0x53c5c7[_0xab28('0x22')](_0xb5e561);}else{logger['error'](_0xab28('0x31'),path[_0xab28('0x1a')](__dirname,'applications',_0x18af35[_0xab28('0x1b')]+_0xab28('0x32')));}}_0x389fc3[_0xab28('0x13')][_0x28ebe2]=new RuleEngine(_0x53c5c7);_0x389fc3[_0xab28('0x13')][_0x28ebe2][_0xab28('0x33')](_0x7c1921,function(_0x443cc8){logger[_0xab28('0x2c')]('Applications\x20executed',JSON[_0xab28('0x34')](_0x443cc8[_0xab28('0x35')]));if(_0x389fc3['rules'][_0x28ebe2]){_0x389fc3[_0xab28('0x13')][_0x28ebe2][_0xab28('0x36')](_0xab28('0x37'));}});return _0x14e8b4({'code':0xc8,'message':_0x7c1921});}else{logger[_0xab28('0x2c')](_0xab28('0x38'));return _0x14e8b4({'code':0xc8,'message':_0x7c1921});}}catch(_0x5b77c1){logger[_0xab28('0x39')](_0x5b77c1['stack']);return _0xaaeb24(_0x3d133e['error'](0x1f4,_0x5b77c1));}}return _0xaaeb24(_0xab28('0x3a'));});},'AcceptMessage':function(_0x11b042){var _0x23ada2=this;return new Promise(function(_0x44a986,_0x2c0b34){if(_0x11b042['agent']&&_0x11b042['agent']['id']){if(_0x389fc3[_0xab28('0x3b')][_0x11b042['agent']['id']]){_0x389fc3[_0xab28('0x3b')][_0x11b042['agent']['id']]['busy']=![];_0x389fc3[_0xab28('0x3b')][_0x11b042[_0xab28('0x3c')]['id']][_0xab28('0x3d')]=undefined;}}if(_0x11b042[_0xab28('0x14')]&&_0x11b042[_0xab28('0x14')]['id']){try{var _0x1aea9b=getId(_0x11b042['channel'],_0x11b042['message']?_0x11b042[_0xab28('0x14')]['id']:0x0,_0x11b042['interaction']?_0x11b042[_0xab28('0x15')]['id']:0x0);if(_0x389fc3['rules'][_0x1aea9b]){_0x389fc3[_0xab28('0x13')][_0x1aea9b]['emit']('end');if(rpc[_0x11b042[_0xab28('0x20')]+'QueueReport']){rpc[_0x11b042['channel']+'QueueReport'][_0xab28('0x3e')](_0x1aea9b,{'UserId':_0x11b042['message'][_0xab28('0x3f')]})[_0xab28('0x40')](function(_0x3f1da9){logger[_0xab28('0x39')]('error\x20update\x20queue\x20report');});}}return _0x44a986({'code':0xc8,'message':_0x11b042});}catch(_0x249a71){logger[_0xab28('0x39')](_0x249a71[_0xab28('0x41')]);return _0x2c0b34(_0x23ada2[_0xab28('0x39')](0x1f4,_0x249a71));}}logger[_0xab28('0x39')]('message\x20is\x20empty');return _0x2c0b34(_0x23ada2[_0xab28('0x39')](0x1f4,_0xab28('0x42')));});},'RejectMessage':function(_0x49bb4f){var _0x37c727=this;return new Promise(function(_0x586717,_0x47cd07){if(_0x49bb4f[_0xab28('0x3c')]&&_0x49bb4f[_0xab28('0x3c')]['id']){try{if(_0x389fc3['agents'][_0x49bb4f[_0xab28('0x3c')]['id']]){_0x389fc3['agents'][_0x49bb4f[_0xab28('0x3c')]['id']][_0xab28('0x43')]=![];_0x389fc3[_0xab28('0x3b')][_0x49bb4f[_0xab28('0x3c')]['id']]['busyQueue']=undefined;}return _0x586717({'code':0xc8,'message':_0x49bb4f});}catch(_0x1e6513){logger['error'](_0x1e6513['stack']);return _0x47cd07(_0x37c727[_0xab28('0x39')](0x1f4,_0x1e6513));}}logger['error'](_0xab28('0x42'));return _0x47cd07(_0x37c727[_0xab28('0x39')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x3e037d){var _0x2d5494=this;return new Promise(function(_0x49bc36,_0x41dd3d){if(_0x3e037d['channel']&&_0x3e037d[_0xab28('0x15')]&&_0x3e037d[_0xab28('0x15')]['id']){try{var _0x41c0b8=getId(_0x3e037d[_0xab28('0x20')],_0x3e037d[_0xab28('0x14')]?_0x3e037d[_0xab28('0x14')]['id']:0x0,_0x3e037d[_0xab28('0x15')]?_0x3e037d[_0xab28('0x15')]['id']:0x0);if(_0x389fc3['rules'][_0x41c0b8]){_0x389fc3[_0xab28('0x13')][_0x41c0b8][_0xab28('0x36')](_0xab28('0x44'));}return _0x49bc36({'code':0xc8,'message':_0x3e037d});}catch(_0x12da9c){logger[_0xab28('0x39')](_0x12da9c[_0xab28('0x41')]);return _0x41dd3d(_0x2d5494[_0xab28('0x39')](0x1f4,_0x12da9c));}}logger[_0xab28('0x39')](_0xab28('0x42'));return _0x41dd3d(_0x2d5494[_0xab28('0x39')](0x1f4,_0xab28('0x42')));});},'AgentCapacity':function(_0x4824f7){var _0x626732=this;return new Promise(function(_0x534bfc,_0x5d6d01){if(_0x389fc3[_0xab28('0x3b')][_0xab28('0x45')](_0x4824f7['id'])){for(var _0xf742fd in _0x4824f7['capacity']){if(_0x4824f7['capacity'][_0xab28('0x45')](_0xf742fd)){if(_0x389fc3[_0xab28('0x3b')][_0x4824f7['id']][_0xab28('0x45')](_0xf742fd+_0xab28('0x46'))){_0x389fc3[_0xab28('0x3b')][_0x4824f7['id']][_0xf742fd+_0xab28('0x46')]=parseInt(_0x4824f7[_0xab28('0x47')][_0xf742fd],0xa);}}}_0x389fc3[_0xab28('0x3b')][_0x4824f7['id']][_0xab28('0x48')]();return _0x534bfc({'code':0xc8,'message':_0x389fc3[_0xab28('0x3b')][_0x4824f7['id']]});}else{return _0x5d6d01(_0x626732[_0xab28('0x39')](0x1f4,_0xab28('0x49')));}});},'Agents':function(_0x263fa6){return new Promise(function(_0x150ee2,_0x1937cb){var _0x2d99b1=_[_0xab28('0x4a')](_0x389fc3[_0xab28('0x3b')]);_0x150ee2({'count':_0x2d99b1[_0xab28('0x18')],'rows':_0x2d99b1});});},'ChatQueues':function(_0x29a235){return new Promise(function(_0x473c0b,_0x10b226){var _0x23b50c=[];for(var _0x689bea in _0x389fc3[_0xab28('0x4b')]){if(_0x389fc3[_0xab28('0x4b')][_0xab28('0x45')](_0x689bea)){var _0x537b9a=_0x389fc3[_0xab28('0x4b')][_0x689bea];var _0x45518e={'id':_0x537b9a['id'],'available':_0x537b9a[_0xab28('0x4c')],'loggedIn':_0x537b9a['loggedIn'],'name':_0x537b9a[_0xab28('0x4d')],'paused':_0x537b9a['paused'],'waiting':_0x537b9a[_0xab28('0x4e')]};_0x23b50c[_0xab28('0x22')](_0x45518e);}}_0x473c0b({'count':_0x23b50c['length'],'rows':_0x23b50c});});},'MailQueues':function(_0x47e6dd){return new Promise(function(_0x41a109,_0x2447a5){var _0x59422a=[];for(var _0x63f569 in _0x389fc3['mailQueues']){if(_0x389fc3['mailQueues'][_0xab28('0x45')](_0x63f569)){var _0x2223af=_0x389fc3[_0xab28('0x4f')][_0x63f569];var _0x5eabd3={'id':_0x2223af['id'],'available':_0x2223af[_0xab28('0x4c')],'loggedIn':_0x2223af[_0xab28('0x50')],'name':_0x2223af[_0xab28('0x4d')],'paused':_0x2223af[_0xab28('0x51')],'waiting':_0x2223af[_0xab28('0x4e')]};_0x59422a[_0xab28('0x22')](_0x5eabd3);}}_0x41a109({'count':_0x59422a[_0xab28('0x18')],'rows':_0x59422a});});},'OpenchannelQueues':function(_0x4a622f){return new Promise(function(_0x124573,_0x20cf57){var _0x8b9fa3=[];for(var _0x7c046d in _0x389fc3[_0xab28('0x52')]){if(_0x389fc3[_0xab28('0x52')][_0xab28('0x45')](_0x7c046d)){var _0x4d19f9=_0x389fc3[_0xab28('0x52')][_0x7c046d];var _0x1a2753={'id':_0x4d19f9['id'],'available':_0x4d19f9['available'],'loggedIn':_0x4d19f9[_0xab28('0x50')],'name':_0x4d19f9['name'],'paused':_0x4d19f9[_0xab28('0x51')],'waiting':_0x4d19f9['waiting']};_0x8b9fa3[_0xab28('0x22')](_0x1a2753);}}_0x124573({'count':_0x8b9fa3[_0xab28('0x18')],'rows':_0x8b9fa3});});},'SmsQueues':function(_0x2a2f69){return new Promise(function(_0x54ab8c,_0x3fbbd4){var _0x11699a=[];for(var _0x42c765 in _0x389fc3['smsQueues']){if(_0x389fc3['smsQueues']['hasOwnProperty'](_0x42c765)){var _0x59345b=_0x389fc3['smsQueues'][_0x42c765];var _0x1cb915={'id':_0x59345b['id'],'available':_0x59345b[_0xab28('0x4c')],'loggedIn':_0x59345b[_0xab28('0x50')],'name':_0x59345b[_0xab28('0x4d')],'paused':_0x59345b[_0xab28('0x51')],'waiting':_0x59345b['waiting']};_0x11699a[_0xab28('0x22')](_0x1cb915);}}_0x54ab8c({'count':_0x11699a[_0xab28('0x18')],'rows':_0x11699a});});},'FaxQueues':function(_0x4253ea){return new Promise(function(_0x84c273,_0x4168fb){var _0x57011b=[];for(var _0x29cb9d in _0x389fc3['faxQueues']){if(_0x389fc3[_0xab28('0x53')]['hasOwnProperty'](_0x29cb9d)){var _0x3a1ed1=_0x389fc3[_0xab28('0x53')][_0x29cb9d];var _0x43aede={'id':_0x3a1ed1['id'],'available':_0x3a1ed1[_0xab28('0x4c')],'loggedIn':_0x3a1ed1[_0xab28('0x50')],'name':_0x3a1ed1[_0xab28('0x4d')],'paused':_0x3a1ed1[_0xab28('0x51')],'waiting':_0x3a1ed1[_0xab28('0x4e')]};_0x57011b['push'](_0x43aede);}}_0x84c273({'count':_0x57011b[_0xab28('0x18')],'rows':_0x57011b});});},'WhatsappQueues':function(_0x58d54){return new Promise(function(_0x5ce9d0,_0x46d287){var _0x2d65f1=[];for(var _0x2a153b in _0x389fc3[_0xab28('0x54')]){if(_0x389fc3[_0xab28('0x54')][_0xab28('0x45')](_0x2a153b)){var _0x1dea1d=_0x389fc3[_0xab28('0x54')][_0x2a153b];var _0x5f3e8b={'id':_0x1dea1d['id'],'available':_0x1dea1d['available'],'loggedIn':_0x1dea1d['loggedIn'],'name':_0x1dea1d[_0xab28('0x4d')],'paused':_0x1dea1d['paused'],'waiting':_0x1dea1d['waiting']};_0x2d65f1[_0xab28('0x22')](_0x5f3e8b);}}_0x5ce9d0({'count':_0x2d65f1[_0xab28('0x18')],'rows':_0x2d65f1});});},'ChatQueuesWaitingInteractions':function(_0x3264f2){return new Promise(function(_0x294e2a,_0x12df9c){var _0x474233=_[_0xab28('0x4a')](_0x389fc3[_0xab28('0x55')]);_0x294e2a({'count':_0x474233[_0xab28('0x18')],'rows':_0x474233});});},'MailQueuesWaitingInteractions':function(_0x2a3a16){return new Promise(function(_0x298d8d,_0x231d31){var _0x155f28=_[_0xab28('0x4a')](_0x389fc3[_0xab28('0x56')]);_0x298d8d({'count':_0x155f28['length'],'rows':_0x155f28});});},'OpenchannelQueuesWaitingInteractions':function(_0x5d9fc9){return new Promise(function(_0x1c3ef8,_0x283eaa){var _0x1e95da=_['values'](_0x389fc3['openchannelQueuesWaitingInteractions']);_0x1c3ef8({'count':_0x1e95da[_0xab28('0x18')],'rows':_0x1e95da});});},'SmsQueuesWaitingInteractions':function(_0x432be5){return new Promise(function(_0x4a43ca,_0x86c270){var _0x1ac89f=_[_0xab28('0x4a')](_0x389fc3['smsQueuesWaitingInteractions']);_0x4a43ca({'count':_0x1ac89f['length'],'rows':_0x1ac89f});});},'FaxQueuesWaitingInteractions':function(_0x53c47c){return new Promise(function(_0xa7843d,_0x2882f4){var _0x5213a4=_['values'](_0x389fc3[_0xab28('0x57')]);_0xa7843d({'count':_0x5213a4[_0xab28('0x18')],'rows':_0x5213a4});});},'WhatsappQueuesWaitingInteractions':function(_0x795882){return new Promise(function(_0x217ecd,_0x4198a4){var _0x3cc368=_['values'](_0x389fc3[_0xab28('0x58')]);_0x217ecd({'count':_0x3cc368[_0xab28('0x18')],'rows':_0x3cc368});});}};var _0x30c881=jayson[_0xab28('0x59')](_0x5c9694)[_0xab28('0x5a')]();_0x30c881['on'](_0xab28('0x39'),function(_0x2a2014){logger['error'](JSON[_0xab28('0x34')](_0x2a2014));return _0x554954(_0x2a2014);});_0x30c881['listen'](0x232c,_0xab28('0x5b'),function(){console['log'](_0xab28('0x5c'),0x232c);return _0x19029e(_0xab28('0x5d')+0x232c);});});};