Adds ability to notify channel when Slack webhook triggered

- Adds field to toggle channel mentions on/off for Slack integration
- Adds special mention for @channel when enabled

Reference:
[Slack docs](https://api.slack.com/reference/surfaces/formatting#special-mentions)
This commit is contained in:
duane 2023-04-17 12:49:15 -05:00 committed by duane
parent fd10897988
commit 00f733d352
2 changed files with 14 additions and 4 deletions

View file

@ -27,10 +27,14 @@ class Slack extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully."; let okMsg = "Sent Successfully.";
const finalMsg = notification.slackchannelmention
? `${msg} <!channel>`
: msg;
try { try {
if (heartbeatJSON == null) { if (heartbeatJSON == null) {
let data = { let data = {
"text": msg, "text": finalMsg,
"channel": notification.slackchannel, "channel": notification.slackchannel,
"username": notification.slackusername, "username": notification.slackusername,
"icon_emoji": notification.slackiconemo, "icon_emoji": notification.slackiconemo,
@ -42,7 +46,7 @@ class Slack extends NotificationProvider {
const time = heartbeatJSON["time"]; const time = heartbeatJSON["time"];
const textMsg = "Uptime Kuma Alert"; const textMsg = "Uptime Kuma Alert";
let data = { let data = {
"text": `${textMsg}\n${msg}`, "text": `${textMsg}\n${finalMsg}`,
"channel": notification.slackchannel, "channel": notification.slackchannel,
"username": notification.slackusername, "username": notification.slackusername,
"icon_emoji": notification.slackiconemo, "icon_emoji": notification.slackiconemo,
@ -54,14 +58,14 @@ class Slack extends NotificationProvider {
"type": "header", "type": "header",
"text": { "text": {
"type": "plain_text", "type": "plain_text",
"text": "Uptime Kuma Alert", "text": textMsg,
}, },
}, },
{ {
"type": "section", "type": "section",
"fields": [{ "fields": [{
"type": "mrkdwn", "type": "mrkdwn",
"text": "*Message*\n" + msg, "text": "*Message*\n" + finalMsg,
}, },
{ {
"type": "mrkdwn", "type": "mrkdwn",

View file

@ -24,5 +24,11 @@
<a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank">https://www.webfx.com/tools/emoji-cheat-sheet/</a> <a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank">https://www.webfx.com/tools/emoji-cheat-sheet/</a>
</i18n-t> </i18n-t>
</div> </div>
<div class="form-check form-switch">
<input id="slack-channel-mention" v-model="$parent.notification.slackchannelmention" type="checkbox" class="form-check-input">
<label for="slack-channel-mention" class="form-label">{{ $t("Mention Channel") }}</label>
</div>
</div> </div>
</template> </template>