@tiledesk/tiledesk-server 2.3.20 → 2.3.21

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 CHANGED
@@ -1,20 +1,62 @@
1
- # 2.3.17 -> PROD
2
- - Webhook chat21 fix return
1
+
2
+
3
+ # 2.3.21
4
+ - filter request by smartAssignment
5
+
6
+ # 2.3.20
7
+ - Performance: Removed populate for message.update messages. This event is not used by anyone.
8
+
9
+ # 2.3.19
10
+ - Moved queue module to public module
11
+ - Moved route-queue to public module
12
+ - Disable queue module if JOB_WORKER_ENABLED is true
13
+
14
+
15
+
16
+ 💥 TILEDESK SERVER v2.3.18 💥
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
22
+ - Added profileStatus field to the project_user model
23
+ - Added smartAssignment field to the request model
24
+ - Canned responses default limit value increased from 40 to 1000
25
+ - Now you change channel name from REST endpoint
26
+ - New Tybot 0.1.5
27
+ - GeoService setImmediate added
28
+ - Websocket setImmediate and topic validation
29
+ - Do not trigger requestNotification send email method for preflight request
30
+ - Removed deprecated .count with .countDocument
31
+ - Added workingStatus to request model
32
+ - Changed Anonymous signin from Guest to guest#shortuid
33
+ - Updated chat21/chat21-node-sdk to 1.1.7. Now group parameter is supported.
34
+ - Moved queue module to public modules folder
35
+ - Created JobManager and Job runner files
36
+ - Now activity archiver module uses queue engine
37
+ - Now geoService uses queue engine
38
+ - Added GEO_SERVICE_ENABLED to enable disable ip lookup to latitude and longitude
39
+ - Added EMAIL_NOTIFICATION_ENABLED to enable disable email notification
40
+
41
+
42
+ # 2.3.17
43
+ - Webhook chat21 fix
44
+ - Chat21 Cloud Function: when an agent leaves a conversation an info message is sent to notify it to the visitor
3
45
 
4
46
  # 2.3.16
5
- - Request close activity added as event
6
- - Log fix webhook chat21
47
+ - Request close activity added as event. Now you can see from the Activity menu who has closed the conversation and when.
48
+ - Log fix for webhook chat21
7
49
 
8
50
  # 2.3.15
9
- - Endpoint Widget fix undefined project.widget
51
+ - BugFix: Endpoint Widget fix for undefined of the project.widget object
10
52
 
11
53
  # 2.3.14
12
54
  - Added ip filter with Deny roles and ban User roles
13
- - Ban notifier
14
- - Middleware decodeJwt before passport with passport fallback
15
- - Removed unused requestService.incrementMessagesCountByRequestId from chat21Webhook
16
- - Enable agent to manage groups endpoint
17
- - Added tilebot chat server
55
+ - Ban notifier module
56
+ - Created a new Middleware decodeJwt before passport with passport fallback
57
+ - Removed unused requestService.incrementMessagesCountByRequestId code from chat21Webhook
58
+ - Allow agents to manage groups endpoint
59
+ - Embedded the new Tilebot chat server
18
60
 
19
61
  # 2.3.13
20
62
  - Getting ip fix
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.20",
4
+ "version": "2.3.21",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -29,7 +29,6 @@
29
29
  "tiledesk-server": "./bin/www"
30
30
  },
