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:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user