@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 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 -> PROD
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
- app.use('/:projectid/faq_kb', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRole('agent')], faq_kb);
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.8",
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.10",
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.78",
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').notEmpty(),
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.debug("queryProjectUser", queryProjectUser);
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 = { // problema
137
- request_id: req.params.request_id, project_user_id: project_user._id, lead_id: createdLead._id, id_project:req.projectid,
138
- first_text: req.body.text, departmentid: req.body.departmentid, sourcePage:req.body.sourcePage,
139
- language: req.body.language, userAgent:req.body.userAgent, status:null, createdBy: req.user._id,
140
- attributes: req.body.attributes, subject: req.body.subject, preflight:undefined, channel: req.body.channel, location: req.body.location,
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());
@@ -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