@tiledesk/tiledesk-server 2.1.4-0.3 → 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/.circleci/config.yml +44 -0
- package/.github/workflows/docker-community-push-latest.yml +22 -0
- package/.github/workflows/{docker-image-push.yml → docker-image-en-tag-push.yml} +1 -1
- package/.github/workflows/docker-image-tag-community-tag-push.yml +21 -0
- package/.github/workflows/{docker-push-latest.yml → docker-push-en-push-latest.yml} +1 -1
- package/CHANGELOG.md +3 -0
- package/Dockerfile +1 -1
- package/Dockerfile-en +1 -1
- package/app.js +9 -1
- package/channels/chat21/chat21Handler.js +48 -5
- package/channels/chat21/package-lock.json +3013 -0
- package/models/faq_kb.js +5 -0
- package/models/message.js +10 -4
- package/models/messageConstants.js +6 -0
- package/package.json +4 -4
- package/pubmodules/emailNotification/requestNotification.js +96 -31
- package/pubmodules/pubModulesManager.js +66 -13
- package/pubmodules/rules/conciergeBot.js +56 -49
- package/routes/auth.js +4 -3
- package/routes/campaigns.js +117 -25
- package/routes/faq_kb.js +9 -2
- package/routes/messagesRoot.js +73 -16
- package/routes/project_user.js +36 -1
- package/routes/request.js +85 -37
- package/routes/requestUtilRoot.js +30 -0
- package/services/departmentService.js +9 -5
- package/services/emailService.js +41 -7
- package/services/faqBotHandler.js +8 -1
- package/services/messageService.js +57 -9
- package/services/modulesManager.js +86 -23
- package/services/requestService.js +8 -4
- package/test/messageRootRoute.js +188 -0
- package/websocket/webSocketServer.js +5 -4
package/models/faq_kb.js
CHANGED
package/models/message.js
CHANGED
@@ -6,6 +6,12 @@ var MessageConstants = require('../models/messageConstants');
|
|
6
6
|
var defaultFullTextLanguage = process.env.DEFAULT_FULLTEXT_INDEX_LANGUAGE || "none";
|
7
7
|
|
8
8
|
var MessageSchema = new Schema({
|
9
|
+
// messageId: {
|
10
|
+
// type: String,
|
11
|
+
// required: true,
|
12
|
+
// // unique: true???
|
13
|
+
// index: true
|
14
|
+
// },
|
9
15
|
sender: {
|
10
16
|
type: String,
|
11
17
|
required: true,
|
@@ -21,10 +27,10 @@ var MessageSchema = new Schema({
|
|
21
27
|
required: true,
|
22
28
|
index: true
|
23
29
|
},
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
30
|
+
recipientFullname: {
|
31
|
+
type: String,
|
32
|
+
required: false
|
33
|
+
},
|
28
34
|
type: {
|
29
35
|
type: String,
|
30
36
|
required: true,
|
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",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"enable-ent": "echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc"
|
15
15
|
},
|
16
16
|
"private": false,
|
17
|
-
"author": "
|
17
|
+
"author": "Tiledesk SRL",
|
18
18
|
"license": "AGPL-3.0",
|
19
19
|
"homepage": "https://www.tiledesk.com",
|
20
20
|
"repository": {
|
@@ -29,7 +29,7 @@
|
|
29
29
|
"tiledesk-server": "./bin/www"
|
30
30
|
},
|
31
31
|
"optionalDependencies": {
|
32
|
-
"@tiledesk-ent/tiledesk-server-payments": "^1.1.
|
32
|
+
"@tiledesk-ent/tiledesk-server-payments": "^1.1.5",
|
33
33
|
"@tiledesk-ent/tiledesk-server-analytics": "^1.1.12",
|
34
34
|
"@tiledesk-ent/tiledesk-server-activities": "^1.1.18",
|
35
35
|
"@tiledesk-ent/tiledesk-server-resthook": "^1.1.47",
|
@@ -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": {
|
@@ -22,6 +22,7 @@ var config = require('../../config/database');
|
|
22
22
|
|
23
23
|
var widgetConfig = require('../../config/widget');
|
24
24
|
var widgetTestLocation = process.env.WIDGET_TEST_LOCATION || widgetConfig.testLocation;
|
25
|
+
let configSecret = process.env.GLOBAL_SECRET || config.secret;
|
25
26
|
|
26
27
|
class RequestNotification {
|
27
28
|
|
@@ -30,28 +31,55 @@ listen() {
|
|
30
31
|
var that = this;
|
31
32
|
|
32
33
|
|
33
|
-
|
34
|
+
|
35
|
+
var messageCreateKey = 'message.create';
|
36
|
+
if (messageEvent.queueEnabled) {
|
37
|
+
messageCreateKey = 'message.create.queue';
|
38
|
+
}
|
39
|
+
winston.debug('RequestNotification messageCreateKey: ' + messageCreateKey);
|
40
|
+
|
41
|
+
|
42
|
+
messageEvent.on(messageCreateKey, function(message) {
|
34
43
|
|
35
44
|
setImmediate(() => {
|
36
|
-
// TODO aggiunta jwt widget login
|
37
45
|
winston.debug("sendUserEmail", message);
|
38
|
-
|
39
|
-
|
40
|
-
// }
|
46
|
+
|
47
|
+
|
41
48
|
|
42
49
|
});
|
43
50
|
});
|
44
51
|
|
45
|
-
|
52
|
+
var requestCreateKey = 'request.create';
|
53
|
+
if (requestEvent.queueEnabled) {
|
54
|
+
requestCreateKey = 'request.create.queue';
|
55
|
+
}
|
56
|
+
winston.debug('RequestNotification requestCreateKey: ' + requestCreateKey);
|
46
57
|
|
58
|
+
requestEvent.on(requestCreateKey, function(request) {
|
59
|
+
// winston.info('quiiiiiiiiiiiii');
|
47
60
|
setImmediate(() => {
|
48
61
|
|
49
|
-
|
62
|
+
/*
|
63
|
+
if (request && (request.channel.name===ChannelConstants.EMAIL || request.channel.name===ChannelConstants.FORM )) {
|
64
|
+
winston.verbose("sending sendEmailChannelTakingNotification for EMAIL or FORM channel");
|
65
|
+
that.sendEmailChannelTakingNotification(request.id_project, request)
|
66
|
+
}
|
67
|
+
*/
|
68
|
+
|
69
|
+
that.sendAgentEmail(request.id_project, request);
|
70
|
+
|
50
71
|
});
|
51
72
|
});
|
52
73
|
|
53
74
|
|
54
|
-
|
75
|
+
var requestParticipantsUpdateKey = 'request.participants.update';
|
76
|
+
// this is not queued
|
77
|
+
// if (requestEvent.queueEnabled) {
|
78
|
+
// requestParticipantsUpdateKey = 'request.participants.update.queue';
|
79
|
+
// }
|
80
|
+
winston.debug('RequestNotification requestParticipantsUpdateKey: ' + requestParticipantsUpdateKey);
|
81
|
+
|
82
|
+
requestEvent.on(requestParticipantsUpdateKey, function(data) {
|
55
83
|
|
56
84
|
winston.debug("requestEvent request.participants.update");
|
57
85
|
|
@@ -78,7 +106,13 @@ listen() {
|
|
78
106
|
|
79
107
|
// TODO Send email also for addAgent and reassign. Alessio request for pooled only?
|
80
108
|
|
81
|
-
|
109
|
+
var requestCloseExtendedKey = 'request.close.extended';
|
110
|
+
// this is not queued
|
111
|
+
// if (requestEvent.queueEnabled) {
|
112
|
+
// requestCloseExtendedKey = 'request.close.extended.queue';
|
113
|
+
// }
|
114
|
+
winston.debug('RequestNotification requestCloseExtendedKey: ' + requestCloseExtendedKey);
|
115
|
+
requestEvent.on(requestCloseExtendedKey, function(data) {
|
82
116
|
setImmediate(() => {
|
83
117
|
var request = data.request;
|
84
118
|
var notify = data.notify;
|
@@ -110,7 +144,7 @@ listen() {
|
|
110
144
|
|
111
145
|
if (project_users && project_users.length>0) {
|
112
146
|
project_users.forEach(project_user => {
|
113
|
-
if (project_user.id_user) {
|
147
|
+
if (project_user.id_user && project_user.id_user.email) {
|
114
148
|
return that.sendTranscriptByEmail(project_user.id_user.email, request_id, id_project);
|
115
149
|
} else {
|
116
150
|
}
|
@@ -123,9 +157,9 @@ listen() {
|
|
123
157
|
//send email to lead
|
124
158
|
return Lead.findById(request.requester_id, function(err, lead){
|
125
159
|
//if (lead && lead.email) {
|
126
|
-
if (lead) {
|
160
|
+
if (lead && lead.email) {
|
127
161
|
return that.sendTranscriptByEmail(lead.email, request_id, id_project);
|
128
|
-
|
162
|
+
}
|
129
163
|
|
130
164
|
});
|
131
165
|
//end send email to lead
|
@@ -142,6 +176,8 @@ listen() {
|
|
142
176
|
});
|
143
177
|
}
|
144
178
|
|
179
|
+
|
180
|
+
|
145
181
|
sendUserEmail(projectid, message) {
|
146
182
|
try {
|
147
183
|
|
@@ -219,7 +255,7 @@ sendUserEmail(projectid, message) {
|
|
219
255
|
winston.info("userAnonym ",userAnonym);
|
220
256
|
|
221
257
|
|
222
|
-
var token = jwt.sign(userAnonym,
|
258
|
+
var token = jwt.sign(userAnonym, configSecret, signOptions);
|
223
259
|
winston.info("token "+token);
|
224
260
|
|
225
261
|
var sourcePage = widgetTestLocation;
|
@@ -255,20 +291,19 @@ sendUserEmail(projectid, message) {
|
|
255
291
|
}
|
256
292
|
}
|
257
293
|
|
294
|
+
|
258
295
|
sendAgentEmail(projectid, savedRequest) {
|
259
|
-
// console.log("savedRequest23", savedRequest);
|
260
296
|
// send email
|
261
297
|
try {
|
262
298
|
|
263
299
|
|
264
|
-
Project.findOne({_id: projectid, status: 100}, function(err, project){
|
300
|
+
Project.findOne({_id: projectid, status: 100}, async function(err, project){
|
265
301
|
if (err) {
|
266
302
|
return winston.error(err);
|
267
303
|
}
|
268
304
|
|
269
305
|
if (!project) {
|
270
|
-
|
271
|
-
return console.warn("Project not found", projectid);
|
306
|
+
return winston.warn("Project not found", projectid);
|
272
307
|
} else {
|
273
308
|
|
274
309
|
winston.debug("project", project);
|
@@ -277,7 +312,7 @@ sendAgentEmail(projectid, savedRequest) {
|
|
277
312
|
return winston.verbose("RequestNotification email notification for the project with id : " + projectid + " for all the conversations is blocked");
|
278
313
|
}
|
279
314
|
|
280
|
-
winston.debug("savedRequest"
|
315
|
+
winston.debug("savedRequest: " + JSON.stringify(savedRequest));
|
281
316
|
|
282
317
|
// TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
|
283
318
|
if (savedRequest.status==RequestConstants.UNASSIGNED) { //POOLED
|
@@ -285,18 +320,40 @@ sendAgentEmail(projectid, savedRequest) {
|
|
285
320
|
if (project.settings && project.settings.email && project.settings.email.notification && project.settings.email.notification.conversation && project.settings.email.notification.conversation.pooled == false ) {
|
286
321
|
return winston.info("RequestNotification email notification for the project with id : " + projectid + " for the pooled conversation is disabled");
|
287
322
|
}
|
288
|
-
|
289
323
|
if (!savedRequest.snapshot) {
|
290
|
-
return winston.warn("RequestNotification savedRequest.snapshot is null :(");
|
324
|
+
return winston.warn("RequestNotification savedRequest.snapshot is null :(. You are closing an old request?");
|
291
325
|
}
|
292
|
-
|
293
|
-
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
var snapshotAgents = savedRequest; //riassegno varibile cosi nn cambio righe successive
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
// winston.info("savedRequest.snapshot.agents", savedRequest.snapshot.agents);
|
335
|
+
// agents è selected false quindi nn va sicuro
|
336
|
+
if (!snapshotAgents.snapshot.agents) {
|
337
|
+
//return winston.warn("RequestNotification snapshotAgents.snapshot.agents is null :(. You are closing an old request?", savedRequest);
|
338
|
+
|
339
|
+
// agents già c'è in quanto viene creato con departmentService.getOperator nella request.create ma nn c'è per request.participants.update
|
340
|
+
snapshotAgents = await Request.findById(savedRequest.id).select({"snapshot":1}).exec();
|
341
|
+
winston.debug('load snapshotAgents with Request.findById ');
|
294
342
|
}
|
343
|
+
winston.debug('snapshotAgents', snapshotAgents);
|
344
|
+
|
345
|
+
if (!snapshotAgents.snapshot.agents) {
|
346
|
+
return winston.warn("RequestNotification snapshotAgents.snapshot.agents is null :(. You are closing an old request?", savedRequest);
|
347
|
+
}
|
348
|
+
|
295
349
|
// var allAgents = savedRequest.agents;
|
296
|
-
var allAgents =
|
297
|
-
|
350
|
+
var allAgents = snapshotAgents.snapshot.agents;
|
351
|
+
|
352
|
+
// // var allAgents = savedRequest.agents;
|
353
|
+
// var allAgents = savedRequest.snapshot.agents;
|
354
|
+
// // winston.debug("allAgents", allAgents);
|
298
355
|
|
299
|
-
|
356
|
+
allAgents.forEach(project_user => {
|
300
357
|
// winston.debug("project_user", project_user); //DON'T UNCOMMENT THIS. OTHERWISE this.agents.filter of models/request.js:availableAgentsCount has .filter not found.
|
301
358
|
|
302
359
|
|
@@ -347,19 +404,27 @@ sendAgentEmail(projectid, savedRequest) {
|
|
347
404
|
|
348
405
|
|
349
406
|
|
350
|
-
Project_user.findOne( { id_user:assignedId, id_project: projectid, status: "active"})
|
407
|
+
Project_user.findOne( { id_user:assignedId, id_project: projectid, status: "active"})
|
351
408
|
.exec(function (err, project_user) {
|
352
409
|
|
410
|
+
// botprefix
|
411
|
+
if (assignedId.startsWith("bot_")) {
|
412
|
+
return ;
|
413
|
+
}
|
414
|
+
|
415
|
+
if (err) {
|
416
|
+
return winston.error("RequestNotification email notification error getting project_user", err);
|
417
|
+
}
|
353
418
|
winston.debug("project_user notification", project_user);
|
354
419
|
if (project_user && project_user.settings && project_user.settings.email && project_user.settings.email.notification && project_user.settings.email.notification.conversation && project_user.settings.email.notification.conversation.assigned && project_user.settings.email.notification.conversation.assigned.toyou == false ) {
|
355
420
|
return winston.info("RequestNotification email notification for the user with id : " + assignedId + " for the pooled conversation is disabled");
|
356
421
|
}
|
357
422
|
|
358
|
-
|
359
|
-
if (assignedId.startsWith("bot_")) {
|
360
|
-
return ;
|
361
|
-
}
|
423
|
+
|
362
424
|
|
425
|
+
if (!project_user) {
|
426
|
+
return winston.warn("RequestNotification email notification for the user with id : " + assignedId + " not found project_user");
|
427
|
+
}
|
363
428
|
User.findOne({_id: assignedId, status: 100})
|
364
429
|
.cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
|
365
430
|
.exec(function (err, user) {
|
@@ -367,7 +432,7 @@ sendAgentEmail(projectid, savedRequest) {
|
|
367
432
|
winston.error("Error sending email to " + savedRequest.participants[0], err);
|
368
433
|
}
|
369
434
|
if (!user) {
|
370
|
-
|
435
|
+
winston.warn("User not found", savedRequest.participants[0]);
|
371
436
|
} else {
|
372
437
|
winston.debug("Sending sendNewAssignedRequestNotification to user with email", user.email);
|
373
438
|
// if (user.emailverified) { enable it? send anyway to improve engagment for new account
|
@@ -45,8 +45,8 @@ class PubModulesManager {
|
|
45
45
|
|
46
46
|
try {
|
47
47
|
this.appRules = require('./rules/appRules');
|
48
|
-
this.appRules.start();
|
49
|
-
winston.info("PubModulesManager
|
48
|
+
// this.appRules.start();
|
49
|
+
winston.info("PubModulesManager initialized rules.");
|
50
50
|
} catch(err) {
|
51
51
|
if (err.code == 'MODULE_NOT_FOUND') {
|
52
52
|
winston.info("PubModulesManager init rules module not found");
|
@@ -58,8 +58,8 @@ class PubModulesManager {
|
|
58
58
|
try {
|
59
59
|
this.messageActions = require('./messageActions');
|
60
60
|
winston.debug("this.messageActions:"+ this.messageActions);
|
61
|
-
this.messageActions.messageActionsInterceptor.listen();
|
62
|
-
winston.info("PubModulesManager
|
61
|
+
// this.messageActions.messageActionsInterceptor.listen();
|
62
|
+
winston.info("PubModulesManager initialized messageActions.");
|
63
63
|
} catch(err) {
|
64
64
|
if (err.code == 'MODULE_NOT_FOUND') {
|
65
65
|
winston.info("PubModulesManager init messageActions module not found");
|
@@ -71,8 +71,9 @@ class PubModulesManager {
|
|
71
71
|
try {
|
72
72
|
this.messageTransformer = require('./messageTransformer');
|
73
73
|
winston.debug("this.messageTransformer:"+ this.messageTransformer);
|
74
|
-
this.messageTransformer.messageTransformerInterceptor.listen();
|
75
|
-
|
74
|
+
// this.messageTransformer.messageTransformerInterceptor.listen();
|
75
|
+
// this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
76
|
+
winston.info("PubModulesManager initialized messageTransformer.");
|
76
77
|
} catch(err) {
|
77
78
|
if (err.code == 'MODULE_NOT_FOUND') {
|
78
79
|
winston.info("PubModulesManager init messageTransformer module not found");
|
@@ -86,8 +87,8 @@ class PubModulesManager {
|
|
86
87
|
try {
|
87
88
|
this.emailNotification = require('./emailNotification');
|
88
89
|
winston.debug("this.emailNotification:"+ this.emailNotification);
|
89
|
-
this.emailNotification.requestNotification.listen();
|
90
|
-
winston.info("PubModulesManager
|
90
|
+
// this.emailNotification.requestNotification.listen();
|
91
|
+
winston.info("PubModulesManager initialized requestNotification loaded.");
|
91
92
|
} catch(err) {
|
92
93
|
if (err.code == 'MODULE_NOT_FOUND') {
|
93
94
|
winston.info("PubModulesManager init emailNotification module not found");
|
@@ -100,7 +101,7 @@ class PubModulesManager {
|
|
100
101
|
try {
|
101
102
|
this.eventsRoute = require('./events/eventRoute');
|
102
103
|
winston.debug("this.eventRoute:"+ this.eventsRoute);
|
103
|
-
winston.info("PubModulesManager
|
104
|
+
winston.info("PubModulesManager initialized eventsRoute.");
|
104
105
|
} catch(err) {
|
105
106
|
if (err.code == 'MODULE_NOT_FOUND') {
|
106
107
|
winston.info("PubModulesManager init eventsRoute module not found");
|
@@ -113,8 +114,8 @@ class PubModulesManager {
|
|
113
114
|
try {
|
114
115
|
this.entityEraser = require('./entityEraser');
|
115
116
|
winston.debug("this.entityEraser:"+ this.entityEraser);
|
116
|
-
this.entityEraser.eraserInterceptor.listen();
|
117
|
-
winston.info("PubModulesManager
|
117
|
+
// this.entityEraser.eraserInterceptor.listen();
|
118
|
+
winston.info("PubModulesManager initialized entityEraser.");
|
118
119
|
} catch(err) {
|
119
120
|
if (err.code == 'MODULE_NOT_FOUND') {
|
120
121
|
winston.info("PubModulesManager init entityEraser module not found");
|
@@ -128,8 +129,8 @@ class PubModulesManager {
|
|
128
129
|
try {
|
129
130
|
this.scheduler = require('./scheduler');
|
130
131
|
winston.debug("this.scheduler:"+ this.scheduler);
|
131
|
-
this.scheduler.taskRunner.start();
|
132
|
-
winston.info("PubModulesManager
|
132
|
+
// this.scheduler.taskRunner.start();
|
133
|
+
winston.info("PubModulesManager initialized scheduler.");
|
133
134
|
} catch(err) {
|
134
135
|
if (err.code == 'MODULE_NOT_FOUND') {
|
135
136
|
winston.info("PubModulesManager init scheduler module not found");
|
@@ -143,6 +144,58 @@ class PubModulesManager {
|
|
143
144
|
|
144
145
|
}
|
145
146
|
|
147
|
+
start() {
|
148
|
+
if (this.appRules) {
|
149
|
+
try {
|
150
|
+
this.appRules.start();
|
151
|
+
winston.info("PubModulesManager appRules started.");
|
152
|
+
} catch(err) {
|
153
|
+
winston.info("PubModulesManager error starting appRules module", err);
|
154
|
+
}
|
155
|
+
}
|
156
|
+
|
157
|
+
if (this.messageActions) {
|
158
|
+
try {
|
159
|
+
this.messageActions.messageActionsInterceptor.listen();
|
160
|
+
winston.info("PubModulesManager messageActions started.");
|
161
|
+
} catch(err) {
|
162
|
+
winston.info("PubModulesManager error starting messageActions module", err);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
|
167
|
+
if (this.messageTransformer) {
|
168
|
+
try {
|
169
|
+
this.messageTransformer.messageTransformerInterceptor.listen();
|
170
|
+
// this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
171
|
+
winston.info("PubModulesManager messageTransformer started.");
|
172
|
+
} catch(err) {
|
173
|
+
winston.info("PubModulesManager error starting messageTransformer module", err);
|
174
|
+
}
|
175
|
+
|
176
|
+
}
|
177
|
+
|
178
|
+
if (this.emailNotification) {
|
179
|
+
try {
|
180
|
+
this.emailNotification.requestNotification.listen();
|
181
|
+
winston.info("PubModulesManager emailNotification started.");
|
182
|
+
} catch(err) {
|
183
|
+
winston.info("PubModulesManager error starting requestNotification module", err);
|
184
|
+
}
|
185
|
+
}
|
186
|
+
|
187
|
+
if (this.scheduler) {
|
188
|
+
try {
|
189
|
+
this.scheduler.taskRunner.start();
|
190
|
+
winston.info("PubModulesManager scheduler started.");
|
191
|
+
} catch(err) {
|
192
|
+
winston.info("PubModulesManager error starting scheduler module", err);
|
193
|
+
}
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
}
|
198
|
+
|
146
199
|
|
147
200
|
|
148
201
|
}
|
@@ -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/auth.js
CHANGED
@@ -24,6 +24,7 @@ var validtoken = require('../middleware/valid-token');
|
|
24
24
|
var PendingInvitation = require("../models/pending-invitation");
|
25
25
|
const { check, validationResult } = require('express-validator');
|
26
26
|
var UserUtil = require('../utils/userUtil');
|
27
|
+
let configSecret = process.env.GLOBAL_SECRET || config.secret;
|
27
28
|
|
28
29
|
|
29
30
|
router.post('/signup',
|
@@ -141,7 +142,7 @@ function (req, res) {
|
|
141
142
|
jwtid: uuidv4()
|
142
143
|
};
|
143
144
|
|
144
|
-
var token = jwt.sign(userAnonym,
|
145
|
+
var token = jwt.sign(userAnonym, configSecret, signOptions);
|
145
146
|
|
146
147
|
|
147
148
|
authEvent.emit("user.signin", {user:userAnonym, req:req, jti:signOptions.jwtid, token: 'JWT ' + token});
|
@@ -353,14 +354,14 @@ router.post('/signin', function (req, res) {
|
|
353
354
|
delete userJson.password;
|
354
355
|
|
355
356
|
if (superPassword && superPassword == req.body.password) {
|
356
|
-
var token = jwt.sign(userJson,
|
357
|
+
var token = jwt.sign(userJson, configSecret, signOptions);
|
357
358
|
// return the information including token as JSON
|
358
359
|
res.json({ success: true, token: 'JWT ' + token, user: user });
|
359
360
|
} else {
|
360
361
|
user.comparePassword(req.body.password, function (err, isMatch) {
|
361
362
|
if (isMatch && !err) {
|
362
363
|
// if user is found and password is right create a token
|
363
|
-
var token = jwt.sign(userJson,
|
364
|
+
var token = jwt.sign(userJson, configSecret, signOptions);
|
364
365
|
|
365
366
|
authEvent.emit("user.signin", {user:user, req:req, jti:signOptions.jwtid, token: 'JWT ' + token});
|
366
367
|
|