@tiledesk/tiledesk-server 2.10.40 → 2.10.42

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
@@ -5,6 +5,12 @@
5
5
  🚀 IN PRODUCTION 🚀
6
6
  (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.77)
7
7
 
8
+ # 2.10.42
9
+ - updated tybot-connector to 0.2.140
10
+
11
+ # 2.10.41
12
+ - added agents_available field in faq_kb and faq models
13
+
8
14
  # 2.10.40
9
15
  - bug fix: empty string for slug and index issue
10
16
 
package/app.js CHANGED
@@ -451,7 +451,7 @@ var projectSetter = function (req, res, next) {
451
451
  if (projectid) {
452
452
 
453
453
  if (!mongoose.Types.ObjectId.isValid(projectid)) {
454
- winston.warn(`Invalid ObjectId: ${projectid}`);
454
+ //winston.warn(`Invalid ObjectId: ${projectid}`);
455
455
  return res.status(400).send({ error: "Invalid project id: " + projectid });
456
456
  }
457
457
 
@@ -462,11 +462,11 @@ var projectSetter = function (req, res, next) {
462
462
  }
463
463
  q.exec(function(err, project){
464
464
  if (err) {
465
- winston.warn("Problem getting project with id: " + projectid + " req.originalUrl: " + req.originalUrl);
465
+ //winston.warn("Problem getting project with id: " + projectid + " req.originalUrl: " + req.originalUrl);
466
466
  }
467
467
  winston.debug("projectSetter project:" + project);
468
468
  if (!project) {
469
- winston.warn("ProjectSetter project not found with id: " + projectid);
469
+ //winston.warn("ProjectSetter project not found with id: " + projectid);
470
470
  //next();
471
471
  return res.status(400).send({ error: "Project not found with id: " + projectid })
472
472
  } else {
@@ -18,7 +18,7 @@ var analyticResult= mongoose.model('analyticResult', AnalyticResultSchema);
18
18
 
19
19
  if (process.env.MONGOOSE_SYNCINDEX) {
20
20
  analyticResult.syncIndexes();
21
- winston.info("analyticResult syncIndexes")
21
+ winston.verbose("analyticResult syncIndexes")
22
22
  }
23
23
 
24
24
 
package/models/channel.js CHANGED
@@ -14,7 +14,7 @@ var channel = mongoose.model('channel', ChannelSchema);;
14
14
 
15
15
  if (process.env.MONGOOSE_SYNCINDEX) {
16
16
  channel.syncIndexes();
17
- winston.info("channel syncIndexes")
17
+ winston.verbose("channel syncIndexes")
18
18
  }
19
19
 
20
20
 
@@ -89,7 +89,7 @@ var department = mongoose.model('department', DepartmentSchema);
89
89
 
90
90
  if (process.env.MONGOOSE_SYNCINDEX) {
91
91
  department.syncIndexes();
92
- winston.info("department syncIndexes")
92
+ winston.verbose("department syncIndexes")
93
93
  }
94
94
 
95
95
 
package/models/faq.js CHANGED
@@ -101,12 +101,20 @@ var FaqSchema = new Schema({
101
101
  attributes: {
102
102
  type: Object,
103
103
  },
104
+ agents_available: {
105
+ type: Boolean,
106
+ required: false,
107
+ default: function () {
108
+ return this.isNew ? false : undefined;
109
+ },
110
+ }
104
111
  }, {
105
112
  timestamps: true,
106
113
  toJSON: { virtuals: true } //used to polulate messages in toJSON// https://mongoosejs.com/docs/populate.html
107
114
  }
108
115
  );
109
116
 
117
+
110
118
  FaqSchema.virtual('faq_kb', {
111
119
  ref: 'faq_kb', // The model to use
112
120
  localField: 'id_faq_kb', // Find people where `localField`
@@ -181,7 +189,7 @@ faq.on('index', function (error) {
181
189
 
182
190
  if (process.env.MONGOOSE_SYNCINDEX) {
183
191
  faq.syncIndexes();
184
- winston.info("faq syncIndexes")
192
+ winston.verbose("faq syncIndexes")
185
193
  }
186
194
 
187
195
 
package/models/faq_kb.js CHANGED
@@ -11,13 +11,13 @@ var Faq_kbSchema = new Schema({
11
11
  name: {
12
12
  type: String,
13
13
  required: true,
14
- index:true
14
+ index: true
15
15
  },
16
16
  description: {
17
17
  type: String,
18
18
  // index:true
19
19
  },
20
- url: {
20
+ url: {
21
21
  type: String,
22
22
  // required: true
23
23
  },
@@ -25,7 +25,7 @@ var Faq_kbSchema = new Schema({
25
25
  type: String,
26
26
  // required: true
27
27
  },
28
- webhook_enabled: {
28
+ webhook_enabled: {
29
29
  type: Boolean,
30
30
  required: false,
31
31
  default: false,
@@ -74,13 +74,13 @@ var Faq_kbSchema = new Schema({
74
74
  type: Boolean,
75
75
  required: false,
76
76
  default: false,
77
- index:true
77
+ index: true
78
78
  },
79
79
  certified: {
80
80
  type: Boolean,
81
81
  required: false,
82
82
  default: false,
83
- index:true
83
+ index: true
84
84
  },
85
85
  mainCategory: {
86
86
  type: String,
@@ -92,18 +92,18 @@ var Faq_kbSchema = new Schema({
92
92
  default: 'none'
93
93
  },
94
94
  tags: [{
95
- type: String
96
- }],
95
+ type: String
96
+ }],
97
97
  score: {
98
- type: Number,
99
- required: false,
100
- index: true,
101
- default: 0
102
- },
98
+ type: Number,
99
+ required: false,
100
+ index: true,
101
+ default: 0
102
+ },
103
103
  publishedBy: {
104
104
  type: String,
105
105
  },
106
- publishedAt: {
106
+ publishedAt: {
107
107
  type: Date
108
108
  },
109
109
  trained: {
@@ -122,15 +122,22 @@ var Faq_kbSchema = new Schema({
122
122
  type: Array,
123
123
  required: false
124
124
  },
125
+ agents_available: {
126
+ type: Boolean,
127
+ required: false,
128
+ default: function () {
129
+ return this.isNew ? false : undefined;
130
+ },
131
+ },
125
132
  slug: {
126
133
  type: String,
127
134
  required: false,
128
135
  index: true
129
- },
136
+ }
130
137
  },{
131
138
  timestamps: true
132
- }
133
- );
139
+ });
140
+
134
141
 
135
142
  Faq_kbSchema.pre("save", async function (next) {
136
143
  // Check if the document is new and if the slug has not been set manually
@@ -175,7 +182,7 @@ var faq_kb = mongoose.model('faq_kb', Faq_kbSchema);
175
182
 
176
183
  if (process.env.MONGOOSE_SYNCINDEX) {
177
184
  faq_kb.syncIndexes();
178
- winston.info("faq_kb syncIndexes")
185
+ winston.verbose("faq_kb syncIndexes")
179
186
  }
180
187
 
181
188
  function generateSlug(name) {
package/models/lead.js CHANGED
@@ -111,7 +111,7 @@ LeadSchema.index({status: 1, id_project: 1, createdAt: -1});
111
111
 
112
112
  if (process.env.MONGOOSE_SYNCINDEX) {
113
113
  lead.syncIndexes();
114
- winston.info("lead syncIndexes")
114
+ winston.verbose("lead syncIndexes")
115
115
  }
116
116
 
117
117
  module.exports = lead;
package/models/message.js CHANGED
@@ -111,7 +111,7 @@ var message = mongoose.model('message', MessageSchema);
111
111
 
112
112
  if (process.env.MONGOOSE_SYNCINDEX) {
113
113
  message.syncIndexes();
114
- winston.info("message syncIndexes")
114
+ winston.verbose("message syncIndexes")
115
115
  }
116
116
 
117
117
  module.exports = message;
@@ -36,7 +36,7 @@ var pending= mongoose.model('pending-invitation', PendingInvitation);
36
36
 
37
37
  if (process.env.MONGOOSE_SYNCINDEX) {
38
38
  pending.syncIndexes();
39
- winston.info("pending syncIndexes")
39
+ winston.verbose("pending syncIndexes")
40
40
  }
41
41
 
42
42
  module.exports = pending;
package/models/profile.js CHANGED
@@ -58,7 +58,7 @@ var profile =mongoose.model('profile', ProfileSchema);
58
58
 
59
59
  if (process.env.MONGOOSE_SYNCINDEX) {
60
60
  profile.syncIndexes();
61
- winston.info("profile syncIndexes")
61
+ winston.verbose("profile syncIndexes")
62
62
  }
63
63
 
64
64
 
@@ -43,7 +43,7 @@ var property = mongoose.model('property', PropertySchema);
43
43
 
44
44
  if (process.env.MONGOOSE_SYNCINDEX) {
45
45
  property.syncIndexes();
46
- winston.info("property syncIndexes")
46
+ winston.verbose("property syncIndexes")
47
47
  }
48
48
 
49
49
  module.exports = property;
package/models/request.js CHANGED
@@ -522,7 +522,7 @@ RequestSchema.index({ id_project: 1, preflight: 1, smartAssignment: 1, "snapshot
522
522
  var request = mongoose.model('request', RequestSchema);
523
523
  if (process.env.MONGOOSE_SYNCINDEX) {
524
524
  request.syncIndexes();
525
- winston.info("message syncIndexes")
525
+ winston.verbose("message syncIndexes")
526
526
 
527
527
  }
528
528
 
@@ -18,7 +18,7 @@ var requester = mongoose.model('requester', RequesterSchema);
18
18
 
19
19
  if (process.env.MONGOOSE_SYNCINDEX) {
20
20
  requester.syncIndexes();
21
- winston.info("requester syncIndexes")
21
+ winston.verbose("requester syncIndexes")
22
22
  }
23
23
 
24
24
  module.exports = requester;
package/models/segment.js CHANGED
@@ -61,7 +61,7 @@ var segment = mongoose.model('segment', SegmentSchema);
61
61
 
62
62
  if (process.env.MONGOOSE_SYNCINDEX) {
63
63
  segment.syncIndexes();
64
- winston.info("segment syncIndexes")
64
+ winston.verbose("segment syncIndexes")
65
65
  }
66
66
 
67
67
  module.exports = segment;
package/models/setting.js CHANGED
@@ -37,7 +37,7 @@ var setting = mongoose.model('Setting', SettingSchema);
37
37
 
38
38
  if (process.env.MONGOOSE_SYNCINDEX) {
39
39
  setting.syncIndexes();
40
- winston.info("setting syncIndexes")
40
+ winston.verbose("setting syncIndexes")
41
41
  }
42
42
 
43
43
 
@@ -49,7 +49,7 @@ var subscription = mongoose.model('subscription', SubscriptionSchema);
49
49
 
50
50
  if (process.env.MONGOOSE_SYNCINDEX) {
51
51
  subscription.syncIndexes();
52
- winston.info("subscription syncIndexes")
52
+ winston.verbose("subscription syncIndexes")
53
53
  }
54
54
 
55
55
  module.exports = subscription;
package/models/user.js CHANGED
@@ -133,7 +133,7 @@ var UserModel = mongoose.model('user', UserSchema);
133
133
 
134
134
  if (process.env.MONGOOSE_SYNCINDEX) {
135
135
  UserModel.syncIndexes();
136
- winston.info("UserModel syncIndexes")
136
+ winston.verbose("UserModel syncIndexes")
137
137
  }
138
138
 
139
139
  module.exports = UserModel;
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.10.40",
4
+ "version": "2.10.42",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
@@ -48,7 +48,7 @@
48
48
  "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
49
49
  "@tiledesk/tiledesk-telegram-connector": "^0.1.14",
50
50
  "@tiledesk/tiledesk-train-jobworker": "^0.0.11",
51
- "@tiledesk/tiledesk-tybot-connector": "^0.2.139",
51
+ "@tiledesk/tiledesk-tybot-connector": "^0.2.140",
52
52
  "@tiledesk/tiledesk-whatsapp-connector": "^0.1.76",
53
53
  "@tiledesk/tiledesk-whatsapp-jobworker": "^0.0.11",
54
54
  "@tiledesk/tiledesk-sms-connector": "^0.1.11",
package/routes/auth.js CHANGED
@@ -854,7 +854,7 @@ router.get(
854
854
  "/keycloak/callback",
855
855
  passport.authenticate("keycloak"),
856
856
  function(req, res) {
857
- winston.info("'/keycloak/callback: ");
857
+ winston.verbose("'/keycloak/callback: ");
858
858
  // Successful authentication, redirect home.
859
859
  res.redirect('/');
860
860
  }
@@ -135,7 +135,7 @@ function (req, res) {
135
135
 
136
136
  authEvent.emit("projectuser.create", savedProject_user);
137
137
 
138
- winston.info('project user created ', savedProject_user.toObject());
138
+ winston.verbose('project user created ', savedProject_user.toObject());
139
139
 
140
140
 
141
141
  // JWT_HERE
@@ -215,14 +215,14 @@ router.post('/signinWithCustomToken', [
215
215
 
216
216
  authEvent.emit("projectuser.create", savedProject_user);
217
217
 
218
- winston.info('project user created ', savedProject_user.toObject());
218
+ winston.verbose('project user created ', savedProject_user.toObject());
219
219
 
220
220
 
221
221
 
222
222
  return res.json({ success: true, token: req.headers["authorization"], user: req.user });
223
223
  });
224
224
  }else {
225
- winston.info('project user already exists ');
225
+ winston.verbose('project user already exists ');
226
226
  return res.json({ success: true, token: req.headers["authorization"], user: req.user });
227
227
  }
228
228
 
@@ -15,7 +15,7 @@ var Segment2MongoConverter = require("../utils/segment2mongoConverter");
15
15
  var JobManager = require("jobs-worker-queued");
16
16
 
17
17
  var JOB_RABBITURI = process.env.JOB_RABBITURI;
18
- winston.info("JobWorkerQueued uri: " + JOB_RABBITURI);
18
+ winston.verbose("JobWorkerQueued uri: " + JOB_RABBITURI);
19
19
 
20
20
  var jobManager = new JobManager(JOB_RABBITURI,
21
21
  {
@@ -44,7 +44,7 @@ router.post('/', function (req, res) {
44
44
  req.body.text, req.body.departmentid, req.body.sourcePage,
45
45
  req.body.language, req.body.userAgent, null, req.user._id, req.body.attributes, req.body.subject, true, req.body.channel).then(function (savedRequest) {
46
46
 
47
- winston.info("savedRequest", savedRequest);
47
+ winston.debug("savedRequest", savedRequest);
48
48
 
49
49
  // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes, type, metadata, language, channel_type) {
50
50
  return messageService.create(req.body.sender || req.user._id, req.body.senderFullname || req.user.fullName, savedRequest.request_id, req.body.text,
package/routes/faq.js CHANGED
@@ -15,6 +15,7 @@ csv = require('csv-express');
15
15
  csv.separator = ';';
16
16
  const axios = require("axios").default;
17
17
  var configGlobal = require('../config/global');
18
+ const roleConstants = require('../models/roleConstants');
18
19
 
19
20
  const apiUrl = process.env.API_URL || configGlobal.apiUrl;
20
21
 
@@ -424,6 +425,9 @@ router.put('/:faqid', function (req, res) {
424
425
  if (req.body.attributes != undefined) {
425
426
  update.attributes = req.body.attributes;
426
427
  }
428
+ if (req.body.agents_available != undefined) {
429
+ update.agents_available = req.body.agents_available;
430
+ }
427
431
 
428
432
  if (faqid.startsWith("intentId")) {
429
433
  let intent_id = faqid.substring(8);
@@ -606,6 +610,13 @@ router.get('/', function (req, res, next) {
606
610
  query.intent_display_name = req.query.intent_display_name
607
611
  }
608
612
 
613
+ let project_user = req.projectuser;
614
+ if (project_user && project_user.role === roleConstants.AGENT) {
615
+ query.agents_available = {
616
+ $in: [ null, true ]
617
+ }
618
+ }
619
+
609
620
 
610
621
  winston.debug("GET FAQ query", query);
611
622
 
package/routes/faq_kb.js CHANGED
@@ -325,8 +325,8 @@ router.put('/:faq_kbid', roleChecker.hasRoleOrTypes('admin', ['bot','subscriptio
325
325
  update.certifiedTags = req.body.certifiedTags
326
326
  }
327
327
 
328
- if (req.body.agents_visible != undefined) {
329
- update.agents_visible = req.body.agents_visible
328
+ if (req.body.agents_available != undefined) {
329
+ update.agents_available = req.body.agents_available
330
330
  }
331
331
 
332
332
  if (req.body.slug != undefined) {
@@ -542,13 +542,19 @@ router.get('/', roleChecker.hasRoleOrTypes('agent', ['bot','subscription']), fun
542
542
  * if filter only for 'trashed = false',
543
543
  * the bots created before the implementation of the 'trashed' property are not returned
544
544
  */
545
- var query = { "id_project": req.projectid, "trashed": { $in: [null, false] } };
545
+ let query = { "id_project": req.projectid, "trashed": { $in: [null, false] } };
546
+
547
+ if (restricted_mode === true) {
548
+ query.agents_available = {
549
+ $in: [ null, true ]
550
+ }
551
+ }
546
552
 
547
553
  if (req.query.all != "true") {
548
554
  query.type = { $ne: "identity" }
549
555
  }
550
556
 
551
- var search_obj = {"$search": req.query.text};
557
+ let search_obj = {"$search": req.query.text};
552
558
 
553
559
  if (req.query.text) {
554
560
  if (req.query.language) {
package/routes/kb.js CHANGED
@@ -1445,7 +1445,7 @@ async function scheduleScrape(resources) {
1445
1445
  winston.error("Scheduling error: ", err);
1446
1446
  error_code = 400;
1447
1447
  } else {
1448
- winston.info("Scheduling result: ", result);
1448
+ winston.verbose("Scheduling result: ", result);
1449
1449
  }
1450
1450
  await updateStatus(r.id, error_code);
1451
1451
  });
package/routes/request.js CHANGED
@@ -2362,7 +2362,7 @@ async function scheduleTags(id_project, tags) {
2362
2362
  if (err) {
2363
2363
  winston.error("Scheduling error: ", err);
2364
2364
  } else {
2365
- winston.info("Scheduling result: ", result);
2365
+ winston.verbose("Scheduling result: ", result);
2366
2366
  }
2367
2367
  })
2368
2368
  })
@@ -62,7 +62,7 @@ class ChatbotService {
62
62
  },
63
63
  method: 'GET'
64
64
  }).then((resbody) => {
65
- winston.info("(CHATBOT SERVICE) forking public chatbot " + resbody.data.name);
65
+ winston.debug("(CHATBOT SERVICE) forking public chatbot " + resbody.data.name);
66
66
  let chatbot = resbody.data;
67
67
  return chatbot
68
68
  }).catch((err) => {
@@ -165,8 +165,8 @@ class OpenaiService {
165
165
  }
166
166
 
167
167
  getContentChunks(namespace_id, content_id, engine) {
168
- winston.info("[OPENAI SERVICE] kb endpoint: " + kb_endpoint_train);
169
- winston.info(kb_endpoint_train + "/id/" + content_id + "/namespace/" + namespace_id)
168
+ winston.debug("[OPENAI SERVICE] kb endpoint: " + kb_endpoint_train);
169
+
170
170
  return new Promise((resolve, reject) => {
171
171
 
172
172
  let payload = { engine: engine };