@tiledesk/tiledesk-server 2.2.6 → 2.2.13
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|