@tiledesk/tiledesk-server 2.4.100 → 2.4.101
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 +4 -0
- package/app.js +45 -9
- package/event/emailEvent.js +13 -0
- package/event/integrationEvent.js +13 -0
- package/models/integrations.js +23 -0
- package/package.json +1 -1
- package/pubmodules/cache/mongoose-cachegoose-fn.js +12 -0
- package/pubmodules/emailNotification/requestNotification.js +1 -0
- package/routes/auth.js +14 -5
- package/routes/email.js +4 -2
- package/routes/faq.js +1 -0
- package/routes/integration.js +199 -0
- package/routes/kbsettings.js +8 -76
- package/routes/openai.js +52 -14
- package/routes/project.js +3 -4
- package/routes/quotes.js +52 -0
- package/routes/request.js +515 -499
- package/routes/users.js +5 -1
- package/services/QuoteManager.js +317 -0
- package/services/cacheEnabler.js +5 -0
- package/services/emailService.js +610 -586
- package/services/messageService.js +283 -202
- package/services/openaiService.js +12 -12
- package/services/requestService.js +1764 -1421
- package/services/trainingService.js +6 -2
- package/test/messageService.js +154 -92
- package/test/mock/MockTdCache.js +46 -0
- package/test/mock/emailMock.js +9 -0
- package/test/mock/messageMock.js +46 -0
- package/test/mock/projectMock.js +171 -0
- package/test/mock/requestMock.js +127 -0
- package/test/quoteManager.js +282 -0
- package/test/requestRoute.js +1 -1
- package/test/requestService.js +1196 -1079
- package/utils/TdCache.js +253 -0
package/services/emailService.js
CHANGED
@@ -7,8 +7,9 @@ var winston = require('../config/winston');
|
|
7
7
|
var marked = require('marked');
|
8
8
|
var handlebars = require('handlebars');
|
9
9
|
var encode = require('html-entities').encode;
|
10
|
+
const emailEvent = require('../event/emailEvent');
|
10
11
|
|
11
|
-
handlebars.registerHelper('ifEquals', function(arg1, arg2, options) {
|
12
|
+
handlebars.registerHelper('ifEquals', function (arg1, arg2, options) {
|
12
13
|
return (arg1 == arg2) ? options.fn(this) : options.inverse(this);
|
13
14
|
});
|
14
15
|
|
@@ -33,14 +34,14 @@ const MaskData = require("maskdata");
|
|
33
34
|
|
34
35
|
const maskOptions = {
|
35
36
|
// Character to mask the data. default value is '*'
|
36
|
-
maskWith
|
37
|
+
maskWith: "*",
|
37
38
|
// If the starting 'n' digits needs to be unmasked
|
38
39
|
// Default value is 4
|
39
|
-
unmaskedStartDigits
|
40
|
+
unmaskedStartDigits: 3, //Should be positive Integer
|
40
41
|
//If the ending 'n' digits needs to be unmasked
|
41
42
|
// Default value is 1
|
42
|
-
unmaskedEndDigits
|
43
|
-
|
43
|
+
unmaskedEndDigits: 3 // Should be positive Integer
|
44
|
+
};
|
44
45
|
|
45
46
|
// const X_REQUEST_ID_HEADER_KEY = "X-TILEDESK-REQUEST-ID";
|
46
47
|
// const X_TICKET_ID_HEADER_KEY = "X-TILEDESK-TICKET-ID";
|
@@ -55,46 +56,46 @@ class EmailService {
|
|
55
56
|
constructor() {
|
56
57
|
|
57
58
|
this.enabled = false;
|
58
|
-
if (process.env.EMAIL_ENABLED ==="true" || process.env.EMAIL_ENABLED === true
|
59
|
+
if (process.env.EMAIL_ENABLED === "true" || process.env.EMAIL_ENABLED === true) {
|
59
60
|
this.enabled = true;
|
60
61
|
}
|
61
62
|
|
62
|
-
winston.info('EmailService enabled: '+ this.enabled);
|
63
|
+
winston.info('EmailService enabled: ' + this.enabled);
|
63
64
|
|
64
65
|
this.baseUrl = process.env.EMAIL_BASEURL || config.baseUrl;
|
65
|
-
winston.info('EmailService baseUrl: '+ this.baseUrl);
|
66
|
-
|
66
|
+
winston.info('EmailService baseUrl: ' + this.baseUrl);
|
67
|
+
|
67
68
|
this.apiUrl = process.env.API_URL || configGlobal.apiUrl;
|
68
|
-
winston.info('EmailService apiUrl: '+ this.apiUrl);
|
69
|
+
winston.info('EmailService apiUrl: ' + this.apiUrl);
|
69
70
|
|
70
71
|
this.from = process.env.EMAIL_FROM_ADDRESS || config.from;
|
71
|
-
winston.info('EmailService from email: '+ this.from);
|
72
|
+
winston.info('EmailService from email: ' + this.from);
|
72
73
|
|
73
74
|
this.bcc = process.env.EMAIL_BCC || config.bcc;
|
74
|
-
winston.info('EmailService bcc address: '+ this.bcc);
|
75
|
+
winston.info('EmailService bcc address: ' + this.bcc);
|
75
76
|
|
76
77
|
this.replyEnabled = config.replyEnabled;
|
77
|
-
if (process.env.EMAIL_REPLY_ENABLED
|
78
|
+
if (process.env.EMAIL_REPLY_ENABLED === "true" || process.env.EMAIL_REPLY_ENABLED === true) {
|
78
79
|
this.replyEnabled = true;
|
79
80
|
}
|
80
|
-
winston.info('EmailService replyEnabled : '+ this.replyEnabled);
|
81
|
+
winston.info('EmailService replyEnabled : ' + this.replyEnabled);
|
81
82
|
|
82
83
|
// this is used as fixed reply to url, but this is unused we always return support-group-dynamic
|
83
84
|
this.replyTo = process.env.EMAIL_REPLY_TO || config.replyTo;
|
84
|
-
winston.info('EmailService replyTo address: '+ this.replyTo);
|
85
|
+
winston.info('EmailService replyTo address: ' + this.replyTo);
|
85
86
|
|
86
|
-
this.inboundDomain = process.env.EMAIL_INBOUND_DOMAIN || config.inboundDomain;
|
87
|
-
winston.info('EmailService inboundDomain : '+ this.inboundDomain);
|
88
|
-
|
89
|
-
this.inboundDomainDomainWithAt = "@"+this.inboundDomain;
|
90
|
-
winston.verbose('EmailService inboundDomainDomainWithAt : '+ this.inboundDomainDomainWithAt);
|
87
|
+
this.inboundDomain = process.env.EMAIL_INBOUND_DOMAIN || config.inboundDomain;
|
88
|
+
winston.info('EmailService inboundDomain : ' + this.inboundDomain);
|
89
|
+
|
90
|
+
this.inboundDomainDomainWithAt = "@" + this.inboundDomain;
|
91
|
+
winston.verbose('EmailService inboundDomainDomainWithAt : ' + this.inboundDomainDomainWithAt);
|
91
92
|
|
92
93
|
this.pass = process.env.EMAIL_PASSWORD;
|
93
94
|
|
94
95
|
var maskedemailPassword;
|
95
96
|
if (this.pass) {
|
96
97
|
maskedemailPassword = MaskData.maskPhone(this.pass, maskOptions);
|
97
|
-
}else {
|
98
|
+
} else {
|
98
99
|
maskedemailPassword = this.pass;
|
99
100
|
}
|
100
101
|
|
@@ -103,26 +104,26 @@ class EmailService {
|
|
103
104
|
this.host = process.env.EMAIL_HOST || config.host;
|
104
105
|
winston.info('EmailService host: ' + this.host);
|
105
106
|
|
106
|
-
this.secure
|
107
|
-
if (process.env.EMAIL_SECURE == "true" || process.env.EMAIL_SECURE ==true) {
|
108
|
-
this.secure
|
107
|
+
this.secure = false;
|
108
|
+
if (process.env.EMAIL_SECURE == "true" || process.env.EMAIL_SECURE == true) {
|
109
|
+
this.secure = true;
|
109
110
|
}
|
110
111
|
// this.secure = process.env.EMAIL_SECURE || false;
|
111
112
|
winston.info('EmailService secure: ' + this.secure);
|
112
113
|
|
113
|
-
this.user
|
114
|
+
this.user = process.env.EMAIL_USERNAME || config.username;
|
114
115
|
winston.info('EmailService username: ' + this.user);
|
115
116
|
|
116
|
-
this.port
|
117
|
+
this.port = process.env.EMAIL_PORT; //default is 587
|
117
118
|
winston.info('EmailService port: ' + this.port);
|
118
119
|
|
119
120
|
|
120
121
|
this.markdown = true;
|
121
|
-
if (process.env.EMAIL_MARKDOWN =="false" || process.env.EMAIL_MARKDOWN ==false) {
|
122
|
+
if (process.env.EMAIL_MARKDOWN == "false" || process.env.EMAIL_MARKDOWN == false) {
|
122
123
|
this.markdown = false;
|
123
124
|
}
|
124
125
|
// this.markdown = process.env.EMAIL_MARKDOWN || true;
|
125
|
-
winston.info('EmailService markdown: '+ this.markdown);
|
126
|
+
winston.info('EmailService markdown: ' + this.markdown);
|
126
127
|
|
127
128
|
this.headers = {
|
128
129
|
// "X-Mailer": "Tiledesk Mailer",
|
@@ -131,7 +132,7 @@ class EmailService {
|
|
131
132
|
|
132
133
|
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
|
133
134
|
|
134
|
-
if (process.env.EMAIL_CC_ENABLED ==="true" || process.env.EMAIL_CC_ENABLED === true
|
135
|
+
if (process.env.EMAIL_CC_ENABLED === "true" || process.env.EMAIL_CC_ENABLED === true) {
|
135
136
|
this.ccEnabled = true;
|
136
137
|
}
|
137
138
|
winston.info('EmailService ccEnabled: ' + this.ccEnabled);
|
@@ -141,49 +142,49 @@ class EmailService {
|
|
141
142
|
readTemplate(templateName, settings) {
|
142
143
|
// aggiunsta questo
|
143
144
|
var that = this;
|
144
|
-
winston.debug('EmailService readTemplate: '+ templateName + ' ' + JSON.stringify(settings));
|
145
|
-
|
145
|
+
winston.debug('EmailService readTemplate: ' + templateName + ' ' + JSON.stringify(settings));
|
146
|
+
|
146
147
|
|
147
|
-
|
148
|
+
if (settings && settings.email && settings.email.templates) {
|
148
149
|
|
149
|
-
|
150
|
-
|
150
|
+
var templates = settings.email.templates;
|
151
|
+
winston.debug('EmailService templates: ', templates);
|
151
152
|
|
152
|
-
|
153
|
-
|
153
|
+
var templateDbName = templateName.replace(".html", "");
|
154
|
+
winston.debug('EmailService templateDbName: ' + templateDbName);
|
154
155
|
|
155
156
|
|
156
|
-
|
157
|
-
|
157
|
+
var template = templates[templateDbName];
|
158
|
+
winston.debug('EmailService template: ' + template);
|
158
159
|
|
159
|
-
|
160
|
+
if (template) {
|
160
161
|
// that.callback(template);
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
}else {
|
165
|
-
return that.readTemplateFile(templateName);
|
166
|
-
}
|
162
|
+
return new Promise(function (resolve, reject) {
|
163
|
+
return resolve(template);
|
164
|
+
});
|
167
165
|
} else {
|
168
166
|
return that.readTemplateFile(templateName);
|
169
|
-
}
|
167
|
+
}
|
168
|
+
} else {
|
169
|
+
return that.readTemplateFile(templateName);
|
170
|
+
}
|
170
171
|
}
|
171
172
|
readTemplateFile(templateName) {
|
172
173
|
// var that = this;
|
173
174
|
return new Promise(function (resolve, reject) {
|
174
|
-
fs.readFile(appRoot + '/template/email/'+templateName, {encoding: 'utf-8'}, function (err, html) {
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
});
|
175
|
+
fs.readFile(appRoot + '/template/email/' + templateName, { encoding: 'utf-8' }, function (err, html) {
|
176
|
+
if (err) {
|
177
|
+
winston.error('error readTemplateFile getting ', err);
|
178
|
+
// callback(err);
|
179
|
+
return reject(err);
|
180
|
+
}
|
181
|
+
else {
|
182
|
+
// callback(null, html);
|
183
|
+
return resolve(html);
|
184
|
+
}
|
185
|
+
});
|
185
186
|
});
|
186
|
-
};
|
187
|
+
};
|
187
188
|
|
188
189
|
|
189
190
|
getTransport(configEmail) {
|
@@ -192,21 +193,21 @@ class EmailService {
|
|
192
193
|
configEmail = {
|
193
194
|
host: this.host,
|
194
195
|
port: this.port, // defaults to 587 if is secure is false or 465 if true
|
195
|
-
secure: this.secure,
|
196
|
+
secure: this.secure,
|
196
197
|
user: this.user,
|
197
|
-
pass: this.pass
|
198
|
+
pass: this.pass
|
198
199
|
}
|
199
200
|
winston.debug("getTransport initialized with default");
|
200
201
|
} else {
|
201
202
|
winston.verbose("getTransport custom", configEmail);
|
202
203
|
}
|
203
204
|
|
204
|
-
winston.debug("getTransport configEmail: "+ JSON.stringify(configEmail));
|
205
|
+
winston.debug("getTransport configEmail: " + JSON.stringify(configEmail));
|
205
206
|
|
206
207
|
let transport = {
|
207
208
|
host: configEmail.host,
|
208
209
|
port: configEmail.port, // defaults to 587 if is secure is false or 465 if true
|
209
|
-
secure: configEmail.secure,
|
210
|
+
secure: configEmail.secure,
|
210
211
|
auth: {
|
211
212
|
user: configEmail.user,
|
212
213
|
pass: configEmail.pass
|
@@ -216,11 +217,11 @@ class EmailService {
|
|
216
217
|
// ciphers:'SSLv3'
|
217
218
|
// },
|
218
219
|
|
219
|
-
// openssl genrsa -out dkim_private.pem 2048
|
220
|
-
// openssl rsa -in dkim_private.pem -pubout -outform der 2>/dev/null | openssl base64 -A
|
221
|
-
// ->
|
222
|
-
// v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAunT2EopDAYnHwAOHd33KhlzjUXJfhmA+fK+cG85i9Pm33oyv1NoGrOynsni0PO6j7oRxxHqs6EMDOw4I/Q0C7aWn20oBomJZehTOkCV2xpuPKESiRktCe/MIZqbkRdypis4jSkFfFFkBHwgkAg5tb11E9elJap0ed/lN5/XlpGedqoypKxp+nEabgYO5mBMMNKRvbHx0eQttRYyIaNkTuMbAaqs4y3TkHOpGvZTJsvUonVMGAstSCfUmXnjF38aKpgyTausTSsxHbaxh3ieUB4ex+svnvsJ4Uh5Skklr+bxLVEHeJN55rxmV67ytLg5XCRWqdKIcJHFvSlm2YwJfcwIDAQABMacAL
|
223
|
-
// testdkim._domainkey.tiledesk.com. 86400 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAunT2EopDAYnHwAOHd33KhlzjUXJfhmA+fK+cG85i9Pm33oyv1NoGrOynsni0PO6j7oRxxHqs6EMDOw4I/Q0C7aWn20oBomJZehTOkCV2xpuPKESiRktCe/MIZqbkRdypis4jSkFfFFkBHwgkAg5tb11E9elJap0ed/lN5/XlpGedqoypKxp+nEabgYO5mBMMNKRvbHx0eQttRYyIaNkTuMbAaqs4y3TkHOpGvZTJsvUonVMGAstSCfUmXnjF38aKpgyTausTSsxHbaxh3ieUB4ex+svnvsJ4Uh5Skklr+bxLVEHeJN55rxmV67ytLg5XCRWqdKIcJHFvSlm2YwJfcwIDAQABMacAL"
|
220
|
+
// openssl genrsa -out dkim_private.pem 2048
|
221
|
+
// openssl rsa -in dkim_private.pem -pubout -outform der 2>/dev/null | openssl base64 -A
|
222
|
+
// ->
|
223
|
+
// v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAunT2EopDAYnHwAOHd33KhlzjUXJfhmA+fK+cG85i9Pm33oyv1NoGrOynsni0PO6j7oRxxHqs6EMDOw4I/Q0C7aWn20oBomJZehTOkCV2xpuPKESiRktCe/MIZqbkRdypis4jSkFfFFkBHwgkAg5tb11E9elJap0ed/lN5/XlpGedqoypKxp+nEabgYO5mBMMNKRvbHx0eQttRYyIaNkTuMbAaqs4y3TkHOpGvZTJsvUonVMGAstSCfUmXnjF38aKpgyTausTSsxHbaxh3ieUB4ex+svnvsJ4Uh5Skklr+bxLVEHeJN55rxmV67ytLg5XCRWqdKIcJHFvSlm2YwJfcwIDAQABMacAL
|
224
|
+
// testdkim._domainkey.tiledesk.com. 86400 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAunT2EopDAYnHwAOHd33KhlzjUXJfhmA+fK+cG85i9Pm33oyv1NoGrOynsni0PO6j7oRxxHqs6EMDOw4I/Q0C7aWn20oBomJZehTOkCV2xpuPKESiRktCe/MIZqbkRdypis4jSkFfFFkBHwgkAg5tb11E9elJap0ed/lN5/XlpGedqoypKxp+nEabgYO5mBMMNKRvbHx0eQttRYyIaNkTuMbAaqs4y3TkHOpGvZTJsvUonVMGAstSCfUmXnjF38aKpgyTausTSsxHbaxh3ieUB4ex+svnvsJ4Uh5Skklr+bxLVEHeJN55rxmV67ytLg5XCRWqdKIcJHFvSlm2YwJfcwIDAQABMacAL"
|
224
225
|
|
225
226
|
// dkim: {
|
226
227
|
// domainName: "example.com",
|
@@ -231,7 +232,7 @@ class EmailService {
|
|
231
232
|
// }
|
232
233
|
};
|
233
234
|
|
234
|
-
winston.debug("getTransport transport: ",transport);
|
235
|
+
winston.debug("getTransport transport: ", transport);
|
235
236
|
|
236
237
|
// create reusable transporter object using the default SMTP transport
|
237
238
|
let transporter = nodemailer.createTransport(transport);
|
@@ -243,16 +244,32 @@ class EmailService {
|
|
243
244
|
// return this.sendMail({to:to, subject:subject, html:html});
|
244
245
|
// }
|
245
246
|
|
246
|
-
send(mail) {
|
247
|
+
async send(mail, quoteEnabled, project, quoteManager) {
|
247
248
|
|
248
249
|
if (!this.enabled) {
|
249
250
|
winston.info('EmailService is disabled. Not sending email');
|
250
251
|
return 0;
|
251
252
|
}
|
252
|
-
if (process.env.NODE_ENV == 'test')
|
253
|
+
if (process.env.NODE_ENV == 'test') {
|
253
254
|
return winston.warn("EmailService not sending email for testing");
|
254
255
|
}
|
255
256
|
|
257
|
+
let payload = { project: project }
|
258
|
+
if (quoteEnabled && quoteEnabled === true) {
|
259
|
+
mail.createdAt = new Date();
|
260
|
+
payload.email = mail;
|
261
|
+
|
262
|
+
if (quoteManager) {
|
263
|
+
let result = await quoteManager.checkQuote(project, mail, 'email');
|
264
|
+
if (result === false) {
|
265
|
+
// Stop
|
266
|
+
winston.verbose('Unable to send email - Quota exceeded')
|
267
|
+
return false;
|
268
|
+
}
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
|
256
273
|
let mailOptions = {
|
257
274
|
from: mail.from || this.from, // sender address
|
258
275
|
to: mail.to,
|
@@ -266,33 +283,38 @@ class EmailService {
|
|
266
283
|
html: mail.html,
|
267
284
|
|
268
285
|
headers: mail.headers || this.headers,
|
269
|
-
|
286
|
+
|
270
287
|
messageId: mail.messageId,
|
271
288
|
sender: mail.sender
|
272
289
|
};
|
273
290
|
|
274
291
|
winston.debug('mailOptions', mailOptions);
|
275
|
-
winston.debug(' mail.config',
|
276
|
-
|
292
|
+
winston.debug(' mail.config', mail.config);
|
293
|
+
|
277
294
|
if (!mail.to) {
|
278
295
|
return winston.warn("EmailService send method. to field is not defined", mailOptions);
|
279
296
|
}
|
280
297
|
|
281
298
|
// send mail with defined transport object
|
282
299
|
this.getTransport(mail.config).sendMail(mailOptions, (error, info) => {
|
283
|
-
if (error) {
|
284
|
-
if (mail.callback){
|
285
|
-
mail.callback(error, {info:info});
|
300
|
+
if (error) {
|
301
|
+
if (mail.callback) {
|
302
|
+
mail.callback(error, { info: info });
|
286
303
|
}
|
287
|
-
return winston.error("Error sending email ", {error:error,
|
304
|
+
return winston.error("Error sending email ", { error: error, mailConfig: mail.config, mailOptions: mailOptions });
|
288
305
|
}
|
289
|
-
winston.verbose('Email sent:', {info: info});
|
290
|
-
winston.debug('Email sent:', {info: info, mailOptions: mailOptions});
|
306
|
+
winston.verbose('Email sent:', { info: info });
|
307
|
+
winston.debug('Email sent:', { info: info, mailOptions: mailOptions });
|
291
308
|
|
292
|
-
if (
|
293
|
-
|
309
|
+
if (quoteEnabled && quoteEnabled === true) {
|
310
|
+
emailEvent.emit('email.send.quote', payload);
|
311
|
+
winston.verbose("email.send.quote event emitted");
|
294
312
|
}
|
295
|
-
|
313
|
+
|
314
|
+
if (mail.callback) {
|
315
|
+
mail.callback(error, { info: info });
|
316
|
+
}
|
317
|
+
|
296
318
|
// Preview only available when sending through an Ethereal account
|
297
319
|
// winston.debug('Preview URL: %s', nodemailer.getTestMessageUrl(info));
|
298
320
|
|
@@ -302,26 +324,26 @@ class EmailService {
|
|
302
324
|
}
|
303
325
|
|
304
326
|
|
305
|
-
async sendTest(to, configEmail, callback) {
|
327
|
+
async sendTest(to, configEmail, callback) {
|
306
328
|
|
307
329
|
var that = this;
|
308
330
|
|
309
|
-
var html = await this.readTemplate('test.html',{ "email"
|
331
|
+
var html = await this.readTemplate('test.html', { "email": { "templates": { test: "123" } } });
|
310
332
|
|
311
333
|
var template = handlebars.compile(html);
|
312
334
|
|
313
|
-
var replacements = {
|
335
|
+
var replacements = {
|
314
336
|
};
|
315
337
|
|
316
338
|
var html = template(replacements);
|
317
|
-
|
318
|
-
return that.send({to:to, subject
|
319
|
-
|
339
|
+
|
340
|
+
return that.send({ to: to, subject: `Tiledesk test email`, config: configEmail, html: html, callback: callback });
|
341
|
+
|
320
342
|
}
|
321
343
|
|
322
344
|
|
323
345
|
|
324
|
-
async sendNewAssignedRequestNotification(to, request, project) {
|
346
|
+
async sendNewAssignedRequestNotification(to, request, project) {
|
325
347
|
|
326
348
|
var that = this;
|
327
349
|
|
@@ -337,10 +359,10 @@ class EmailService {
|
|
337
359
|
var html = await this.readTemplate('assignedRequest.html', project.settings);
|
338
360
|
|
339
361
|
var envTemplate = process.env.EMAIL_ASSIGN_REQUEST_HTML_TEMPLATE;
|
340
|
-
|
362
|
+
winston.debug("envTemplate: " + envTemplate);
|
341
363
|
|
342
364
|
if (envTemplate) {
|
343
|
-
|
365
|
+
html = envTemplate;
|
344
366
|
}
|
345
367
|
|
346
368
|
winston.debug("html: " + html);
|
@@ -351,7 +373,7 @@ class EmailService {
|
|
351
373
|
delete baseScope.pass;
|
352
374
|
|
353
375
|
// passa anche tutti i messages in modo da stampare tutto
|
354
|
-
// Stampa anche contact.email
|
376
|
+
// Stampa anche contact.email
|
355
377
|
|
356
378
|
|
357
379
|
let msgText = request.first_text;//.replace(/[\n\r]/g, '<br>');
|
@@ -361,11 +383,11 @@ class EmailService {
|
|
361
383
|
if (this.markdown) {
|
362
384
|
msgText = marked(msgText);
|
363
385
|
}
|
364
|
-
|
365
|
-
|
386
|
+
|
387
|
+
|
366
388
|
winston.debug("msgText: " + msgText);
|
367
389
|
|
368
|
-
var replacements = {
|
390
|
+
var replacements = {
|
369
391
|
request: request,
|
370
392
|
project: project,
|
371
393
|
msgText: msgText,
|
@@ -378,7 +400,7 @@ class EmailService {
|
|
378
400
|
var html = template(replacements);
|
379
401
|
winston.debug("html after: " + html);
|
380
402
|
|
381
|
-
|
403
|
+
|
382
404
|
let messageId = "notification" + "@" + MESSAGE_ID_DOMAIN;
|
383
405
|
|
384
406
|
let replyTo;
|
@@ -387,19 +409,19 @@ class EmailService {
|
|
387
409
|
}
|
388
410
|
|
389
411
|
let headers;
|
390
|
-
if (request) {
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
412
|
+
if (request) {
|
413
|
+
|
414
|
+
messageId = request.request_id + "+" + messageId;
|
415
|
+
|
416
|
+
if (request.attributes && request.attributes.email_replyTo) {
|
417
|
+
replyTo = request.attributes.email_replyTo;
|
418
|
+
}
|
419
|
+
|
398
420
|
headers = {
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
421
|
+
"X-TILEDESK-PROJECT-ID": project._id,
|
422
|
+
"X-TILEDESK-REQUEST-ID": request.request_id,
|
423
|
+
"X-TILEDESK-TICKET-ID": request.ticket_id,
|
424
|
+
};
|
403
425
|
|
404
426
|
winston.debug("messageId: " + messageId);
|
405
427
|
winston.debug("replyTo: " + replyTo);
|
@@ -411,13 +433,13 @@ class EmailService {
|
|
411
433
|
if (request.attributes) {
|
412
434
|
if (request.attributes.email_messageId) {
|
413
435
|
inReplyTo = request.attributes.email_messageId;
|
414
|
-
|
415
|
-
|
436
|
+
}
|
437
|
+
if (request.attributes.email_references) {
|
416
438
|
references = request.attributes.email_references;
|
417
|
-
|
439
|
+
}
|
418
440
|
}
|
419
|
-
winston.debug("email inReplyTo: "+ inReplyTo);
|
420
|
-
winston.debug("email references: "+ references);
|
441
|
+
winston.debug("email inReplyTo: " + inReplyTo);
|
442
|
+
winston.debug("email references: " + references);
|
421
443
|
|
422
444
|
let from;
|
423
445
|
let configEmail;
|
@@ -428,7 +450,7 @@ class EmailService {
|
|
428
450
|
}
|
429
451
|
if (project.settings.email.from) {
|
430
452
|
from = project.settings.email.from;
|
431
|
-
winston.debug("custom from email setting found: "+ from);
|
453
|
+
winston.debug("custom from email setting found: " + from);
|
432
454
|
}
|
433
455
|
}
|
434
456
|
|
@@ -448,40 +470,40 @@ class EmailService {
|
|
448
470
|
// if (request.ticket_id) {
|
449
471
|
// subject = `[Ticket #${request.ticket_id}] New Assigned Chat`;
|
450
472
|
// }
|
451
|
-
|
473
|
+
|
452
474
|
// if (request.ticket_id && request.subject) {
|
453
475
|
// subject = `[Ticket #${request.ticket_id}] ${request.subject}`;
|
454
476
|
// }
|
455
477
|
|
456
478
|
that.send({
|
457
479
|
messageId: messageId,
|
458
|
-
from:from,
|
459
|
-
to:to,
|
480
|
+
from: from,
|
481
|
+
to: to,
|
460
482
|
replyTo: replyTo,
|
461
|
-
subject: subject,
|
462
|
-
html:html,
|
483
|
+
subject: subject,
|
484
|
+
html: html,
|
463
485
|
config: configEmail,
|
464
|
-
headers:headers
|
486
|
+
headers: headers
|
465
487
|
});
|
466
488
|
|
467
|
-
messageId =
|
489
|
+
messageId = "notification" + messageId;
|
468
490
|
|
469
491
|
|
470
492
|
// togliere bcc
|
471
493
|
that.send({
|
472
494
|
messageId: messageId,
|
473
|
-
to: that.bcc,
|
495
|
+
to: that.bcc,
|
474
496
|
replyTo: replyTo,
|
475
|
-
subject: subject + ` ${to} - notification`,
|
476
|
-
html:html,
|
477
|
-
headers:headers
|
497
|
+
subject: subject + ` ${to} - notification`,
|
498
|
+
html: html,
|
499
|
+
headers: headers
|
478
500
|
});
|
479
501
|
|
480
|
-
|
502
|
+
|
481
503
|
}
|
482
504
|
|
483
505
|
|
484
|
-
async sendNewAssignedAgentMessageEmailNotification(to, request, project, message) {
|
506
|
+
async sendNewAssignedAgentMessageEmailNotification(to, request, project, message) {
|
485
507
|
|
486
508
|
var that = this;
|
487
509
|
|
@@ -493,15 +515,15 @@ class EmailService {
|
|
493
515
|
if (project.toJSON) {
|
494
516
|
project = project.toJSON();
|
495
517
|
}
|
496
|
-
|
518
|
+
|
497
519
|
var html = await this.readTemplate('assignedEmailMessage.html', project.settings);
|
498
520
|
|
499
521
|
|
500
522
|
var envTemplate = process.env.EMAIL_ASSIGN_MESSAGE_EMAIL_HTML_TEMPLATE;
|
501
|
-
|
523
|
+
winston.debug("envTemplate: " + envTemplate);
|
502
524
|
|
503
525
|
if (envTemplate) {
|
504
|
-
|
526
|
+
html = envTemplate;
|
505
527
|
}
|
506
528
|
|
507
529
|
winston.debug("html: " + html);
|
@@ -512,22 +534,22 @@ class EmailService {
|
|
512
534
|
delete baseScope.pass;
|
513
535
|
|
514
536
|
// passa anche tutti i messages in modo da stampare tutto
|
515
|
-
// Stampa anche contact.email
|
537
|
+
// Stampa anche contact.email
|
516
538
|
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
539
|
+
let msgText = message.text;//.replace(/[\n\r]/g, '<br>');
|
540
|
+
msgText = encode(msgText);
|
541
|
+
if (this.markdown) {
|
542
|
+
msgText = marked(msgText);
|
543
|
+
}
|
522
544
|
|
523
|
-
|
545
|
+
winston.debug("msgText: " + msgText);
|
524
546
|
|
525
|
-
var replacements = {
|
547
|
+
var replacements = {
|
526
548
|
request: request,
|
527
549
|
project: project,
|
528
550
|
message: message,
|
529
551
|
msgText: msgText,
|
530
|
-
baseScope: baseScope
|
552
|
+
baseScope: baseScope
|
531
553
|
};
|
532
554
|
|
533
555
|
winston.debug("replacements ", replacements);
|
@@ -544,15 +566,15 @@ class EmailService {
|
|
544
566
|
}
|
545
567
|
|
546
568
|
let headers;
|
547
|
-
if (message.request) {
|
548
|
-
|
549
|
-
messageId = message.request.request_id + "+" + messageId;
|
569
|
+
if (message.request) {
|
550
570
|
|
551
|
-
|
571
|
+
messageId = message.request.request_id + "+" + messageId;
|
572
|
+
|
573
|
+
if (message.request.attributes && message.request.attributes.email_replyTo) {
|
552
574
|
replyTo = message.request.attributes.email_replyTo;
|
553
|
-
|
554
|
-
|
555
|
-
headers = {"X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID":message.request.ticket_id };
|
575
|
+
}
|
576
|
+
|
577
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID": message.request.ticket_id };
|
556
578
|
|
557
579
|
winston.debug("sendNewAssignedAgentMessageEmailNotification messageId: " + messageId);
|
558
580
|
winston.debug("sendNewAssignedAgentMessageEmailNotification replyTo: " + replyTo);
|
@@ -569,8 +591,8 @@ class EmailService {
|
|
569
591
|
references = message.request.attributes.email_references;
|
570
592
|
}
|
571
593
|
}
|
572
|
-
winston.debug("sendNewAssignedAgentMessageEmailNotification email inReplyTo: "+ inReplyTo);
|
573
|
-
winston.debug("sendNewAssignedAgentMessageEmailNotification email references: "+ references);
|
594
|
+
winston.debug("sendNewAssignedAgentMessageEmailNotification email inReplyTo: " + inReplyTo);
|
595
|
+
winston.debug("sendNewAssignedAgentMessageEmailNotification email references: " + references);
|
574
596
|
|
575
597
|
let from;
|
576
598
|
let configEmail;
|
@@ -581,7 +603,7 @@ class EmailService {
|
|
581
603
|
}
|
582
604
|
if (project.settings.email.from) {
|
583
605
|
from = project.settings.email.from;
|
584
|
-
winston.debug("sendNewAssignedAgentMessageEmailNotification custom from email setting found: "+ from);
|
606
|
+
winston.debug("sendNewAssignedAgentMessageEmailNotification custom from email setting found: " + from);
|
585
607
|
}
|
586
608
|
}
|
587
609
|
|
@@ -594,7 +616,7 @@ class EmailService {
|
|
594
616
|
if (request.ticket_id) {
|
595
617
|
subjectDef = `[Ticket #${request.ticket_id}] New message`;
|
596
618
|
}
|
597
|
-
|
619
|
+
|
598
620
|
if (request.ticket_id && request.subject) {
|
599
621
|
subjectDef = `[Ticket #${request.ticket_id}] ${request.subject}`;
|
600
622
|
}
|
@@ -605,34 +627,34 @@ class EmailService {
|
|
605
627
|
|
606
628
|
that.send({
|
607
629
|
messageId: messageId,
|
608
|
-
from:from,
|
609
|
-
to:to,
|
630
|
+
from: from,
|
631
|
+
to: to,
|
610
632
|
replyTo: replyTo,
|
611
633
|
// inReplyTo: inReplyTo,???
|
612
634
|
// references: references,??
|
613
635
|
subject: subject,
|
614
|
-
html:html,
|
615
|
-
config: configEmail,
|
616
|
-
headers:headers
|
636
|
+
html: html,
|
637
|
+
config: configEmail,
|
638
|
+
headers: headers
|
617
639
|
});
|
618
640
|
|
619
641
|
|
620
|
-
|
621
|
-
messageId =
|
642
|
+
|
643
|
+
messageId = "notification" + messageId;
|
622
644
|
|
623
645
|
that.send({
|
624
646
|
messageId: messageId,
|
625
|
-
to: that.bcc,
|
647
|
+
to: that.bcc,
|
626
648
|
replyTo: replyTo,
|
627
|
-
subject: subject + ` - notification`,
|
628
|
-
html:html,
|
629
|
-
headers:headers
|
649
|
+
subject: subject + ` - notification`,
|
650
|
+
html: html,
|
651
|
+
headers: headers
|
630
652
|
});
|
631
653
|
|
632
|
-
|
654
|
+
|
633
655
|
}
|
634
656
|
|
635
|
-
|
657
|
+
|
636
658
|
async sendNewPooledRequestNotification(to, request, project) {
|
637
659
|
|
638
660
|
//if the request came from rabbit mq?
|
@@ -649,10 +671,10 @@ class EmailService {
|
|
649
671
|
var html = await this.readTemplate('pooledRequest.html', project.settings);
|
650
672
|
|
651
673
|
var envTemplate = process.env.EMAIL_POOLED_REQUEST_HTML_TEMPLATE;
|
652
|
-
|
674
|
+
winston.debug("envTemplate: " + envTemplate);
|
653
675
|
|
654
676
|
if (envTemplate) {
|
655
|
-
|
677
|
+
html = envTemplate;
|
656
678
|
}
|
657
679
|
|
658
680
|
winston.debug("html: " + html);
|
@@ -662,8 +684,8 @@ class EmailService {
|
|
662
684
|
var baseScope = JSON.parse(JSON.stringify(that));
|
663
685
|
delete baseScope.pass;
|
664
686
|
|
665
|
-
// passa anche tutti i messages in modo da stampare tutto
|
666
|
-
// Stampa anche contact.email
|
687
|
+
// passa anche tutti i messages in modo da stampare tutto
|
688
|
+
// Stampa anche contact.email
|
667
689
|
|
668
690
|
let msgText = request.first_text;//.replace(/[\n\r]/g, '<br>');
|
669
691
|
msgText = encode(msgText);
|
@@ -673,16 +695,16 @@ class EmailService {
|
|
673
695
|
|
674
696
|
winston.debug("msgText: " + msgText);
|
675
697
|
|
676
|
-
var replacements = {
|
698
|
+
var replacements = {
|
677
699
|
request: request,
|
678
700
|
project: project,
|
679
701
|
msgText: msgText,
|
680
|
-
baseScope: baseScope
|
702
|
+
baseScope: baseScope
|
681
703
|
};
|
682
|
-
|
704
|
+
|
683
705
|
var html = template(replacements);
|
684
706
|
|
685
|
-
|
707
|
+
|
686
708
|
let messageId = "notification-pooled" + new Date().getTime() + "@" + MESSAGE_ID_DOMAIN;
|
687
709
|
|
688
710
|
let replyTo;
|
@@ -691,15 +713,15 @@ class EmailService {
|
|
691
713
|
}
|
692
714
|
|
693
715
|
let headers;
|
694
|
-
if (request) {
|
695
|
-
|
696
|
-
|
716
|
+
if (request) {
|
717
|
+
|
718
|
+
messageId = request.request_id + "+" + messageId;
|
697
719
|
|
698
|
-
|
720
|
+
if (request.attributes && request.attributes.email_replyTo) {
|
699
721
|
replyTo = request.attributes.email_replyTo;
|
700
|
-
|
722
|
+
}
|
701
723
|
|
702
|
-
headers = {"X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": request.request_id, "X-TILEDESK-TICKET-ID":request.ticket_id };
|
724
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": request.request_id, "X-TILEDESK-TICKET-ID": request.ticket_id };
|
703
725
|
|
704
726
|
winston.debug("sendNewPooledRequestNotification messageId: " + messageId);
|
705
727
|
winston.debug("sendNewPooledRequestNotification replyTo: " + replyTo);
|
@@ -711,13 +733,13 @@ class EmailService {
|
|
711
733
|
if (request.attributes) {
|
712
734
|
if (request.attributes.email_messageId) {
|
713
735
|
inReplyTo = request.attributes.email_messageId;
|
714
|
-
|
715
|
-
|
736
|
+
}
|
737
|
+
if (request.attributes.email_references) {
|
716
738
|
references = request.attributes.email_references;
|
717
|
-
|
739
|
+
}
|
718
740
|
}
|
719
|
-
winston.debug("sendNewPooledRequestNotification email inReplyTo: "+ inReplyTo);
|
720
|
-
winston.debug("sendNewPooledRequestNotification email references: "+ references);
|
741
|
+
winston.debug("sendNewPooledRequestNotification email inReplyTo: " + inReplyTo);
|
742
|
+
winston.debug("sendNewPooledRequestNotification email references: " + references);
|
721
743
|
|
722
744
|
let from;
|
723
745
|
let configEmail;
|
@@ -728,7 +750,7 @@ class EmailService {
|
|
728
750
|
}
|
729
751
|
if (project.settings.email.from) {
|
730
752
|
from = project.settings.email.from;
|
731
|
-
winston.debug("sendNewPooledRequestNotification custom from email setting found: "+ from);
|
753
|
+
winston.debug("sendNewPooledRequestNotification custom from email setting found: " + from);
|
732
754
|
}
|
733
755
|
}
|
734
756
|
|
@@ -744,7 +766,7 @@ class EmailService {
|
|
744
766
|
// if (request.ticket_id) {
|
745
767
|
// subject = `[Ticket #${request.ticket_id}] New Pooled Chat`;
|
746
768
|
// }
|
747
|
-
|
769
|
+
|
748
770
|
// if (request.ticket_id && request.subject) {
|
749
771
|
// subject = `[Ticket #${request.ticket_id}] ${request.subject}`;
|
750
772
|
// }
|
@@ -753,16 +775,16 @@ class EmailService {
|
|
753
775
|
|
754
776
|
that.send({
|
755
777
|
messageId: messageId,
|
756
|
-
from:from,
|
757
|
-
to: to,
|
778
|
+
from: from,
|
779
|
+
to: to,
|
758
780
|
replyTo: replyTo,
|
759
|
-
subject: subject,
|
760
|
-
html:html,
|
761
|
-
config:configEmail,
|
762
|
-
headers:headers
|
781
|
+
subject: subject,
|
782
|
+
html: html,
|
783
|
+
config: configEmail,
|
784
|
+
headers: headers
|
763
785
|
});
|
764
|
-
|
765
|
-
|
786
|
+
// this.send(that.bcc, `[TileDesk ${project ? project.name : '-'}] New Pooled Request`, html);
|
787
|
+
|
766
788
|
}
|
767
789
|
|
768
790
|
|
@@ -773,7 +795,7 @@ class EmailService {
|
|
773
795
|
|
774
796
|
var that = this;
|
775
797
|
|
776
|
-
|
798
|
+
|
777
799
|
//if the request came from rabbit mq?
|
778
800
|
if (request.toJSON) {
|
779
801
|
request = request.toJSON();
|
@@ -791,7 +813,7 @@ class EmailService {
|
|
791
813
|
|
792
814
|
|
793
815
|
if (envTemplate) {
|
794
|
-
|
816
|
+
html = envTemplate;
|
795
817
|
}
|
796
818
|
|
797
819
|
winston.debug("html: " + html);
|
@@ -810,14 +832,14 @@ class EmailService {
|
|
810
832
|
winston.debug("msgText: " + msgText);
|
811
833
|
|
812
834
|
// passa anche tutti i messages in modo da stampare tutto
|
813
|
-
// Stampa anche contact.email
|
835
|
+
// Stampa anche contact.email
|
814
836
|
|
815
|
-
var replacements = {
|
837
|
+
var replacements = {
|
816
838
|
request: request,
|
817
839
|
project: project,
|
818
840
|
message: message,
|
819
841
|
msgText: msgText,
|
820
|
-
baseScope: baseScope
|
842
|
+
baseScope: baseScope
|
821
843
|
};
|
822
844
|
|
823
845
|
winston.debug("replacements ", replacements);
|
@@ -835,15 +857,15 @@ class EmailService {
|
|
835
857
|
}
|
836
858
|
|
837
859
|
let headers;
|
838
|
-
if (message.request) {
|
839
|
-
|
840
|
-
messageId = message.request.request_id + "+" + messageId;
|
860
|
+
if (message.request) {
|
841
861
|
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
862
|
+
messageId = message.request.request_id + "+" + messageId;
|
863
|
+
|
864
|
+
if (message.request.attributes && message.request.attributes.email_replyTo) {
|
865
|
+
replyTo = message.request.attributes.email_replyTo;
|
866
|
+
}
|
867
|
+
|
868
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID": message.request.ticket_id };
|
847
869
|
|
848
870
|
winston.debug("sendNewPooledMessageEmailNotification messageId: " + messageId);
|
849
871
|
winston.debug("sendNewPooledMessageEmailNotification replyTo: " + replyTo);
|
@@ -860,8 +882,8 @@ class EmailService {
|
|
860
882
|
references = message.request.attributes.email_references;
|
861
883
|
}
|
862
884
|
}
|
863
|
-
winston.debug("sendNewPooledMessageEmailNotification email inReplyTo: "+ inReplyTo);
|
864
|
-
winston.debug("sendNewPooledMessageEmailNotification email references: "+ references);
|
885
|
+
winston.debug("sendNewPooledMessageEmailNotification email inReplyTo: " + inReplyTo);
|
886
|
+
winston.debug("sendNewPooledMessageEmailNotification email references: " + references);
|
865
887
|
|
866
888
|
let from;
|
867
889
|
let configEmail;
|
@@ -872,7 +894,7 @@ class EmailService {
|
|
872
894
|
}
|
873
895
|
if (project.settings.email.from) {
|
874
896
|
from = project.settings.email.from;
|
875
|
-
winston.debug("sendNewPooledMessageEmailNotification custom from email setting found: "+ from);
|
897
|
+
winston.debug("sendNewPooledMessageEmailNotification custom from email setting found: " + from);
|
876
898
|
}
|
877
899
|
}
|
878
900
|
|
@@ -885,7 +907,7 @@ class EmailService {
|
|
885
907
|
if (request.ticket_id) {
|
886
908
|
subjectDef = `[Ticket #${request.ticket_id}] New Message`;
|
887
909
|
}
|
888
|
-
|
910
|
+
|
889
911
|
if (request.ticket_id && request.subject) {
|
890
912
|
subjectDef = `[Ticket #${request.ticket_id}] ${request.subject}`;
|
891
913
|
}
|
@@ -895,19 +917,19 @@ class EmailService {
|
|
895
917
|
|
896
918
|
that.send({
|
897
919
|
messageId: messageId,
|
898
|
-
from:from,
|
899
|
-
to:to,
|
920
|
+
from: from,
|
921
|
+
to: to,
|
900
922
|
replyTo: replyTo,
|
901
923
|
// inReplyTo: inReplyTo,???
|
902
924
|
// references: references,??
|
903
925
|
subject: subject,
|
904
|
-
html:html,
|
905
|
-
config: configEmail,
|
906
|
-
headers:headers
|
926
|
+
html: html,
|
927
|
+
config: configEmail,
|
928
|
+
headers: headers
|
907
929
|
});
|
908
930
|
|
909
931
|
|
910
|
-
|
932
|
+
|
911
933
|
// messageId = "notification" + messageId;
|
912
934
|
|
913
935
|
// that.send({
|
@@ -919,7 +941,7 @@ class EmailService {
|
|
919
941
|
// headers:headers
|
920
942
|
// });
|
921
943
|
|
922
|
-
|
944
|
+
|
923
945
|
}
|
924
946
|
|
925
947
|
|
@@ -928,7 +950,7 @@ class EmailService {
|
|
928
950
|
var that = this;
|
929
951
|
|
930
952
|
//if the request came from rabbit mq?
|
931
|
-
|
953
|
+
|
932
954
|
if (project.toJSON) {
|
933
955
|
project = project.toJSON();
|
934
956
|
}
|
@@ -938,10 +960,10 @@ class EmailService {
|
|
938
960
|
|
939
961
|
|
940
962
|
var envTemplate = process.env.EMAIL_NEW_MESSAGE_HTML_TEMPLATE;
|
941
|
-
|
963
|
+
winston.debug("envTemplate: " + envTemplate);
|
942
964
|
|
943
965
|
if (envTemplate) {
|
944
|
-
|
966
|
+
html = envTemplate;
|
945
967
|
}
|
946
968
|
|
947
969
|
winston.debug("html: " + html);
|
@@ -959,13 +981,13 @@ class EmailService {
|
|
959
981
|
|
960
982
|
winston.debug("msgText: " + msgText);
|
961
983
|
|
962
|
-
var replacements = {
|
984
|
+
var replacements = {
|
963
985
|
message: message,
|
964
986
|
project: project,
|
965
|
-
msgText:msgText,
|
987
|
+
msgText: msgText,
|
966
988
|
seamlessPage: sourcePage,
|
967
989
|
tokenQueryString: tokenQueryString,
|
968
|
-
baseScope: baseScope
|
990
|
+
baseScope: baseScope
|
969
991
|
};
|
970
992
|
|
971
993
|
var html = template(replacements);
|
@@ -980,15 +1002,15 @@ class EmailService {
|
|
980
1002
|
}
|
981
1003
|
|
982
1004
|
let headers;
|
983
|
-
if (message.request) {
|
984
|
-
|
985
|
-
messageId = message.request.request_id + "+" + messageId;
|
1005
|
+
if (message.request) {
|
986
1006
|
|
987
|
-
|
1007
|
+
messageId = message.request.request_id + "+" + messageId;
|
1008
|
+
|
1009
|
+
if (message.request.attributes && message.request.attributes.email_replyTo) {
|
988
1010
|
replyTo = message.request.attributes.email_replyTo;
|
989
|
-
|
990
|
-
|
991
|
-
headers = {"X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID":message.request.ticket_id };
|
1011
|
+
}
|
1012
|
+
|
1013
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID": message.request.ticket_id };
|
992
1014
|
|
993
1015
|
winston.debug("messageId: " + messageId);
|
994
1016
|
winston.debug("replyTo: " + replyTo);
|
@@ -1006,8 +1028,8 @@ class EmailService {
|
|
1006
1028
|
references = message.request.attributes.email_references;
|
1007
1029
|
}
|
1008
1030
|
}
|
1009
|
-
winston.debug("email inReplyTo: "+ inReplyTo);
|
1010
|
-
winston.debug("email references: "+ references);
|
1031
|
+
winston.debug("email inReplyTo: " + inReplyTo);
|
1032
|
+
winston.debug("email references: " + references);
|
1011
1033
|
|
1012
1034
|
let from;
|
1013
1035
|
let configEmail;
|
@@ -1018,7 +1040,7 @@ class EmailService {
|
|
1018
1040
|
}
|
1019
1041
|
if (project.settings.email.from) {
|
1020
1042
|
from = project.settings.email.from;
|
1021
|
-
winston.debug("custom from email setting found: "+ from);
|
1043
|
+
winston.debug("custom from email setting found: " + from);
|
1022
1044
|
}
|
1023
1045
|
}
|
1024
1046
|
|
@@ -1028,35 +1050,35 @@ class EmailService {
|
|
1028
1050
|
that.send({
|
1029
1051
|
messageId: messageId,
|
1030
1052
|
// sender: message.senderFullname, //must be an email
|
1031
|
-
from:from,
|
1032
|
-
to:to,
|
1033
|
-
replyTo: replyTo,
|
1053
|
+
from: from,
|
1054
|
+
to: to,
|
1055
|
+
replyTo: replyTo,
|
1034
1056
|
inReplyTo: inReplyTo,
|
1035
1057
|
references: references,
|
1036
|
-
subject:subject, //TODO (anche per il cloud) aggiungere variabile env per cambiare i subjects
|
1037
|
-
html:html,
|
1038
|
-
config:configEmail,
|
1058
|
+
subject: subject, //TODO (anche per il cloud) aggiungere variabile env per cambiare i subjects
|
1059
|
+
html: html,
|
1060
|
+
config: configEmail,
|
1039
1061
|
headers: headers
|
1040
1062
|
});
|
1041
1063
|
|
1042
|
-
messageId =
|
1064
|
+
messageId = "notification" + messageId;
|
1043
1065
|
|
1044
1066
|
that.send({
|
1045
1067
|
messageId: messageId,
|
1046
1068
|
// sender: message.senderFullname, //must be an email
|
1047
|
-
to: that.bcc,
|
1069
|
+
to: that.bcc,
|
1048
1070
|
replyTo: replyTo,
|
1049
|
-
inReplyTo: inReplyTo,
|
1071
|
+
inReplyTo: inReplyTo,
|
1050
1072
|
references: references,
|
1051
|
-
subject: `[Tiledesk ${project ? project.name : '-'}] New Offline Message - notification`,
|
1052
|
-
html:html,
|
1073
|
+
subject: `[Tiledesk ${project ? project.name : '-'}] New Offline Message - notification`,
|
1074
|
+
html: html,
|
1053
1075
|
headers: headers
|
1054
1076
|
});
|
1055
1077
|
|
1056
1078
|
}
|
1057
1079
|
|
1058
|
-
|
1059
|
-
|
1080
|
+
|
1081
|
+
|
1060
1082
|
async sendEmailChannelNotification(to, message, project, tokenQueryString, sourcePage) {
|
1061
1083
|
|
1062
1084
|
var that = this;
|
@@ -1071,10 +1093,10 @@ class EmailService {
|
|
1071
1093
|
|
1072
1094
|
|
1073
1095
|
var envTemplate = process.env.EMAIL_TICKET_HTML_TEMPLATE;
|
1074
|
-
|
1096
|
+
winston.debug("envTemplate: " + envTemplate);
|
1075
1097
|
|
1076
1098
|
if (envTemplate) {
|
1077
|
-
|
1099
|
+
html = envTemplate;
|
1078
1100
|
}
|
1079
1101
|
|
1080
1102
|
winston.debug("html: " + html);
|
@@ -1090,26 +1112,26 @@ class EmailService {
|
|
1090
1112
|
if (this.markdown) {
|
1091
1113
|
msgText = marked(msgText);
|
1092
1114
|
}
|
1093
|
-
|
1115
|
+
|
1094
1116
|
winston.debug("msgText: " + msgText);
|
1095
1117
|
winston.debug("baseScope: " + JSON.stringify(baseScope));
|
1096
|
-
|
1097
1118
|
|
1098
|
-
|
1119
|
+
|
1120
|
+
var replacements = {
|
1099
1121
|
message: message,
|
1100
1122
|
project: project,
|
1101
1123
|
seamlessPage: sourcePage,
|
1102
1124
|
msgText: msgText,
|
1103
1125
|
tokenQueryString: tokenQueryString,
|
1104
|
-
baseScope: baseScope
|
1126
|
+
baseScope: baseScope
|
1105
1127
|
};
|
1106
1128
|
|
1107
1129
|
var html = template(replacements);
|
1108
1130
|
winston.debug("html: " + html);
|
1109
1131
|
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1132
|
+
|
1133
|
+
|
1134
|
+
|
1113
1135
|
let messageId = message._id + "@" + MESSAGE_ID_DOMAIN;
|
1114
1136
|
|
1115
1137
|
let replyTo;
|
@@ -1118,21 +1140,21 @@ class EmailService {
|
|
1118
1140
|
}
|
1119
1141
|
|
1120
1142
|
let headers;
|
1121
|
-
if (message.request) {
|
1122
|
-
|
1123
|
-
messageId = message.request.request_id + "+" + messageId;
|
1143
|
+
if (message.request) {
|
1124
1144
|
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1145
|
+
messageId = message.request.request_id + "+" + messageId;
|
1146
|
+
|
1147
|
+
if (message.request.attributes && message.request.attributes.email_replyTo) {
|
1148
|
+
replyTo = message.request.attributes.email_replyTo;
|
1149
|
+
}
|
1150
|
+
|
1151
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID": message.request.ticket_id };
|
1130
1152
|
|
1131
1153
|
winston.debug("messageId: " + messageId);
|
1132
1154
|
winston.debug("replyTo: " + replyTo);
|
1133
1155
|
winston.debug("email headers", headers);
|
1134
1156
|
}
|
1135
|
-
|
1157
|
+
|
1136
1158
|
|
1137
1159
|
let inReplyTo;
|
1138
1160
|
let references;
|
@@ -1147,24 +1169,24 @@ class EmailService {
|
|
1147
1169
|
}
|
1148
1170
|
if (message.request.attributes.email_references) {
|
1149
1171
|
references = message.request.attributes.email_references;
|
1150
|
-
}
|
1172
|
+
}
|
1151
1173
|
|
1152
|
-
if (that.ccEnabled==true) {
|
1174
|
+
if (that.ccEnabled == true) {
|
1153
1175
|
if (message.request.attributes.email_cc) {
|
1154
|
-
cc = message.request.attributes.email_cc;
|
1176
|
+
cc = message.request.attributes.email_cc;
|
1155
1177
|
}
|
1156
|
-
winston.debug("email message.request.attributes.email_ccStr: "+ message.request.attributes.email_ccStr);
|
1157
|
-
if (message.request.attributes.email_ccStr!=undefined) {
|
1178
|
+
winston.debug("email message.request.attributes.email_ccStr: " + message.request.attributes.email_ccStr);
|
1179
|
+
if (message.request.attributes.email_ccStr != undefined) {
|
1158
1180
|
ccString = message.request.attributes.email_ccStr;
|
1159
1181
|
winston.debug("email set ccString");
|
1160
1182
|
}
|
1161
1183
|
}
|
1162
|
-
|
1184
|
+
|
1163
1185
|
}
|
1164
|
-
winston.debug("email inReplyTo: "+ inReplyTo);
|
1165
|
-
winston.debug("email references: "+ references);
|
1186
|
+
winston.debug("email inReplyTo: " + inReplyTo);
|
1187
|
+
winston.debug("email references: " + references);
|
1166
1188
|
winston.debug("email cc: ", cc);
|
1167
|
-
winston.debug("email ccString: "+ ccString);
|
1189
|
+
winston.debug("email ccString: " + ccString);
|
1168
1190
|
|
1169
1191
|
let from;
|
1170
1192
|
let configEmail;
|
@@ -1175,7 +1197,7 @@ class EmailService {
|
|
1175
1197
|
}
|
1176
1198
|
if (project.settings.email.from) {
|
1177
1199
|
from = project.settings.email.from;
|
1178
|
-
winston.debug("custom from email setting found: "+ from);
|
1200
|
+
winston.debug("custom from email setting found: " + from);
|
1179
1201
|
}
|
1180
1202
|
}
|
1181
1203
|
|
@@ -1183,7 +1205,7 @@ class EmailService {
|
|
1183
1205
|
let subject = that.formatText("ticketSubject", `R: ${message.request ? message.request.subject : '-'}`, message, project.settings);
|
1184
1206
|
|
1185
1207
|
//ocf
|
1186
|
-
|
1208
|
+
//prod //pre
|
1187
1209
|
// if (project._id =="6406e34727b57500120b1bd6" || project._id == "642c609f179910002cc56b3e") {
|
1188
1210
|
// subject = "Richiesta di supporto #" + message.request.ticket_id;
|
1189
1211
|
// if (message.request.subject) {
|
@@ -1191,43 +1213,43 @@ class EmailService {
|
|
1191
1213
|
// }
|
1192
1214
|
// // console.log("subject",subject);
|
1193
1215
|
// }
|
1194
|
-
|
1216
|
+
|
1195
1217
|
// if (message.request && message.request.lead && message.request.lead.email) {
|
1196
1218
|
// winston.info("message.request.lead.email: " + message.request.lead.email);
|
1197
1219
|
// replyTo = replyTo + ", "+ message.request.lead.email;
|
1198
1220
|
// }
|
1199
|
-
|
1221
|
+
|
1200
1222
|
that.send({
|
1201
1223
|
messageId: messageId,
|
1202
1224
|
// sender: message.senderFullname, //must be an email
|
1203
|
-
from:from,
|
1204
|
-
to:to,
|
1225
|
+
from: from,
|
1226
|
+
to: to,
|
1205
1227
|
cc: ccString,
|
1206
|
-
replyTo: replyTo,
|
1228
|
+
replyTo: replyTo,
|
1207
1229
|
inReplyTo: inReplyTo,
|
1208
1230
|
references: references,
|
1209
1231
|
// subject:`${message.request ? message.request.subject : '-'}`,
|
1210
1232
|
subject: subject,
|
1211
|
-
text:html,
|
1212
|
-
html:html,
|
1213
|
-
config:configEmail,
|
1214
|
-
headers:headers
|
1215
|
-
});
|
1216
|
-
|
1217
|
-
messageId =
|
1233
|
+
text: html,
|
1234
|
+
html: html,
|
1235
|
+
config: configEmail,
|
1236
|
+
headers: headers
|
1237
|
+
});
|
1238
|
+
|
1239
|
+
messageId = "notification" + messageId;
|
1218
1240
|
|
1219
1241
|
that.send({
|
1220
1242
|
messageId: messageId,
|
1221
1243
|
// sender: message.senderFullname, //must be an email
|
1222
|
-
to: that.bcc,
|
1223
|
-
replyTo: replyTo,
|
1244
|
+
to: that.bcc,
|
1245
|
+
replyTo: replyTo,
|
1224
1246
|
inReplyTo: inReplyTo,
|
1225
1247
|
references: references,
|
1226
1248
|
// subject: `${message.request ? message.request.subject : '-'} - notification`,
|
1227
|
-
subject: `R: ${message.request ? message.request.subject : '-'} - notification`,
|
1228
|
-
text:html,
|
1229
|
-
html:html,
|
1230
|
-
headers:headers
|
1249
|
+
subject: `R: ${message.request ? message.request.subject : '-'} - notification`,
|
1250
|
+
text: html,
|
1251
|
+
html: html,
|
1252
|
+
headers: headers
|
1231
1253
|
});
|
1232
1254
|
|
1233
1255
|
}
|
@@ -1241,7 +1263,7 @@ class EmailService {
|
|
1241
1263
|
|
1242
1264
|
|
1243
1265
|
|
1244
|
-
|
1266
|
+
|
1245
1267
|
async sendFollowerNotification(to, message, project) {
|
1246
1268
|
|
1247
1269
|
var that = this;
|
@@ -1255,10 +1277,10 @@ class EmailService {
|
|
1255
1277
|
|
1256
1278
|
|
1257
1279
|
var envTemplate = process.env.EMAIL_FOLLOWER_HTML_TEMPLATE;
|
1258
|
-
|
1280
|
+
winston.debug("envTemplate: " + envTemplate);
|
1259
1281
|
|
1260
1282
|
if (envTemplate) {
|
1261
|
-
|
1283
|
+
html = envTemplate;
|
1262
1284
|
}
|
1263
1285
|
|
1264
1286
|
winston.debug("html: " + html);
|
@@ -1274,26 +1296,26 @@ class EmailService {
|
|
1274
1296
|
if (this.markdown) {
|
1275
1297
|
msgText = marked(msgText);
|
1276
1298
|
}
|
1277
|
-
|
1299
|
+
|
1278
1300
|
winston.debug("msgText: " + msgText);
|
1279
1301
|
winston.debug("baseScope: " + JSON.stringify(baseScope));
|
1280
|
-
|
1281
1302
|
|
1282
|
-
|
1303
|
+
|
1304
|
+
var replacements = {
|
1283
1305
|
message: message,
|
1284
1306
|
project: project,
|
1285
1307
|
msgText: msgText,
|
1286
|
-
baseScope: baseScope
|
1308
|
+
baseScope: baseScope
|
1287
1309
|
};
|
1288
1310
|
|
1289
|
-
var html = template(replacements);
|
1311
|
+
var html = template(replacements);
|
1290
1312
|
winston.debug("html: " + html);
|
1291
1313
|
|
1292
1314
|
const fs = require('fs');
|
1293
1315
|
fs.writeFileSync('tem1111.html', html);
|
1294
1316
|
|
1295
|
-
|
1296
|
-
|
1317
|
+
|
1318
|
+
|
1297
1319
|
let messageId = message._id + "@" + MESSAGE_ID_DOMAIN;
|
1298
1320
|
|
1299
1321
|
let replyTo;
|
@@ -1302,21 +1324,21 @@ class EmailService {
|
|
1302
1324
|
}
|
1303
1325
|
|
1304
1326
|
let headers;
|
1305
|
-
if (message.request) {
|
1306
|
-
|
1307
|
-
messageId = message.request.request_id + "+" + messageId;
|
1327
|
+
if (message.request) {
|
1308
1328
|
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1329
|
+
messageId = message.request.request_id + "+" + messageId;
|
1330
|
+
|
1331
|
+
if (message.request.attributes && message.request.attributes.email_replyTo) {
|
1332
|
+
replyTo = message.request.attributes.email_replyTo;
|
1333
|
+
}
|
1334
|
+
|
1335
|
+
headers = { "X-TILEDESK-PROJECT-ID": project._id, "X-TILEDESK-REQUEST-ID": message.request.request_id, "X-TILEDESK-TICKET-ID": message.request.ticket_id };
|
1314
1336
|
|
1315
1337
|
winston.debug("messageId: " + messageId);
|
1316
1338
|
winston.debug("replyTo: " + replyTo);
|
1317
1339
|
winston.debug("email headers", headers);
|
1318
1340
|
}
|
1319
|
-
|
1341
|
+
|
1320
1342
|
|
1321
1343
|
let inReplyTo;
|
1322
1344
|
let references;
|
@@ -1331,23 +1353,23 @@ class EmailService {
|
|
1331
1353
|
}
|
1332
1354
|
if (message.request.attributes.email_references) {
|
1333
1355
|
references = message.request.attributes.email_references;
|
1334
|
-
}
|
1356
|
+
}
|
1335
1357
|
|
1336
|
-
if (that.ccEnabled==true) {
|
1358
|
+
if (that.ccEnabled == true) {
|
1337
1359
|
if (message.request.attributes.email_cc) {
|
1338
|
-
cc = message.request.attributes.email_cc;
|
1360
|
+
cc = message.request.attributes.email_cc;
|
1339
1361
|
}
|
1340
|
-
winston.debug("email message.request.attributes.email_ccStr: "+ message.request.attributes.email_ccStr);
|
1341
|
-
if (message.request.attributes.email_ccStr!=undefined) {
|
1362
|
+
winston.debug("email message.request.attributes.email_ccStr: " + message.request.attributes.email_ccStr);
|
1363
|
+
if (message.request.attributes.email_ccStr != undefined) {
|
1342
1364
|
ccString = message.request.attributes.email_ccStr;
|
1343
1365
|
winston.debug("email set ccString");
|
1344
1366
|
}
|
1345
1367
|
}
|
1346
1368
|
}
|
1347
|
-
winston.debug("email inReplyTo: "+ inReplyTo);
|
1348
|
-
winston.debug("email references: "+ references);
|
1369
|
+
winston.debug("email inReplyTo: " + inReplyTo);
|
1370
|
+
winston.debug("email references: " + references);
|
1349
1371
|
winston.debug("email cc: ", cc);
|
1350
|
-
winston.debug("email ccString: "+ ccString);
|
1372
|
+
winston.debug("email ccString: " + ccString);
|
1351
1373
|
|
1352
1374
|
let from;
|
1353
1375
|
let configEmail;
|
@@ -1358,32 +1380,32 @@ class EmailService {
|
|
1358
1380
|
}
|
1359
1381
|
if (project.settings.email.from) {
|
1360
1382
|
from = project.settings.email.from;
|
1361
|
-
winston.debug("custom from email setting found: "+ from);
|
1383
|
+
winston.debug("custom from email setting found: " + from);
|
1362
1384
|
}
|
1363
1385
|
}
|
1364
1386
|
|
1365
1387
|
|
1366
1388
|
let subject = that.formatText("newMessageFollowerSubject", `${message.request ? message.request.ticket_id : '-'}`, message, project.settings);
|
1367
1389
|
|
1368
|
-
|
1369
|
-
|
1390
|
+
|
1391
|
+
|
1370
1392
|
that.send({
|
1371
1393
|
messageId: messageId,
|
1372
1394
|
// sender: message.senderFullname, //must be an email
|
1373
|
-
from:from,
|
1374
|
-
to:to,
|
1395
|
+
from: from,
|
1396
|
+
to: to,
|
1375
1397
|
cc: ccString,
|
1376
|
-
replyTo: replyTo,
|
1398
|
+
replyTo: replyTo,
|
1377
1399
|
inReplyTo: inReplyTo,
|
1378
1400
|
references: references,
|
1379
1401
|
// subject:`${message.request ? message.request.subject : '-'}`,
|
1380
1402
|
subject: subject, //gmail uses subject
|
1381
|
-
text:html,
|
1382
|
-
html:html,
|
1383
|
-
config:configEmail,
|
1384
|
-
headers:headers
|
1385
|
-
});
|
1386
|
-
|
1403
|
+
text: html,
|
1404
|
+
html: html,
|
1405
|
+
config: configEmail,
|
1406
|
+
headers: headers
|
1407
|
+
});
|
1408
|
+
|
1387
1409
|
// // messageId = "notification" + messageId;
|
1388
1410
|
|
1389
1411
|
// // that.send({
|
@@ -1404,151 +1426,153 @@ class EmailService {
|
|
1404
1426
|
}
|
1405
1427
|
|
1406
1428
|
|
1407
|
-
/*
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1417
|
-
|
1429
|
+
/*
|
1430
|
+
sendEmailChannelTakingNotification(to, request, project, tokenQueryString) {
|
1431
|
+
|
1432
|
+
var that = this;
|
1433
|
+
|
1434
|
+
this.readTemplateFile('ticket-taking.txt', function(err, html) {
|
1435
|
+
// this.readTemplateFile('ticket.html', function(err, html) {
|
1436
|
+
|
1437
|
+
|
1438
|
+
var envTemplate = process.env.EMAIL_TICKET_HTML_TEMPLATE;
|
1439
|
+
winston.debug("envTemplate: " + envTemplate);
|
1440
|
+
|
1441
|
+
if (envTemplate) {
|
1442
|
+
html = envTemplate;
|
1443
|
+
}
|
1444
|
+
|
1445
|
+
winston.debug("html: " + html);
|
1446
|
+
|
1447
|
+
var template = handlebars.compile(html);
|
1448
|
+
|
1449
|
+
var baseScope = JSON.parse(JSON.stringify(that));
|
1450
|
+
delete baseScope.pass;
|
1451
|
+
|
1452
|
+
var replacements = {
|
1453
|
+
request: request,
|
1454
|
+
project: project.toJSON(),
|
1455
|
+
tokenQueryString: tokenQueryString,
|
1456
|
+
baseScope: baseScope
|
1457
|
+
};
|
1458
|
+
|
1459
|
+
var html = template(replacements);
|
1460
|
+
winston.debug("html: " + html);
|
1461
|
+
|
1462
|
+
|
1463
|
+
// if (message.request && message.request.lead && message.request.lead.email) {
|
1464
|
+
// winston.info("message.request.lead.email: " + message.request.lead.email);
|
1465
|
+
// replyTo = replyTo + ", "+ request.lead.email;
|
1466
|
+
// }
|
1467
|
+
|
1468
|
+
|
1469
|
+
that.send({to:to, replyTo: replyTo, subject:`R: ${request ? request.subject : '-'}`, text:html }); //html:html
|
1470
|
+
that.send({to: that.bcc, replyTo: replyTo, subject: `R: ${request ? request.subject : '-'} - notification`, text:html});//html:html
|
1471
|
+
|
1472
|
+
});
|
1473
|
+
}
|
1474
|
+
*/
|
1418
1475
|
|
1419
|
-
if (envTemplate) {
|
1420
|
-
html = envTemplate;
|
1421
|
-
}
|
1422
1476
|
|
1423
|
-
winston.debug("html: " + html);
|
1424
1477
|
|
1425
|
-
var template = handlebars.compile(html);
|
1426
1478
|
|
1427
|
-
var baseScope = JSON.parse(JSON.stringify(that));
|
1428
|
-
delete baseScope.pass;
|
1429
1479
|
|
1430
|
-
var replacements = {
|
1431
|
-
request: request,
|
1432
|
-
project: project.toJSON(),
|
1433
|
-
tokenQueryString: tokenQueryString,
|
1434
|
-
baseScope: baseScope
|
1435
|
-
};
|
1436
1480
|
|
1437
|
-
var html = template(replacements);
|
1438
|
-
winston.debug("html: " + html);
|
1439
1481
|
|
1482
|
+
async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString, sourcePage, payload, replyTo, quoteManager) {
|
1440
1483
|
|
1441
|
-
|
1442
|
-
// winston.info("message.request.lead.email: " + message.request.lead.email);
|
1443
|
-
// replyTo = replyTo + ", "+ request.lead.email;
|
1444
|
-
// }
|
1445
|
-
|
1484
|
+
var that = this;
|
1446
1485
|
|
1447
|
-
that.send({to:to, replyTo: replyTo, subject:`R: ${request ? request.subject : '-'}`, text:html }); //html:html
|
1448
|
-
that.send({to: that.bcc, replyTo: replyTo, subject: `R: ${request ? request.subject : '-'} - notification`, text:html});//html:html
|
1449
1486
|
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1487
|
+
if (project.toJSON) {
|
1488
|
+
project = project.toJSON();
|
1489
|
+
}
|
1453
1490
|
|
1491
|
+
var html = await this.readTemplate('emailDirect.html', project.settings);
|
1454
1492
|
|
1493
|
+
var envTemplate = process.env.EMAIL_DIRECT_HTML_TEMPLATE;
|
1494
|
+
winston.debug("envTemplate: " + envTemplate);
|
1455
1495
|
|
1496
|
+
if (envTemplate) {
|
1497
|
+
html = envTemplate;
|
1498
|
+
}
|
1456
1499
|
|
1500
|
+
winston.debug("html: " + html);
|
1457
1501
|
|
1502
|
+
var template = handlebars.compile(html);
|
1458
1503
|
|
1459
|
-
|
1460
|
-
|
1504
|
+
var baseScope = JSON.parse(JSON.stringify(that));
|
1505
|
+
delete baseScope.pass;
|
1461
1506
|
|
1462
|
-
var that = this;
|
1463
1507
|
|
1508
|
+
let msgText = text;
|
1509
|
+
msgText = encode(msgText);
|
1510
|
+
if (this.markdown) {
|
1511
|
+
msgText = marked(msgText);
|
1512
|
+
}
|
1464
1513
|
|
1465
|
-
|
1466
|
-
|
1467
|
-
}
|
1514
|
+
winston.debug("msgText: " + msgText);
|
1515
|
+
winston.debug("baseScope: " + JSON.stringify(baseScope));
|
1468
1516
|
|
1469
|
-
var html = await this.readTemplate('emailDirect.html', project.settings);
|
1470
1517
|
|
1471
|
-
|
1472
|
-
|
1518
|
+
var replacements = {
|
1519
|
+
project: project,
|
1520
|
+
request_id: request_id,
|
1521
|
+
seamlessPage: sourcePage,
|
1522
|
+
msgText: msgText,
|
1523
|
+
tokenQueryString: tokenQueryString,
|
1524
|
+
baseScope: baseScope,
|
1525
|
+
payload: payload
|
1526
|
+
};
|
1473
1527
|
|
1474
|
-
|
1475
|
-
|
1476
|
-
}
|
1528
|
+
var html = template(replacements);
|
1529
|
+
winston.debug("html: " + html);
|
1477
1530
|
|
1478
|
-
winston.debug("html: " + html);
|
1479
1531
|
|
1480
|
-
|
1532
|
+
// let replyTo;
|
1481
1533
|
|
1482
|
-
|
1483
|
-
|
1534
|
+
if (!replyTo && this.replyEnabled && request_id) {
|
1535
|
+
replyTo = request_id + this.inboundDomainDomainWithAt;
|
1536
|
+
}
|
1484
1537
|
|
1538
|
+
let from;
|
1539
|
+
let configEmail;
|
1540
|
+
if (project && project.settings && project.settings.email) {
|
1541
|
+
if (project.settings.email.config) {
|
1542
|
+
configEmail = project.settings.email.config;
|
1543
|
+
winston.debug("custom email configEmail setting found: ", configEmail);
|
1544
|
+
}
|
1545
|
+
if (project.settings.email.from) {
|
1546
|
+
from = project.settings.email.from;
|
1547
|
+
winston.debug("custom from email setting found: " + from);
|
1548
|
+
}
|
1549
|
+
}
|
1485
1550
|
|
1486
|
-
|
1487
|
-
msgText = encode(msgText);
|
1488
|
-
if (this.markdown) {
|
1489
|
-
msgText = marked(msgText);
|
1490
|
-
}
|
1491
|
-
|
1492
|
-
winston.debug("msgText: " + msgText);
|
1493
|
-
winston.debug("baseScope: " + JSON.stringify(baseScope));
|
1494
|
-
|
1551
|
+
let subjectParsed = that.parseText(subject, payload);
|
1495
1552
|
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
msgText: msgText,
|
1501
|
-
tokenQueryString: tokenQueryString,
|
1502
|
-
baseScope: baseScope,
|
1503
|
-
payload: payload
|
1504
|
-
};
|
1553
|
+
// if (message.request && message.request.lead && message.request.lead.email) {
|
1554
|
+
// winston.info("message.request.lead.email: " + message.request.lead.email);
|
1555
|
+
// replyTo = replyTo + ", "+ message.request.lead.email;
|
1556
|
+
// }
|
1505
1557
|
|
1506
|
-
|
1507
|
-
|
1558
|
+
// if (!subject) {
|
1559
|
+
// subject = "Tiledesk"
|
1560
|
+
// }
|
1508
1561
|
|
1509
|
-
|
1510
|
-
// let replyTo;
|
1562
|
+
let email_enabled = true;
|
1511
1563
|
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1564
|
+
that.send({
|
1565
|
+
from: from,
|
1566
|
+
to: to,
|
1567
|
+
replyTo: replyTo,
|
1568
|
+
subject: subjectParsed,
|
1569
|
+
text: html,
|
1570
|
+
html: html,
|
1571
|
+
config: configEmail,
|
1572
|
+
}, email_enabled, project, quoteManager);
|
1515
1573
|
|
1516
|
-
let from;
|
1517
|
-
let configEmail;
|
1518
|
-
if (project && project.settings && project.settings.email) {
|
1519
|
-
if (project.settings.email.config) {
|
1520
|
-
configEmail = project.settings.email.config;
|
1521
|
-
winston.debug("custom email configEmail setting found: ", configEmail);
|
1522
|
-
}
|
1523
|
-
if (project.settings.email.from) {
|
1524
|
-
from = project.settings.email.from;
|
1525
|
-
winston.debug("custom from email setting found: "+ from);
|
1526
|
-
}
|
1527
1574
|
}
|
1528
1575
|
|
1529
|
-
let subjectParsed = that.parseText(subject, payload);
|
1530
|
-
|
1531
|
-
// if (message.request && message.request.lead && message.request.lead.email) {
|
1532
|
-
// winston.info("message.request.lead.email: " + message.request.lead.email);
|
1533
|
-
// replyTo = replyTo + ", "+ message.request.lead.email;
|
1534
|
-
// }
|
1535
|
-
|
1536
|
-
// if (!subject) {
|
1537
|
-
// subject = "Tiledesk"
|
1538
|
-
// }
|
1539
|
-
|
1540
|
-
that.send({
|
1541
|
-
from:from,
|
1542
|
-
to:to,
|
1543
|
-
replyTo: replyTo,
|
1544
|
-
subject:subjectParsed,
|
1545
|
-
text:html,
|
1546
|
-
html:html,
|
1547
|
-
config:configEmail,
|
1548
|
-
});
|
1549
|
-
|
1550
|
-
}
|
1551
|
-
|
1552
1576
|
|
1553
1577
|
|
1554
1578
|
// ok
|
@@ -1560,13 +1584,13 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1560
1584
|
|
1561
1585
|
|
1562
1586
|
var envTemplate = process.env.EMAIL_RESET_PASSWORD_HTML_TEMPLATE;
|
1563
|
-
|
1587
|
+
winston.debug("envTemplate: " + envTemplate);
|
1564
1588
|
|
1565
1589
|
if (envTemplate) {
|
1566
|
-
|
1590
|
+
html = envTemplate;
|
1567
1591
|
}
|
1568
1592
|
|
1569
|
-
|
1593
|
+
winston.debug("html: " + html);
|
1570
1594
|
|
1571
1595
|
var template = handlebars.compile(html);
|
1572
1596
|
|
@@ -1574,18 +1598,18 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1574
1598
|
delete baseScope.pass;
|
1575
1599
|
|
1576
1600
|
|
1577
|
-
var replacements = {
|
1601
|
+
var replacements = {
|
1578
1602
|
resetPswRequestId: resetPswRequestId,
|
1579
1603
|
userFirstname: userFirstname,
|
1580
1604
|
userLastname: userLastname,
|
1581
|
-
baseScope: baseScope
|
1605
|
+
baseScope: baseScope
|
1582
1606
|
};
|
1583
1607
|
|
1584
1608
|
var html = template(replacements);
|
1585
1609
|
|
1586
1610
|
|
1587
|
-
that.send({to: to, subject: '[Tiledesk] Password reset request', html:html});
|
1588
|
-
that.send({to:that.bcc, subject: '[Tiledesk] Password reset request - notification', html:html });
|
1611
|
+
that.send({ to: to, subject: '[Tiledesk] Password reset request', html: html });
|
1612
|
+
that.send({ to: that.bcc, subject: '[Tiledesk] Password reset request - notification', html: html });
|
1589
1613
|
|
1590
1614
|
}
|
1591
1615
|
|
@@ -1598,13 +1622,13 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1598
1622
|
|
1599
1623
|
|
1600
1624
|
var envTemplate = process.env.EMAIL_PASSWORD_CHANGED_HTML_TEMPLATE;
|
1601
|
-
|
1625
|
+
winston.debug("envTemplate: " + envTemplate);
|
1602
1626
|
|
1603
1627
|
if (envTemplate) {
|
1604
|
-
|
1628
|
+
html = envTemplate;
|
1605
1629
|
}
|
1606
1630
|
|
1607
|
-
|
1631
|
+
winston.debug("html: " + html);
|
1608
1632
|
|
1609
1633
|
var template = handlebars.compile(html);
|
1610
1634
|
|
@@ -1612,42 +1636,42 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1612
1636
|
delete baseScope.pass;
|
1613
1637
|
|
1614
1638
|
|
1615
|
-
var replacements = {
|
1639
|
+
var replacements = {
|
1616
1640
|
userFirstname: userFirstname,
|
1617
1641
|
userLastname: userLastname,
|
1618
1642
|
to: to,
|
1619
|
-
baseScope: baseScope
|
1643
|
+
baseScope: baseScope
|
1620
1644
|
};
|
1621
1645
|
|
1622
1646
|
var html = template(replacements);
|
1623
1647
|
|
1624
1648
|
|
1625
|
-
that.send({to: to, subject:'[Tiledesk] Your password has been changed', html:html });
|
1626
|
-
that.send({to: that.bcc, subject: '[Tiledesk] Your password has been changed - notification', html: html });
|
1649
|
+
that.send({ to: to, subject: '[Tiledesk] Your password has been changed', html: html });
|
1650
|
+
that.send({ to: that.bcc, subject: '[Tiledesk] Your password has been changed - notification', html: html });
|
1627
1651
|
|
1628
1652
|
}
|
1629
1653
|
|
1630
1654
|
|
1631
|
-
|
1655
|
+
// ok
|
1632
1656
|
|
1633
1657
|
|
1634
1658
|
/**
|
1635
1659
|
*! *** EMAIL: YOU HAVE BEEN INVITED AT THE PROJECT ***
|
1636
1660
|
*/
|
1637
|
-
|
1661
|
+
async sendYouHaveBeenInvited(to, currentUserFirstname, currentUserLastname, projectName, id_project, invitedUserFirstname, invitedUserLastname, invitedUserRole) {
|
1638
1662
|
|
1639
1663
|
var that = this;
|
1640
1664
|
|
1641
1665
|
var html = await this.readTemplateFile('beenInvitedExistingUser.html');
|
1642
1666
|
|
1643
1667
|
var envTemplate = process.env.EMAIL_EXUSER_INVITED_HTML_TEMPLATE;
|
1644
|
-
|
1668
|
+
winston.debug("envTemplate: " + envTemplate);
|
1645
1669
|
|
1646
1670
|
if (envTemplate) {
|
1647
|
-
|
1671
|
+
html = envTemplate;
|
1648
1672
|
}
|
1649
1673
|
|
1650
|
-
|
1674
|
+
winston.debug("html: " + html);
|
1651
1675
|
|
1652
1676
|
var template = handlebars.compile(html);
|
1653
1677
|
|
@@ -1655,7 +1679,7 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1655
1679
|
delete baseScope.pass;
|
1656
1680
|
|
1657
1681
|
|
1658
|
-
var replacements = {
|
1682
|
+
var replacements = {
|
1659
1683
|
currentUserFirstname: currentUserFirstname,
|
1660
1684
|
currentUserLastname: currentUserLastname,
|
1661
1685
|
projectName: projectName,
|
@@ -1663,37 +1687,37 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1663
1687
|
invitedUserFirstname: invitedUserFirstname,
|
1664
1688
|
invitedUserLastname: invitedUserLastname,
|
1665
1689
|
invitedUserRole: invitedUserRole,
|
1666
|
-
baseScope: baseScope
|
1690
|
+
baseScope: baseScope
|
1667
1691
|
};
|
1668
1692
|
|
1669
1693
|
var html = template(replacements);
|
1670
1694
|
|
1671
1695
|
|
1672
|
-
that.send({to:to, subject: `[Tiledesk] You have been invited to the '${projectName}' project`, html:html});
|
1673
|
-
that.send({to: that.bcc, subject: `[Tiledesk] You have been invited to the '${projectName}' project - notification`, html: html});
|
1696
|
+
that.send({ to: to, subject: `[Tiledesk] You have been invited to the '${projectName}' project`, html: html });
|
1697
|
+
that.send({ to: that.bcc, subject: `[Tiledesk] You have been invited to the '${projectName}' project - notification`, html: html });
|
1674
1698
|
}
|
1675
1699
|
|
1676
|
-
|
1700
|
+
// ok
|
1677
1701
|
|
1678
1702
|
|
1679
1703
|
/**
|
1680
1704
|
*! *** EMAIL: YOU HAVE BEEN INVITED AT THE PROJECT (USER NOT REGISTERED) ***
|
1681
1705
|
*/
|
1682
|
-
|
1706
|
+
async sendInvitationEmail_UserNotRegistered(to, currentUserFirstname, currentUserLastname, projectName, id_project, invitedUserRole, pendinginvitationid) {
|
1707
|
+
|
1683
1708
|
|
1684
|
-
|
1685
1709
|
var that = this;
|
1686
1710
|
|
1687
1711
|
var html = await this.readTemplateFile('beenInvitedNewUser.html');
|
1688
1712
|
|
1689
1713
|
var envTemplate = process.env.EMAIL_NEWUSER_INVITED_HTML_TEMPLATE;
|
1690
|
-
|
1714
|
+
winston.debug("envTemplate: " + envTemplate);
|
1691
1715
|
|
1692
1716
|
if (envTemplate) {
|
1693
|
-
|
1717
|
+
html = envTemplate;
|
1694
1718
|
}
|
1695
1719
|
|
1696
|
-
|
1720
|
+
winston.debug("html: " + html);
|
1697
1721
|
|
1698
1722
|
var template = handlebars.compile(html);
|
1699
1723
|
|
@@ -1701,27 +1725,27 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1701
1725
|
delete baseScope.pass;
|
1702
1726
|
|
1703
1727
|
|
1704
|
-
var replacements = {
|
1728
|
+
var replacements = {
|
1705
1729
|
currentUserFirstname: currentUserFirstname,
|
1706
1730
|
currentUserLastname: currentUserLastname,
|
1707
1731
|
projectName: projectName,
|
1708
1732
|
id_project: id_project,
|
1709
1733
|
invitedUserRole: invitedUserRole,
|
1710
1734
|
pendinginvitationid: pendinginvitationid,
|
1711
|
-
baseScope: baseScope
|
1735
|
+
baseScope: baseScope
|
1712
1736
|
};
|
1713
1737
|
|
1714
1738
|
var html = template(replacements);
|
1715
1739
|
|
1716
|
-
that.send({to:to, subject: `[Tiledesk] You have been invited to the '${projectName}' project`, html:html });
|
1717
|
-
that.send({to: that.bcc, subject: `[Tiledesk] You have been invited to the '${projectName}' project - notification`, html: html});
|
1740
|
+
that.send({ to: to, subject: `[Tiledesk] You have been invited to the '${projectName}' project`, html: html });
|
1741
|
+
that.send({ to: that.bcc, subject: `[Tiledesk] You have been invited to the '${projectName}' project - notification`, html: html });
|
1718
1742
|
|
1719
1743
|
}
|
1720
1744
|
|
1721
1745
|
// ok
|
1722
1746
|
async sendVerifyEmailAddress(to, savedUser) {
|
1723
1747
|
|
1724
|
-
|
1748
|
+
|
1725
1749
|
var that = this;
|
1726
1750
|
|
1727
1751
|
if (savedUser.toJSON) {
|
@@ -1730,13 +1754,13 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1730
1754
|
var html = await this.readTemplateFile('verify.html');
|
1731
1755
|
|
1732
1756
|
var envTemplate = process.env.EMAIL_VERIFY_HTML_TEMPLATE;
|
1733
|
-
|
1757
|
+
winston.debug("envTemplate: " + envTemplate);
|
1734
1758
|
|
1735
1759
|
if (envTemplate) {
|
1736
|
-
|
1760
|
+
html = envTemplate;
|
1737
1761
|
}
|
1738
1762
|
|
1739
|
-
|
1763
|
+
winston.debug("html: " + html);
|
1740
1764
|
|
1741
1765
|
var template = handlebars.compile(html);
|
1742
1766
|
|
@@ -1744,16 +1768,16 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1744
1768
|
delete baseScope.pass;
|
1745
1769
|
|
1746
1770
|
|
1747
|
-
var replacements = {
|
1748
|
-
savedUser: savedUser,
|
1749
|
-
baseScope: baseScope
|
1771
|
+
var replacements = {
|
1772
|
+
savedUser: savedUser,
|
1773
|
+
baseScope: baseScope
|
1750
1774
|
};
|
1751
1775
|
|
1752
1776
|
var html = template(replacements);
|
1753
1777
|
|
1754
1778
|
|
1755
|
-
that.send({to: to, subject: `[Tiledesk] Verify your email address`, html:html });
|
1756
|
-
that.send({to: that.bcc, subject: `[Tiledesk] Verify your email address
|
1779
|
+
that.send({ to: to, subject: `[Tiledesk] Verify your email address`, html: html });
|
1780
|
+
that.send({ to: that.bcc, subject: `[Tiledesk] Verify your email address ` + to + " - notification", html: html });
|
1757
1781
|
|
1758
1782
|
}
|
1759
1783
|
|
@@ -1763,13 +1787,13 @@ async sendEmailDirect(to, text, project, request_id, subject, tokenQueryString,
|
|
1763
1787
|
|
1764
1788
|
|
1765
1789
|
|
1766
|
-
// ok
|
1790
|
+
// ok
|
1767
1791
|
|
1768
|
-
async sendRequestTranscript(to, messages, request, project) {
|
1769
|
-
|
1792
|
+
async sendRequestTranscript(to, messages, request, project) {
|
1793
|
+
winston.debug("sendRequestTranscript: " + to);
|
1770
1794
|
|
1771
|
-
|
1772
|
-
|
1795
|
+
//if the request came from rabbit mq?
|
1796
|
+
if (request.toJSON) {
|
1773
1797
|
request = request.toJSON();
|
1774
1798
|
}
|
1775
1799
|
|
@@ -1779,24 +1803,24 @@ async sendRequestTranscript(to, messages, request, project) {
|
|
1779
1803
|
|
1780
1804
|
var transcriptAsHtml = ""; //https://handlebarsjs.com/guide/expressions.html#html-escaping
|
1781
1805
|
messages.forEach(message => {
|
1782
|
-
transcriptAsHtml = transcriptAsHtml + '['+ message.createdAt.toLocaleTimeString('en', { timeZone: 'UTC' }) +'] ' + message.senderFullname + ': ' + message.text + '<br>';
|
1806
|
+
transcriptAsHtml = transcriptAsHtml + '[' + message.createdAt.toLocaleTimeString('en', { timeZone: 'UTC' }) + '] ' + message.senderFullname + ': ' + message.text + '<br>';
|
1783
1807
|
});
|
1784
1808
|
winston.debug("transcriptAsHtml: " + transcriptAsHtml);
|
1785
|
-
|
1786
|
-
|
1787
|
-
|
1809
|
+
|
1810
|
+
|
1811
|
+
|
1788
1812
|
var that = this;
|
1789
1813
|
|
1790
1814
|
var html = await this.readTemplate('sendTranscript.html', project.settings);
|
1791
1815
|
|
1792
1816
|
var envTemplate = process.env.EMAIL_SEND_TRANSCRIPT_HTML_TEMPLATE;
|
1793
|
-
|
1817
|
+
winston.debug("envTemplate: " + envTemplate);
|
1794
1818
|
|
1795
1819
|
if (envTemplate) {
|
1796
|
-
|
1820
|
+
html = envTemplate;
|
1797
1821
|
}
|
1798
1822
|
|
1799
|
-
|
1823
|
+
winston.debug("html: " + html);
|
1800
1824
|
|
1801
1825
|
var template = handlebars.compile(html);
|
1802
1826
|
|
@@ -1804,17 +1828,17 @@ async sendRequestTranscript(to, messages, request, project) {
|
|
1804
1828
|
delete baseScope.pass;
|
1805
1829
|
|
1806
1830
|
|
1807
|
-
var replacements = {
|
1808
|
-
messages: messages,
|
1809
|
-
request: request,
|
1831
|
+
var replacements = {
|
1832
|
+
messages: messages,
|
1833
|
+
request: request,
|
1810
1834
|
formattedCreatedAt: request.createdAt.toLocaleString('en', { timeZone: 'UTC' }),
|
1811
1835
|
transcriptAsHtml: transcriptAsHtml,
|
1812
|
-
baseScope: baseScope
|
1836
|
+
baseScope: baseScope
|
1813
1837
|
};
|
1814
1838
|
|
1815
1839
|
var html = template(replacements);
|
1816
1840
|
|
1817
|
-
|
1841
|
+
|
1818
1842
|
|
1819
1843
|
let from;
|
1820
1844
|
let configEmail;
|
@@ -1825,7 +1849,7 @@ async sendRequestTranscript(to, messages, request, project) {
|
|
1825
1849
|
}
|
1826
1850
|
if (project.settings.email.from) {
|
1827
1851
|
from = project.settings.email.from;
|
1828
|
-
winston.debug("custom from email setting found: "+ from);
|
1852
|
+
winston.debug("custom from email setting found: " + from);
|
1829
1853
|
}
|
1830
1854
|
}
|
1831
1855
|
|
@@ -1835,7 +1859,7 @@ async sendRequestTranscript(to, messages, request, project) {
|
|
1835
1859
|
// console.log("ocf",project._id);
|
1836
1860
|
let subject = that.formatText("sendTranscriptSubject", '[Tiledesk] Transcript', request, project.settings);
|
1837
1861
|
|
1838
|
-
|
1862
|
+
//prod //pre
|
1839
1863
|
// if (project._id =="6406e34727b57500120b1bd6" || project._id == "642c609f179910002cc56b3e") {
|
1840
1864
|
// subject = "Segnalazione #" + request.ticket_id;
|
1841
1865
|
// // subject = "Richiesta di supporto #" + request.ticket_id;
|
@@ -1846,136 +1870,136 @@ async sendRequestTranscript(to, messages, request, project) {
|
|
1846
1870
|
// }
|
1847
1871
|
// hcustomization.emailTranscript(to, subject, html, configEmail)
|
1848
1872
|
|
1849
|
-
that.send({from:from, to:to, subject: subject, html:html, config: configEmail});
|
1850
|
-
that.send({to: that.bcc, subject: '[Tiledesk] Transcript - notification', html:html });
|
1873
|
+
that.send({ from: from, to: to, subject: subject, html: html, config: configEmail });
|
1874
|
+
that.send({ to: that.bcc, subject: '[Tiledesk] Transcript - notification', html: html });
|
1851
1875
|
|
1852
|
-
}
|
1876
|
+
}
|
1853
1877
|
|
1854
|
-
async sendEmailRedirectOnDesktop(to, token, project_id, chatbot_id) {
|
1855
|
-
|
1878
|
+
async sendEmailRedirectOnDesktop(to, token, project_id, chatbot_id) {
|
1879
|
+
winston.debug("sendEmailRedirectOnDesktop: " + to);
|
1856
1880
|
|
1857
|
-
|
1881
|
+
var that = this;
|
1858
1882
|
|
1859
|
-
|
1883
|
+
let html = await this.readTemplate('redirectToDesktopEmail.html');
|
1860
1884
|
|
1861
|
-
|
1862
|
-
|
1885
|
+
let envTemplate = process.env.EMAIL_REDIRECT_TO_DESKTOP_TEMPLATE
|
1886
|
+
winston.debug("envTemplate: " + envTemplate);
|
1863
1887
|
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1888
|
+
if (envTemplate) {
|
1889
|
+
html = envTemplate;
|
1890
|
+
}
|
1867
1891
|
|
1868
|
-
|
1892
|
+
winston.debug("html: " + html);
|
1869
1893
|
|
1870
|
-
|
1894
|
+
let template = handlebars.compile(html);
|
1871
1895
|
|
1872
|
-
|
1873
|
-
|
1896
|
+
let baseScope = JSON.parse(JSON.stringify(that));
|
1897
|
+
delete baseScope.pass;
|
1874
1898
|
|
1875
|
-
|
1876
|
-
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
|
1899
|
+
let replacements = {
|
1900
|
+
baseScope: baseScope,
|
1901
|
+
token: token,
|
1902
|
+
project_id: project_id,
|
1903
|
+
chatbot_id: chatbot_id
|
1904
|
+
}
|
1881
1905
|
|
1882
|
-
|
1906
|
+
html = template(replacements);
|
1883
1907
|
|
1884
|
-
|
1908
|
+
that.send({ to: to, subject: "Join Tiledesk from Desktop", html: html });
|
1885
1909
|
|
1886
|
-
}
|
1910
|
+
}
|
1887
1911
|
|
1888
|
-
parseText(text, payload) {
|
1912
|
+
parseText(text, payload) {
|
1889
1913
|
|
1890
|
-
|
1891
1914
|
|
1892
|
-
var baseScope = JSON.parse(JSON.stringify(this));
|
1893
|
-
delete baseScope.pass;
|
1894
1915
|
|
1895
|
-
|
1916
|
+
var baseScope = JSON.parse(JSON.stringify(this));
|
1917
|
+
delete baseScope.pass;
|
1896
1918
|
|
1897
|
-
|
1919
|
+
winston.debug("parseText text: " + text);
|
1898
1920
|
|
1899
|
-
|
1900
|
-
payload: payload,
|
1901
|
-
baseScope: baseScope,
|
1902
|
-
test: "test"
|
1903
|
-
};
|
1921
|
+
var templateHand = handlebars.compile(text);
|
1904
1922
|
|
1905
|
-
|
1906
|
-
|
1923
|
+
var replacements = {
|
1924
|
+
payload: payload,
|
1925
|
+
baseScope: baseScope,
|
1926
|
+
test: "test"
|
1927
|
+
};
|
1907
1928
|
|
1908
|
-
|
1929
|
+
var textTemplate = templateHand(replacements);
|
1930
|
+
winston.debug("parseText textTemplate: " + textTemplate);
|
1909
1931
|
|
1932
|
+
return textTemplate;
|
1910
1933
|
|
1911
|
-
}
|
1912
1934
|
|
1913
|
-
|
1935
|
+
}
|
1914
1936
|
|
1915
|
-
|
1916
|
-
winston.debug("formatText defaultText: "+ defaultText);
|
1937
|
+
formatText(templateName, defaultText, payload, settings) {
|
1917
1938
|
|
1918
|
-
|
1939
|
+
let text = defaultText;
|
1940
|
+
winston.debug("formatText defaultText: " + defaultText);
|
1919
1941
|
|
1920
|
-
|
1942
|
+
let template = this.getTemplate(templateName, settings);
|
1921
1943
|
|
1922
|
-
|
1923
|
-
text = template;
|
1924
|
-
}
|
1944
|
+
winston.debug("formatText template: " + template);
|
1925
1945
|
|
1926
|
-
|
1927
|
-
|
1946
|
+
if (template) {
|
1947
|
+
text = template;
|
1948
|
+
}
|
1928
1949
|
|
1929
|
-
|
1950
|
+
var baseScope = JSON.parse(JSON.stringify(this));
|
1951
|
+
delete baseScope.pass;
|
1930
1952
|
|
1931
|
-
|
1953
|
+
winston.debug("formatText text: " + text);
|
1932
1954
|
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1955
|
+
var templateHand = handlebars.compile(text);
|
1956
|
+
|
1957
|
+
var replacements = {
|
1958
|
+
payload: payload,
|
1959
|
+
baseScope: baseScope,
|
1960
|
+
test: "test"
|
1961
|
+
};
|
1938
1962
|
|
1939
|
-
|
1940
|
-
|
1963
|
+
var textTemplate = templateHand(replacements);
|
1964
|
+
winston.debug("formatText textTemplate: " + textTemplate);
|
1941
1965
|
|
1942
|
-
|
1966
|
+
return textTemplate;
|
1943
1967
|
|
1944
|
-
}
|
1968
|
+
}
|
1945
1969
|
|
1946
|
-
getTemplate(templateName, settings) {
|
1970
|
+
getTemplate(templateName, settings) {
|
1971
|
+
|
1972
|
+
var that = this;
|
1973
|
+
winston.debug('getTemplate formatSubject: ' + JSON.stringify(settings));
|
1947
1974
|
|
1948
|
-
var that = this;
|
1949
|
-
winston.debug('getTemplate formatSubject: ' + JSON.stringify(settings));
|
1950
|
-
|
1951
1975
|
|
1952
|
-
|
1953
|
-
|
1976
|
+
if (settings && settings.email && settings.email.templates) {
|
1977
|
+
winston.debug('getTemplate settings.email.templates: ', settings.email.templates);
|
1954
1978
|
|
1955
|
-
|
1956
|
-
|
1979
|
+
var templates = settings.email.templates;
|
1980
|
+
winston.debug('getTemplate templates: ', templates);
|
1957
1981
|
|
1958
|
-
|
1959
|
-
|
1982
|
+
var templateDbName = templateName.replace(".subject", "");
|
1983
|
+
winston.debug('getTemplate templateDbName: ' + templateDbName);
|
1960
1984
|
|
1961
1985
|
|
1962
|
-
|
1963
|
-
|
1986
|
+
var template = templates[templateDbName];
|
1987
|
+
winston.debug('getTemplate template: ' + template);
|
1964
1988
|
|
1965
|
-
|
1989
|
+
if (template) {
|
1966
1990
|
// that.callback(template);
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
}else {
|
1972
|
-
return undefined;
|
1973
|
-
}
|
1991
|
+
// return new Promise(function (resolve, reject) {
|
1992
|
+
// return resolve(template);
|
1993
|
+
return template;
|
1994
|
+
// });
|
1974
1995
|
} else {
|
1975
1996
|
return undefined;
|
1976
|
-
}
|
1997
|
+
}
|
1998
|
+
} else {
|
1999
|
+
return undefined;
|
2000
|
+
}
|
1977
2001
|
|
1978
|
-
}
|
2002
|
+
}
|
1979
2003
|
|
1980
2004
|
|
1981
2005
|
|