diff --git a/server/lib/notifications/agents/ntfy.ts b/server/lib/notifications/agents/ntfy.ts index a67373e820..aef24e85a4 100644 --- a/server/lib/notifications/agents/ntfy.ts +++ b/server/lib/notifications/agents/ntfy.ts @@ -21,6 +21,10 @@ class NtfyAgent return settings.notifications.agents.ntfy; } + private escapeMarkdown(text: string): string { + return text.replace(/([\\`*_{}\[\]()#+\-.!|>~<])/g, '\\$1'); + } + private buildPayload(type: Notification, payload: NotificationPayload) { const settings = getSettings(); const { applicationUrl } = settings.main; @@ -35,7 +39,10 @@ class NtfyAgent let message = payload.message ?? ''; if (payload.request) { - message += `\n\nRequested By: ${payload.request.requestedBy.displayName}`; + if (message) { + message = `**- Description:**\n${message}`; + } + message += `${message ? '\n\n' : ''}**- Requested By:** ${this.escapeMarkdown(payload.request.requestedBy.displayName)}`; let status = ''; switch (type) { @@ -58,14 +65,21 @@ class NtfyAgent } if (status) { - message += `\nRequest Status: ${status}`; + message += `\n**- Request Status:** ${status}`; } } else if (payload.comment) { - message += `\nComment from ${payload.comment.user.displayName}:\n${payload.comment.message}`; + if (message) { + message = `**- Description:**\n${message}\n\n`; + } + message += `**- Comment:**\n${payload.comment.message}`; + message += `\n\n**- Comment from:** ${this.escapeMarkdown(payload.comment.user.displayName)}`; } else if (payload.issue) { - message += `\n\nReported By: ${payload.issue.createdBy.displayName}`; - message += `\nIssue Type: ${IssueTypeName[payload.issue.issueType]}`; - message += `\nIssue Status: ${ + if (message) { + message = `**- Description:**\n${message}`; + } + message += `${message ? '\n\n' : ''}**- Reported By:** ${this.escapeMarkdown(payload.issue.createdBy.displayName)}`; + message += `\n**- Issue Type:** ${IssueTypeName[payload.issue.issueType]}`; + message += `\n**- Issue Status:** ${ payload.issue.status === IssueStatus.OPEN ? 'Open' : 'Resolved' }`; } @@ -86,6 +100,7 @@ class NtfyAgent priority, title, message, + markdown: true, attach, click, };