@tiledesk/tiledesk-server 2.1.41 → 2.2.4
Sign up to get free protection for your applications and to get access to all the features.
- package/.circleci/config.yml +54 -0
- package/.env.sample +1 -1
- 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 +198 -1
- package/Dockerfile +1 -1
- package/Dockerfile-en +1 -1
- package/README.md +5 -7
- package/app.js +12 -1
- package/channels/chat21/chat21Contact.js +34 -8
- package/channels/chat21/chat21Handler.js +48 -5
- package/channels/chat21/chat21WebHook.js +34 -5
- package/channels/chat21/nativeauth.js +2 -2
- package/config/email.js +2 -1
- package/config/global.js +3 -0
- package/config/labels/widget.json +170 -16
- package/event/messageEvent.js +18 -1
- package/middleware/passport.js +10 -4
- package/models/actionsConstants.js +7 -0
- package/models/department.js +3 -0
- package/models/faq.js +8 -2
- package/models/faq_kb.js +6 -0
- package/models/message.js +10 -4
- package/models/messageConstants.js +3 -3
- package/models/request.js +33 -3
- package/package.json +31 -28
- package/pubmodules/emailNotification/requestNotification.js +380 -62
- package/pubmodules/messageActions/messageActionsInterceptor.js +20 -7
- package/pubmodules/messageTransformer/index.js +1 -1
- package/pubmodules/messageTransformer/microLanguageAttributesTransformerInterceptor.js +67 -0
- package/pubmodules/pubModulesManager.js +66 -14
- package/pubmodules/rules/conciergeBot.js +81 -49
- package/routes/auth.js +34 -10
- package/routes/campaigns.js +117 -25
- package/routes/faq.js +19 -0
- package/routes/faq_kb.js +13 -4
- package/routes/faqpub.js +1 -1
- package/routes/images.js +1 -1
- package/routes/jwt.js +0 -1
- package/routes/logs.js +26 -0
- package/routes/message.js +7 -2
- package/routes/messagesRoot.js +73 -16
- package/routes/project_user.js +36 -1
- package/routes/request.js +88 -12
- package/routes/requestUtilRoot.js +30 -0
- package/routes/urls.js +12 -0
- package/routes/users.js +5 -1
- package/services/BotSubscriptionNotifier.js +1 -0
- package/services/departmentService.js +29 -5
- package/services/emailService.js +1103 -298
- package/services/faqBotHandler.js +176 -61
- package/services/faqBotSupport.js +181 -117
- package/services/faqService.js +17 -14
- package/services/messageService.js +57 -9
- package/services/modulesManager.js +86 -23
- package/services/requestService.js +58 -17
- package/template/email/assignedEmailMessage.html +205 -0
- package/template/email/assignedRequest.html +44 -14
- package/template/email/beenInvitedExistingUser.html +2 -2
- package/template/email/beenInvitedNewUser.html +1 -1
- package/template/email/newMessage.html +31 -12
- package/template/email/passwordChanged.html +2 -3
- package/template/email/pooledEmailMessage.html +208 -0
- package/template/email/pooledRequest.html +41 -14
- package/template/email/resetPassword.html +2 -3
- package/template/email/sendTranscript.html +1 -1
- package/template/email/test.html +1 -1
- package/template/email/ticket.html +78 -52
- package/template/email/ticket.txt +5 -1
- package/template/email/verify.html +1 -1
- package/test/authentication.js +76 -4
- package/test/authenticationJwt.js +76 -2
- package/test/campaignsRoute.js +226 -0
- package/test/faqService.js +3 -3
- package/test/faqkbRoute.js +3 -2
- package/test/messageRootRoute.js +193 -0
- package/test/messageRoute.js +75 -0
- package/test/messageService.js +5 -5
- package/test/requestRoute.js +27 -9
- package/test/requestService.js +472 -11
- package/test-int/bot.js +673 -8
- package/websocket/webSocketServer.js +7 -4
- package/template/email/ticket-taking.txt +0 -7
@@ -23,7 +23,7 @@ module.exports = {
|
|
23
23
|
|
24
24
|
LABELS : {
|
25
25
|
EN : {
|
26
|
-
JOIN_OPERATOR_MESSAGE : "We are putting you in touch with an operator..",
|
26
|
+
// JOIN_OPERATOR_MESSAGE : "We are putting you in touch with an operator..",
|
27
27
|
NO_AVAILABLE_OPERATOR_MESSAGE : "Hello, no operators are available at the moment. Please leave a chat message, we will reply to you soon.",
|
28
28
|
// TOUCHING_OPERATOR: "We are putting you in touch with an operator. Please wait..",
|
29
29
|
TOUCHING_OPERATOR: "A new support request has been assigned to you"
|
@@ -31,7 +31,7 @@ module.exports = {
|
|
31
31
|
// REOPEN_MESSAGE : "Chat re-opened"
|
32
32
|
},
|
33
33
|
IT : {
|
34
|
-
JOIN_OPERATOR_MESSAGE : "La stiamo mettendo in contatto con un operatore. Attenda...",
|
34
|
+
// JOIN_OPERATOR_MESSAGE : "La stiamo mettendo in contatto con un operatore. Attenda...",
|
35
35
|
NO_AVAILABLE_OPERATOR_MESSAGE : "Salve al momento non è disponibile alcun operatore. Lasci un messaggio in chat, la contatteremo presto.",
|
36
36
|
TOUCHING_OPERATOR: "Una nuova richiesta di supporto è stata assegnata a te"
|
37
37
|
// TOUCHING_OPERATOR :"La stiamo mettendo in contatto con un operatore. Attenda...",
|
@@ -39,7 +39,7 @@ module.exports = {
|
|
39
39
|
// REOPEN_MESSAGE : "Chat riaperta"
|
40
40
|
},
|
41
41
|
"IT-IT" : {
|
42
|
-
JOIN_OPERATOR_MESSAGE : "La stiamo mettendo in contatto con un operatore. Attenda...",
|
42
|
+
// JOIN_OPERATOR_MESSAGE : "La stiamo mettendo in contatto con un operatore. Attenda...",
|
43
43
|
NO_AVAILABLE_OPERATOR_MESSAGE : "Salve al momento non è disponibile alcun operatore. Lasci un messaggio in chat, la contatteremo presto.",
|
44
44
|
TOUCHING_OPERATOR: "Una nuova richiesta di supporto è stata assegnata a te"
|
45
45
|
// TOUCHING_OPERATOR :"La stiamo mettendo in contatto con un operatore. Attenda...",
|
package/models/request.js
CHANGED
@@ -15,12 +15,17 @@ var LocationSchema = require("../models/location");
|
|
15
15
|
var RequestSnapshotSchema = require("../models/requestSnapshot");
|
16
16
|
|
17
17
|
var defaultFullTextLanguage = process.env.DEFAULT_FULLTEXT_INDEX_LANGUAGE || "none";
|
18
|
+
winston.info("Request defaultFullTextLanguage: "+ defaultFullTextLanguage);
|
19
|
+
|
20
|
+
const disableTicketIdSequence = process.env.DISABLE_TICKET_ID_SEQUENCE || false;
|
21
|
+
winston.info("Request disableTicketIdSequence: "+ disableTicketIdSequence);
|
18
22
|
|
19
23
|
// var autoIncrement = require('mongoose-auto-increment');
|
20
24
|
|
21
25
|
//https://github.com/Automattic/mongoose/issues/5924
|
22
26
|
mongoose.plugin(schema => { schema.options.usePushEach = true });
|
23
27
|
|
28
|
+
const AutoIncrement = require('mongoose-sequence')(mongoose);
|
24
29
|
|
25
30
|
|
26
31
|
|
@@ -38,9 +43,17 @@ var RequestSchema = new Schema({
|
|
38
43
|
type: String,
|
39
44
|
required: true,
|
40
45
|
index: true,
|
41
|
-
// unique: true
|
46
|
+
// unique: true
|
47
|
+
|
42
48
|
},
|
43
49
|
|
50
|
+
// TODO attiva solo condizionalmente per performance
|
51
|
+
ticket_id: {
|
52
|
+
type: Number,
|
53
|
+
// required: true,
|
54
|
+
index: true
|
55
|
+
},
|
56
|
+
// The user who is asking for support through a ticket is the requester. For most businesses that use Tiledesk Support, the requester is a customer, but requesters can also be agents in your Tiledesk Support instance. requester: {
|
44
57
|
requester: {
|
45
58
|
type: Schema.Types.ObjectId,
|
46
59
|
ref: 'project_user',
|
@@ -83,7 +96,6 @@ var RequestSchema = new Schema({
|
|
83
96
|
type: String,
|
84
97
|
required: true
|
85
98
|
},
|
86
|
-
|
87
99
|
status: {
|
88
100
|
type: Number,
|
89
101
|
required: false,
|
@@ -116,6 +128,13 @@ var RequestSchema = new Schema({
|
|
116
128
|
required: false,
|
117
129
|
index: true,
|
118
130
|
},
|
131
|
+
|
132
|
+
priority: {
|
133
|
+
type: String,
|
134
|
+
index: true,
|
135
|
+
default: "medium" //translate on client side
|
136
|
+
},
|
137
|
+
|
119
138
|
|
120
139
|
participantsAgents: {
|
121
140
|
type: Array,
|
@@ -139,7 +158,7 @@ var RequestSchema = new Schema({
|
|
139
158
|
},
|
140
159
|
|
141
160
|
//timestamp when the agent reply the first time to a visitor
|
142
|
-
//
|
161
|
+
// First reply time is the time between ticket creation and the first public comment from an agent, displayed in minutes. Some qualifications include:
|
143
162
|
first_response_at: {
|
144
163
|
type: Date,
|
145
164
|
index: true
|
@@ -254,6 +273,12 @@ var RequestSchema = new Schema({
|
|
254
273
|
|
255
274
|
);
|
256
275
|
|
276
|
+
if (!disableTicketIdSequence) {
|
277
|
+
winston.info("AutoIncrement plugin enabled");
|
278
|
+
RequestSchema.plugin(AutoIncrement, {id: 'ticket_seq', inc_field: 'ticket_id', reference_fields: ['id_project'], disable_hooks:false });
|
279
|
+
}
|
280
|
+
|
281
|
+
|
257
282
|
|
258
283
|
// Backcompatibility
|
259
284
|
RequestSchema.virtual('requester_id').get(function () {
|
@@ -402,6 +427,11 @@ RequestSchema.index({ id_project: 1, participants: 1});
|
|
402
427
|
RequestSchema.index({ id_project: 1, status: 1, updatedAt: -1 }); // query for websocket
|
403
428
|
RequestSchema.index({ id_project: 1, status: 1, preflight:1, updatedAt: -1 }); // query for websocket
|
404
429
|
|
430
|
+
RequestSchema.index({ id_project: 1, preflight:1, updatedAt: -1 }); // used query ws (topic.endsWith('/requests'))
|
431
|
+
|
432
|
+
|
433
|
+
|
434
|
+
|
405
435
|
// cannot index parallel arrays [agents] [participants] {"driv
|
406
436
|
// RequestSchema.index({ id_project: 1, status: 1, preflight:1, participants:1, "agents.id_user":1, updatedAt: -1 }); //NN LO APPLICA
|
407
437
|
|
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.
|
4
|
+
"version": "2.2.4",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -23,82 +23,85 @@
|
|
23
23
|
},
|
24
24
|
"engines": {
|
25
25
|
"node": "12.20.2",
|
26
|
-
"npm": "6.
|
26
|
+
"npm": "6.14.11"
|
27
27
|
},
|
28
28
|
"bin": {
|
29
29
|
"tiledesk-server": "./bin/www"
|
30
30
|
},
|
31
31
|
"optionalDependencies": {
|
32
|
-
"@tiledesk-ent/tiledesk-server-payments": "^1.1.3",
|
33
|
-
"@tiledesk-ent/tiledesk-server-analytics": "^1.1.12",
|
34
32
|
"@tiledesk-ent/tiledesk-server-activities": "^1.1.18",
|
35
|
-
"@tiledesk-ent/tiledesk-server-
|
36
|
-
"@tiledesk-ent/tiledesk-server-
|
37
|
-
"@tiledesk-ent/tiledesk-server-
|
33
|
+
"@tiledesk-ent/tiledesk-server-analytics": "^1.1.12",
|
34
|
+
"@tiledesk-ent/tiledesk-server-cache": "^1.1.10",
|
35
|
+
"@tiledesk-ent/tiledesk-server-canned": "^1.1.1",
|
36
|
+
"@tiledesk-ent/tiledesk-server-departments": "^1.1.2",
|
38
37
|
"@tiledesk-ent/tiledesk-server-dialogflow": "^1.1.6",
|
38
|
+
"@tiledesk-ent/tiledesk-server-groups": "^1.1.2",
|
39
|
+
"@tiledesk-ent/tiledesk-server-jwthistory": "^1.1.9",
|
40
|
+
"@tiledesk-ent/tiledesk-server-mt": "^1.1.6",
|
41
|
+
"@tiledesk-ent/tiledesk-server-payments": "^1.1.5",
|
42
|
+
"@tiledesk-ent/tiledesk-server-queue": "^1.1.10",
|
39
43
|
"@tiledesk-ent/tiledesk-server-request-history": "^1.1.5",
|
44
|
+
"@tiledesk-ent/tiledesk-server-resthook": "^1.1.50",
|
40
45
|
"@tiledesk-ent/tiledesk-server-routing-queue": "^1.1.11",
|
41
|
-
"@tiledesk-ent/tiledesk-server-queue": "^1.1.10",
|
42
|
-
"@tiledesk-ent/tiledesk-server-cache": "^1.1.10",
|
43
|
-
"@tiledesk-ent/tiledesk-server-canned": "^1.1.1",
|
44
46
|
"@tiledesk-ent/tiledesk-server-tags": "^1.1.1",
|
45
|
-
"@tiledesk-ent/tiledesk-server-
|
46
|
-
"@tiledesk-ent/tiledesk-server-departments": "^1.1.2",
|
47
|
-
"@tiledesk-ent/tiledesk-server-mt": "^1.1.5",
|
47
|
+
"@tiledesk-ent/tiledesk-server-triggers": "^1.1.77",
|
48
48
|
"@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1"
|
49
49
|
},
|
50
50
|
"dependencies": {
|
51
51
|
"@tiledesk/tiledesk-chat21-app": "^1.1.4",
|
52
|
-
"@tiledesk/tiledesk-chatbot-util": "^0.8.
|
52
|
+
"@tiledesk/tiledesk-chatbot-util": "^0.8.23",
|
53
53
|
"app-root-path": "^3.0.0",
|
54
54
|
"bcrypt-nodejs": "0.0.3",
|
55
55
|
"body-parser": "^1.19.0",
|
56
56
|
"cookie-parser": "~1.4.5",
|
57
57
|
"cors": "^2.8.5",
|
58
58
|
"csv-express": "^1.2.2",
|
59
|
-
"debug": "
|
59
|
+
"debug": "^4.3.2",
|
60
60
|
"dotenv": "^8.6.0",
|
61
|
-
"email-templates": "^8.0.
|
61
|
+
"email-templates": "^8.0.8",
|
62
62
|
"eventemitter2": "^6.4.4",
|
63
63
|
"express": "~4.17.1",
|
64
|
-
"express-session": "^1.17.
|
65
|
-
"express-validator": "^6.
|
64
|
+
"express-session": "^1.17.2",
|
65
|
+
"express-validator": "^6.12.1",
|
66
66
|
"fast-csv": "^4.3.6",
|
67
67
|
"geoip-lite": "^1.4.2",
|
68
68
|
"handlebars": "^4.7.7",
|
69
|
+
"html-entities": "^2.3.2",
|
69
70
|
"http": "0.0.0",
|
70
|
-
"immutable": "^4.0.0-rc.
|
71
|
+
"immutable": "^4.0.0-rc.14",
|
71
72
|
"jade": "~1.11.0",
|
72
73
|
"jsonwebtoken": "^8.5.1",
|
73
74
|
"lodash": "^4.17.21",
|
74
|
-
"
|
75
|
+
"marked": "^3.0.4",
|
76
|
+
"maskdata": "^1.1.6",
|
75
77
|
"migrate-mongoose": "^4.0.0",
|
76
78
|
"mix-hash": "^1.0.7",
|
77
79
|
"moment": "^2.29.1",
|
78
80
|
"moment-timezone": "^0.5.33",
|
79
|
-
"mongoose": "^5.12
|
81
|
+
"mongoose": "^5.13.12",
|
80
82
|
"mongoose-auto-increment": "^5.0.1",
|
83
|
+
"mongoose-sequence": "^5.3.1",
|
81
84
|
"morgan": "^1.10.0",
|
82
|
-
"multer": "^1.4.
|
85
|
+
"multer": "^1.4.3",
|
83
86
|
"multer-gridfs-storage": "^4.2.0",
|
84
|
-
"nanoid": "^3.1.
|
87
|
+
"nanoid": "^3.1.25",
|
85
88
|
"node-rsa": "^1.1.1",
|
86
89
|
"node-schedule": "^2.0.0",
|
87
|
-
"nodemailer": "^6.6.
|
90
|
+
"nodemailer": "^6.6.3",
|
88
91
|
"passport": "^0.4.1",
|
89
92
|
"passport-http": "^0.3.0",
|
90
93
|
"passport-jwt": "^4.0.0",
|
91
94
|
"promise-events": "^0.2.4",
|
92
95
|
"request": "^2.88.2",
|
93
96
|
"request-promise": "^4.2.6",
|
94
|
-
"retry-request": "^4.
|
97
|
+
"retry-request": "^4.2.2",
|
95
98
|
"serve-favicon": "~2.5.0",
|
96
99
|
"sharp": "^0.27.2",
|
97
|
-
"uniqid": "^5.
|
100
|
+
"uniqid": "^5.4.0",
|
98
101
|
"uuid": "^3.3.3",
|
99
102
|
"winston": "^3.3.3",
|
100
103
|
"winston-mongodb": "^5.0.7",
|
101
|
-
"ws": "^7.4
|
104
|
+
"ws": "^7.5.4"
|
102
105
|
},
|
103
106
|
"devDependencies": {
|
104
107
|
"chai": "^4.3.4",
|
@@ -107,7 +110,7 @@
|
|
107
110
|
"loadtest": "^5.1.2",
|
108
111
|
"mocha": "^8.4.0",
|
109
112
|
"mongodb-runner": "4.8.1",
|
110
|
-
"nodemon": "^2.0.
|
113
|
+
"nodemon": "^2.0.12",
|
111
114
|
"sinon": "^9.2.4",
|
112
115
|
"sinon-mongoose": "^2.3.0"
|
113
116
|
},
|