@tiledesk/tiledesk-server 2.3.70 β†’ 2.3.71

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,9 +1,22 @@
1
1
 
2
2
 
3
- πŸ’₯ TILEDESK SERVER v2.3.69 πŸ’₯
3
+ πŸ’₯ TILEDESK SERVER v2.3.71 πŸ’₯
4
4
  πŸš€ TAGGED AND PUBLISHED ON NPM πŸš€
5
5
  πŸš€ IN PRODUCTION πŸš€
6
- (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.69)
6
+ (https://www.npmjs.com/package/@tiledesk/tiledesk-server/v/2.3.71)
7
+
8
+ # 2.3.71
9
+ - Email service send email direct fit without request_id
10
+ - Removed strong from transcript email template
11
+ - Added for updateWaitingTimeByRequestId the field enable_populate
12
+ - Added cache for message send endpoint
13
+ - Added support to mention and group to mail endpoint
14
+ - Now user role can use /users/search (for smtp)
15
+ - Disable text validation for send message
16
+ - Logo email fix
17
+
18
+ # 2.3.70
19
+ - Update tiledesk-tybot-connector to 0.1.42
7
20
 
8
21
  # 2.3.69
9
22
  - Update tiledesk-dialogflow-connector to 1.8.3
@@ -210,7 +210,12 @@ router.post('/', function (req, res) {
210
210
  }
211
211
 
212
212
 
213
-
213
+ // var auto_close;
214
+
215
+ // // qui projecy nn c'Γ¨ devi leggerlo
216
+ // // if (req.project.attributes.auto_close === false) {
217
+ // // auto_close = 10;
218
+ // // }
214
219
 
215
220
 
216
221
  var new_request = {
@@ -218,7 +223,7 @@ router.post('/', function (req, res) {
218
223
  departmentid:departmentid, sourcePage:sourcePage, language:language, userAgent:client, status:requestStatus, createdBy: undefined,
219
224
  attributes:rAttributes, subject:undefined, preflight:false, channel:undefined, location:undefined,
220
225
  lead:createdLead, requester:project_user
221
-
226
+ // , auto_close: auto_close
222
227
  };
223
228
 
224
229
  winston.debug("new_request", new_request);
@@ -303,8 +308,8 @@ router.post('/', function (req, res) {
303
308
 
304
309
  // TODO it doesn't work for internal requests bacause participanets == message.sender⁄
305
310
  if (request.participants && request.participants.indexOf(message.sender) > -1) { //update waiitng time if write an agent (member of participants)
306
- winston.debug("updateWaitingTimeByRequestId");
307
- return requestService.updateWaitingTimeByRequestId(request.request_id, request.id_project).then(function(upRequest) {
311
+ winston.debug("updateWaitingTimeByRequestId*******");
312
+ return requestService.updateWaitingTimeByRequestId(request.request_id, request.id_project, false).then(function(upRequest) {
308
313
  return res.json(upRequest);
309
314
  });
310
315
  }else {
@@ -486,6 +491,10 @@ router.post('/', function (req, res) {
486
491
 
487
492
  winston.debug("request",request.toObject());
488
493
  // lead_id used. Change it?
494
+
495
+ // winston.info("request.snapshot.lead",request.snapshot.lead);
496
+ // if (request.snapshot.lead && request.snapshot.lead.lead_id==new_member) {
497
+
489
498
  if (request.lead && request.lead.lead_id==new_member) {
490
499
  winston.debug("don't joining request.lead or a lead");
491
500
  return res.status(400).send({success: false, msg: "don't joining request.lead or a lead" });
@@ -612,7 +621,7 @@ router.post('/', function (req, res) {
612
621
  }
613
622
  else if (req.body.event_type == "typing-start") {
614
623
 
615
- winston.debug("event_type","typing-start");
624
+ winston.debug("event_type typing-start");
616
625
 
617
626
  winston.debug("typing-start req.body",req.body);
618
627
 
package/models/faq.js CHANGED
@@ -87,6 +87,10 @@ var FaqSchema = new Schema({
87
87
  form: {
88
88
  type: Object,
89
89
  required: false
90
+ },
91
+ actions: {
92
+ type: Array,
93
+ required: false
90
94
  }
91
95
  }, {
92
96
  timestamps: true,
package/models/message.js CHANGED
@@ -45,13 +45,13 @@ var MessageSchema = new Schema({
45
45
  },
46
46
  text: {
47
47
  type: String,
48
- required: function() {
49
- if (this.type === "text") {
50
- return true;
51
- }else {
52
- return false;
53
- }
54
- }
48
+ // required: function() {
49
+ // if (this.type === "text") {
50
+ // return true;
51
+ // }else {
52
+ // return false;
53
+ // }
54
+ // }
55
55
  },
56
56
  language: { //ISO 639-1 (Two letter codes) https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
57
57
  type: String,
@@ -97,6 +97,8 @@ MessageSchema.index({ recipient: 1, updatedAt:1 });
97
97
  MessageSchema.index({ id_project: 1, recipient:1, updatedAt: 1 });
98
98
  MessageSchema.index({ id_project: 1, "attributes._answerid": 1 });
99
99
 
100
+
101
+
100
102
  // https://docs.mongodb.com/manual/core/index-text/
101
103
  // https://docs.mongodb.com/manual/tutorial/specify-language-for-text-index/
102
104
  // https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
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.3.70",
4
+ "version": "2.3.71",
5
5
  "scripts": {
6
6
  "start": "node ./bin/www",
7
7
  "pretest": "mongodb-runner start",
package/routes/email.js CHANGED
@@ -4,6 +4,9 @@ var router = express.Router();
4
4
 
5
5
  var emailService = require("../services/emailService");
6
6
  var winston = require('../config/winston');
7
+ const recipientEmailUtil = require("../utils/recipientEmailUtil");
8
+
9
+
7
10
 
8
11
  router.get('/templates/:templateid',
9
12
  async (req, res) => {
@@ -29,25 +32,28 @@ router.post('/test/send',
29
32
 
30
33
  });
31
34
 
32
-
35
+ //TODO add cc
33
36
  router.post('/send',
34
37
  async (req, res) => {
35
38
  let to = req.body.to;
36
- winston.info("to: " + to);
39
+ winston.debug("to: " + to);
37
40
 
38
41
  let text = req.body.text;
39
- winston.info("text: " + text);
42
+ winston.debug("text: " + text);
40
43
 
41
44
  let request_id = req.body.request_id;
42
- winston.info("request_id: " + request_id);
45
+ winston.debug("request_id: " + request_id);
43
46
 
44
47
  let subject = req.body.subject;
45
- winston.info("subject: " + subject);
48
+ winston.debug("subject: " + subject);
49
+
50
+ winston.debug("req.project", req.project);
46
51
 
47
- winston.info("req.project", req.project);
52
+ let newto = await recipientEmailUtil.process(to, req.projectid);
53
+ winston.debug("newto: " + newto);
48
54
 
49
55
  //sendEmailDirect(to, text, project, request_id, subject, tokenQueryString, sourcePage)
50
- emailService.sendEmailDirect(to, text, req.project, request_id, subject, undefined, undefined);
56
+ emailService.sendEmailDirect(newto, text, req.project, request_id, subject, undefined, undefined);
51
57
 
52
58
  res.json({"queued": true});
53
59
 
package/routes/faq.js CHANGED
@@ -130,6 +130,9 @@ router.post('/', function (req, res) {
130
130
  if (req.body.enabled != undefined) {
131
131
  newFaq.enabled = req.body.enabled;
132
132
  }
133
+ if (req.body.actions) {
134
+ newFaq.actions = req.body.actions
135
+ }
133
136
 
134
137
  newFaq.save(function (err, savedFaq) {
135
138
  if (err) {
@@ -194,6 +197,9 @@ router.put('/:faqid', function (req, res) {
194
197
  if (req.body.form!=undefined) {
195
198
  update.form = req.body.form;
196
199
  }
200
+ if (req.body.actions != undefined) {
201
+ update.actions = req.body.actions;
202
+ }
197
203
 
198
204
  Faq.findByIdAndUpdate(req.params.faqid, update, { new: true, upsert: true }, function (err, updatedFaq) {
199
205
  if (err) {
package/routes/faq_kb.js CHANGED
@@ -432,7 +432,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), (req, res) =>
432
432
  form: intent.form,
433
433
  enabled: intent.enabled,
434
434
  webhook_enabled: intent.webhook_enabled,
435
- language: intent.language
435
+ language: intent.language,
436
+ actions: intent.actions
436
437
  }
437
438
 
438
439
  // overwrite duplicated intents
@@ -491,7 +492,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), (req, res) =>
491
492
  form: intent.form,
492
493
  enabled: intent.enabled,
493
494
  webhook_enabled: intent.webhook_enabled,
494
- language: intent.language
495
+ language: intent.language,
496
+ actions: intent.actions
495
497
  }
496
498
 
497
499
  // TO DELETE: no used when req.query.create = 'true'
@@ -533,7 +535,7 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), (req, res) =>
533
535
  return res.status(200).send(savedFaq_kb);
534
536
 
535
537
  }).catch((err) => {
536
- console.error("error saving faq_kb: ", err);
538
+ winston.error("error saving faq_kb: ", err);
537
539
  return res.status(500).send(err);
538
540
  })
539
541
 
@@ -587,7 +589,8 @@ router.post('/importjson/:id_faq_kb', upload.single('uploadFile'), (req, res) =>
587
589
  form: intent.form,
588
590
  enabled: intent.enabled,
589
591
  webhook_enabled: intent.webhook_enabled,
590
- language: intent.language
592
+ language: intent.language,
593
+ actions: intent.actions
591
594
  }
592
595
 
593
596
  // overwrite duplicated intents
package/routes/message.js CHANGED
@@ -49,13 +49,17 @@ async (req, res) => {
49
49
  winston.debug('req.params: ', req.params);
50
50
  winston.debug('req.params.request_id: ' + req.params.request_id);
51
51
 
52
- if (!req.body.text && (!req.body.type || req.body.type=="text") ) {
53
- return res.status(422).json({ errors: ["text field is required"] });
54
- }
55
- const errors = validationResult(req);
56
- if (!errors.isEmpty()) {
57
- return res.status(422).json({ errors: errors.array() });
58
- }
52
+ // sponz: 4/01/23 disable it
53
+ // if (!req.body.text && (!req.body.type || req.body.type=="text") ) {
54
+ // return res.status(422).json({ errors: ["text field is required"] });
55
+ // }
56
+ // const errors = validationResult(req);
57
+ // if (!errors.isEmpty()) {
58
+ // return res.status(422).json({ errors: errors.array() });
59
+ // }
60
+
61
+
62
+
59
63
 
60
64
  // TODO se sei agent non puoi cambiare sender
61
65
  // verificare validazione invio immagine senza caption
@@ -247,7 +251,7 @@ async (req, res) => {
247
251
 
248
252
  if (request.participants && request.participants.indexOf(sender) > -1) { //update waiitng time if write an agent (member of participants)
249
253
  winston.debug("updateWaitingTimeByRequestId");
250
- return requestService.updateWaitingTimeByRequestId(request.request_id, request.id_project).then(function(upRequest) {
254
+ return requestService.updateWaitingTimeByRequestId(request.request_id, request.id_project, true).then(function(upRequest) {
251
255
  let message = savedMessage.toJSON();
252
256
  message.request = upRequest;
253
257
 
@@ -257,13 +261,26 @@ async (req, res) => {
257
261
  }else {
258
262
  let message = savedMessage.toJSON();
259
263
 
260
- request.populate('lead')
264
+ winston.debug("getting request for response");
265
+
266
+ let q =
267
+ Request.findOne({request_id: request.request_id, id_project: request.id_project})
268
+ // request
269
+ .populate('lead')
261
270
  .populate('department')
262
271
  .populate('participatingBots')
263
272
  .populate('participatingAgents')
264
273
  // .populate('followers')
265
- .populate({path:'requester',populate:{path:'id_user'}})
266
- .execPopulate(function (err, requestPopulated){
274
+ .populate({path:'requester',populate:{path:'id_user'}});
275
+
276
+
277
+ if (cacheEnabler.request) {
278
+ q.cache(cacheUtil.defaultTTL, request.id_project+":requests:request_id:"+request.request_id)
279
+ winston.debug('request cache enabled for messages');
280
+ }
281
+
282
+ q.exec(function (err, requestPopulated){
283
+ // q.execPopulate(function (err, requestPopulated){
267
284
 
268
285
  if (err) {
269
286
  return winston.error("Error gettting savedRequestPopulated for send Message", err);
@@ -282,7 +299,7 @@ async (req, res) => {
282
299
  message: 'Error creating message endpoint: '+ JSON.stringify(err) + " " + JSON.stringify(req.body) ,
283
300
  label: req.projectid
284
301
  });
285
- // winston.error("Error creating message", err);
302
+ winston.error("Error creating message", err);
286
303
  return res.status(500).send({success: false, msg: 'Error creating message', err:err });
287
304
  });
288
305
 
@@ -375,7 +375,8 @@ router.get('/:project_userid', [passport.authenticate(['basic', 'jwt'], { sessio
375
375
  });
376
376
 
377
377
 
378
- router.get('/users/search', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['subscription'])], async (req, res, next) => {
378
+ router.get('/users/search', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('user', ['subscription'])], async (req, res, next) => { //changed for smtp
379
+ // router.get('/users/search', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['subscription'])], async (req, res, next) => {
379
380
  winston.debug("--> users search ");
380
381
 
381
382
  if (!req.project) {
@@ -124,7 +124,7 @@ class EmailService {
124
124
  }
125
125
  winston.info('EmailService headers: ' + JSON.stringify(this.headers));
126
126
 
127
- this.ccEnabled = false
127
+ this.ccEnabled = false //cc creates loop when you send an email with cc: support@tiledesk.com -> Tiledesk generates an email with ticket id with in cc support@tiledesk.com that loop
128
128
 
129
129
  if (process.env.EMAIL_CC_ENABLED ==="true" || process.env.EMAIL_CC_ENABLED === true ) {
130
130
  this.ccEnabled = true;
@@ -1463,6 +1463,7 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
1463
1463
 
1464
1464
  var replacements = {
1465
1465
  project: project,
1466
+ request_id: request_id,
1466
1467
  seamlessPage: sourcePage,
1467
1468
  msgText: msgText,
1468
1469
  tokenQueryString: tokenQueryString,
@@ -1474,7 +1475,7 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
1474
1475
 
1475
1476
 
1476
1477
  let replyTo;
1477
- if (this.replyEnabled) {
1478
+ if (this.replyEnabled && request_id) {
1478
1479
  replyTo = request_id + this.inboundDomainDomainWithAt;
1479
1480
  }
1480
1481
 
@@ -1730,7 +1731,7 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
1730
1731
  // ok
1731
1732
 
1732
1733
  async sendRequestTranscript(to, messages, request, project) {
1733
-
1734
+ winston.debug("sendRequestTranscript: "+to);
1734
1735
 
1735
1736
  //if the request came from rabbit mq?
1736
1737
  if (request.toJSON) {
@@ -17,7 +17,7 @@ class MessageService {
17
17
  if (!id) {
18
18
  return this.create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes, type, metadata, language);
19
19
  } else {
20
- winston.debug("Message changeStatus", status);
20
+ winston.debug("Message upsert changeStatus:"+ status);
21
21
  return this.changeStatus(id, status);
22
22
  }
23
23
  }
@@ -176,6 +176,7 @@ class MessageService {
176
176
  // attento giΓ  scatta su chat21handler
177
177
 
178
178
  changeStatus(message_id, newstatus) {
179
+ winston.debug("changeStatus. "+message_id + " "+ newstatus);
179
180
  var that = this;
180
181
  return new Promise(function (resolve, reject) {
181
182
  // winston.debug("request_id", request_id);
@@ -970,19 +970,25 @@ class RequestService {
970
970
 
971
971
  }
972
972
 
973
- updateWaitingTimeByRequestId(request_id, id_project) {
973
+ updateWaitingTimeByRequestId(request_id, id_project, enable_populate) {
974
974
 
975
975
  return new Promise(function (resolve, reject) {
976
976
  // winston.debug("request_id", request_id);
977
977
  // winston.debug("newstatus", newstatus);
978
978
 
979
979
  let q = Request
980
- .findOne({request_id: request_id, id_project: id_project})
981
- .populate('lead')
982
- .populate('department')
983
- .populate('participatingBots')
984
- .populate('participatingAgents')
985
- .populate({path:'requester',populate:{path:'id_user'}});
980
+ .findOne({request_id: request_id, id_project: id_project});
981
+
982
+ if (enable_populate==true) {
983
+ winston.debug("updateWaitingTimeByRequestId enable_populate");
984
+
985
+ q.populate('lead')
986
+ .populate('department')
987
+ .populate('participatingBots')
988
+ .populate('participatingAgents')
989
+ .populate({path:'requester',populate:{path:'id_user'}});
990
+ }
991
+
986
992
 
987
993
  // if (cacheEnabler.request) { //attention this cache is not usable bacause cacheoose don't support populate without .lean.. so if cached populated field is not returned with cacheoose, updateWaitingTime is only used in chat21webhook but i thik it is important for messages route
988
994
  // q.cache(cacheUtil.defaultTTL, id_project+":requests:request_id:"+request_id) //request_cache
@@ -11,9 +11,19 @@
11
11
  img {
12
12
  max-width: 100%;
13
13
  margin-left:16px;
14
- margin-bottom:16px;
15
14
  text-align:center !important;
16
15
  }
16
+ img.CToWUd {
17
+ margin-bottom: 16px;
18
+ max-width: 200px !important;
19
+ width: 200px !important;
20
+ min-width: 200px !important;
21
+ outline: none;
22
+ text-decoration: none;
23
+ border: none;
24
+ height: auto;
25
+ margin-left: 0px;
26
+ }
17
27
  body {
18
28
  -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em;
19
29
  }
@@ -82,8 +92,7 @@
82
92
 
83
93
  <div style="text-align:center">
84
94
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <!--<img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd">-->
86
- <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
95
+ <img src="https://tiledesk.com/wp-content/uploads/2023/01/tiledesk_log_email_200.png" class="CToWUd">
87
96
  </a>
88
97
  </div>
89
98
  </tr>
@@ -103,7 +112,7 @@
103
112
  <table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
104
113
 
105
114
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
106
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
115
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
107
116
  {{#ifEquals message.type "text"}}
108
117
  <div style="white-space: pre-wrap;">{{{msgText}}}</div>
109
118
  {{/ifEquals}}
@@ -121,26 +130,26 @@
121
130
 
122
131
 
123
132
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
124
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
133
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
125
134
  Project name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{project.name}}</strong>
126
135
  </td>
127
136
  </tr>
128
137
 
129
138
 
130
139
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
131
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
140
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
132
141
  Department name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.department.name}}</strong>
133
142
  </td>
134
143
  </tr>
135
144
 
136
145
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
137
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
146
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
138
147
  From email : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.lead.email}}</strong>
139
148
  </td>
140
149
  </tr>
141
150
 
142
151
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
143
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
152
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
144
153
  Contact name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.lead.fullname}}</strong>
145
154
  </td>
146
155
  </tr>
@@ -152,7 +161,7 @@
152
161
  </tr> -->
153
162
 
154
163
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
155
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
164
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
156
165
  Channel : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
157
166
  {{#ifEquals request.channel.name "chat21"}}
158
167
  Chat
@@ -164,7 +173,7 @@
164
173
  </tr>
165
174
 
166
175
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
167
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
176
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
168
177
  <a href="{{baseScope.baseUrl}}/#/project/{{request.id_project}}/wsrequest/{{request.request_id}}/messages">Open the dashboard</a>.
169
178
 
170
179
  </td>
@@ -175,7 +184,7 @@
175
184
 
176
185
 
177
186
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
178
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
187
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
179
188
  </td>
180
189
  </tr>
181
190
  </table>
@@ -185,7 +194,7 @@
185
194
  <div class="footer" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;">
186
195
  <table width="100%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
187
196
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
188
- <td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top">
197
+ <td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0;" align="center" valign="top">
189
198
  <span><a href="http://www.tiledesk.com" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;" > Tiledesk.com </a></span>
190
199
  <br><span><a href="%unsubscribe_url%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;">Unsubscribe</a></span>
191
200
  </td>
@@ -11,9 +11,19 @@
11
11
  img {
12
12
  max-width: 100%;
13
13
  margin-left:16px;
14
- margin-bottom:16px;
15
14
  text-align:center !important;
16
15
  }
16
+ img.CToWUd {
17
+ margin-bottom: 16px;
18
+ max-width: 200px !important;
19
+ width: 200px !important;
20
+ min-width: 200px !important;
21
+ outline: none;
22
+ text-decoration: none;
23
+ border: none;
24
+ height: auto;
25
+ margin-left: 0px;
26
+ }
17
27
  body {
18
28
  -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em;
19
29
  }
@@ -82,8 +92,7 @@
82
92
 
83
93
  <div style="text-align:center">
84
94
  <a href="http://www.tiledesk.com" style="color:#2daae1;font-weight:bold;text-decoration:none;word-break:break-word" target="_blank">
85
- <!-- <img src="https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v2.png" style="width:10%;outline:none;text-decoration:none;border:none;min-height:36px" class="CToWUd"> -->
86
- <img src="https://tiledesk.com/wp-content/uploads/2022/09/tiledeesk_log_email.png" style="max-width:200px;outline:none;text-decoration:none;border:none;height:auto;margin-left:0px;" class="CToWUd">
95
+ <img src="https://tiledesk.com/wp-content/uploads/2023/01/tiledesk_log_email_200.png" class="CToWUd">
87
96
  </a>
88
97
  </div>
89
98
  </tr>
@@ -103,7 +112,7 @@
103
112
  <table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
104
113
 
105
114
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
106
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
115
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
107
116
  {{{msgText}}}
108
117
  </td>
109
118
  </tr>
@@ -111,26 +120,26 @@
111
120
 
112
121
 
113
122
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
114
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
123
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
115
124
  Project name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{project.name}}</strong>
116
125
  </td>
117
126
  </tr>
118
127
 
119
128
 
120
129
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
121
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
130
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
122
131
  Department name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.department.name}}</strong>
123
132
  </td>
124
133
  </tr>
125
134
 
126
135
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
127
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
136
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
128
137
  Source page : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.sourcePage}}</strong>
129
138
  </td>
130
139
  </tr>
131
140
 
132
141
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
133
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
142
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
134
143
  Contact name : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">{{request.lead.fullname}}</strong>
135
144
  </td>
136
145
  </tr>
@@ -144,7 +153,7 @@
144
153
 
145
154
 
146
155
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
147
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
156
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
148
157
  Channel : <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
149
158
 
150
159
  {{#ifEquals request.channel.name "chat21"}}
@@ -159,7 +168,7 @@
159
168
  </tr>
160
169
 
161
170
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
162
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
171
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
163
172
  <a href="{{baseScope.baseUrl}}/#/project/{{request.id_project}}/wsrequest/{{request.request_id}}/messages">Open the dashboard</a>.
164
173
  </td>
165
174
  </tr>
@@ -169,7 +178,7 @@
169
178
 
170
179
 
171
180
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
172
- <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top">
181
+ <td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top">
173
182
  </td>
174
183
  </tr>
175
184
  </table>
@@ -179,7 +188,7 @@
179
188
  <div class="footer" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;">
180
189
  <table width="100%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
181
190
  <tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">
182
- <td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top">
191
+ <td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0;" align="center" valign="top">
183
192
  <span><a href="http://www.tiledesk.com" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;" > Tiledesk.com </a></span>
184
193
  <br><span><a href="%unsubscribe_url%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;">Unsubscribe</a></span>
185
194
  </td>