diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js index da1d6e66..5a5d40cb 100644 --- a/server/notification-providers/slack.js +++ b/server/notification-providers/slack.js @@ -1,7 +1,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setSettings, setting } = require("../util-server"); -const { getMonitorRelativeURL } = require("../../src/util"); +const { getMonitorRelativeURL, UP } = require("../../src/util"); class Slack extends NotificationProvider { @@ -46,24 +46,31 @@ class Slack extends NotificationProvider { "channel": notification.slackchannel, "username": notification.slackusername, "icon_emoji": notification.slackiconemo, - "blocks": [{ - "type": "header", - "text": { - "type": "plain_text", - "text": "Uptime Kuma Alert", - }, - }, - { - "type": "section", - "fields": [{ - "type": "mrkdwn", - "text": "*Message*\n" + msg, - }, + "attachments": [ { - "type": "mrkdwn", - "text": "*Time (UTC)*\n" + time, - }], - }], + "color": (heartbeatJSON["status"] === UP) ? "#2eb886" : "#e01e5a", + "blocks": [ + { + "type": "header", + "text": { + "type": "plain_text", + "text": "Uptime Kuma Alert", + }, + }, + { + "type": "section", + "fields": [{ + "type": "mrkdwn", + "text": "*Message*\n" + msg, + }, + { + "type": "mrkdwn", + "text": "*Time (UTC)*\n" + time, + }], + } + ], + } + ] }; if (notification.slackbutton) { @@ -74,17 +81,19 @@ class Slack extends NotificationProvider { // Button if (baseURL) { - data.blocks.push({ - "type": "actions", - "elements": [{ - "type": "button", - "text": { - "type": "plain_text", - "text": "Visit Uptime Kuma", - }, - "value": "Uptime-Kuma", - "url": baseURL + getMonitorRelativeURL(monitorJSON.id), - }], + data.attachments.forEach(element => { + element.blocks.push({ + "type": "actions", + "elements": [{ + "type": "button", + "text": { + "type": "plain_text", + "text": "Visit Uptime Kuma", + }, + "value": "Uptime-Kuma", + "url": baseURL + getMonitorRelativeURL(monitorJSON.id), + }], + }); }); }