@tiledesk/tiledesk-server 2.2.6 → 2.2.13
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/CHANGELOG.md +22 -4
- package/app.js +3 -1
- package/channels/chat21/nativeauth.js +1 -0
- package/package.json +3 -3
- package/routes/message.js +40 -13
- package/services/emailService.js +38 -38
- package/services/messageService.js +1 -1
- package/test/messageRoute.js +59 -0
- package/test/requestRoute.js +0 -1
- package/websocket/webSocketServer.js +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,7 +1,23 @@
|
|
1
|
-
# 2.2.
|
1
|
+
# 2.2.13
|
2
|
+
- Send message validation with empty text
|
3
|
+
|
4
|
+
# 2.2.12
|
5
|
+
- Add /bot endpoint
|
6
|
+
- Bot and subscription can manage bots
|
7
|
+
|
8
|
+
# 2.2.11
|
9
|
+
- Logfix
|
10
|
+
|
11
|
+
# 2.2.10
|
12
|
+
- Native mqtt auth fix
|
13
|
+
|
14
|
+
# 2.2.8
|
15
|
+
- Public trigger module
|
16
|
+
|
17
|
+
# 2.2.6
|
2
18
|
- Quota license fix
|
3
19
|
|
4
|
-
# 2.2.4
|
20
|
+
# 2.2.4 -> PROD
|
5
21
|
- email invitation fix
|
6
22
|
|
7
23
|
# 2.2.3
|
@@ -92,8 +108,10 @@
|
|
92
108
|
- Added email notification for new message and new request for email and form channel (ticket)
|
93
109
|
- Added microLanguageTransformationInterceptor enabled when message.attributes.microlanguage==true
|
94
110
|
|
111
|
+
# 2.1.40.35
|
112
|
+
- Quota license fix
|
95
113
|
|
96
|
-
# 2.1.40.34
|
114
|
+
# 2.1.40.34
|
97
115
|
- logfix
|
98
116
|
|
99
117
|
# 2.1.40.33
|
@@ -106,7 +124,7 @@
|
|
106
124
|
# 2.1.40.31
|
107
125
|
- Concierge bot fix to reroute only for temp conversation without a bot. Race condition issue when you try manually route a request for example inside a chatbot webhook
|
108
126
|
|
109
|
-
# 2.1.40.30
|
127
|
+
# 2.1.40.30
|
110
128
|
- logfix
|
111
129
|
|
112
130
|
# 2.1.40.29
|
package/app.js
CHANGED
@@ -339,7 +339,9 @@ app.use('/:projectid/faq', [passport.authenticate(['basic', 'jwt'], { session: f
|
|
339
339
|
//Deprecated??
|
340
340
|
app.use('/:projectid/faqpub', faqpub);
|
341
341
|
|
342
|
-
|
342
|
+
//deprecated
|
343
|
+
app.use('/:projectid/faq_kb', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], faq_kb);
|
344
|
+
app.use('/:projectid/bot', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], faq_kb);
|
343
345
|
|
344
346
|
|
345
347
|
|
@@ -42,6 +42,7 @@ router.post('/createCustomToken', function (req, res) {
|
|
42
42
|
const scope = [
|
43
43
|
`rabbitmq.read:*/*/apps.${appid}.users.${userid}.*`,
|
44
44
|
`rabbitmq.write:*/*/apps.${appid}.users.${userid}.*`,
|
45
|
+
`rabbitmq.write:*/*/apps.${appid}.outgoing.users.${userid}.*`,
|
45
46
|
'rabbitmq.configure:*/*/*'
|
46
47
|
]
|
47
48
|
|
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.2.
|
4
|
+
"version": "2.2.13",
|
5
5
|
"scripts": {
|
6
6
|
"start": "node ./bin/www",
|
7
7
|
"pretest": "mongodb-runner start",
|
@@ -41,10 +41,10 @@
|
|
41
41
|
"@tiledesk-ent/tiledesk-server-payments": "^1.1.5",
|
42
42
|
"@tiledesk-ent/tiledesk-server-queue": "^1.1.10",
|
43
43
|
"@tiledesk-ent/tiledesk-server-request-history": "^1.1.5",
|
44
|
-
"@tiledesk-ent/tiledesk-server-resthook": "^1.1.
|
44
|
+
"@tiledesk-ent/tiledesk-server-resthook": "^1.1.51",
|
45
45
|
"@tiledesk-ent/tiledesk-server-routing-queue": "^1.1.11",
|
46
46
|
"@tiledesk-ent/tiledesk-server-tags": "^1.1.1",
|
47
|
-
"@tiledesk-ent/tiledesk-server-triggers": "^1.1.
|
47
|
+
"@tiledesk-ent/tiledesk-server-triggers": "^1.1.79",
|
48
48
|
"@tiledesk-ent/tiledesk-server-visitorcounter": "^1.1.1"
|
49
49
|
},
|
50
50
|
"dependencies": {
|
package/routes/message.js
CHANGED
@@ -26,13 +26,21 @@ csv.separator = ';';
|
|
26
26
|
// var roleChecker = require('../middleware/has-role');
|
27
27
|
|
28
28
|
router.post('/',
|
29
|
-
// se type image text può essere empty validare meglio.
|
30
29
|
// [
|
31
|
-
// check('text').
|
30
|
+
// check('text').custom(value => {
|
31
|
+
// console.log("value",value);
|
32
|
+
// console.log("req.body.type",this.type);
|
33
|
+
// if (this.type === "text" && (value == undefined || value == "" ) ) {
|
34
|
+
// // if (this.type === "text" && ( (!value) || (value === "") ) ) {
|
35
|
+
// console.log("sono qui ",value);
|
36
|
+
// return Promise.reject('Text field is required for text message');
|
37
|
+
// }else {
|
38
|
+
// console.log("sono qua ",value);
|
39
|
+
// return Promise.resolve();
|
40
|
+
// }
|
41
|
+
// })
|
32
42
|
// ],
|
33
|
-
//
|
34
43
|
async (req, res) => {
|
35
|
-
// function(req, res) {
|
36
44
|
|
37
45
|
winston.debug('req.body post message', req.body);
|
38
46
|
winston.debug('req.params: ', req.params);
|
@@ -95,7 +103,7 @@ async (req, res) => {
|
|
95
103
|
winston.debug("queryProjectUser", queryProjectUser);
|
96
104
|
|
97
105
|
project_user = await Project_user.findOne(queryProjectUser).populate({path:'id_user', select:{'firstname':1, 'lastname':1, 'email':1}})
|
98
|
-
winston.
|
106
|
+
winston.info("project_user", project_user);
|
99
107
|
|
100
108
|
if (!project_user) {
|
101
109
|
return res.status(403).send({success: false, msg: 'Unauthorized. Project_user not found with user id : '+ sender });
|
@@ -130,14 +138,25 @@ async (req, res) => {
|
|
130
138
|
return leadService.createIfNotExistsWithLeadId(sender || req.user._id, fullname, email, req.projectid, null, req.body.attributes || req.user.attributes)
|
131
139
|
.then(function(createdLead) {
|
132
140
|
|
133
|
-
|
134
|
-
|
141
|
+
|
135
142
|
|
136
|
-
var new_request = {
|
137
|
-
request_id: req.params.request_id,
|
138
|
-
|
139
|
-
|
140
|
-
|
143
|
+
var new_request = {
|
144
|
+
request_id: req.params.request_id,
|
145
|
+
project_user_id: project_user._id,
|
146
|
+
lead_id: createdLead._id,
|
147
|
+
id_project:req.projectid,
|
148
|
+
first_text: req.body.text,
|
149
|
+
departmentid: req.body.departmentid,
|
150
|
+
sourcePage:req.body.sourcePage,
|
151
|
+
language: req.body.language,
|
152
|
+
userAgent:req.body.userAgent,
|
153
|
+
status:null,
|
154
|
+
createdBy: req.user._id,
|
155
|
+
attributes: req.body.attributes,
|
156
|
+
subject: req.body.subject,
|
157
|
+
preflight:undefined,
|
158
|
+
channel: req.body.channel,
|
159
|
+
location: req.body.location,
|
141
160
|
participants: req.body.participants,
|
142
161
|
lead: createdLead, requester: project_user,
|
143
162
|
priority: req.body.priority
|
@@ -183,7 +202,15 @@ async (req, res) => {
|
|
183
202
|
return res.json(message);
|
184
203
|
});
|
185
204
|
});
|
186
|
-
})
|
205
|
+
}).catch(function(err){ //pubblica questo
|
206
|
+
winston.log({
|
207
|
+
level: 'error',
|
208
|
+
message: 'Error creating request: '+ JSON.stringify(err) + " " + JSON.stringify(req.body) ,
|
209
|
+
label: req.projectid
|
210
|
+
});
|
211
|
+
// winston.error("Error creating message", err);
|
212
|
+
return res.status(500).send({success: false, msg: 'Error creating request', err:err });
|
213
|
+
});
|
187
214
|
|
188
215
|
});
|
189
216
|
|
package/services/emailService.js
CHANGED
@@ -519,13 +519,13 @@ class EmailService {
|
|
519
519
|
|
520
520
|
let inReplyTo;
|
521
521
|
let references;
|
522
|
-
if (message.attributes) {
|
523
|
-
if (message.attributes.email_messageId) {
|
524
|
-
inReplyTo = message.attributes.email_messageId;
|
525
|
-
|
526
|
-
|
527
|
-
references = message.attributes.email_references;
|
528
|
-
|
522
|
+
if (message.request.attributes) {
|
523
|
+
if (message.request.attributes.email_messageId) {
|
524
|
+
inReplyTo = message.request.attributes.email_messageId;
|
525
|
+
}
|
526
|
+
if (message.request.attributes.email_references) {
|
527
|
+
references = message.request.attributes.email_references;
|
528
|
+
}
|
529
529
|
}
|
530
530
|
winston.verbose("sendNewAssignedAgentMessageEmailNotification email inReplyTo: "+ inReplyTo);
|
531
531
|
winston.verbose("sendNewAssignedAgentMessageEmailNotification email references: "+ references);
|
@@ -804,13 +804,13 @@ class EmailService {
|
|
804
804
|
|
805
805
|
let inReplyTo;
|
806
806
|
let references;
|
807
|
-
if (message.attributes) {
|
808
|
-
if (message.attributes.email_messageId) {
|
809
|
-
inReplyTo = message.attributes.email_messageId;
|
810
|
-
|
811
|
-
|
812
|
-
references = message.attributes.email_references;
|
813
|
-
|
807
|
+
if (message.request.attributes) {
|
808
|
+
if (message.request.attributes.email_messageId) {
|
809
|
+
inReplyTo = message.request.attributes.email_messageId;
|
810
|
+
}
|
811
|
+
if (message.request.attributes.email_references) {
|
812
|
+
references = message.request.attributes.email_references;
|
813
|
+
}
|
814
814
|
}
|
815
815
|
winston.verbose("sendNewPooledMessageEmailNotification email inReplyTo: "+ inReplyTo);
|
816
816
|
winston.verbose("sendNewPooledMessageEmailNotification email references: "+ references);
|
@@ -947,13 +947,13 @@ class EmailService {
|
|
947
947
|
|
948
948
|
let inReplyTo;
|
949
949
|
let references;
|
950
|
-
if (message.attributes) {
|
951
|
-
if (message.attributes.email_messageId) {
|
952
|
-
inReplyTo = message.attributes.email_messageId;
|
953
|
-
|
954
|
-
|
955
|
-
references = message.attributes.email_references;
|
956
|
-
|
950
|
+
if (message.request.attributes) {
|
951
|
+
if (message.request.attributes.email_messageId) {
|
952
|
+
inReplyTo = message.request.attributes.email_messageId;
|
953
|
+
}
|
954
|
+
if (message.attributes.email_references) {
|
955
|
+
references = message.request.attributes.email_references;
|
956
|
+
}
|
957
957
|
}
|
958
958
|
winston.verbose("email inReplyTo: "+ inReplyTo);
|
959
959
|
winston.verbose("email references: "+ references);
|
@@ -1086,24 +1086,24 @@ class EmailService {
|
|
1086
1086
|
let cc;
|
1087
1087
|
let ccString;
|
1088
1088
|
|
1089
|
-
if (message.attributes) {
|
1089
|
+
if (message.request && message.request.attributes) {
|
1090
|
+
winston.debug("email message.request.attributes: ", message.request.attributes);
|
1090
1091
|
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
}
|
1092
|
+
if (message.request.attributes.email_messageId) {
|
1093
|
+
inReplyTo = message.request.attributes.email_messageId;
|
1094
|
+
}
|
1095
|
+
if (message.request.attributes.email_references) {
|
1096
|
+
references = message.request.attributes.email_references;
|
1097
|
+
}
|
1098
|
+
|
1099
|
+
if (message.request.attributes.email_cc) {
|
1100
|
+
cc = message.request.attributes.email_cc;
|
1101
|
+
}
|
1102
|
+
winston.debug("email message.request.attributes.email_ccStr: "+ message.request.attributes.email_ccStr);
|
1103
|
+
if (message.request.attributes.email_ccStr!=undefined) {
|
1104
|
+
ccString = message.request.attributes.email_ccStr;
|
1105
|
+
winston.debug("email set ccString");
|
1106
|
+
}
|
1107
1107
|
}
|
1108
1108
|
winston.verbose("email inReplyTo: "+ inReplyTo);
|
1109
1109
|
winston.verbose("email references: "+ references);
|
@@ -121,7 +121,7 @@ class MessageService {
|
|
121
121
|
|
122
122
|
return newMessage.save(function(err, savedMessage) {
|
123
123
|
if (err) {
|
124
|
-
winston.error(err);
|
124
|
+
winston.error("Error savig the message", {err:err, message: message, newMessage: newMessage});
|
125
125
|
return reject(err);
|
126
126
|
}
|
127
127
|
winston.verbose("Message created", savedMessage.toObject());
|
package/test/messageRoute.js
CHANGED
@@ -91,7 +91,66 @@ describe('MessageRoute', () => {
|
|
91
91
|
});
|
92
92
|
|
93
93
|
|
94
|
+
// mocha test/messageRoute.js --grep 'createSimpleEmptyText'
|
94
95
|
|
96
|
+
it('createSimpleEmptyText', function (done) {
|
97
|
+
// this.timeout(10000);
|
98
|
+
|
99
|
+
var email = "test-message-create-" + Date.now() + "@email.com";
|
100
|
+
var pwd = "pwd";
|
101
|
+
|
102
|
+
userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
|
103
|
+
projectService.createAndReturnProjectAndProjectUser("message-create", savedUser._id).then(function(savedProjectAndPU) {
|
104
|
+
|
105
|
+
var savedProject = savedProjectAndPU.project;
|
106
|
+
|
107
|
+
chai.request(server)
|
108
|
+
.post('/'+ savedProject._id + '/requests/req123/messages')
|
109
|
+
.auth(email, pwd)
|
110
|
+
.set('content-type', 'application/json')
|
111
|
+
.send({"text":""})
|
112
|
+
.end(function(err, res) {
|
113
|
+
//console.log("res", res);
|
114
|
+
console.log("res.body", res.body);
|
115
|
+
res.should.have.status(500);
|
116
|
+
|
117
|
+
done();
|
118
|
+
});
|
119
|
+
});
|
120
|
+
});
|
121
|
+
});
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
// mocha test/messageRoute.js --grep 'createSimpleNoText'
|
127
|
+
|
128
|
+
it('createSimpleNoText', function (done) {
|
129
|
+
// this.timeout(10000);
|
130
|
+
|
131
|
+
var email = "test-message-create-" + Date.now() + "@email.com";
|
132
|
+
var pwd = "pwd";
|
133
|
+
|
134
|
+
userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
|
135
|
+
projectService.createAndReturnProjectAndProjectUser("message-create", savedUser._id).then(function(savedProjectAndPU) {
|
136
|
+
|
137
|
+
var savedProject = savedProjectAndPU.project;
|
138
|
+
|
139
|
+
chai.request(server)
|
140
|
+
.post('/'+ savedProject._id + '/requests/req123/messages')
|
141
|
+
.auth(email, pwd)
|
142
|
+
.set('content-type', 'application/json')
|
143
|
+
.send({})
|
144
|
+
.end(function(err, res) {
|
145
|
+
//console.log("res", res);
|
146
|
+
console.log("res.body", res.body);
|
147
|
+
res.should.have.status(500);
|
148
|
+
|
149
|
+
done();
|
150
|
+
});
|
151
|
+
});
|
152
|
+
});
|
153
|
+
});
|
95
154
|
|
96
155
|
|
97
156
|
|
package/test/requestRoute.js
CHANGED
@@ -710,7 +710,7 @@ class WebSocketServer {
|
|
710
710
|
winston.debug('projectuserUpdateKey: ' + projectuserUpdateKey);
|
711
711
|
authEvent.on(projectuserUpdateKey,function(data) {
|
712
712
|
var pu = data.updatedProject_userPopulated;
|
713
|
-
winston.debug('pu', pu);
|
713
|
+
winston.debug('ws pu', pu);
|
714
714
|
|
715
715
|
//TODO pubSubServer.handlePublishMessage ('/'+pu.id_project+'/project_users/', pu, undefined, true, "UPDATE");
|
716
716
|
|