31
31
  "optionalDependencies": {
32
- "@tiledesk-ent/tiledesk-server-cache": "^1.1.10",
33
32
  "@tiledesk-ent/tiledesk-server-dialogflow": "^1.1.6",
34
33
  "@tiledesk-ent/tiledesk-server-jwthistory": "^1.1.9",
35
34
  "@tiledesk-ent/tiledesk-server-payments": "^1.1.6",
@@ -42,13 +41,14 @@
42
41
  "@tiledesk/tiledesk-chatbot-util": "^0.8.33",
43
42
  "@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
44
43
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
45
- "@tiledesk/tiledesk-tybot-connector": "^0.1.5",
44
+ "@tiledesk/tiledesk-tybot-connector": "^0.1.7",
46
45
  "app-root-path": "^3.0.0",
47
46
  "bcrypt-nodejs": "0.0.3",
48
47
  "body-parser": "^1.20.0",
49
48
  "cookie-parser": "^1.4.6",
50
49
  "cors": "^2.8.5",
51
50
  "csv-express": "^1.2.2",
51
+ "cachegoose": "^8.0.0",
52
52
  "debug": "^4.3.4",
53
53
  "dotenv": "^8.6.0",
54
54
  "email-templates": "^8.1.0",
@@ -0,0 +1,2 @@
1
+ const mongooseCachegoose = require("./mongoose-cachegoose-fn");
2
+ module.exports = {cachegoose:mongooseCachegoose};
@@ -0,0 +1,505 @@
1
+ var requestEvent = require("../../event/requestEvent");
2
+ var messageEvent = require("../../event/messageEvent");
3
+ var projectEvent = require("../../event/projectEvent");
4
+ var botEvent = require("../../event/botEvent");
5
+ var departmentEvent = require("../../event/departmentEvent");
6
+ var authEvent = require("../../event/authEvent");
7
+ var labelEvent = require("../../event/labelEvent");
8
+
9
+ // var subscriptionEvent = require("");
10
+
11
+ var winston = require('../../config/winston');
12
+
13
+ var cachegoose = require('cachegoose');
14
+
15
+ var defaultTTL = process.env.CACHE_DEFAULT_TTL || 120;
16
+
17
+
18
+ function listen(client) {
19
+
20
+ projectEvent.on("project.create", function(project) {
21
+ setImmediate(() => {
22
+ var key = "projects:id:"+project.id;
23
+ winston.verbose("Creating cache for project.create with key: " + key);
24
+ client.set(key, project, defaultTTL, (err, reply) => {
25
+ winston.verbose("Created cache for project.create",{err:err});
26
+ winston.debug("Created cache for project.create reply",reply);
27
+ });
28
+
29
+ key = "projects:query:*";
30
+ winston.verbose("Deleting cache for project.create with key: " + key);
31
+ client.del(key, function (err, reply) {
32
+ winston.verbose("Deleted cache for project.create",{err:err});
33
+ winston.debug("Deleted cache for project.create",reply);
34
+
35
+ });
36
+ });
37
+ });
38
+
39
+ projectEvent.on("project.update", function(project) {
40
+ setImmediate(() => {
41
+ var key = "projects:id:"+project.id;
42
+ winston.verbose("Updating cache for project.update with key: " + key);
43
+ client.set(key, project, defaultTTL, (err, reply) => {
44
+ winston.verbose("Updated cache for project.update",{err:err});
45
+ winston.debug("Updated cache for project.update",reply);
46
+
47
+ });
48
+
49
+ key = "projects:query:*";
50
+ winston.verbose("Deleting cache for project.create with key: " + key);
51
+ client.del(key, function (err, reply) {
52
+ winston.debug("Deleted cache for project.create",reply);
53
+ winston.verbose("Deleted cache for project.create",{err:err});
54
+ });
55
+ });
56
+
57
+ });
58
+
59
+ projectEvent.on("project.delete", function(project) {
60
+ setImmediate(() => {
61
+ var key = "projects:id:"+project.id;
62
+ winston.verbose("Deleting cache for project.delete with key: " + key);
63
+ client.del(key, (err, reply) => {
64
+ winston.debug("Deleted cache for project.delete",reply);
65
+ winston.verbose("Deleted cache for project.delete",{err:err});
66
+ });
67
+
68
+ key = "projects:query:*";
69
+ winston.verbose("Deleting cache for project.create with key: " + key);
70
+ client.del(key, function (err, reply) {
71
+ winston.debug("Deleted cache for project.create",reply);
72
+ winston.verbose("Deleted cache for project.create",{err:err});
73
+ });
74
+ });
75
+ });
76
+
77
+ projectEvent.on("project.downgrade", function(project) {
78
+ setImmediate(() => {
79
+ var key = "projects:id:"+project.id;
80
+ winston.verbose("Updating cache for project.downgrade with key: " + key);
81
+
82
+ client.set(key, project, defaultTTL, (err, reply) => {
83
+ winston.debug("Updated cache for project.downgrade",reply);
84
+ winston.verbose("Updated cache for project.downgrade",{err:err});
85
+ });
86
+
87
+ key = "projects:query:*";
88
+ winston.verbose("Deleting cache for project.create with key: " + key);
89
+ client.del(key, function (err, reply) {
90
+ winston.debug("Deleted cache for project.create",reply);
91
+ winston.verbose("Deleted cache for project.create",{err:err});
92
+ });
93
+ });
94
+ });
95
+
96
+
97
+
98
+
99
+
100
+
101
+ authEvent.on('project_user.update', function(data) {
102
+ setImmediate(() => {
103
+
104
+ var project_user = data.updatedProject_userPopulated;
105
+
106
+ var key = project_user.id_project+":project_users:id:"+project_user.id;
107
+ winston.verbose("Updating cache for project_user.update with key: " + key);
108
+ client.set(key, project_user, defaultTTL, (err, reply) => {
109
+ winston.debug("Updated cache for project_user.update",reply);
110
+ winston.verbose("Updated cache for project_user.update",{err:err});
111
+ });
112
+
113
+ var role = project_user.role;
114
+
115
+ var TEAMMATE_ROLES = {
116
+ "agent": ["guest","user","agent"],
117
+ "admin": ["guest","user","agent", "admin",],
118
+ "owner": ["guest","user","agent", "admin", "owner"],
119
+ }
120
+ // controllare bene
121
+
122
+ var hierarchicalRoles = TEAMMATE_ROLES[role];
123
+ winston.debug("hierarchicalRoles", hierarchicalRoles);
124
+
125
+ if ( hierarchicalRoles && hierarchicalRoles.includes(role)) {
126
+
127
+ var key = project_user.id_project+":project_users:role:teammate:"+project_user.id;
128
+ winston.verbose("Updating cache for project_user.update with key: " + key);
129
+ client.set(key, project_user, defaultTTL, (err, reply) => {
130
+ winston.debug("Updated cache for project_user.update",reply);
131
+ winston.verbose("Updated cache for project_user.update",{err:err});
132
+ });
133
+ }
134
+ });
135
+ });
136
+
137
+
138
+
139
+
140
+
141
+ authEvent.on('user.signup', function(data) {
142
+ setImmediate(() => {
143
+ var user = data.savedUser;
144
+
145
+ var key = "users:id:"+user.id;
146
+ winston.verbose("Creating cache for user.signup with key: " + key);
147
+ client.set(key, user, defaultTTL, (err, reply) => {
148
+ winston.debug("Created cache for user.signup",reply);
149
+ winston.verbose("Created cache for user.signup",{err:err});
150
+ });
151
+
152
+ var key = "users:email:"+user.email;
153
+ winston.verbose("Creating cache for user.signup with key: " + key);
154
+ client.set(key, user, defaultTTL, (err, reply) => {
155
+ winston.debug("Created cache for user.signup",reply);
156
+ winston.verbose("Created cache for user.signup",{err:err});
157
+ });
158
+ });
159
+ });
160
+
161
+
162
+ authEvent.on('user.update', function(data) {
163
+ setImmediate(() => {
164
+ var user = data.updatedUser;
165
+
166
+ var key = "users:id:"+user.id;
167
+ winston.verbose("Updating cache for user.update with key: " + key);
168
+ client.set(key, user, defaultTTL, (err, reply) => {
169
+ winston.debug("Updated cache for user.update",reply);
170
+ winston.verbose("Updated cache for user.update",{err:err});
171
+ });
172
+
173
+ var key = "users:email:"+user.email;
174
+ winston.verbose("Updating cache for user.update with key: " + key);
175
+ client.set(key, user, defaultTTL, (err, reply) => {
176
+ winston.debug("Updated cache for user.update",reply);
177
+ winston.verbose("Updated cache for user.update",{err:err});
178
+ });
179
+ });
180
+ });
181
+
182
+ authEvent.on('user.delete', function(data) {
183
+ setImmediate(() => {
184
+ var user = data.user;
185
+
186
+ var key = "users:id:"+user.id;
187
+ winston.verbose("Deleting cache for user.delete with key: " + key);
188
+ client.del(key, (err, reply) => {
189
+ winston.debug("Deleted cache for user.delete",reply);
190
+ winston.verbose("Deleted cache for user.delete",{err:err});
191
+ });
192
+
193
+ var key = "users:email:"+user.email;
194
+ winston.verbose("Deleting cache for user.delete with key: " + key);
195
+ client.del(key, (err, reply) => {
196
+ winston.debug("Deleted cache for user.delete",reply);
197
+ winston.verbose("Deleted cache for user.delete",{err:err});
198
+ });
199
+ });
200
+ });
201
+
202
+
203
+
204
+
205
+ requestEvent.on("request.create", function(request) {
206
+ setImmediate(() => {
207
+ var key = request.id_project+":requests:id:"+request.id;
208
+ winston.verbose("Creating cache for request.create with key: " + key);
209
+
210
+ client.set(key, request, defaultTTL, (err, reply) => {
211
+ winston.debug("Created cache for request.create",reply);
212
+ winston.verbose("Created cache for request.create",{err:err});
213
+ });
214
+
215
+ var key = request.id_project+":requests:request_id:"+request.request_id;
216
+ winston.verbose("Creating cache for request.create with key: " + key);
217
+ client.set(key, request, defaultTTL, (err, reply) => {
218
+ winston.debug("Created cache for request.create",reply);
219
+ winston.verbose("Created cache for request.create",{err:err});
220
+ });
221
+
222
+ key = request.id_project+":requests:query:*";
223
+ winston.verbose("Deleting cache for request.create with key: " + key);
224
+ client.del(key, function (err, reply) {
225
+ winston.debug("Deleted cache for request.create",reply);
226
+ winston.verbose("Deleted cache for request.create",{err:err});
227
+ });
228
+ });
229
+ });
230
+
231
+
232
+
233
+ requestEvent.on("request.update", function(request) {
234
+ setImmediate(() => {
235
+ var key = request.id_project+":requests:id:"+request.id;
236
+ winston.verbose("Creating cache for request.update with key: " + key);
237
+ client.set(key, request, defaultTTL, (err, reply) => {
238
+ winston.debug("Created cache for request.update",reply);
239
+ winston.verbose("Created cache for request.update",{err:err});
240
+ });
241
+
242
+ var key = request.id_project+":requests:request_id:"+request.request_id;
243
+ winston.verbose("Creating cache for request.update with key: " + key);
244
+ client.set(key, request, defaultTTL, (err, reply) => {
245
+ winston.debug("Created cache for request.update",reply);
246
+ winston.verbose("Created cache for request.update",{err:err});
247
+ });
248
+
249
+ key = request.id_project+":requests:query:*";
250
+ winston.verbose("Deleting cache for request.create with key: " + key);
251
+ client.del(key, function (err, reply) {
252
+ winston.debug("Deleted cache for request.create",reply);
253
+ winston.verbose("Deleted cache for request.create",{err:err});
254
+ });
255
+ });
256
+ });
257
+
258
+
259
+ requestEvent.on("request.close", function(request) {
260
+ setImmediate(() => {
261
+ var key = request.id_project+":requests:id:"+request.id;
262
+ winston.verbose("Creating cache for request.close with key: " + key);
263
+ client.set(key, request, defaultTTL, (err, reply) => {
264
+ winston.debug("Created cache for request.close",reply);
265
+ winston.verbose("Created cache for request.close",{err:err});
266
+ });
267
+
268
+ var key = request.id_project+":requests:request_id:"+request.request_id;
269
+ winston.verbose("Creating cache for request.close with key: " + key);
270
+ client.set(key, request, defaultTTL, (err, reply) => {
271
+ winston.debug("Created cache for request.close",reply);
272
+ winston.verbose("Created cache for request.close",{err:err});
273
+ });
274
+
275
+ key = request.id_project+":requests:query:*";
276
+ winston.verbose("Deleting cache for request.create with key: " + key);
277
+ client.del(key, function (err, reply) {
278
+ winston.debug("Deleted cache for request.create",reply);
279
+ winston.verbose("Deleted cache for request.create",{err:err});
280
+ });
281
+ });
282
+ });
283
+
284
+
285
+
286
+
287
+ // non serve tanto
288
+ // messageEvent.on("message.create", function(message) {
289
+ // setImmediate(() => {
290
+ // var key = message.id_project+":requests:id:"+message.request._id + ":messages:id:" + message._id;
291
+ // winston.verbose("Creating cache for message.create with key: " + key);
292
+ // client.set(key, message, defaultTTL, (err, reply) => {
293
+ // winston.verbose("Created cache for message.create",{err:err, reply:reply});
294
+ // });
295
+
296
+ // var key = message.id_project+":requests:request_id:"+message.request.request_id + ":messages:id:" + message._id;
297
+ // winston.verbose("Creating cache for message.create with key: " + key);
298
+ // client.set(key, message, defaultTTL, (err, reply) => {
299
+ // winston.verbose("Created cache for message.create",{err:err, reply:reply});
300
+ // });
301
+ // });
302
+ // });
303
+
304
+
305
+
306
+ botEvent.on("faqbot.create", function(faq_kb) {
307
+ setImmediate(() => {
308
+ var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id;
309
+ winston.verbose("Creating cache for faq_kb.create with key: " + key);
310
+ client.set(key, faq_kb, defaultTTL, (err, reply) => {
311
+ winston.debug("Created cache for faq_kb.create",reply);
312
+ winston.verbose("Created cache for faq_kb.create",{err:err});
313
+ });
314
+ });
315
+ });
316
+
317
+
318
+
319
+ botEvent.on("faqbot.update", function(faq_kb) {
320
+ setImmediate(() => {
321
+ var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id;
322
+ winston.verbose("Creating cache for faq_kb.update with key: " + key);
323
+ client.set(key, faq_kb, defaultTTL, (err, reply) => {
324
+ winston.debug("Created cache for faq_kb.create",reply);
325
+ winston.verbose("Created cache for faq_kb.update",{err:err});
326
+ });
327
+ });
328
+ });
329
+
330
+
331
+ botEvent.on("faqbot.delete", function(faq_kb) {
332
+ setImmediate(() => {
333
+ var key = faq_kb.id_project+":faq_kbs:id:"+faq_kb._id;
334
+ winston.verbose("Creating cache for faqbot.delete with key: " + key);
335
+ client.set(key, faq_kb, defaultTTL, (err, reply) => {
336
+ winston.debug("Created cache for faqbot.delete",reply);
337
+ winston.verbose("Created cache for faqbot.delete",{err:err});
338
+ });
339
+ });
340
+ });
341
+
342
+
343
+ departmentEvent.on("department.create", function(department) {
344
+ setImmediate(() => {
345
+ var key = department.id_project+":departments:id:"+department._id;
346
+ winston.verbose("Creating cache for department.create with key: " + key);
347
+ client.set(key, department, defaultTTL, (err, reply) => {
348
+ winston.debug("Created cache for department.create",reply);
349
+ winston.verbose("Created cache for department.create",{err:err});
350
+ });
351
+
352
+ key = department.id_project+":departments:query:*";
353
+ winston.verbose("Deleting cache for department.create with key: " + key);
354
+ client.del(key, function (err, reply) {
355
+ winston.debug("Deleted cache for department.create",reply);
356
+ winston.verbose("Deleted cache for department.create",{err:err});
357
+ });
358
+ });
359
+ });
360
+
361
+
362
+
363
+ departmentEvent.on("department.update", function(department) {
364
+ setImmediate(() => {
365
+ var key = department.id_project+":departments:id:"+department._id;
366
+ winston.verbose("Creating cache for department.update with key: " + key);
367
+ client.set(key, department, defaultTTL, (err, reply) => {
368
+ winston.debug("Created cache for department.update",reply);
369
+ winston.verbose("Created cache for department.update",{err:err});
370
+ });
371
+
372
+ key = department.id_project+":departments:query:*";
373
+ winston.verbose("Deleting cache for department.update with key: " + key);
374
+ client.del(key, function (err, reply) {
375
+ winston.debug("Deleted cache for department.update",reply);
376
+ winston.verbose("Deleted cache for department.update",{err:err});
377
+ });
378
+ });
379
+ });
380
+
381
+
382
+ departmentEvent.on("department.delete", function(department) {
383
+ setImmediate(() => {
384
+ var key = department.id_project+":departments:id:"+department._id;
385
+ winston.verbose("Creating cache for department.delete with key: " + key);
386
+ client.set(key, department, defaultTTL, (err, reply) => {
387
+ winston.debug("Created cache for department.delete",reply);
388
+ winston.verbose("Created cache for department.delete",{err:err});
389
+ });
390
+
391
+ key = department.id_project+":departments:query:*";
392
+ winston.verbose("Deleting cache for department.delete with key: " + key);
393
+ client.del(key, function (err, reply) {
394
+ winston.debug("Deleted cache for department.delete",reply);
395
+ winston.verbose("Deleted cache for department.delete",{err:err});
396
+ });
397
+ });
398
+ });
399
+
400
+
401
+ labelEvent.on("label.create", function(label) {
402
+ setImmediate(() => {
403
+ var key = label.id_project+":labels:query:*";
404
+ winston.verbose("Deleting cache for label.create with key: " + key);
405
+ client.del(key, function (err, reply) {
406
+ winston.debug("Deleted cache for label.create",reply);
407
+ winston.verbose("Deleted cache for label.create",{err:err});
408
+ });
409
+ });
410
+ });
411
+
412
+
413
+
414
+ labelEvent.on("label.update", function(label) {
415
+ setImmediate(() => {
416
+ var key = label.id_project+":labels:query:*";
417
+ winston.verbose("Deleting cache for label.update with key: " + key);
418
+ client.del(key, function (err, reply) {
419
+ winston.debug("Deleted cache for label.update",reply);
420
+ winston.verbose("Deleted cache for label.update",{err:err});
421
+ });
422
+ });
423
+ });
424
+
425
+
426
+ labelEvent.on("label.clone", function(label) {
427
+ setImmediate(() => {
428
+ var key = label.id_project+":labels:query:*";
429
+ winston.verbose("Deleting cache for label.clone with key: " + key);
430
+ client.del(key, function (err, reply) {
431
+ winston.debug("Deleted cache for label.clone",reply);
432
+ winston.verbose("Deleted cache for label.clone",{err:err});
433
+ });
434
+ });
435
+ });
436
+
437
+
438
+ labelEvent.on("label.delete", function(label) {
439
+ setImmediate(() => {
440
+ var key = label.id_project+":labels:query:*";
441
+ winston.verbose("Deleting cache for label.delete with key: " + key);
442
+ client.del(key, function (err, reply) {
443
+ winston.debug("Deleted cache for label.delete",reply);
444
+ winston.verbose("Deleted cache for label.delete",{err:err});
445
+ });
446
+ });
447
+ });
448
+
449
+ // fai cache per subscription.create, .update .delete
450
+
451
+ // fai cache per trigger.create, .update .delete
452
+
453
+ //jwt
454
+
455
+ // fai cache faq
456
+
457
+ }
458
+
459
+ module.exports = function (mongoose, option) {
460
+
461
+ if (process.env.CACHE_ENABLED == "true") {
462
+ var engine = process.env.CACHE_ENGINE;
463
+ winston.debug("Redis engine: "+ engine);
464
+
465
+ // var endPoint = process.env.CACHE_REDIS_ENDPOINT || "redis://127.0.0.1:6379";
466
+ // winston.debug("Redis endpoint: "+ endPoint);
467
+
468
+ var port = process.env.CACHE_REDIS_PORT || 6379;
469
+ winston.debug("Redis port: "+ port);
470
+
471
+ var host = process.env.CACHE_REDIS_HOST || "127.0.0.1"
472
+ winston.debug("Redis host: "+ host);
473
+
474
+ var password = process.env.CACHE_REDIS_PASSWORD;
475
+ winston.debug("Redis password: "+ password);
476
+
477
+ winston.info("Mongoose Cachegoose fn initialized, engine: " + engine + ", port: "+ port + ", host: "+ host + " defaultTTL: " +defaultTTL + ", password: "+ password);
478
+ // winston.info("Mongoose Cachegoose fn initialized, engine: " + engine + ", endpoint: "+endPoint +", port: "+ port + ", host: "+ host + ", password: "+ password);
479
+
480
+
481
+
482
+
483
+ // cachegoose(mongoose, endPoint);
484
+
485
+ cachegoose(mongoose, {
486
+ engine: engine, /* If you don't specify the redis engine, */
487
+ port: port, /* the query results will be cached in memory. */
488
+ host: host,
489
+ password: password
490
+ });
491
+
492
+ var client = cachegoose._cache;
493
+ listen(client);
494
+ }else {
495
+ winston.info("Mongoose Cachegoose disabled");
496
+ }
497
+
498
+ // console.log("init",init);
499
+ // console.log("cachegoose._cache",cachegoose._cache);
500
+ // cachegoose._cache.get("/projects/5ea800091147f28c72b90c5e", (err, cachedResults) => { //
501
+ // console.log("cachedResults",cachedResults);
502
+ // });
503
+
504
+
505
+ }
@@ -121,7 +121,6 @@ router.get('/', function (req, res) {
121
121
  winston.debug('CannedResponse ROUTE - SKIP PAGE ', skip);
122
122
 
123
123
  // var query = { "id_project": req.projectid, "status": {$lt:1000}};
124
- console.log("canned_req.user: ", req.user);
125
124
  var query = {"id_project": req.projectid, "status": { $lt:1000 }, $or:[ { shared: true }, { createdBy: req.user._id } ] }
126
125
 
127
126
  if (req.query.full_text) {
@@ -39,8 +39,10 @@ router.post('/', [
39
39
  pu = req.projectuser.id
40
40
  }
41
41
 
42
- console.log("************* emit event"+new Date().toISOString());
43
42
 
43
+
44
+ // // da qui
45
+ // console.log("************* emit event"+new Date().toISOString());
44
46
  // // message.senderFullname, message.recipient,
45
47
  // // message.recipient_fullname, message.text, message.sender, attributes, message.type, message.metadata, timestamp, message.group
46
48
  // var recipient = req.body.attributes.request_id;
@@ -48,8 +50,7 @@ router.post('/', [
48
50
  // var sender = req.user.id;
49
51
  // console.log("sender",sender);
50
52
 
51
- // messageEvent.emit("message.test",
52
- // {
53
+ // let message = {
53
54
  // recipient: recipient,
54
55
  // recipient_fullname: "pluto",
55
56
  // // sender:"bb0d809b-b093-419b-8b48-11a192cc3619",
@@ -59,14 +60,21 @@ router.post('/', [
59
60
  // group: {
60
61
  // members: {
61
62
  // // "bb0d809b-b093-419b-8b48-11a192cc3619": 1,
62
- // sender: 1
63
+ // // sender: 1
63
64
 
64
65
  // }
65
66
  // }
66
- // }
67
- // );
67
+ // };
68
+ // message.group.members[sender]= 1;
69
+ // console.log("message", message)
70
+
71
+ // messageEvent.emit("message.test", message);
72
+ // res.json({"event":"1"});
73
+
74
+ // //fino qui
68
75
 
69
- // emit(name, attributes, id_project, project_user, createdBy, status, user) {
76
+
77
+ // // emit(name, attributes, id_project, project_user, createdBy, status, user) {
70
78
  eventService.emit(req.body.name, req.body.attributes, req.projectid, pu, req.user.id, undefined, req.user).then(function(event) {
71
79
 
72
80
  res.json(event);
@@ -75,22 +83,6 @@ router.post('/', [
75
83
  return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(event)});
76
84
  });
77
85
 
78
- // var newEvent = new Event({
79
- // name: req.body.name,
80
- // attributes: req.body.attributes,
81
- // id_project: req.projectid,
82
- // createdBy: req.user.id,
83
- // updatedBy: req.user.id
84
- // });
85
-
86
- // newEvent.save(function(err, savedEvent) {
87
- // if (err) {
88
- // winston.error('Error saving the event '+ JSON.stringify(savedEvent), err)
89
- // return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(savedEvent)});
90
- // }
91
-
92
- // res.json(savedEvent);
93
- // });
94
86
  });
95
87
 
96
88
 
@@ -39,6 +39,8 @@ class PubModulesManager {
39
39
  this.jobsManager = undefined;
40
40
 
41
41
  this.routingQueue = undefined;
42
+
43
+ this.cache = undefined;
42
44
  }
43
45
 
44
46
 
@@ -321,6 +323,19 @@ class PubModulesManager {
321
323
  }
322
324
 
323
325
 
326
+ try {
327
+ this.cache = require('./cache').cachegoose(config.mongoose);
328
+ winston.debug("this.cache:"+ this.cache);
329
+ winston.info("PubModulesManager cache initialized");
330
+ } catch(err) {
331
+ if (err.code == 'MODULE_NOT_FOUND') {
332
+ winston.info("PubModulesManager init cache module not found");
333
+ }else {
334
+ winston.error("PubModulesManager error initializing init cache module", err);
335
+ }
336
+ }
337
+
338
+
324
339
  }
325
340
 
326
341
  start() {
package/routes/request.js CHANGED
@@ -900,6 +900,11 @@ router.get('/', function (req, res, next) {
900
900
  winston.debug('REQUEST ROUTE - QUERY snap_lead_email', query.snap_lead_email);
901
901
  }
902
902
 
903
+ if (req.query.smartAssignment) {
904
+ query.smartAssignment = req.query.smartAssignment;
905
+ winston.debug('REQUEST ROUTE - QUERY smartAssignment', query.smartAssignment);
906
+ }
907
+
903
908
  if (req.query.channel) {
904
909
  if (req.query.channel === "offline") {
905
910
  query["channel.name"] = {"$in" : ["email", "form"]}
@@ -41,7 +41,7 @@ class ModulesManager {
41
41
  this.requestHistoryRoute = undefined;
42
42
  // this.routingQueue = undefined;
43
43
  // this.queue = undefined;
44
- this.cache = undefined;
44
+ // this.cache = undefined;
45
45
  this.visitorCounterRoute = undefined;
46
46
  this.visitorCounterMiddleware = undefined;
47
47
  this.widgetsRoute = undefined;
@@ -247,17 +247,17 @@ class ModulesManager {
247
247
  // }
248
248
 
249
249
 
250
- try {
251
- this.cache = require('@tiledesk-ent/tiledesk-server-cache').cachegoose(config.mongoose);
252
- winston.debug("this.cache:"+ this.cache);
253
- winston.info("ModulesManager cache initialized");
254
- } catch(err) {
255
- if (err.code == 'MODULE_NOT_FOUND') {
256
- winston.info("ModulesManager init cache module not found");
257
- }else {
258
- winston.error("ModulesManager error initializing init cache module", err);
259
- }
260
- }
250
+ // try {
251
+ // this.cache = require('@tiledesk-ent/tiledesk-server-cache').cachegoose(config.mongoose);
252
+ // winston.debug("this.cache:"+ this.cache);
253
+ // winston.info("ModulesManager cache initialized");
254
+ // } catch(err) {
255
+ // if (err.code == 'MODULE_NOT_FOUND') {
256
+ // winston.info("ModulesManager init cache module not found");
257
+ // }else {
258
+ // winston.error("ModulesManager error initializing init cache module", err);
259
+ // }
260
+ // }
261
261
 
262
262
 
263
263
 
@@ -82,7 +82,8 @@
82
82
 
83
83
  <div style="text-align:center">
84
84
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
85
+ <!--<img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">-->
86
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
86
87
  </a>
87
88
  </div>
88
89
  </tr>
@@ -82,7 +82,8 @@
82
82
 
83
83
  <div style="text-align:center">
84
84
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
85
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
86
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
86
87
  </a>
87
88
  </div>
88
89
  </tr>
@@ -72,7 +72,8 @@
72
72
 
73
73
  <div style="text-align:center">
74
74
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
75
- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd">
75
+ <!-- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd"> -->
76
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
76
77
  </a>
77
78
  </div>
78
79
  <table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff">
@@ -73,7 +73,8 @@
73
73
 
74
74
  <div style="text-align:center">
75
75
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
76
- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd">
76
+ <!-- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd"> -->
77
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
77
78
  </a>
78
79
  </div>
79
80
  <table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff">
@@ -80,7 +80,8 @@
80
80
 
81
81
  <div style="text-align:center">
82
82
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
83
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
83
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
84
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
84
85
  </a>
85
86
  </div>
86
87
  </tr>
@@ -75,7 +75,8 @@
75
75
 
76
76
  <div style="text-align:center">
77
77
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
78
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:20%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
78
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:20%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
79
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
79
80
  </a>
80
81
  </div>
81
82
  </td>
@@ -72,7 +72,8 @@
72
72
 
73
73
  <div style="text-align:center">
74
74
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
75
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd">
75
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd"> -->
76
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
76
77
  </a>
77
78
  </div>
78
79
  <table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff">
@@ -82,7 +82,8 @@
82
82
 
83
83
  <div style="text-align:center">
84
84
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
85
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
86
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
86
87
  </a>
87
88
  </div>
88
89
  </tr>
@@ -82,7 +82,8 @@
82
82
 
83
83
  <div style="text-align:center">
84
84
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
85
+ <!--<img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="max-width:250px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">-->
86
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
86
87
  </a>
87
88
  </div>
88
89
  </tr>
@@ -71,7 +71,8 @@
71
71
 
72
72
  <div style="text-align:center">
73
73
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
74
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd">
74
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:50%;outline:none;text-decoration:none;border:none;" class="CToWUd"> -->
75
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
75
76
  </a>
76
77
  </div>
77
78
 
@@ -75,7 +75,8 @@
75
75
 
76
76
  <div style="text-align:center">
77
77
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
78
- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
78
+ <!-- <img src="https://tiledesk.com/tiledesk-logo.png" style="width:50%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
79
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
79
80
  </a>
80
81
  </div>
81
82
  </tr>
@@ -75,7 +75,8 @@
75
75
 
76
76
  <div style="text-align:center">
77
77
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
78
- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:20%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">
78
+ <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:20%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
79
+ <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
79
80
  </a>
80
81
  </div>
81
82
  </td>
@@ -32,7 +32,6 @@ describe('CannedRoute', () => {
32
32
  .set('content-type', 'application/json')
33
33
  .send({ "title": "Test Title", "text": "Test Text" })
34
34
  .end((err, res) => {
35
- console.log("res.body", res.body);
36
35
  res.should.have.status(200);
37
36
  res.body.should.be.a('object');
38
37
  res.body.should.have.property('title').eql("Test Title");
@@ -53,7 +52,6 @@ describe('CannedRoute', () => {
53
52
  userService.signup(email, pwd, "Test Firstname", "Test Lastname").then(savedUser => {
54
53
  projectService.create("test1", savedUser._id).then(savedProject => {
55
54
 
56
- console.log("RoleConstants.AGENT: ", RoleConstants.AGENT);
57
55
  Project_user.findOneAndUpdate({id_project: savedProject._id, id_user: savedUser._id }, { role: RoleConstants.AGENT }, function(err, savedProject_user){
58
56
  chai.request(server)
59
57
  .post('/' + savedProject._id + '/canned/')
@@ -61,7 +59,6 @@ describe('CannedRoute', () => {
61
59
  .set('content-type', 'application/json')
62
60
  .send({ title: "Test Title", text: "Test Text" })
63
61
  .end((err, res) => {
64
- console.log("res.body", res.body);
65
62
  res.body.should.be.a('object');
66
63
  res.body.should.have.property('title').eql("Test Title");
67
64
  res.body.should.have.property('text').eql("Test Text");
@@ -92,7 +89,6 @@ describe('CannedRoute', () => {
92
89
  .set('content-type', 'application/json')
93
90
  .send({ email: email_agent, role: "agent", userAvailable: false })
94
91
  .end((err, res) => {
95
- console.log("res.boy", res.body)
96
92
  res.should.have.status(200);
97
93
 
98
94
 
@@ -103,7 +99,6 @@ describe('CannedRoute', () => {
103
99
  .send({ title: "Test1 Title", text: "Test1 Text" })
104
100
  .end((err, res) => {
105
101
 
106
- console.log("res.body", res.body);
107
102
  res.should.have.status(200);
108
103
  res.body.should.be.a('object');
109
104
 
@@ -114,7 +109,6 @@ describe('CannedRoute', () => {
114
109
  .send({ title: "Test2 Title", text: "Test2 Text" })
115
110
  .end((err, res) => {
116
111
 
117
- console.log("res.body", res.body);
118
112
  res.should.have.status(200);
119
113
  res.body.should.be.a('object');
120
114
 
@@ -125,7 +119,6 @@ describe('CannedRoute', () => {
125
119
  .send()
126
120
  .end((err, res) => {
127
121
 
128
- console.log("res.body", res.body);
129
122
  res.should.have.status(200);
130
123
  //res.body.should.be.a('array');
131
124
 
@@ -139,8 +132,6 @@ describe('CannedRoute', () => {
139
132
  .send()
140
133
  .end((err, res) => {
141
134
 
142
- console.log("res.body", res.body);
143
- console.log("\n --> body.length", res.body.length);
144
135
  res.should.have.status(200);
145
136
  //res.body.should.be.a('array');
146
137
 
@@ -1016,7 +1016,7 @@ describe('/SendMessageSigninAnonym', () => {
1016
1016
  var userId = res.body.user._id;
1017
1017
  expect(res.body.success).to.equal(true);
1018
1018
  expect(res.body.user.email).to.equal(undefined);
1019
- expect(res.body.user.firstname).to.equal("Guest");
1019
+ expect(res.body.user.firstname).to.contains("guest#"); // guest_here
1020
1020
 
1021
1021
  expect(res.body.token).to.not.equal(undefined);
1022
1022
 
@@ -1065,7 +1065,7 @@ describe('/SendMessageSigninAnonym', () => {
1065
1065
  console.log("res.body", res.body);
1066
1066
  expect(res.body.lead.lead_id).to.equal(userId);
1067
1067
  expect(res.body.lead.email).to.equal(undefined);
1068
- expect(res.body.lead.fullname).to.equal("Guest ");
1068
+ expect(res.body.lead.fullname).to.contains("guest#"); // guest_here
1069
1069
  expect(res.body.requester.role).to.equal("guest");
1070
1070
  expect(res.body.requester.uuid_user).to.equal(userId);
1071
1071
  expect(res.body.requester.id_user).to.equal(undefined);