@tiledesk/tiledesk-server 2.3.76 β†’ 2.3.78

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,9 +1,31 @@
1
1
 
2
2
 
3
- πŸ’₯ TILEDESK SERVER v2.3.71 πŸ’₯
3
+ πŸ’₯ TILEDESK SERVER v2.3.77 πŸ’₯
4
4
  πŸš€ TAGGED AND PUBLISHED ON NPM πŸš€
5
5
  πŸš€ IN PRODUCTION πŸš€
6
- (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.71)
6
+ (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
+
8
+
9
+ # 2.3.77 -> PROD v3
10
+ - Updated tiledesk/tiledesk-whatsapp-connector dependency to 0.1.24
11
+ - Added KALEYRA_API_URL environment variable
12
+ - Now GRAPH_URL environment variable is optional
13
+ - Added bot cache invalidation for new radis key without project for tilebot
14
+ - Added chatbot fulltext endpoint
15
+
16
+ # 2.3.76
17
+ - Adedd tag to bot model
18
+ - \\n fix for public private key
19
+ - Chatbot invalidation fix when created
20
+ - @tiledesk/tiledesk-tybot-connector@0.1.53
21
+
22
+ # 2.3.75
23
+ - @tiledesk/tiledesk-tybot-connector@0.1.51
24
+
25
+ # 2.3.74
26
+ - Added cache for bot
27
+ - @tiledesk/tiledesk-tybot-connector@0.1.50
28
+ - Added cache for user
7
29
 
8
30
  # 2.3.73
9
31
  - Removed unused mongoose-auto-increment dependency
@@ -19,9 +41,12 @@
19
41
  - Added caching for /widgets endpoint with invalidations
20
42
  - Added bot rules to /widgets endpoint
21
43
  - Select false for resetpswrequestid field of user model
22
- - Added support for Public Private Key for JWT Auth with GLOBAL_SECRET_OR_PRIVATE_KEY and GLOBAL_SECRET_OR_PUB_KEY and GLOBAL_SECRET_ALGORITHM environments variables. If these properties are configured Public Private Key method is enabled otherwise if GLOBAL_SECRET env varible is configured the shared secret method is used. algorithm (default: HS256)
44
+ - Added support for Public Private Key for JWT Auth with GLOBAL_SECRET_OR_PRIVATE_KEY and GLOBAL_SECRET_OR_PUB_KEY and GLOBAL_SECRET_ALGORITHM(default: HS256, RS256 for pub private key) environments variables. If these properties are configured Public/Private Key method is enabled otherwise if only GLOBAL_SECRET env varible is configured the shared secret method is used.
23
45
  - Updated tiledesk/tiledesk-tybot-connector@0.1.48
24
46
  - Removed β€œsnapshot” from request payload for external chatbot
47
+ - Added CHATBOT_TEMPLATES_API_URL env varible
48
+ - Updated tiledesk/tiledesk-tybot-connector@0.1.49
49
+
25
50
 
26
51
 
27
52
 
@@ -29,7 +54,10 @@
29
54
  - Added Kaleyra module
30
55
  - Updated tiledesk-apps to 1.0.12
31
56
 
32
- # 2.3.71
57
+ # 2.3.71.1 -> PROD v2
58
+ - ocf email fix
59
+
60
+ # 2.3.71
33
61
  - Email service send email direct fit without request_id
34
62
  - Removed strong from transcript email template
35
63
  - Added for updateWaitingTimeByRequestId the field enable_populate
package/docs/api-mgm.md CHANGED
@@ -1,70 +1,3 @@
1
1
  # TILEDESK REST API
2
2
 
3
- ## Signup
4
-
5
- ```
6
- curl -v -X POST -d 'email=andrea.leo@f21.it&password=123456' https://api.tiledesk.com/v1/auth/signup
7
- ```
8
-
9
- ### Signin
10
-
11
- ```
12
- curl -v -X POST -d 'email=andrea.leo@f21.it&password=123456' https://api.tiledesk.com/v1/auth/signin
13
- ```
14
-
15
- ### Firebase signin
16
-
17
- ```
18
- curl -v -X POST -d 'email=andrea.leo@f21.it&password=123456' https://api.tiledesk.com/v1/firebase/auth/signin
19
- ```
20
-
21
- ### Departments
22
-
23
- ```
24
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ab0f32757066e0014bfd718/departments
25
- ```
26
-
27
- #### Get the available operator for a specific department
28
- ```
29
- curl -v -X GET -u andrea.leo@frontiere21.it:123456 https://api.tiledesk.com/v1/5ad4c101e774ac0014ae0d07/departments/5ad5c2c9c975820014ba901b/operators
30
- ```
31
-
32
-
33
-
34
- ### Bots
35
-
36
- #### List
37
-
38
- ```
39
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ab0f32757066e0014bfd718/faq_kb
40
- ```
41
-
42
- #### Create
43
-
44
- ```
45
- curl -v -X POST -u andrea.leo@f21.it:123456 -d '{"name":"testbot"}' https://api.tiledesk.com/v1/5ab0f32757066e0014bfd718/faq_kb
46
- ```
47
-
48
- ## Analytics
49
- ```
50
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ad5bd52c975820014ba900a/analytics/requests/count
51
-
52
- ```
53
-
54
- ```
55
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ad5bd52c975820014ba900a/analytics/requests/waiting
56
-
57
- ```
58
-
59
- ```
60
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ad5bd52c975820014ba900a/analytics/requests/waiting/day/last
61
- ```
62
-
63
- ```
64
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ad5bd52c975820014ba900a/analytics/requests/waiting/month
65
- ```
66
-
67
-
68
- ```
69
- curl -v -X GET -u andrea.leo@f21.it:123456 https://api.tiledesk.com/v1/5ad5bd52c975820014ba900a/analytics/requests/aggregate/dayoftheweek/hours
70
- ```
3
+ Please refer to the [Developer Portal](https://developer.tiledesk.com/)
package/models/faq.js CHANGED
@@ -155,6 +155,7 @@ FaqSchema.index({ question: 'text' },
155
155
 
156
156
 
157
157
  FaqSchema.index({ id_project: 1, id_faq_kb: 1, intent_display_name: 1 }, { unique: true });
158
+ FaqSchema.index({ id_project: 1, id_faq_kb: 1, intent_id: 1 }, { unique: true });
158
159
 
159
160
 
160
161
  var faq = mongoose.model('faq', FaqSchema);
package/models/faq_kb.js CHANGED
@@ -3,6 +3,9 @@ var Schema = mongoose.Schema;
3
3
  const uuidv4 = require('uuid/v4');
4
4
  var winston = require('../config/winston');
5
5
 
6
+ var defaultFullTextLanguage = process.env.DEFAULT_FULLTEXT_INDEX_LANGUAGE || "none";
7
+
8
+
6
9
  var Faq_kbSchema = new Schema({
7
10
  name: {
8
11
  type: String,
@@ -69,12 +72,14 @@ var Faq_kbSchema = new Schema({
69
72
  public: {
70
73
  type: Boolean,
71
74
  required: false,
72
- default: false
75
+ default: false,
76
+ index:true
73
77
  },
74
78
  certified: {
75
79
  type: Boolean,
76
80
  required: false,
77
- default: false
81
+ default: false,
82
+ index:true
78
83
  },
79
84
  mainCategory: {
80
85
  type: String,
@@ -101,6 +106,8 @@ Faq_kbSchema.virtual('fullName').get(function () {
101
106
  Faq_kbSchema.index({certified: 1, public: 1}); //suggested by atlas
102
107
 
103
108
 
109
+ Faq_kbSchema.index({name: 'text', description: 'text', subject: 'text', "tags": 'text'},
110
+ {"name":"faqkb_fulltext","default_language": defaultFullTextLanguage,"language_override": "language"}); // schema level
104
111
 
105
112
 
106
113
  var faq_kb = mongoose.model('faq_kb', Faq_kbSchema);
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.76",
4
+ "version": "2.3.78",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -43,8 +43,8 @@
43
43
  "@tiledesk/tiledesk-json-rules-engine": "^4.0.3",
44
44
  "@tiledesk/tiledesk-kaleyra-proxy": "^0.1.6",
45
45
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
46
- "@tiledesk/tiledesk-tybot-connector": "^0.1.53",
47
- "@tiledesk/tiledesk-whatsapp-connector": "^0.1.19",
46
+ "@tiledesk/tiledesk-tybot-connector": "^0.1.55",
47
+ "@tiledesk/tiledesk-whatsapp-connector": "^0.1.30",
48
48
  "amqplib": "^0.5.5",
49
49
  "app-root-path": "^3.0.0",
50
50
  "bcrypt-nodejs": "0.0.3",
@@ -423,7 +423,15 @@
423
423
  winston.debug("Deleted cache for faq_kb.update secret",reply);
424
424
  winston.verbose("Deleted cache for faq_kb.update secret",{err:err});
425
425
  });
426
-
426
+
427
+ // without project for tilebot
428
+ key = "faq_kbs:id:"+faq_kb._id;
429
+ winston.verbose("Deleting cache for faq_kb.update without project for tilebot with key: " + key);
430
+ client.del(key, function (err, reply) {
431
+ winston.debug("Deleted cache for faq_kb.update without project for tilebot ",reply);
432
+ winston.verbose("Deleted cache for faq_kb.update without project for tilebot ",{err:err});
433
+ });
434
+
427
435
  // TODO invalidate widgets here
428
436
  winston.verbose("Deleting widgets cache for faqbot.update");
429
437
  invalidateWidgets(client, faq_kb.id_project); //TESTED
@@ -446,6 +454,15 @@
446
454
  client.del(key, function (err, reply) {
447
455
  winston.debug("Deleted cache for faq_kb.delete secret",reply);
448
456
  winston.verbose("Deleted cache for faq_kb.delete secret",{err:err});
457
+ });
458
+
459
+
460
+ // without project for tilebot
461
+ key = "faq_kbs:id:"+faq_kb._id;
462
+ winston.verbose("Deleting cache for faq_kb.update without project for tilebot with key: " + key);
463
+ client.del(key, function (err, reply) {
464
+ winston.debug("Deleted cache for faq_kb.update without project for tilebot ",reply);
465
+ winston.verbose("Deleted cache for faq_kb.update without project for tilebot ",{err:err});
449
466
  });
450
467
 
451
468
  // TODO invalidate widgets here
@@ -458,6 +475,7 @@
458
475
 
459
476
  faqBotEvent.on("faq.create", function(faq) {
460
477
  setImmediate(() => {
478
+
461
479
  // TODO invalidate widgets here
462
480
  winston.verbose("Deleting widgets cache for faq.create");
463
481
  invalidateWidgets(client, faq.id_project); //tested
@@ -466,6 +484,8 @@
466
484
 
467
485
  faqBotEvent.on("faq.update", function(faq) {
468
486
  setImmediate(() => {
487
+ invalidateFaq(client, faq);
488
+
469
489
  // TODO invalidate widgets here
470
490
  winston.verbose("Deleting widgets cache for faq.update");
471
491
  invalidateWidgets(client, faq.id_project);//tested
@@ -474,6 +494,8 @@
474
494
 
475
495
  faqBotEvent.on("faq.delete", function(faq) {
476
496
  setImmediate(() => {
497
+ invalidateFaq(client, faq);
498
+
477
499
  // TODO invalidate widgets here
478
500
  winston.verbose("Deleting widgets cache for faq.delete",faq);
479
501
  invalidateWidgets(client, faq.id_project);//tested
@@ -689,6 +711,17 @@
689
711
  }
690
712
 
691
713
 
714
+ function invalidateFaq(client, faq) {
715
+ key = "faqs:botid:"+faq.id_faq_kb+":faq:id:*";
716
+ winston.info("Deleting cache for faq with key: " + key);
717
+ client.del(key, function (err, reply) {
718
+ winston.debug("Deleted cache for faq",reply);
719
+ winston.info("Deleted cache for faq",{err:err});
720
+ });
721
+
722
+
723
+ }
724
+
692
725
  function invalidateWidgets(client, project_id) {
693
726
  key = project_id+":widgets";
694
727
  winston.verbose("Deleting cache for widgets with key: " + key);
@@ -13,17 +13,21 @@ class Listener {
13
13
  winston.debug("kaleyra config databaseUri: " + config.databaseUri);
14
14
  }
15
15
 
16
- kaleyra.startApp({
17
- MONGODB_URL: config.databaseUri,
18
- API_URL: apiUrl,
19
- BASE_URL: apiUrl + "/modules/kaleyra",
20
- APPS_API_URL: apiUrl + "/modules/apps",
21
- KALEYRA_API_URL: process.env.KALEYRA_API_URL,
22
- API_KEY: process.env.API_KEY,
23
- log: process.env.KALEYRA_LOG
24
- }, () => {
25
- winston.info("Tiledesk Kaleyra proxy server succesfully started.");
26
- })
16
+ if (!process.env.KALEYRA_API_URL || !process.env.API_KEY) {
17
+ winston.info("Skip Kaleyra startApp")
18
+ } else {
19
+ kaleyra.startApp({
20
+ MONGODB_URL: config.databaseUri,
21
+ API_URL: apiUrl,
22
+ BASE_URL: apiUrl + "/modules/kaleyra",
23
+ APPS_API_URL: apiUrl + "/modules/apps",
24
+ KALEYRA_API_URL: process.env.KALEYRA_API_URL,
25
+ API_KEY: process.env.API_KEY,
26
+ log: process.env.KALEYRA_LOG
27
+ }, () => {
28
+ winston.info("Tiledesk Kaleyra proxy server succesfully started.");
29
+ })
30
+ }
27
31
  }
28
32
  }
29
33
 
@@ -13,13 +13,32 @@ class Listener {
13
13
  winston.debug("whatsapp config databaseUri: " + config.databaseUri);
14
14
  }
15
15
 
16
+ var port = process.env.CACHE_REDIS_PORT || 6379;
17
+ winston.debug("-Redis port: "+ port);
18
+
19
+ var host = process.env.CACHE_REDIS_HOST || "127.0.0.1"
20
+ winston.debug("-Redis host: "+ host);
21
+
22
+ var password = process.env.REDIS_PASSWORD;
23
+ winston.debug("-Redis password: "+ password);
24
+
25
+
26
+ let graph_url = process.env.META_GRAPH_URL || config.graphUrl || "https://graph.facebook.com/v14.0/"
27
+ winston.debug("Whatsapp graph_url: "+ password);
28
+
29
+ let log = process.env.WHATSAPP_LOG || false
30
+ winston.debug("Whatsapp log: "+ log);
31
+
16
32
  whatsapp.startApp({
17
33
  MONGODB_URL: config.databaseUri,
18
34
  API_URL: apiUrl,
19
- GRAPH_URL: process.env.META_GRAPH_URL || config.graphUrl,
35
+ GRAPH_URL: graph_url,
20
36
  BASE_URL: apiUrl + "/modules/whatsapp",
21
- APPS_API_URL: apiUrl + "/modules/apps",
22
- log: process.env.WHATSAPP_LOG
37
+ APPS_API_URL: apiUrl + "/modules/apps",
38
+ REDIS_HOST: host,
39
+ REDIS_PORT: port,
40
+ REDIS_PASSWORD: password,
41
+ log: log
23
42
  }, () => {
24
43
  winston.info("Tiledesk WhatsApp Connector proxy server succesfully started.");
25
44
  })
package/routes/faq_kb.js CHANGED
@@ -255,6 +255,7 @@ router.put('/:faq_kbid', function (req, res) {
255
255
  update.tags = req.body.tags;
256
256
  }
257
257
 
258
+
258
259
  Faq_kb.findByIdAndUpdate(req.params.faq_kbid, update, { new: true, upsert: true }, function (err, updatedFaq_kb) {
259
260
  if (err) {
260
261
  return res.status(500).send({ success: false, msg: 'Error updating object.' });
@@ -319,7 +320,7 @@ router.delete('/:faq_kbid', function (req, res) {
319
320
 
320
321
  winston.debug(req.body);
321
322
 
322
-
323
+
323
324
  Faq_kb.remove({ _id: req.params.faq_kbid }, function (err, faq_kb) {
324
325
  if (err) {
325
326
  return res.status(500).send({ success: false, msg: 'Error deleting object.' });
@@ -393,12 +394,30 @@ router.get('/', function (req, res) {
393
394
  query.type = { $ne: "identity" }
394
395
  }
395
396
 
396
- winston.debug("query", query);
397
+ var search_obj = {"$search": req.query.text};
398
+
399
+ if (req.query.text) {
400
+ if (req.query.language) {
401
+ search_obj["$language"] = req.query.language;
402
+ }
403
+ query.$text = search_obj;
404
+ }
405
+
406
+ if (req.query.public) {
407
+ query.public = req.query.public;
408
+ }
409
+
410
+ if (req.query.certified) {
411
+ query.certified = req.query.certified;
412
+ }
413
+
414
+
415
+ winston.info("query", query);
397
416
 
398
417
  Faq_kb.find(query, function (err, faq_kb) {
399
418
  if (err) {
400
419
  winston.error('GET FAQ-KB ERROR ', err)
401
- return (err);
420
+ return res.status(500).send({ success: false, message: "Unable to get chatbots" });
402
421
  }
403
422
 
404
423
  res.json(faq_kb);
@@ -177,6 +177,7 @@ class FaqService {
177
177
  id_faq_kb: faq_kb_id,
178
178
  question: faq.question,
179
179
  answer: faq.answer,
180
+ actions: faq.actions,
180
181
  reply: faq.reply,
181
182
  intent_display_name: faq.intent_display_name,
182
183
  language: "en",