@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 CHANGED
@@ -1,7 +1,23 @@
1
- # 2.2.5
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 -> PROD
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 -> PROD
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
- 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.6",
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.50",
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.77",
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
 
@@ -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
- if (message.attributes.email_references) {
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
- if (message.attributes.email_references) {
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
- if (message.attributes.email_references) {
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
- winston.verbose("email message.attributes: ", message.attributes);
1092
- // per email touching manca
1093
- if (message.attributes.email_messageId) {
1094
- inReplyTo = message.attributes.email_messageId;
1095
- }
1096
- if (message.attributes.email_references) {
1097
- references = message.attributes.email_references;
1098
- }
1099
- if (message.attributes.email_cc) {
1100
- cc = message.attributes.email_cc;
1101
- }
1102
- winston.verbose("email message.attributes.email_ccStr: "+ message.attributes.email_ccStr);
1103
- if (message.attributes.email_ccStr!=undefined) {
1104
- ccString = message.attributes.email_ccStr;
1105
- winston.verbose("email set ccString");
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());
@@ -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
 
@@ -205,7 +205,6 @@ it('createUpperCaseEmail', function (done) {
205
205
  });
206
206
  // mocha test/requestRoute.js --grep 'getbyidWithPartecipatingBots'
207
207
 
208
-
209
208
  it('getbyidWithPartecipatingBots', function (done) {
210
209
  // this.timeout(10000);
211
210
 
@@ -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