@tiledesk/tiledesk-server 2.2.8 → 2.2.14
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 +15 -2
- 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/messageService.js +1 -1
- package/test/messageRoute.js +59 -0
- package/websocket/webSocketServer.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
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
|
+
|
|
1
14
|
# 2.2.8
|
|
2
15
|
- Public trigger module
|
|
3
16
|
|
|
4
17
|
# 2.2.6
|
|
5
18
|
- Quota license fix
|
|
6
19
|
|
|
7
|
-
# 2.2.4
|
|
20
|
+
# 2.2.4 -> PROD
|
|
8
21
|
- email invitation fix
|
|
9
22
|
|
|
10
23
|
# 2.2.3
|
|
@@ -111,7 +124,7 @@
|
|
|
111
124
|
# 2.1.40.31
|
|
112
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
|
|
113
126
|
|
|
114
|
-
# 2.1.40.30
|
|
127
|
+
# 2.1.40.30
|
|
115
128
|
- logfix
|
|
116
129
|
|
|
117
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.14",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"start": "node ./bin/www",
|
|
7
7
|
"pretest": "mongodb-runner start",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"@tiledesk-ent/tiledesk-server-jwthistory": "^1.1.9",
|
|
40
40
|
"@tiledesk-ent/tiledesk-server-mt": "^1.1.7",
|
|
41
41
|
"@tiledesk-ent/tiledesk-server-payments": "^1.1.5",
|
|
42
|
-
"@tiledesk-ent/tiledesk-server-queue": "^1.1.
|
|
42
|
+
"@tiledesk-ent/tiledesk-server-queue": "^1.1.11",
|
|
43
43
|
"@tiledesk-ent/tiledesk-server-request-history": "^1.1.5",
|
|
44
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
|
|
|
@@ -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
|
|
|
@@ -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
|
|