@tiledesk/tiledesk-server 2.4.36 → 2.4.38

Sign up to get free protection for your applications and to get access to all the features.
@@ -202,18 +202,23 @@ class SubscriptionNotifier {
202
202
  return 0;
203
203
  }
204
204
 
205
+ // queued
206
+ // var messageCreateKey = 'message.create';
207
+ // if (messageEvent.queueEnabled) {
208
+ // messageCreateKey = 'message.create.queue';
209
+ // }
210
+ // messageEvent.on(messageCreateKey, function(message) { //queued tested
211
+ // setImmediate(() => {
212
+ // winston.info('SubscriptionNotifier message.create');
213
+ // subscriptionNotifier.subscribe('message.create', message);
214
+ // });
215
+ // });
205
216
 
206
- messageEvent.on('message.create', function(message) {
207
- setImmediate(() => {
208
- subscriptionNotifier.subscribe('message.create', message);
209
- });
210
- });
211
-
212
- message2Event.on('message.create.**.channel.*', function(message) {
217
+ message2Event.on('message.create.**.channel.*', function(message) { //notqueued high
213
218
  // message2Event.on('message.create.request.channel.*', function(message) {
214
219
  winston.debug("message2Event: "+this.event, message);
215
220
  subscriptionNotifier.subscribe(this.event, message);
216
- }, {async: true});
221
+ }, {async: true});
217
222
 
218
223
 
219
224
 
