Limit Mattermost rich attachments to certain alerts

Add a guard ($isRichAlert) so rich (green-bar) Mattermost attachments are only created for domain expiration/SSL/status alerts (days_left, expiration_date, new_status, or hostname != domain). DNS-change alerts remain plain text. Remove the attachment text property and adjust field handling accordingly to keep formatting consistent and avoid creating attachments for irrelevant events.
This commit is contained in:
Hosteroid
2026-03-12 22:37:24 +02:00
parent 27f036eee1
commit 62a034c0db

View File

@@ -28,8 +28,13 @@ class MattermostChannel implements NotificationChannelInterface
'text' => $message 'text' => $message
]; ];
// Add attachments for richer formatting if domain data is available // Add green-bar attachment only for expiration/SSL/status alerts, not for DNS change (plain text only)
if (isset($data['domain'])) { $isRichAlert = isset($data['domain'])
&& (array_key_exists('days_left', $data)
|| array_key_exists('expiration_date', $data)
|| isset($data['new_status'])
|| (isset($data['hostname']) && $data['hostname'] !== $data['domain']));
if ($isRichAlert) {
$color = $this->getColorByDaysLeft($data['days_left'] ?? null); $color = $this->getColorByDaysLeft($data['days_left'] ?? null);
$title = $data['subject'] ?? '🔔 Domain Monitor Alert'; $title = $data['subject'] ?? '🔔 Domain Monitor Alert';
@@ -37,7 +42,6 @@ class MattermostChannel implements NotificationChannelInterface
['short' => true, 'title' => 'Domain', 'value' => $data['domain']] ['short' => true, 'title' => 'Domain', 'value' => $data['domain']]
]; ];
// Only add expiration fields for domain expiration alerts
if (array_key_exists('days_left', $data) || array_key_exists('expiration_date', $data)) { if (array_key_exists('days_left', $data) || array_key_exists('expiration_date', $data)) {
$fields[] = ['short' => true, 'title' => 'Days Left', 'value' => (string) ($data['days_left'] ?? 'N/A')]; $fields[] = ['short' => true, 'title' => 'Days Left', 'value' => (string) ($data['days_left'] ?? 'N/A')];
$fields[] = ['short' => true, 'title' => 'Expiration Date', 'value' => $data['expiration_date'] ?? 'N/A']; $fields[] = ['short' => true, 'title' => 'Expiration Date', 'value' => $data['expiration_date'] ?? 'N/A'];
@@ -53,7 +57,6 @@ class MattermostChannel implements NotificationChannelInterface
[ [
'color' => $color, 'color' => $color,
'title' => $title, 'title' => $title,
'text' => $message,
'fields' => $fields, 'fields' => $fields,
'footer' => 'Domain Monitor', 'footer' => 'Domain Monitor',
'ts' => time() 'ts' => time()