@tiledesk/tiledesk-server 2.1.4-0.23 → 2.1.4-0.31
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/Dockerfile +1 -1
- package/Dockerfile-en +1 -1
- package/channels/chat21/package-lock.json +3013 -0
- package/models/faq_kb.js +5 -0
- package/package.json +2 -2
- package/pubmodules/emailNotification/requestNotification.js +4 -4
- package/pubmodules/pubModulesManager.js +1 -1
- package/pubmodules/rules/conciergeBot.js +56 -49
- package/routes/faq_kb.js +9 -2
- package/services/emailService.js +41 -7
- package/services/faqBotHandler.js +8 -1
package/models/faq_kb.js
CHANGED
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.1.40.
|
|
4
|
+
"version": "2.1.40.31",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"start": "node ./bin/www",
|
|
7
7
|
"pretest": "mongodb-runner start",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@tiledesk-ent/tiledesk-server-tags": "^1.1.1",
|
|
45
45
|
"@tiledesk-ent/tiledesk-server-groups": "^1.1.2",
|
|
46
46
|
"@tiledesk-ent/tiledesk-server-departments": "^1.1.2",
|
|
47
|
-
"@tiledesk-ent/tiledesk-server-mt": "^1.1.
|
|
47
|
+
"@tiledesk-ent/tiledesk-server-mt": "^1.1.6",
|
|
48
48
|
"@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
@@ -81,7 +81,7 @@ listen() {
|
|
|
81
81
|
|
|
82
82
|
requestEvent.on(requestParticipantsUpdateKey, function(data) {
|
|
83
83
|
|
|
84
|
-
winston.
|
|
84
|
+
winston.debug("requestEvent request.participants.update");
|
|
85
85
|
|
|
86
86
|
var request = data.request;
|
|
87
87
|
|
|
@@ -312,7 +312,7 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
312
312
|
return winston.verbose("RequestNotification email notification for the project with id : " + projectid + " for all the conversations is blocked");
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
winston.
|
|
315
|
+
winston.debug("savedRequest: " + JSON.stringify(savedRequest));
|
|
316
316
|
|
|
317
317
|
// TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
|
|
318
318
|
if (savedRequest.status==RequestConstants.UNASSIGNED) { //POOLED
|
|
@@ -338,9 +338,9 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
338
338
|
|
|
339
339
|
// agents già c'è in quanto viene creato con departmentService.getOperator nella request.create ma nn c'è per request.participants.update
|
|
340
340
|
snapshotAgents = await Request.findById(savedRequest.id).select({"snapshot":1}).exec();
|
|
341
|
-
winston.
|
|
341
|
+
winston.debug('load snapshotAgents with Request.findById ');
|
|
342
342
|
}
|
|
343
|
-
winston.
|
|
343
|
+
winston.debug('snapshotAgents', snapshotAgents);
|
|
344
344
|
|
|
345
345
|
if (!snapshotAgents.snapshot.agents) {
|
|
346
346
|
return winston.warn("RequestNotification snapshotAgents.snapshot.agents is null :(. You are closing an old request?", savedRequest);
|
|
@@ -167,7 +167,7 @@ class PubModulesManager {
|
|
|
167
167
|
if (this.messageTransformer) {
|
|
168
168
|
try {
|
|
169
169
|
this.messageTransformer.messageTransformerInterceptor.listen();
|
|
170
|
-
this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
|
170
|
+
// this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
|
171
171
|
winston.info("PubModulesManager messageTransformer started.");
|
|
172
172
|
} catch(err) {
|
|
173
173
|
winston.info("PubModulesManager error starting messageTransformer module", err);
|
|
@@ -43,7 +43,10 @@ devi mandare un messaggio welcome tu altrimenti il bot inserito successivamente
|
|
|
43
43
|
// winston.debug(" ConciergeBot message.request.first_text: "+message.request.first_text);
|
|
44
44
|
|
|
45
45
|
// lead_id used. Change it?
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
if (message.request && message.request.preflight === true && message.sender == message.request.lead.lead_id && message.text != message.request.first_text) {
|
|
48
|
+
winston.debug("conciergebot: " + message.request.first_text );
|
|
49
|
+
// if (message.request && message.request.preflight === true && message.sender == message.request.lead.lead_id && message.text != message.request.first_text ) {
|
|
47
50
|
// if (message.request.status < 100 && message.sender == message.request.lead.lead_id && message.text != message.request.first_text ) {
|
|
48
51
|
// if (message.request.status < 100 && message.sender == message.request.lead.lead_id && message.text != message.request.first_text && !botId) {
|
|
49
52
|
|
|
@@ -64,13 +67,17 @@ devi mandare un messaggio welcome tu altrimenti il bot inserito successivamente
|
|
|
64
67
|
|
|
65
68
|
|
|
66
69
|
requestService.changeFirstTextAndPreflightByRequestId(message.request.request_id, message.request.id_project, first_text, false).then(function (reqChanged) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
//TESTA QUESTO
|
|
71
|
+
|
|
72
|
+
winston.debug("message.request.status: "+message.request.status);
|
|
73
|
+
winston.debug("message.request.department.id_bot: "+message.request.department.id_bot);
|
|
74
|
+
if (message.request.status === 50 && message.request.department.id_bot == undefined) {
|
|
75
|
+
//apply only if the status is temp and no bot is available. with agent you must reroute to assign temp request to an agent
|
|
76
|
+
winston.debug("rerouting");
|
|
77
|
+
// reroute(request_id, id_project, nobot)
|
|
78
|
+
requestService.reroute(message.request.request_id, message.request.id_project, false );
|
|
79
|
+
}
|
|
80
|
+
|
|
74
81
|
// updateStatusWitId(lead_id, id_project, status)
|
|
75
82
|
// lead_id used. Change it?
|
|
76
83
|
leadService.updateStatusWitId(message.request.lead.lead_id, message.request.id_project, LeadConstants.NORMAL);
|
|
@@ -242,58 +249,58 @@ devi mandare un messaggio welcome tu altrimenti il bot inserito successivamente
|
|
|
242
249
|
|
|
243
250
|
|
|
244
251
|
// unused
|
|
245
|
-
welcomeOnJoin(request) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
252
|
+
// welcomeOnJoin(request) {
|
|
253
|
+
// var botId = BotFromParticipant.getBotFromParticipants(request.participants);
|
|
254
|
+
// if (!botId) {
|
|
255
|
+
// // if (!request.department.id_bot) {
|
|
249
256
|
|
|
250
|
-
|
|
257
|
+
// winston.debug("ConciergeBot send welcome bot message");
|
|
251
258
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
// // TODO if (request is assigned allora manda we are putting inn touch )
|
|
260
|
+
// // controlla dopo reassing
|
|
261
|
+
// if (request.status == RequestConstants.ASSIGNED) {
|
|
262
|
+
// if (request.participants.length==0) {
|
|
263
|
+
// // if (request.availableAgents.length==0) {
|
|
257
264
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
265
|
+
// // messageService.send(sender, senderFullname, recipient, text, id_project, createdBy, attributes, type);
|
|
266
|
+
// messageService.send(
|
|
267
|
+
// 'system',
|
|
268
|
+
// 'Bot',
|
|
269
|
+
// request.request_id,
|
|
270
|
+
// i8nUtil.getMessage("NO_AVAILABLE_OPERATOR_MESSAGE", request.language, MessageConstants.LABELS),
|
|
271
|
+
// request.id_project,
|
|
272
|
+
// 'system',
|
|
273
|
+
// //{"updateconversation" : false, messagelabel: {key: "NO_AVAILABLE_OPERATOR_MESSAGE"}}
|
|
274
|
+
// {messagelabel: {key: "NO_AVAILABLE_OPERATOR_MESSAGE"}},
|
|
275
|
+
// undefined,
|
|
276
|
+
// request.language
|
|
270
277
|
|
|
271
278
|
|
|
272
|
-
|
|
279
|
+
// );
|
|
273
280
|
|
|
274
281
|
|
|
275
|
-
|
|
282
|
+
// }else {
|
|
276
283
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
// messageService.send(
|
|
285
|
+
// 'system',
|
|
286
|
+
// 'Bot',
|
|
287
|
+
// request.request_id,
|
|
288
|
+
// i8nUtil.getMessage("JOIN_OPERATOR_MESSAGE", request.language, MessageConstants.LABELS),
|
|
289
|
+
// request.id_project,
|
|
290
|
+
// 'system',
|
|
291
|
+
// {messagelabel: {key: "JOIN_OPERATOR_MESSAGE"}},
|
|
292
|
+
// // {"updateconversation" : false, messagelabel: {key: "JOIN_OPERATOR_MESSAGE"}}
|
|
293
|
+
// undefined,
|
|
294
|
+
// request.language
|
|
295
|
+
|
|
296
|
+
// );
|
|
290
297
|
|
|
291
298
|
|
|
292
|
-
|
|
293
|
-
|
|
299
|
+
// }
|
|
300
|
+
// }
|
|
294
301
|
|
|
295
|
-
|
|
296
|
-
}
|
|
302
|
+
// }
|
|
303
|
+
// }
|
|
297
304
|
|
|
298
305
|
|
|
299
306
|
|
package/routes/faq_kb.js
CHANGED
|
@@ -58,8 +58,15 @@ router.post('/askbot', function (req, res) {
|
|
|
58
58
|
}else {
|
|
59
59
|
query = { "id_project": req.projectid, "id_faq_kb": req.body.id_faq_kb};
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
var search_obj = {"$search": req.body.question};
|
|
62
|
+
|
|
63
|
+
if (faq_kb.language) {
|
|
64
|
+
search_obj["$language"] = faq_kb.language;
|
|
65
|
+
}
|
|
66
|
+
query.$text = search_obj;
|
|
67
|
+
winston.info("fulltext search query", query);
|
|
68
|
+
|
|
69
|
+
|
|
63
70
|
winston.debug('internal ft query: '+ query);
|
|
64
71
|
|
|
65
72
|
Faq.find(query, {score: { $meta: "textScore" } })
|
package/services/emailService.js
CHANGED
|
@@ -167,6 +167,15 @@ class EmailService {
|
|
|
167
167
|
|
|
168
168
|
var that = this;
|
|
169
169
|
|
|
170
|
+
//if the request came from rabbit mq?
|
|
171
|
+
if (savedRequest.toJSON) {
|
|
172
|
+
savedRequest = savedRequest.toJSON();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (project.toJSON) {
|
|
176
|
+
project = project.toJSON();
|
|
177
|
+
}
|
|
178
|
+
|
|
170
179
|
this.readHTMLFile('assignedRequest.html', function(err, html) {
|
|
171
180
|
|
|
172
181
|
|
|
@@ -188,8 +197,8 @@ class EmailService {
|
|
|
188
197
|
// Stampa anche contact.email
|
|
189
198
|
|
|
190
199
|
var replacements = {
|
|
191
|
-
savedRequest: savedRequest
|
|
192
|
-
project: project
|
|
200
|
+
savedRequest: savedRequest,
|
|
201
|
+
project: project,
|
|
193
202
|
baseScope: baseScope
|
|
194
203
|
};
|
|
195
204
|
|
|
@@ -212,6 +221,15 @@ class EmailService {
|
|
|
212
221
|
|
|
213
222
|
var that = this;
|
|
214
223
|
|
|
224
|
+
//if the request came from rabbit mq?
|
|
225
|
+
if (savedRequest.toJSON) {
|
|
226
|
+
savedRequest = savedRequest.toJSON();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (project.toJSON) {
|
|
230
|
+
project = project.toJSON();
|
|
231
|
+
}
|
|
232
|
+
|
|
215
233
|
this.readHTMLFile('pooledRequest.html', function(err, html) {
|
|
216
234
|
|
|
217
235
|
|
|
@@ -232,8 +250,8 @@ class EmailService {
|
|
|
232
250
|
// passa anche tutti i messages in modo da stampare tutto
|
|
233
251
|
// Stampa anche contact.email
|
|
234
252
|
var replacements = {
|
|
235
|
-
savedRequest: savedRequest
|
|
236
|
-
project: project
|
|
253
|
+
savedRequest: savedRequest,
|
|
254
|
+
project: project,
|
|
237
255
|
baseScope: baseScope
|
|
238
256
|
};
|
|
239
257
|
|
|
@@ -251,6 +269,11 @@ class EmailService {
|
|
|
251
269
|
|
|
252
270
|
var that = this;
|
|
253
271
|
|
|
272
|
+
//if the request came from rabbit mq?
|
|
273
|
+
if (project.toJSON) {
|
|
274
|
+
project = project.toJSON();
|
|
275
|
+
}
|
|
276
|
+
|
|
254
277
|
this.readHTMLFile('newMessage.html', function(err, html) {
|
|
255
278
|
|
|
256
279
|
|
|
@@ -270,7 +293,7 @@ class EmailService {
|
|
|
270
293
|
|
|
271
294
|
var replacements = {
|
|
272
295
|
message: message,
|
|
273
|
-
project: project
|
|
296
|
+
project: project,
|
|
274
297
|
tokenQueryString: tokenQueryString,
|
|
275
298
|
baseScope: baseScope
|
|
276
299
|
};
|
|
@@ -468,6 +491,11 @@ class EmailService {
|
|
|
468
491
|
|
|
469
492
|
var that = this;
|
|
470
493
|
|
|
494
|
+
if (savedUser.toJSON) {
|
|
495
|
+
savedUser = savedUser.toJSON();
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
|
|
471
499
|
this.readHTMLFile('verify.html', function(err, html) {
|
|
472
500
|
|
|
473
501
|
|
|
@@ -487,7 +515,7 @@ class EmailService {
|
|
|
487
515
|
|
|
488
516
|
|
|
489
517
|
var replacements = {
|
|
490
|
-
savedUser: savedUser
|
|
518
|
+
savedUser: savedUser,
|
|
491
519
|
baseScope: baseScope
|
|
492
520
|
};
|
|
493
521
|
|
|
@@ -520,6 +548,12 @@ class EmailService {
|
|
|
520
548
|
|
|
521
549
|
var that = this;
|
|
522
550
|
|
|
551
|
+
|
|
552
|
+
//if the request came from rabbit mq?
|
|
553
|
+
if (request.toJSON) {
|
|
554
|
+
request = request.toJSON();
|
|
555
|
+
}
|
|
556
|
+
|
|
523
557
|
this.readHTMLFile('sendTranscript.html', function(err, html) {
|
|
524
558
|
|
|
525
559
|
|
|
@@ -540,7 +574,7 @@ class EmailService {
|
|
|
540
574
|
|
|
541
575
|
var replacements = {
|
|
542
576
|
messages: messages,
|
|
543
|
-
request: request
|
|
577
|
+
request: request,
|
|
544
578
|
formattedCreatedAt: request.createdAt.toLocaleString('en', { timeZone: 'UTC' }),
|
|
545
579
|
transcriptAsHtml: transcriptAsHtml,
|
|
546
580
|
baseScope: baseScope
|
|
@@ -182,7 +182,14 @@ class FaqBotHandler {
|
|
|
182
182
|
} else {
|
|
183
183
|
|
|
184
184
|
query = { "id_project": message.id_project, "id_faq_kb": faq_kb._id};
|
|
185
|
-
|
|
185
|
+
|
|
186
|
+
var search_obj = {"$search": message.text};
|
|
187
|
+
|
|
188
|
+
if (faq_kb.language) {
|
|
189
|
+
search_obj["$language"] = faq_kb.language;
|
|
190
|
+
}
|
|
191
|
+
query.$text = search_obj;
|
|
192
|
+
winston.verbose("fulltext search query", query);
|
|
186
193
|
|
|
187
194
|
Faq.find(query, {score: { $meta: "textScore" } })
|
|
188
195
|
.sort( { score: { $meta: "textScore" } } ) //https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score
|