@tiledesk/tiledesk-server 2.1.40 → 2.2.3
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 +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 +195 -1
- package/Dockerfile +1 -1
- package/Dockerfile-en +1 -1
- package/README.md +5 -7
- package/app.js +12 -1
- package/channels/channelManager.js +1 -1
- package/channels/chat21/chat21Contact.js +34 -8
- package/channels/chat21/chat21Handler.js +48 -5
- package/channels/chat21/chat21WebHook.js +34 -9
- package/channels/chat21/nativeauth.js +2 -2
- package/channels/chat21/package-lock.json +3013 -0
- package/config/email.js +2 -0
- 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/migrations/1619185894304-request-remove-duplicated-request-by-request_id--autosync.js +67 -0
- 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 +9 -3
- package/models/request.js +33 -3
- package/package.json +31 -28
- package/pubmodules/emailNotification/requestNotification.js +483 -56
- package/pubmodules/messageActions/messageActionsInterceptor.js +20 -7
- package/pubmodules/messageTransformer/index.js +5 -1
- package/pubmodules/messageTransformer/messageTransformerInterceptor.js +4 -2
- package/pubmodules/messageTransformer/microLanguageAttributesTransformerInterceptor.js +67 -0
- package/pubmodules/messageTransformer/microLanguageTransformerInterceptor.js +67 -0
- package/pubmodules/pubModulesManager.js +66 -13
- package/pubmodules/rules/conciergeBot.js +81 -49
- package/routes/auth.js +46 -11
- package/routes/campaigns.js +117 -25
- package/routes/department.js +2 -2
- package/routes/faq.js +19 -0
- package/routes/faq_kb.js +13 -4
- package/routes/faqpub.js +1 -1
- package/routes/files.js +17 -2
- 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 +1170 -239
- package/services/faqBotHandler.js +176 -61
- package/services/faqBotSupport.js +182 -117
- package/services/faqService.js +18 -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 +191 -0
- package/template/email/ticket.txt +11 -0
- 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 +39 -2
- 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/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.3",
|
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
|
},
|