@tiledesk/tiledesk-server 2.3.23 โ 2.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -6
- package/app.js +2 -3
- package/channels/chat21/chat21WebHook.js +20 -12
- package/event/messageEvent.js +22 -9
- package/package.json +2 -2
- package/pubmodules/cache/mongoose-cachegoose-fn.js +29 -0
- package/pubmodules/messageTransformer/messageTransformerInterceptor.js +1 -1
- package/routes/message.js +5 -2
- package/routes/project.js +1 -1
- package/routes/request.js +4 -4
- package/services/cacheEnabler.js +18 -12
- package/services/departmentService.js +25 -3
- package/services/operatingHoursService.js +2 -1
- package/services/requestService.js +6 -6
- package/websocket/webSocketServer.js +2 -2
package/CHANGELOG.md
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
|
2
2
|
|
3
|
+
๐ฅ TILEDESK SERVER v2.3.23 ๐ฅ
|
4
|
+
๐ TAGGED AND PUBLISHED ON NPM ๐
|
5
|
+
๐ IN PRODUCTION ๐
|
6
|
+
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.17)
|
7
|
+
|
8
|
+
# 2.3.23 -> PROD
|
9
|
+
- cacheEnabler + trigger cache + subscription cache
|
10
|
+
- project cache with cacheEnabler
|
11
|
+
- request cache with cacheEnabler
|
12
|
+
- Updated dependency @tiledesk/tiledesk-tybot-connector to 0.1.10
|
13
|
+
- Added trigger and subscription cache invalidation rules
|
14
|
+
|
15
|
+
# 2.3.22
|
16
|
+
- added cacheoose dep package.json
|
17
|
+
- Updated dependency @tiledesk/tiledesk-tybot-connector to 0.1.8
|
18
|
+
|
3
19
|
# 2.3.21
|
20
|
+
- log fix
|
21
|
+
- Updated dependency @tiledesk/tiledesk-tybot-connector to 0.1.7
|
22
|
+
- Moved cache module to public module
|
4
23
|
- filter request by smartAssignment
|
5
24
|
|
6
25
|
# 2.3.20
|
@@ -11,14 +30,13 @@
|
|
11
30
|
- Moved route-queue to public module
|
12
31
|
- Disable queue module if JOB_WORKER_ENABLED is true
|
13
32
|
|
33
|
+
# 2.3.18.2
|
34
|
+
- logfix
|
14
35
|
|
36
|
+
# 2.3.18.1
|
37
|
+
- Updated dependency @tiledesk/tiledesk-tybot-connector to 0.1.10
|
15
38
|
|
16
|
-
|
17
|
-
๐ TAGGED AND PUBLISHED ON NPM ๐
|
18
|
-
๐ IN PRODUCTION ๐
|
19
|
-
(https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.17)
|
20
|
-
|
21
|
-
# 2.3.18 -> PROD
|
39
|
+
# 2.3.18
|
22
40
|
- Added profileStatus field to the project_user model
|
23
41
|
- Added smartAssignment field to the request model
|
24
42
|
- Canned responses default limit value increased from 40 to 1000
|
package/app.js
CHANGED
@@ -142,8 +142,7 @@ botSubscriptionNotifier.start();
|
|
142
142
|
|
143
143
|
|
144
144
|
var geoService = require('./services/geoService');
|
145
|
-
geoService.listen();
|
146
|
-
|
145
|
+
geoService.listen();
|
147
146
|
|
148
147
|
|
149
148
|
|
@@ -323,7 +322,7 @@ var projectSetter = function (req, res, next) {
|
|
323
322
|
if (projectid) {
|
324
323
|
|
325
324
|
let q = Project.findOne({_id: projectid, status: 100});
|
326
|
-
if (cacheEnabler.
|
325
|
+
if (cacheEnabler.project) {
|
327
326
|
q.cache(cacheUtil.defaultTTL, "projects:id:"+projectid) //project_cache
|
328
327
|
winston.debug('project cache enabled');
|
329
328
|
}
|
@@ -9,6 +9,8 @@ var Project_user = require("../../models/project_user");
|
|
9
9
|
var RequestConstants = require("../../models/requestConstants");
|
10
10
|
|
11
11
|
var cacheUtil = require('../../utils/cacheUtil');
|
12
|
+
var cacheEnabler = require("../../services/cacheEnabler");
|
13
|
+
|
12
14
|
|
13
15
|
var mongoose = require('mongoose');
|
14
16
|
var winston = require('../../config/winston');
|
@@ -73,11 +75,17 @@ router.post('/', function (req, res) {
|
|
73
75
|
winston.debug("Chat21 message", message);
|
74
76
|
|
75
77
|
// requestcachefarequi nocachepopulatereqired
|
76
|
-
|
78
|
+
let q = Request.findOne({request_id: message.recipient})
|
79
|
+
|
80
|
+
if (cacheEnabler.request) {
|
81
|
+
q.cache(cacheUtil.defaultTTL, "requests:request_id:"+message.recipient+":simple"); //request_cache
|
82
|
+
// project_id not available
|
83
|
+
winston.debug('request cache enabled');
|
84
|
+
}
|
85
|
+
return q.exec(function(err, request) {
|
86
|
+
|
77
87
|
// before request_id id_project unique - commented
|
78
|
-
|
79
|
-
// .cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+requestid) project_id not available
|
80
|
-
.exec(function(err, request) {
|
88
|
+
|
81
89
|
|
82
90
|
if (err) {
|
83
91
|
return res.status(500).send({success: false, msg: 'Error getting the request.', err:err});
|
@@ -202,7 +210,7 @@ router.post('/', function (req, res) {
|
|
202
210
|
}
|
203
211
|
|
204
212
|
|
205
|
-
|
213
|
+
|
206
214
|
|
207
215
|
|
208
216
|
var new_request = {
|
@@ -210,7 +218,7 @@ router.post('/', function (req, res) {
|
|
210
218
|
departmentid:departmentid, sourcePage:sourcePage, language:language, userAgent:client, status:requestStatus, createdBy: undefined,
|
211
219
|
attributes:rAttributes, subject:undefined, preflight:false, channel:undefined, location:undefined,
|
212
220
|
lead:createdLead, requester:project_user
|
213
|
-
|
221
|
+
|
214
222
|
};
|
215
223
|
|
216
224
|
winston.debug("new_request", new_request);
|
@@ -379,10 +387,10 @@ router.post('/', function (req, res) {
|
|
379
387
|
winston.debug('query:'+ projectId);
|
380
388
|
|
381
389
|
let q = Request.findOne(query);
|
382
|
-
if (cacheEnabler.
|
383
|
-
|
384
|
-
|
385
|
-
}
|
390
|
+
// if (cacheEnabler.request) {
|
391
|
+
// q.cache(cacheUtil.defaultTTL, projectId+":requests:request_id:"+recipient_id+":simple"); //request_cache NOT IMPORTANT HERE
|
392
|
+
// winston.debug('project cache enabled');
|
393
|
+
// }
|
386
394
|
return q.exec(function(err, request) {
|
387
395
|
|
388
396
|
if (err) {
|
@@ -465,7 +473,7 @@ router.post('/', function (req, res) {
|
|
465
473
|
|
466
474
|
// requestcachefarequi populaterequired
|
467
475
|
return Request.findOne({request_id: request_id, id_project: id_project})
|
468
|
-
.populate('lead') //TODO posso prenderlo da snapshot senza populate
|
476
|
+
.populate('lead') //TODO posso prenderlo da snapshot senza populate cache_attention
|
469
477
|
.exec(function(err, request) {
|
470
478
|
if (err){
|
471
479
|
winston.error(err);
|
@@ -632,7 +640,7 @@ else if (req.body.event_type == "typing-start") {
|
|
632
640
|
// requestcachefarequi nocachepopulatereqired
|
633
641
|
return Request.findOne({request_id: recipient_id})
|
634
642
|
//TOD errore cache sistemare e riabbilitare->
|
635
|
-
// .cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+recipient_id)
|
643
|
+
// .cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+recipient_id) cache_attention
|
636
644
|
.exec(function(err, request) {
|
637
645
|
if (err){
|
638
646
|
winston.error(err);
|
package/event/messageEvent.js
CHANGED
@@ -34,14 +34,18 @@ function emitCompleteMessage(message) {
|
|
34
34
|
}
|
35
35
|
|
36
36
|
messageEvent.on('message.create', emitCompleteMessage);
|
37
|
-
|
37
|
+
|
38
|
+
// messageEvent.on('message.update.simple', emitCompleteMessage); //if populateMessageUpdate is disabled then you must forward message.update event from message.update.simple
|
39
|
+
messageEvent.on('message.update', emitCompleteMessage); // i must restore populateMessageWithRequest. see below
|
38
40
|
|
39
41
|
function populateMessageCreate(message) {
|
40
42
|
return populateMessageWithRequest(message, 'message.create');
|
41
43
|
}
|
42
44
|
function populateMessageUpdate(message) {
|
43
|
-
|
44
|
-
return; // do not populate message.update it's not used by anyone.
|
45
|
+
return populateMessageWithRequest(message, 'message.update');
|
46
|
+
// return; // do not populate message.update it's not used by anyone.
|
47
|
+
///it is used by \agent interceptor. Without populateMessageWithRequest \agent sent by bot doesn't work. i must restore populateMessageWithRequest
|
48
|
+
// Not used by webhook. populate for message.update is slow.
|
45
49
|
}
|
46
50
|
|
47
51
|
|
@@ -70,8 +74,7 @@ function populateMessageWithRequest(message, eventPrefix) {
|
|
70
74
|
// request.department._id DA CORREGGERE ANCHE PER REQUEST.CREATE
|
71
75
|
// request.department.hasBot
|
72
76
|
// request.isOpen
|
73
|
-
|
74
|
-
|
77
|
+
winston.info('message Event populate');
|
75
78
|
if (cacheEnabler.request) {
|
76
79
|
q.cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient) //request_cache ma con lean????attento metti a parte
|
77
80
|
winston.debug('request cache enabled');
|
@@ -83,6 +86,9 @@ function populateMessageWithRequest(message, eventPrefix) {
|
|
83
86
|
return messageEvent.emit(eventPrefix, message);
|
84
87
|
}
|
85
88
|
|
89
|
+
winston.debug('message Event populate after query');
|
90
|
+
|
91
|
+
|
86
92
|
if (request) {
|
87
93
|
winston.debug("request is defined in messageEvent",request );
|
88
94
|
|
@@ -91,9 +97,14 @@ function populateMessageWithRequest(message, eventPrefix) {
|
|
91
97
|
|
92
98
|
if (request.department && request.department.id_bot) {
|
93
99
|
// if (request.department) {
|
94
|
-
Faq_kb.findById(request.department.id_bot)
|
95
|
-
|
96
|
-
.
|
100
|
+
let qbot = Faq_kb.findById(request.department.id_bot)
|
101
|
+
|
102
|
+
if (cacheEnabler.faq_kb) {
|
103
|
+
qbot.cache(cacheUtil.defaultTTL, message.id_project+":faq_kbs:id:"+request.department.id_bot)
|
104
|
+
winston.debug('faq_kb cache enabled');
|
105
|
+
}
|
106
|
+
|
107
|
+
qbot.exec(function(err, bot) {
|
97
108
|
winston.debug('bot', bot);
|
98
109
|
requestJson.department.bot = bot
|
99
110
|
|
@@ -169,10 +180,12 @@ messageEvent.on('message.update.simple', populateMessageUpdate);
|
|
169
180
|
|
170
181
|
|
171
182
|
|
172
|
-
// riattiva commentato per performance
|
183
|
+
// // riattiva commentato per performance
|
184
|
+
|
173
185
|
// // spostare su classe
|
174
186
|
|
175
187
|
|
188
|
+
|
176
189
|
// var messageCreateKey = 'message.create';
|
177
190
|
// if (messageEvent.queueEnabled) {
|
178
191
|
// messageCreateKey = 'message.create.queue';
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tiledesk/tiledesk-server",
|
3
3
|
"description": "The Tiledesk server module",
|
4
|
-
"version": "2.3.
|
4
|
+
"version": "2.3.24",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -41,7 +41,7 @@
|
|
41
41
|
"@tiledesk/tiledesk-chatbot-util": "^0.8.33",
|
42
42
|
"@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
|
43
43
|
"@tiledesk/tiledesk-rasa-connector": "^1.0.10",
|
44
|
-
"@tiledesk/tiledesk-tybot-connector": "^0.1.
|
44
|
+
"@tiledesk/tiledesk-tybot-connector": "^0.1.14",
|
45
45
|
"app-root-path": "^3.0.0",
|
46
46
|
"bcrypt-nodejs": "0.0.3",
|
47
47
|
"body-parser": "^1.20.0",
|
@@ -203,6 +203,35 @@
|
|
203
203
|
|
204
204
|
|
205
205
|
|
206
|
+
requestEvent.on("request.create.simple", function(request) {
|
207
|
+
setImmediate(() => {
|
208
|
+
var key = request.id_project+":requests:id:"+request.id+":simple";
|
209
|
+
winston.verbose("Creating cache for request.create.simple with key: " + key);
|
210
|
+
|
211
|
+
client.set(key, request, defaultTTL, (err, reply) => {
|
212
|
+
winston.debug("Created cache for request.create.simple",reply);
|
213
|
+
winston.verbose("Created cache for request.create.simple",{err:err});
|
214
|
+
});
|
215
|
+
|
216
|
+
|
217
|
+
var key = "requests:id:"+request.request_id+":simple"; //without project for chat21 webhook
|
218
|
+
winston.verbose("Creating cache for request.create.simple with key: " + key);
|
219
|
+
|
220
|
+
client.set(key, request, defaultTTL, (err, reply) => {
|
221
|
+
winston.debug("Created cache for request.create.simple",reply);
|
222
|
+
winston.verbose("Created cache for request.create.simple",{err:err});
|
223
|
+
});
|
224
|
+
|
225
|
+
var key = request.id_project+":requests:request_id:"+request.request_id+":simple";
|
226
|
+
winston.verbose("Creating cache for request.create.simple with key: " + key);
|
227
|
+
client.set(key, request, defaultTTL, (err, reply) => {
|
228
|
+
winston.debug("Created cache for request.create.simple",reply);
|
229
|
+
winston.verbose("Created cache for request.create.simple",{err:err});
|
230
|
+
});
|
231
|
+
|
232
|
+
})
|
233
|
+
});
|
234
|
+
|
206
235
|
requestEvent.on("request.create", function(request) {
|
207
236
|
setImmediate(() => {
|
208
237
|
var key = request.id_project+":requests:id:"+request.id;
|
@@ -45,7 +45,7 @@ class MessageTransformerInterceptor {
|
|
45
45
|
// populate({path:'requester',populate:{path:'id_user'}}).
|
46
46
|
|
47
47
|
if (cacheEnabler.request) {
|
48
|
-
q.cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient) //request_cache nocachepopulatereqired
|
48
|
+
q.cache(cacheUtil.defaultTTL, message.id_project+":requests:request_id:"+message.recipient+":simple") //request_cache nocachepopulatereqired
|
49
49
|
winston.debug('request cache enabled');
|
50
50
|
}
|
51
51
|
|
package/routes/message.js
CHANGED
@@ -53,7 +53,7 @@ async (req, res) => {
|
|
53
53
|
return res.status(422).json({ errors: errors.array() });
|
54
54
|
}
|
55
55
|
|
56
|
-
|
56
|
+
|
57
57
|
var project_user = req.projectuser;
|
58
58
|
var sender = req.body.sender;
|
59
59
|
var fullname = req.body.senderFullname || req.user.fullName;
|
@@ -64,7 +64,7 @@ async (req, res) => {
|
|
64
64
|
|
65
65
|
let q = Request.findOne({request_id: req.params.request_id, id_project: req.projectid});
|
66
66
|
if (cacheEnabler.request) {
|
67
|
-
q.cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+req.params.request_id) //request_cache
|
67
|
+
q.cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+req.params.request_id+":simple") //request_cache
|
68
68
|
winston.debug('request cache enabled');
|
69
69
|
}
|
70
70
|
// cacherequest // requestcachefarequi nocachepopulatereqired
|
@@ -295,6 +295,9 @@ async (req, res) => {
|
|
295
295
|
});
|
296
296
|
|
297
297
|
|
298
|
+
|
299
|
+
|
300
|
+
|
298
301
|
// router.put('/:messageid', function(req, res) {
|
299
302
|
|
300
303
|
// console.log(req.body);
|
package/routes/project.js
CHANGED
@@ -451,7 +451,7 @@ Project.findByIdAndUpdate(req.params.projectid, { $pull: { bannedUsers: { "_id":
|
|
451
451
|
router.get('/:projectid', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['subscription'])], function (req, res) {
|
452
452
|
winston.debug(req.body);
|
453
453
|
let q = Project.findOne({_id: req.params.projectid, status:100});
|
454
|
-
if (cacheEnabler.
|
454
|
+
if (cacheEnabler.project) {
|
455
455
|
q.cache(cacheUtil.defaultTTL, "projects:id:"+req.params.projectid) //project_cache
|
456
456
|
winston.debug('project cache enabled');
|
457
457
|
}
|
package/routes/request.js
CHANGED
@@ -1266,10 +1266,10 @@ router.get('/:requestid', function (req, res) {
|
|
1266
1266
|
.populate('participatingAgents')
|
1267
1267
|
.populate({path:'requester',populate:{path:'id_user'}});
|
1268
1268
|
|
1269
|
-
if (cacheEnabler.request) {
|
1270
|
-
|
1271
|
-
|
1272
|
-
}
|
1269
|
+
// if (cacheEnabler.request) { cache disabled beacuse cacheoose don't support .populate without lean. here cache is not important
|
1270
|
+
// q.cache(cacheUtil.defaultTTL, req.projectid+":requests:request_id:"+requestid) //request_cache
|
1271
|
+
// winston.debug('request cache enabled');
|
1272
|
+
// }
|
1273
1273
|
//
|
1274
1274
|
// .populate({path:'requester',populate:{path:'id_user', select:{'firstname':1, 'lastname':1}}})
|
1275
1275
|
q.exec(function(err, request) {
|
package/services/cacheEnabler.js
CHANGED
@@ -21,20 +21,26 @@ class CacheEnabler {
|
|
21
21
|
this.request = false;
|
22
22
|
}
|
23
23
|
|
24
|
-
this.
|
25
|
-
if (process.env.
|
26
|
-
this.
|
24
|
+
this.faq_kb = true;
|
25
|
+
if (process.env.CACHE_FAQ_KB_ENABLED=="false" || process.env.CACHE_FAQ_KB_ENABLED==false) {
|
26
|
+
this.faq_kb = false;
|
27
27
|
}
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
|
30
|
+
// this.project_user = true;
|
31
|
+
// if (process.env.CACHE_PROJECT_USER_ENABLED=="false" || process.env.CACHE_PROJECT_USER_ENABLED==false) {
|
32
|
+
// this.project_user = false;
|
33
|
+
// }
|
34
|
+
|
35
|
+
// this.user = true;
|
36
|
+
// if (process.env.CACHE_USER_ENABLED=="false" || process.env.CACHE_USER_ENABLED==false) {
|
37
|
+
// this.user = false;
|
38
|
+
// }
|
39
|
+
|
40
|
+
// this.message = true;
|
41
|
+
// if (process.env.CACHE_MESSAGE_ENABLED=="false" || process.env.CACHE_MESSAGE_ENABLED==false) {
|
42
|
+
// this.message = false;
|
43
|
+
// }
|
38
44
|
}
|
39
45
|
}
|
40
46
|
|
@@ -8,6 +8,8 @@ var winston = require('../config/winston');
|
|
8
8
|
const departmentEvent = require('../event/departmentEvent');
|
9
9
|
const Request = require('../models/request');
|
10
10
|
const RoleConstants = require ('../models/roleConstants')
|
11
|
+
var cacheEnabler = require("../services/cacheEnabler");
|
12
|
+
var cacheUtil = require("../utils/cacheUtil");
|
11
13
|
|
12
14
|
class DepartmentService {
|
13
15
|
|
@@ -86,7 +88,7 @@ roundRobin(operatorSelectedEvent) {
|
|
86
88
|
|
87
89
|
// let lastRequests = await
|
88
90
|
// requestcachefarequi nocachepopulatereqired
|
89
|
-
Request.find(query).sort({_id:-1}).limit(1).exec(function (err, lastRequests) {
|
91
|
+
Request.find(query).sort({_id:-1}).limit(1).exec(function (err, lastRequests) { // cache_attention
|
90
92
|
if (err) {
|
91
93
|
winston.error('Error getting request for RoundRobinOperator', err);
|
92
94
|
return reject(err);
|
@@ -190,7 +192,12 @@ getOperators(departmentid, projectid, nobot, disableWebHookCall, context) {
|
|
190
192
|
// console.log("ยปยปยป ยปยปยป --> DEPT ID ", departmentid);
|
191
193
|
|
192
194
|
|
193
|
-
|
195
|
+
let q = Project.findOne({_id: projectid, status: 100})
|
196
|
+
if (cacheEnabler.project) {
|
197
|
+
q.cache(cacheUtil.defaultTTL, "projects:id:"+projectid) //project_cache
|
198
|
+
winston.debug('project cache enabled');
|
199
|
+
}
|
200
|
+
return q.exec(function(err, project){
|
194
201
|
if (err) {
|
195
202
|
winston.error('Project findById ', err);
|
196
203
|
return reject(err);
|
@@ -205,6 +212,7 @@ getOperators(departmentid, projectid, nobot, disableWebHookCall, context) {
|
|
205
212
|
// TODO questo lo abiliterei solo esplicitamete se si flagga opzione su progetto per performance
|
206
213
|
if (disableWebHookCall==undefined) {
|
207
214
|
//if pro enabled disableWebHookCall = false
|
215
|
+
//secondo me qui manca un parentesi tonda per gli or
|
208
216
|
if (project.profile && (project.profile.type === 'free' && project.trialExpired === false) || (project.profile.type === 'payment' && project.isActiveSubscription === true)) {
|
209
217
|
// winston.info('disableWebHookCall pro');
|
210
218
|
disableWebHookCall = false;
|
@@ -389,6 +397,7 @@ getOperators(departmentid, projectid, nobot, disableWebHookCall, context) {
|
|
389
397
|
|
390
398
|
let objectToReturn = { available_agents: _available_agents, agents: project_users, operators: selectedoperator, department: department, group: group, id_project: projectid, project: project, context: context };
|
391
399
|
|
400
|
+
// var objectToReturnRoundRobin = objectToReturn;
|
392
401
|
that.roundRobin(objectToReturn).then(function(objectToReturnRoundRobin){
|
393
402
|
|
394
403
|
winston.debug("context2",context);
|
@@ -450,6 +459,8 @@ getOperators(departmentid, projectid, nobot, disableWebHookCall, context) {
|
|
450
459
|
|
451
460
|
let objectToReturn = { available_agents: _available_agents, agents: project_users, operators: selectedoperator, department: department, id_project: projectid, project: project, context: context };
|
452
461
|
|
462
|
+
// var objectToReturnRoundRobin = objectToReturn;
|
463
|
+
|
453
464
|
that.roundRobin(objectToReturn).then(function(objectToReturnRoundRobin) {
|
454
465
|
winston.debug("context2",context);
|
455
466
|
departmentEvent.emit('operator.select.base1', {result:objectToReturnRoundRobin, disableWebHookCall: disableWebHookCall, resolve: resolve, reject: reject, context: context});
|
@@ -543,8 +554,19 @@ getOperators(departmentid, projectid, nobot, disableWebHookCall, context) {
|
|
543
554
|
|
544
555
|
// console.log('-- > OPERATORS [ getRandomAvailableOperator ] - PROJECT USER AVAILABLE LENGHT ', project_users_available.length);
|
545
556
|
if (project_users_available.length > 0) {
|
557
|
+
|
558
|
+
|
559
|
+
// new
|
560
|
+
// num between 0 and 1 * es 3 ->
|
561
|
+
// let randomIndex = Math.round(Math.random() * project_users_available.length);
|
562
|
+
// // let randomIndex = Math.floor(Math.random() * project_users_available.length);
|
563
|
+
|
564
|
+
// console.log("randomIndex",randomIndex);
|
565
|
+
// var operator = project_users_available[randomIndex];
|
566
|
+
// // console.log('OPERATORS - SELECTED MEMBER ID', operator.id_user);
|
567
|
+
|
546
568
|
var operator = project_users_available[Math.floor(Math.random() * project_users_available.length)];
|
547
|
-
|
569
|
+
|
548
570
|
|
549
571
|
return [{ id_user: operator.id_user }];
|
550
572
|
// return [operator];
|
@@ -12,7 +12,7 @@ class OperatingHoursService {
|
|
12
12
|
|
13
13
|
// winston.debug('O ---> [ OHS ] -> PROJECT ID ', projectId)
|
14
14
|
let q = Project.findOne({_id: projectId, status: 100});
|
15
|
-
if (cacheEnabler.
|
15
|
+
if (cacheEnabler.project) {
|
16
16
|
q.cache(cacheUtil.defaultTTL, "projects:id:"+projectId) //project_cache
|
17
17
|
winston.debug('project cache enabled');
|
18
18
|
}
|
@@ -40,6 +40,7 @@ class OperatingHoursService {
|
|
40
40
|
// IF THE TRIAL IS EXPIRED OR IF THE SUBSCIPTION IS NOT ACTIVE THE PROJECT IS ALWAYS OPEN EVEN IF activeOperatingHours IS SETTED TO true AND, FOR EXAMPLE,
|
41
41
|
// THE USER HAS SETTED ALL DAYS TO CLOSED
|
42
42
|
|
43
|
+
//secondo me qui manca un parentesi tonda per gli or
|
43
44
|
if (project.profile && (project.profile.type === 'free' && project.trialExpired === true) || (project.profile.type === 'payment' && project.isActiveSubscription === false)) {
|
44
45
|
winston.debug('O ---> [ OHS ] -> trial Expired OR Subscription NOT Active - PROJECT ALWAYS OPEN')
|
45
46
|
callback(true, null) ;
|
@@ -231,7 +231,7 @@ class RequestService {
|
|
231
231
|
.findOne({request_id: request_id, id_project: id_project});
|
232
232
|
|
233
233
|
if (cacheEnabler.request) {
|
234
|
-
q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id) //request_cache
|
234
|
+
q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id+":simple") //request_cache
|
235
235
|
winston.debug('request cache enabled');
|
236
236
|
}
|
237
237
|
return q.exec( function(err, request) {
|
@@ -387,7 +387,7 @@ class RequestService {
|
|
387
387
|
.findOne({request_id: request_id, id_project: id_project});
|
388
388
|
|
389
389
|
if (cacheEnabler.request) {
|
390
|
-
q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id) //request_cache
|
390
|
+
q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id+":simple") //request_cache
|
391
391
|
winston.debug('request cache enabled');
|
392
392
|
}
|
393
393
|
|
@@ -981,10 +981,10 @@ class RequestService {
|
|
981
981
|
.populate('participatingAgents')
|
982
982
|
.populate({path:'requester',populate:{path:'id_user'}});
|
983
983
|
|
984
|
-
if (cacheEnabler.request) {
|
985
|
-
|
986
|
-
|
987
|
-
}
|
984
|
+
// if (cacheEnabler.request) { //attention this cache is not usable bacause cacheoose don't support populate without .lean.. so if cached populated field is not returned with cacheoose, updateWaitingTime is only used in chat21webhook but i thik it is important for messages route
|
985
|
+
// q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id) //request_cache
|
986
|
+
// winston.debug('request cache enabled');
|
987
|
+
// }
|
988
988
|
q.exec(function(err, request) {
|
989
989
|
if (err) {
|
990
990
|
winston.error(err);
|
@@ -93,7 +93,7 @@ class WebSocketServer {
|
|
93
93
|
// winston.debug('ok websocket');
|
94
94
|
|
95
95
|
User.findOne({_id: identifier, status: 100}, 'email firstname lastname emailverified id')
|
96
|
-
//@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+identifier)
|
96
|
+
//@DISABLED_CACHE .cache(cacheUtil.defaultTTL, "users:id:"+identifier) //user_cache
|
97
97
|
.exec(function (err, user) {
|
98
98
|
|
99
99
|
|
@@ -187,7 +187,7 @@ class WebSocketServer {
|
|
187
187
|
|
188
188
|
let q = Project.findOne({ _id: projectId, status: 100})
|
189
189
|
|
190
|
-
if (cacheEnabler.
|
190
|
+
if (cacheEnabler.project) {
|
191
191
|
q.cache(cacheUtil.defaultTTL, "projects:id:"+projectId) //project_cache
|
192
192
|
winston.debug('project cache enabled');
|
193
193
|
}
|