@tiledesk/tiledesk-server 2.2.16 → 2.2.20
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -2
- package/app.js +41 -1
- package/config/labels/widget.json +12 -12
- package/models/routerLogger.js +57 -0
- package/package.json +1 -1
- package/pubmodules/events/eventRoute.js +2 -2
- package/routes/public-analytics.js +22 -20
- package/routes/widget.js +1 -1
- package/services/{faqBotSupport copy.js_ → faqBotSupport copy.js_consplit} +0 -0
- package/services/faqBotSupport.js +6 -5
package/CHANGELOG.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
+
# 2.2.19
|
2
|
+
- disabled waiting time in widgets endpoint unused
|
1
3
|
|
4
|
+
# 2.2.18
|
5
|
+
- Router logger module enable with ROUTELOGGER_ENABLED=true
|
2
6
|
|
3
7
|
|
8
|
+
# 2.2.17 -> PROD
|
9
|
+
- Removed default fallback limit on parse reply
|
4
10
|
|
5
|
-
# 2.2.16
|
11
|
+
# 2.2.16
|
6
12
|
- Email templates endpoint
|
7
13
|
- Created request.updated event for request event and deprecated request.update.comment
|
8
14
|
- Added Handlebars template processor for the message transformer module only if message.attributes.templateProcessor=true
|
@@ -11,7 +17,7 @@
|
|
11
17
|
- Added /intents alias for /faq endpoint
|
12
18
|
- The request_id field of the request model has now a unique index
|
13
19
|
|
14
|
-
# 2.2.15
|
20
|
+
# 2.2.15
|
15
21
|
- Added catch messageService.send for bot
|
16
22
|
- Added external searcher for bot( ex. Rasa proxy)
|
17
23
|
- Faq language fix taken from bot language for create single and import from csv
|
package/app.js
CHANGED
@@ -107,7 +107,7 @@ var email = require('./routes/email');
|
|
107
107
|
var bootDataLoader = require('./services/bootDataLoader');
|
108
108
|
var settingDataLoader = require('./services/settingDataLoader');
|
109
109
|
var schemaMigrationService = require('./services/schemaMigrationService');
|
110
|
-
|
110
|
+
var RouterLogger = require('./models/routerLogger');
|
111
111
|
|
112
112
|
require('./services/mongoose-cache-fn')(mongoose);
|
113
113
|
|
@@ -222,7 +222,42 @@ app.options('*', cors());
|
|
222
222
|
// const customRedisRateLimiter = require("./rateLimiter").customRedisRateLimiter;
|
223
223
|
// app.use(customRedisRateLimiter);
|
224
224
|
|
225
|
+
if (process.env.ROUTELOGGER_ENABLED==="true") {
|
226
|
+
winston.info("RouterLogger enabled ");
|
227
|
+
app.use(function (req, res, next) {
|
228
|
+
// winston.error("log ", req);
|
229
|
+
|
230
|
+
try {
|
231
|
+
var projectid = req.projectid;
|
232
|
+
winston.debug("RouterLogger projectIdSetter projectid:" + projectid);
|
233
|
+
|
234
|
+
var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
|
235
|
+
winston.debug("fullUrl:"+ fullUrl);
|
236
|
+
winston.debug("req.get('origin'):" + req.get('origin'));
|
237
|
+
|
238
|
+
var routerLogger = new RouterLogger({
|
239
|
+
origin: req.get('origin'),
|
240
|
+
fullurl: fullUrl,
|
241
|
+
url: req.originalUrl.split("?").shift(),
|
242
|
+
id_project: projectid,
|
243
|
+
});
|
244
|
+
|
245
|
+
routerLogger.save(function (err, savedRouterLogger) {
|
246
|
+
if (err) {
|
247
|
+
winston.error('Error saving RouterLogger ', err)
|
248
|
+
}
|
249
|
+
winston.debug("RouterLogger saved "+ savedRouterLogger);
|
250
|
+
next();
|
251
|
+
});
|
252
|
+
}catch(e) {
|
253
|
+
winston.error('Error saving RouterLogger ', e)
|
254
|
+
next();
|
255
|
+
}
|
256
|
+
});
|
225
257
|
|
258
|
+
} else {
|
259
|
+
winston.info("RouterLogger disabled ");
|
260
|
+
}
|
226
261
|
|
227
262
|
app.get('/', function (req, res) {
|
228
263
|
res.send('Hello from Tiledesk server. It\'s UP. See the documentation here http://developer.tiledesk.com');
|
@@ -276,6 +311,9 @@ var projectSetter = function (req, res, next) {
|
|
276
311
|
}
|
277
312
|
|
278
313
|
|
314
|
+
|
315
|
+
|
316
|
+
|
279
317
|
// app.use('/admin', admin);
|
280
318
|
|
281
319
|
//oauth2
|
@@ -284,6 +322,7 @@ var projectSetter = function (req, res, next) {
|
|
284
322
|
// app.post('/oauth/token', oauth2.token);
|
285
323
|
|
286
324
|
|
325
|
+
|
287
326
|
app.use('/auth', auth);
|
288
327
|
app.use('/testauth', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], authtest);
|
289
328
|
|
@@ -407,6 +446,7 @@ app.use(function (err, req, res, next) {
|
|
407
446
|
res.render('error');
|
408
447
|
});*/
|
409
448
|
|
449
|
+
|
410
450
|
// error handler
|
411
451
|
app.use((err, req, res, next) => {
|
412
452
|
winston.error("General error", err);
|
@@ -63,8 +63,8 @@
|
|
63
63
|
|
64
64
|
"INFO_SUPPORT_USER_ADDED_SUBJECT":"you",
|
65
65
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB":"you have been added ",
|
66
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"
|
67
|
-
"INFO_SUPPORT_USER_ADDED_VERB":"
|
66
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"the chat",
|
67
|
+
"INFO_SUPPORT_USER_ADDED_VERB":"joined",
|
68
68
|
"INFO_SUPPORT_CHAT_REOPENED":"Chat reopened",
|
69
69
|
"INFO_SUPPORT_CHAT_CLOSED":"Chat closed",
|
70
70
|
|
@@ -141,8 +141,8 @@
|
|
141
141
|
|
142
142
|
"INFO_SUPPORT_USER_ADDED_SUBJECT":"tu",
|
143
143
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB":"sei stato aggiunto ",
|
144
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"
|
145
|
-
"INFO_SUPPORT_USER_ADDED_VERB":"
|
144
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"alla chat",
|
145
|
+
"INFO_SUPPORT_USER_ADDED_VERB":"si è unito",
|
146
146
|
"INFO_SUPPORT_CHAT_REOPENED":"Chat riaperta",
|
147
147
|
"INFO_SUPPORT_CHAT_CLOSED":"Chat chiusa",
|
148
148
|
|
@@ -217,8 +217,8 @@
|
|
217
217
|
|
218
218
|
"INFO_SUPPORT_USER_ADDED_SUBJECT":"toi",
|
219
219
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB":"tu as été ajouté ",
|
220
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"
|
221
|
-
"INFO_SUPPORT_USER_ADDED_VERB":"
|
220
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"discuter",
|
221
|
+
"INFO_SUPPORT_USER_ADDED_VERB":"rejoint",
|
222
222
|
"INFO_SUPPORT_CHAT_REOPENED":"Chat rouvert",
|
223
223
|
"INFO_SUPPORT_CHAT_CLOSED":"Chat fermé",
|
224
224
|
|
@@ -293,8 +293,8 @@
|
|
293
293
|
|
294
294
|
"INFO_SUPPORT_USER_ADDED_SUBJECT":"usted",
|
295
295
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB":"usted ha sido agregado ",
|
296
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"
|
297
|
-
"INFO_SUPPORT_USER_ADDED_VERB":"
|
296
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT":"para charlar",
|
297
|
+
"INFO_SUPPORT_USER_ADDED_VERB":"unido",
|
298
298
|
"INFO_SUPPORT_CHAT_REOPENED":"Chat reabierto",
|
299
299
|
"INFO_SUPPORT_CHAT_CLOSED":"Chat cerrado",
|
300
300
|
|
@@ -370,8 +370,8 @@
|
|
370
370
|
|
371
371
|
"INFO_SUPPORT_USER_ADDED_SUBJECT": "Sie",
|
372
372
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB": "Sie wurden hinzugefügt ",
|
373
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "
|
374
|
-
"INFO_SUPPORT_USER_ADDED_VERB": "
|
373
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "zum Chatten",
|
374
|
+
"INFO_SUPPORT_USER_ADDED_VERB": "beigetreten",
|
375
375
|
"INFO_SUPPORT_CHAT_REOPENED": "Chat wieder geöffnet",
|
376
376
|
"INFO_SUPPORT_CHAT_CLOSED": "Chat geschlossen",
|
377
377
|
|
@@ -446,8 +446,8 @@
|
|
446
446
|
|
447
447
|
"INFO_SUPPORT_USER_ADDED_SUBJECT": "você",
|
448
448
|
"INFO_SUPPORT_USER_ADDED_YOU_VERB": "você foi adicionado ",
|
449
|
-
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "
|
450
|
-
"INFO_SUPPORT_USER_ADDED_VERB": "
|
449
|
+
"INFO_SUPPORT_USER_ADDED_COMPLEMENT": "para conversar",
|
450
|
+
"INFO_SUPPORT_USER_ADDED_VERB": "aderiu",
|
451
451
|
"INFO_SUPPORT_CHAT_REOPENED": "Chat reaberto",
|
452
452
|
"INFO_SUPPORT_CHAT_CLOSED": "Bate-papo fechado",
|
453
453
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
var mongoose = require('mongoose');
|
2
|
+
var Schema = mongoose.Schema;
|
3
|
+
var config = require('../config/database');
|
4
|
+
|
5
|
+
|
6
|
+
var winston = require('../config/winston');
|
7
|
+
|
8
|
+
var dbUrl = process.env.MONGODB_LOGS_URI || config.databaselogs || process.env.MONGODB_URI;
|
9
|
+
winston.info('VisitorCounterSchema dbUrl: '+dbUrl);
|
10
|
+
|
11
|
+
// mongoose.set('useFindAndModify', false); //??
|
12
|
+
// mongoose.set('useCreateIndex', true);
|
13
|
+
// mongoose.set('useUnifiedTopology', true);
|
14
|
+
|
15
|
+
var conn = mongoose.createConnection(dbUrl, { "autoIndex": true });
|
16
|
+
// var conn = mongoose.connect(dbUrl, { "useNewUrlParser": true, "autoIndex": true });
|
17
|
+
|
18
|
+
// db.getCollection('reqlogs').aggregate([ {$group:{_id:{id_project:"$id_project"}, "count":{$sum:1}}},{$sort:{"count":-1}}])
|
19
|
+
// db.getCollection('projects').find({"_id":ObjectId("5afeaf94404bff0014098f54")})
|
20
|
+
|
21
|
+
var RouterLoggerSchema = new Schema({
|
22
|
+
url: {
|
23
|
+
type: String,
|
24
|
+
index: true
|
25
|
+
},
|
26
|
+
fullurl: {
|
27
|
+
type: String,
|
28
|
+
index: true
|
29
|
+
},
|
30
|
+
|
31
|
+
// ip: {
|
32
|
+
// type: String,
|
33
|
+
// index: true
|
34
|
+
// },
|
35
|
+
// host: {
|
36
|
+
// type: String,
|
37
|
+
// index: true
|
38
|
+
// },
|
39
|
+
origin: {
|
40
|
+
type: String,
|
41
|
+
index: true
|
42
|
+
},
|
43
|
+
id_project: {
|
44
|
+
type: String,
|
45
|
+
index: true
|
46
|
+
//required: true
|
47
|
+
}
|
48
|
+
}, {
|
49
|
+
timestamps: true
|
50
|
+
}
|
51
|
+
);
|
52
|
+
|
53
|
+
var routerLogger = conn.model('router_logger', RouterLoggerSchema);
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
module.exports = routerLogger;
|
package/package.json
CHANGED
@@ -41,8 +41,8 @@ router.post('/', [
|
|
41
41
|
eventService.emit(req.body.name, req.body.attributes, req.projectid, pu, req.user.id, undefined, req.user).then(function(event) {
|
42
42
|
res.json(event);
|
43
43
|
}).catch(function(err) {
|
44
|
-
winston.error('Error saving the event '+ JSON.stringify(
|
45
|
-
return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(
|
44
|
+
winston.error('Error saving the event '+ JSON.stringify(event), err)
|
45
|
+
return res.status(500).send({success: false, msg: 'Error saving the event '+ JSON.stringify(event)});
|
46
46
|
});
|
47
47
|
|
48
48
|
// var newEvent = new Event({
|
@@ -11,27 +11,29 @@ var winston = require('../config/winston');
|
|
11
11
|
//winston.debug(req.params);
|
12
12
|
//winston.debug("req.projectid", req.projectid);
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}
|
14
|
+
res.json([]);
|
15
|
+
|
16
|
+
// AnalyticResult.aggregate([
|
17
|
+
// //last 4
|
18
|
+
// { $match: {"id_project":req.projectid, "createdAt" : { $gte : new Date((new Date().getTime() - (4 * 60 * 60 * 1000))) }} },
|
19
|
+
// { "$group": {
|
20
|
+
// "_id": "$id_project",
|
21
|
+
// "waiting_time_avg":{"$avg": "$waiting_time"}
|
22
|
+
// }
|
23
|
+
// },
|
22
24
|
|
23
|
-
])
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
});
|
25
|
+
// ])
|
26
|
+
// // .cache(cacheUtil.longTTL, req.projectid+":analytics:query:waiting:avg:4hours")
|
27
|
+
// .exec(function(err, result) {
|
28
|
+
|
29
|
+
// if (err) {
|
30
|
+
// winston.debug(err);
|
31
|
+
// return res.status(500).send({success: false, msg: 'Error getting analytics.'});
|
32
|
+
// }
|
33
|
+
// //winston.debug(result);
|
34
|
+
|
35
|
+
// res.json(result);
|
36
|
+
// });
|
35
37
|
|
36
38
|
});
|
37
39
|
|
package/routes/widget.js
CHANGED
File without changes
|
@@ -368,7 +368,8 @@ class FaqBotSupport {
|
|
368
368
|
// found = true;
|
369
369
|
// return resolve(bot_answer);
|
370
370
|
|
371
|
-
|
371
|
+
// problem with
|
372
|
+
// if (message.channel.name == "chat21") { //why this contition on chat21 channel? bacause only chat21 support parsed replies?
|
372
373
|
winston.debug("faqBotSupport message.channel.name is chat21",message);
|
373
374
|
that.getParsedMessage(bot_answer.text,message, bot, faqs[0]).then(function(bot_answerres) {
|
374
375
|
|
@@ -377,10 +378,10 @@ class FaqBotSupport {
|
|
377
378
|
return resolve(bot_answerres);
|
378
379
|
});
|
379
380
|
|
380
|
-
} else {
|
381
|
-
|
382
|
-
|
383
|
-
}
|
381
|
+
// } else {
|
382
|
+
// winston.debug("faqBotSupport message.channel.name is not chat21 returning default",message);
|
383
|
+
// return resolve(bot_answer);
|
384
|
+
// }
|
384
385
|
|
385
386
|
} else {
|
386
387
|
var message_key = "DEFAULT_NOTFOUND_NOBOT_SENTENCE_REPLY_MESSAGE";
|