@@ -235,72 +240,103 @@ class SubscriptionNotifier {
235
240
  // });
236
241
 
237
242
 
238
- requestEvent.on('request.create', function(request) {
239
- setImmediate(() => {
240
- subscriptionNotifier.subscribe('request.create', request);
241
- });
242
- });
243
243
 
244
- requestEvent.on('request.update', function(request) {
245
- setImmediate(() => {
246
- subscriptionNotifier.subscribe('request.update', request);
247
- });
248
- });
244
+ // queued
245
+ // var requestCreateKey = 'request.create';
246
+ // if (requestEvent.queueEnabled) {
247
+ // requestCreateKey = 'request.create.queue';
248
+ // }
249
+ // requestEvent.on(requestCreateKey, function(request) { //queued tested
250
+ // setImmediate(() => {
251
+ // winston.info('SubscriptionNotifier request.create');
252
+ // subscriptionNotifier.subscribe('request.create', request);
253
+ // });
254
+ // });
249
255
 
250
- requestEvent.on('request.close', function(request) {
251
- setImmediate(() => {
252
- Message.find({recipient: request.request_id, id_project: request.id_project}).sort({updatedAt: 'asc'}).exec(function(err, messages) {
253
- var requestJson = request.toJSON();
254
- requestJson.messages = messages;
255
- subscriptionNotifier.subscribe('request.close', requestJson);
256
- });
257
- });
258
- });
256
+
257
+ // queued
258
+ // var requestUpdateKey = 'request.update';
259
+ // if (requestEvent.queueEnabled) {
260
+ // requestUpdateKey = 'request.update.queue';
261
+ // }
262
+ // requestEvent.on(requestUpdateKey, function(request) { //queued tested
263
+ // setImmediate(() => {
264
+ // winston.info('SubscriptionNotifier request.update');
265
+ // subscriptionNotifier.subscribe('request.update', request);
266
+ // });
267
+ // });
259
268
 
260
269
 
261
- leadEvent.on('lead.create', function(lead) {
262
- setImmediate(() => {
263
- subscriptionNotifier.subscribe('lead.create', lead);
264
- });
265
- });
270
+ // queued
271
+ // var requestCloseKey = 'request.close'; //request.close event here queued under job
272
+ // if (requestEvent.queueEnabled) {
273
+ // requestCloseKey = 'request.close.queue';
274
+ // }
275
+ // requestEvent.on(requestCloseKey, function(request) { //request.close event here noqueued //queued tested
276
+ // winston.info('SubscriptionNotifier request.close');
277
+ // winston.info("request.close event here 1")
278
+ // setImmediate(() => {
279
+ // Message.find({recipient: request.request_id, id_project: request.id_project}).sort({updatedAt: 'asc'}).exec(function(err, messages) {
280
+ // var requestJson = request;
281
+ // if (request.toJSON) {
282
+ // requestJson = request.toJSON();
283
+ // }
284
+
285
+ // requestJson.messages = messages;
286
+ // subscriptionNotifier.subscribe('request.close', requestJson);
287
+ // });
288
+ // });
289
+ // });
266
290
 
267
291
 
268
- botEvent.on('faqbot.create', function(faqBot) {
292
+ // queued
293
+ // var leadCreateKey = 'lead.create'; //request.close event here queued under job
294
+ // if (leadEvent.queueEnabled) {
295
+ // leadCreateKey = 'lead.create.queue';
296
+ // }
297
+ // leadEvent.on(leadCreateKey, function(lead) { //notqueued high
298
+ // setImmediate(() => {
299
+ // subscriptionNotifier.subscribe('lead.create', lead);
300
+ // });
301
+ // });
302
+
303
+
304
+ botEvent.on('faqbot.create', function(faqBot) { //notqueued
269
305
  setImmediate(() => {
270
306
  subscriptionNotifier.subscribe('faqbot.create', faqBot);
271
307
  });
272
308
  });
273
309
 
274
- botEvent.on('faqbot.update', function(faqBot) {
310
+ botEvent.on('faqbot.update', function(faqBot) { //queued
275
311
  setImmediate(() => {
276
312
  subscriptionNotifier.subscribe('faqbot.update', faqBot);
277
313
  });
278
314
  });
279
315
 
280
- botEvent.on('faqbot.delete', function(faqBot) {
316
+ botEvent.on('faqbot.delete', function(faqBot) { //notqueued
281
317
  setImmediate(() => {
282
318
  subscriptionNotifier.subscribe('faqbot.delete', faqBot);
283
319
  });
284
320
  });
285
321
 
286
- faqBotEvent.on('faq.create', function(faq) {
322
+ faqBotEvent.on('faq.create', function(faq) { //notqueued
287
323
  setImmediate(() => {
288
324
  subscriptionNotifier.subscribe('faq.create', faq);
289
325
  });
290
326
  });
291
327
 
292
- faqBotEvent.on('faq.update', function(faq) {
328
+ faqBotEvent.on('faq.update', function(faq) { //notqueued
293
329
  setImmediate(() => {
294
330
  subscriptionNotifier.subscribe('faq.update', faq);
295
331
  });
296
332
  });
297
- faqBotEvent.on('faq.delete', function(faq) {
333
+ faqBotEvent.on('faq.delete', function(faq) { //notqueued
298
334
  setImmediate(() => {
299
335
  subscriptionNotifier.subscribe('faq.delete', faq);
300
336
  });
301
337
  });
302
338
 
303
- authEvent.on('user.signup', function(event) {
339
+ authEvent.on('user.signup', function(event) { //notqueued
304
340
  setImmediate(() => {
305
341
  var user = event.savedUser;
306
342
  delete user.password;
@@ -312,7 +348,7 @@ class SubscriptionNotifier {
312
348
 
313
349
  // authEvent.emit('project_user.invite', {req:req, savedProject_userPopulated: savedProject_userPopulated});
314
350
 
315
- authEvent.on('project_user.invite', function(event) {
351
+ authEvent.on('project_user.invite', function(event) { //notqueued
316
352
  setImmediate(() => {
317
353
  subscriptionNotifier.subscribe('project_user.invite', event.savedProject_userPopulated);
318
354
  });
@@ -320,15 +356,21 @@ class SubscriptionNotifier {
320
356
 
321
357
  // authEvent.emit('project_user.update', {updatedProject_userPopulated:updatedProject_userPopulated, req: req});
322
358
 
323
- authEvent.on('project_user.update', function(event) {
324
- setImmediate(() => {
325
- subscriptionNotifier.subscribe('project_user.update', event.updatedProject_userPopulated);
326
- });
327
- });
359
+
360
+ // queued
361
+ // var authProjectUserUpdateKey = 'project_user.update';
362
+ // if (authEvent.queueEnabled) {
363
+ // authProjectUserUpdateKey = 'project_user.update.queue';
364
+ // }
365
+ // authEvent.on(authProjectUserUpdateKey, function(event) { //notqueued high
366
+ // setImmediate(() => {
367
+ // subscriptionNotifier.subscribe('project_user.update', event.updatedProject_userPopulated);
368
+ // });
369
+ // });
328
370
 
329
371
  // authEvent.emit('project_user.delete', {req: req, project_userPopulated: project_userPopulated});
330
372
 
331
- authEvent.on('project_user.delete', function(event) {
373
+ authEvent.on('project_user.delete', function(event) { //notqueued
332
374
  setImmediate(() => {
333
375
  subscriptionNotifier.subscribe('project_user.delete', event.project_userPopulated);
334
376
  });
@@ -337,7 +379,7 @@ class SubscriptionNotifier {
337
379
 
338
380
  //TODO lanciare user.signin in questo modo uno esternamente con webhook può creare proactive greetings
339
381
 
340
- departmentEvent.on('operator.select', function(result) {
382
+ departmentEvent.on('operator.select', function(result) { //notqueued
341
383
  winston.debug("departmentEvent.on(operator.select");
342
384
 
343
385
  var operatorSelectedEvent = result.result;
@@ -376,53 +418,53 @@ class SubscriptionNotifier {
376
418
  });
377
419
 
378
420
 
379
- departmentEvent.on('department.create', function(department) {
421
+ departmentEvent.on('department.create', function(department) { //notqueued
380
422
  setImmediate(() => {
381
423
  subscriptionNotifier.subscribe('department.create', department);
382
424
  });
383
425
  });
384
426
 
385
427
 
386
- departmentEvent.on('department.update', function(department) {
428
+ departmentEvent.on('department.update', function(department) { //notqueued
387
429
  setImmediate(() => {
388
430
  subscriptionNotifier.subscribe('department.update', department);
389
431
  });
390
432
  });
391
433
 
392
- departmentEvent.on('department.delete', function(department) {
434
+ departmentEvent.on('department.delete', function(department) { //notqueued
393
435
  setImmediate(() => {
394
436
  subscriptionNotifier.subscribe('department.delete', department);
395
437
  });
396
438
  });
397
439
 
398
440
 
399
- groupEvent.on('group.create', function(group) {
441
+ groupEvent.on('group.create', function(group) { //notqueued
400
442
  setImmediate(() => {
401
443
  subscriptionNotifier.subscribe('group.create', group);
402
444
  });
403
445
  });
404
446
 
405
447
 
406
- groupEvent.on('group.update', function(group) {
448
+ groupEvent.on('group.update', function(group) { //notqueued
407
449
  setImmediate(() => {
408
450
  subscriptionNotifier.subscribe('group.update', group);
409
451
  });
410
452
  });
411
453
 
412
- groupEvent.on('group.delete', function(group) {
454
+ groupEvent.on('group.delete', function(group) { //notqueued
413
455
  setImmediate(() => {
414
456
  subscriptionNotifier.subscribe('group.delete', group);
415
457
  });
416
458
  });
417
459
 
418
- eventEvent.on('event.emit', function(event) {
460
+ eventEvent.on('event.emit', function(event) { //notqueued
419
461
  setImmediate(() => {
420
462
  subscriptionNotifier.subscribe('event.emit', event);
421
463
  });
422
464
  });
423
465
 
424
466
  // event2Event.on(name, savedEventPopulated);
425
- event2Event.on('**', function(savedEventPopulated) {
467
+ event2Event.on('**', function(savedEventPopulated) { //notqueued
426
468
  setImmediate(() => {
427
469
  winston.debug("eventname",this.event);
428
470
  subscriptionNotifier.subscribe('event.emit.'+this.event, savedEventPopulated);
@@ -430,7 +472,7 @@ class SubscriptionNotifier {
430
472
  });
431
473
 
432
474
 
433
- projectEvent.on('project.create', function(project) {
475
+ projectEvent.on('project.create', function(project) { //notqueued
434
476
  setImmediate(() => {
435
477
  var projectJson = project.toJSON();
436
478
  projectJson.id_project = projectJson._id;
@@ -438,7 +480,7 @@ class SubscriptionNotifier {
438
480
  });
439
481
  });
440
482
 
441
- projectEvent.on('project.update', function(project) {
483
+ projectEvent.on('project.update', function(project) { //notqueued
442
484
  setImmediate(() => {
443
485
  var projectJson = project.toJSON();
444
486
  projectJson.id_project = projectJson._id;
@@ -446,7 +488,7 @@ class SubscriptionNotifier {
446
488
  });
447
489
  });
448
490
 
449
- projectEvent.on('project.downgrade', function(project) {
491
+ projectEvent.on('project.downgrade', function(project) { //notqueued
450
492
  setImmediate(() => {
451
493
  var projectJson = project.toJSON();
452
494
  projectJson.id_project = projectJson._id;
@@ -454,7 +496,7 @@ class SubscriptionNotifier {
454
496
  });
455
497
  });
456
498
 
457
- projectEvent.on('project.delete', function(project) {
499
+ projectEvent.on('project.delete', function(project) { //notqueued
458
500
  setImmediate(() => {
459
501
  var projectJson = project.toJSON();
460
502
  projectJson.id_project = projectJson._id;
@@ -0,0 +1,124 @@
1
+ const requestEvent = require('../event/requestEvent');
2
+ const messageEvent = require('../event/messageEvent');
3
+ const leadEvent = require('../event/leadEvent');
4
+ const authEvent = require('../event/authEvent');
5
+
6
+ var Message = require("../models/message");
7
+ var winston = require('../config/winston');
8
+ var subscriptionNotifier = require('../services/subscriptionNotifier');
9
+
10
+ class SubscriptionNotifierQueued {
11
+
12
+ start() {
13
+ winston.debug('SubscriptionNotifierQueued start');
14
+
15
+ var enabled = process.env.RESTHOOK_ENABLED || "false";
16
+ winston.debug('SubscriptionNotifierQueued enabled:'+enabled);
17
+
18
+ if (enabled==="true") {
19
+ winston.debug('SubscriptionNotifierQueued enabled');
20
+ }else {
21
+ winston.info('Resthook Queued disabled');
22
+ return 0;
23
+ }
24
+
25
+
26
+ var messageCreateKey = 'message.create';
27
+ if (messageEvent.queueEnabled) {
28
+ messageCreateKey = 'message.create.queue';
29
+ }
30
+ messageEvent.on(messageCreateKey, function(message) { //queued tested
31
+ setImmediate(() => {
32
+ winston.debug('SubscriptionNotifier message.create');
33
+ subscriptionNotifier.subscribe('message.create', message);
34
+ winston.debug('SubscriptionNotifier message.create sent');
35
+ });
36
+ });
37
+
38
+
39
+
40
+ var requestCreateKey = 'request.create';
41
+ if (requestEvent.queueEnabled) {
42
+ requestCreateKey = 'request.create.queue';
43
+ }
44
+ requestEvent.on(requestCreateKey, function(request) { //queued tested
45
+ setImmediate(() => {
46
+ winston.debug('SubscriptionNotifier request.create');
47
+ subscriptionNotifier.subscribe('request.create', request);
48
+ winston.debug('SubscriptionNotifier request.create sent');
49
+ });
50
+ });
51
+
52
+
53
+
54
+ var requestUpdateKey = 'request.update';
55
+ if (requestEvent.queueEnabled) {
56
+ requestUpdateKey = 'request.update.queue';
57
+ }
58
+ requestEvent.on(requestUpdateKey, function(request) { //queued tested
59
+ setImmediate(() => {
60
+ winston.debug('SubscriptionNotifier request.update');
61
+ subscriptionNotifier.subscribe('request.update', request);
62
+ winston.debug('SubscriptionNotifier request.update sent');
63
+
64
+ });
65
+ });
66
+
67
+
68
+ var requestCloseKey = 'request.close'; //request.close event here queued under job
69
+ if (requestEvent.queueEnabled) {
70
+ requestCloseKey = 'request.close.queue';
71
+ }
72
+ requestEvent.on(requestCloseKey, function(request) { //request.close event here noqueued //queued tested
73
+ winston.debug('SubscriptionNotifier request.close');
74
+ winston.debug("request.close event here 1")
75
+ setImmediate(() => {
76
+ Message.find({recipient: request.request_id, id_project: request.id_project}).sort({updatedAt: 'asc'}).exec(function(err, messages) {
77
+ var requestJson = request;
78
+ if (request.toJSON) {
79
+ requestJson = request.toJSON();
80
+ }
81
+
82
+ requestJson.messages = messages;
83
+ subscriptionNotifier.subscribe('request.close', requestJson);
84
+ winston.debug('SubscriptionNotifier request.close sent');
85
+
86
+ });
87
+ });
88
+ });
89
+
90
+
91
+ var leadCreateKey = 'lead.create'; //lead.create event here queued under job
92
+ if (leadEvent.queueEnabled) {
93
+ leadCreateKey = 'lead.create.queue';
94
+ }
95
+ leadEvent.on(leadCreateKey, function(lead) { //notqueued high
96
+ setImmediate(() => {
97
+ subscriptionNotifier.subscribe('lead.create', lead);
98
+ winston.debug('SubscriptionNotifier lead.create sent');
99
+ });
100
+ });
101
+
102
+ var authProjectUserUpdateKey = 'project_user.update';
103
+ if (authEvent.queueEnabled) {
104
+ authProjectUserUpdateKey = 'project_user.update.queue';
105
+ }
106
+ authEvent.on(authProjectUserUpdateKey, function(event) { //notqueued high
107
+ setImmediate(() => {
108
+ subscriptionNotifier.subscribe('project_user.update', event.updatedProject_userPopulated);
109
+ winston.debug('SubscriptionNotifier project_user.update sent');
110
+ });
111
+ });
112
+
113
+ winston.info('SubscriptionNotifierQueued started');
114
+ }
115
+
116
+
117
+
118
+
119
+ };
120
+
121
+ var subscriptionNotifierQueued = new SubscriptionNotifierQueued();
122
+
123
+
124
+ module.exports = subscriptionNotifierQueued;
package/test/faqRoute.js CHANGED
@@ -53,7 +53,7 @@ describe('FaqKBRoute', () => {
53
53
  chai.request(server)
54
54
  .post('/' + savedProject._id + '/faq')
55
55
  .auth(email, pwd)
56
- .send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
56
+ .send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1", attributes: { attr1: { one: "one", two: "two"}, attr2: {three: "three"}} })
57
57
  .end((err, res) => {
58
58
  //console.log("res", res);
59
59
  console.log("res.body", res.body);
@@ -141,8 +141,6 @@ describe('FaqKBRoute', () => {
141
141
 
142
142
  }).timeout(20000);
143
143
 
144
-
145
-
146
144
  it('createWithLanguage', (done) => {
147
145
 
148
146
 
@@ -192,11 +190,6 @@ describe('FaqKBRoute', () => {
192
190
 
193
191
  });
194
192
 
195
-
196
-
197
-
198
-
199
-
200
193
  it('createWithIntentDisplayNameAndWebhookEnalbed', (done) => {
201
194
 
202
195
 
@@ -246,10 +239,6 @@ describe('FaqKBRoute', () => {
246
239
 
247
240
  });
248
241
 
249
-
250
-
251
-
252
-
253
242
  it('update', (done) => {
254
243
 
255
244
 
@@ -275,7 +264,7 @@ describe('FaqKBRoute', () => {
275
264
  chai.request(server)
276
265
  .post('/' + savedProject._id + '/faq')
277
266
  .auth(email, pwd)
278
- .send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
267
+ .send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1", attributes: { attr1: {one: "one", two: "two"}} })
279
268
  .end((err, res) => {
280
269
  //console.log("res", res);
281
270
  console.log("res.body", res.body);
@@ -290,7 +279,7 @@ describe('FaqKBRoute', () => {
290
279
  chai.request(server)
291
280
  .put('/' + savedProject._id + '/faq/' + res.body._id)
292
281
  .auth(email, pwd)
293
- .send({ id_faq_kb: id_faq_kb, question: "question2", answer: "answer2", webhook_enabled: true })
282
+ .send({ id_faq_kb: id_faq_kb, question: "question2", answer: "answer2", webhook_enabled: true, attributes: { two: "twooo" } })
294
283
  .end((err, res) => {
295
284
  //console.log("res", res);
296
285
  console.log("res.body", res.body);
@@ -315,6 +304,74 @@ describe('FaqKBRoute', () => {
315
304
 
316
305
  });
317
306
 
307
+ it('update attributes', (done) => {
308
+
309
+ console.log("update attributes test start... ");
310
+
311
+ var email = "test-signup-" + Date.now() + "@email.com";
312
+ var pwd = "pwd";
313
+
314
+ userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
315
+ projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
316
+ chai.request(server)
317
+ .post('/' + savedProject._id + '/faq_kb')
318
+ .auth(email, pwd)
319
+ .send({ "name": "testbot", type: "internal" })
320
+ .end((err, res) => {
321
+ //console.log("res", res);
322
+ console.log("res.body", res.body);
323
+ res.should.have.status(200);
324
+ res.body.should.be.a('object');
325
+ expect(res.body.name).to.equal("testbot");
326
+ var id_faq_kb = res.body._id;
327
+
328
+ chai.request(server)
329
+ .post('/' + savedProject._id + '/faq')
330
+ .auth(email, pwd)
331
+ .send({ id_faq_kb: id_faq_kb, question: "question1", answer: "answer1" })
332
+ .end((err, res) => {
333
+ //console.log("res", res);
334
+ console.log("res.body", res.body);
335
+ res.should.have.status(200);
336
+ res.body.should.be.a('object');
337
+ expect(res.body.id_faq_kb).to.equal(id_faq_kb);
338
+ expect(res.body.question).to.equal("question1");
339
+ expect(res.body.answer).to.equal("answer1");
340
+ expect(res.body.intent_display_name).to.not.equal(undefined);
341
+ expect(res.body.webhook_enabled).to.equal(false);
342
+
343
+ chai.request(server)
344
+ .patch('/' + savedProject._id + '/faq/' + res.body._id + '/attributes')
345
+ .auth(email, pwd)
346
+ .send({
347
+ "first_parameter": {
348
+ "x": "first",
349
+ "y": "second"
350
+ },
351
+ "color": {
352
+ "first": "first",
353
+ }
354
+ })
355
+ .end((err, res) => {
356
+ //console.log("res", res);
357
+ console.log("res.body attributes", res.body);
358
+ console.log("res.body attributes", res.body.attributes);
359
+ res.should.have.status(200);
360
+ res.body.should.be.a('object');
361
+ expect(res.body.attributes).to.not.equal(undefined);
362
+
363
+ done();
364
+ });
365
+
366
+ });
367
+
368
+ });
369
+
370
+
371
+ });
372
+ });
373
+ })
374
+
318
375
 
319
376
  it('uploadcsv', (done) => {
320
377
 
@@ -425,7 +482,7 @@ describe('FaqKBRoute', () => {
425
482
 
426
483
  userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
427
484
  projectService.create("test-search-faqs", savedUser._id).then((savedProject) => {
428
-
485
+
429
486
  chai.request(server)
430
487
  .post('/' + savedProject._id + '/faq_kb')
431
488
  .auth(email, pwd)
@@ -467,7 +524,7 @@ describe('FaqKBRoute', () => {
467
524
 
468
525
  userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
469
526
  projectService.create("test-search-faqs", savedUser._id).then((savedProject) => {
470
-
527
+
471
528
  chai.request(server)
472
529
  .post('/' + savedProject._id + '/faq_kb')
473
530
  .auth(email, pwd)
@@ -313,7 +313,7 @@ describe('FaqKBRoute', () => {
313
313
  })
314
314
  })
315
315
 
316
- it('create bot and import json qwerty', (done) => {
316
+ it('create bot and import json', (done) => {
317
317
 
318
318
  var email = "test-signup-" + Date.now() + "@email.com";
319
319
  var pwd = "pwd";
@@ -357,7 +357,7 @@ describe('FaqKBRoute', () => {
357
357
 
358
358
  })
359
359
 
360
- it('import json in an existing bot qwerty2', (done) => {
360
+ it('import json in an existing bot', (done) => {
361
361
 
362
362
  var email = "test-signup-" + Date.now() + "@email.com";
363
363
  var pwd = "pwd";