feat: Templating and plaintext for Google Workspace Notification Provider (#6048)
Some checks are pending
Auto Test / auto-test (18, ARM64) (push) Blocked by required conditions
Auto Test / auto-test (18, macos-latest) (push) Blocked by required conditions
Auto Test / auto-test (18, ubuntu-latest) (push) Blocked by required conditions
Auto Test / auto-test (18, windows-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, ARM64) (push) Blocked by required conditions
Auto Test / auto-test (20, macos-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, ubuntu-latest) (push) Blocked by required conditions
Auto Test / auto-test (20, windows-latest) (push) Blocked by required conditions
Auto Test / armv7-simple-test (18, ARMv7) (push) Waiting to run
Auto Test / armv7-simple-test (20, ARMv7) (push) Waiting to run
Auto Test / check-linters (push) Waiting to run
Auto Test / e2e-test (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Merge Conflict Labeler / Labeling (push) Waiting to run
validate / json-yaml-validate (push) Waiting to run
validate / validate (push) Waiting to run

Co-authored-by: Frank Elsinga <frank@elsinga.de>
This commit is contained in:
Erik 2025-08-09 19:31:44 +02:00 committed by GitHub
parent f027ce309e
commit 4f944cd869
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 50 additions and 1 deletions

View file

@ -14,6 +14,18 @@ class GoogleChat extends NotificationProvider {
try {
// Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic
if (notification.googleChatUseTemplate && notification.googleChatTemplate) {
// Send message using template
const renderedText = await this.renderTemplate(
notification.googleChatTemplate,
msg,
monitorJSON,
heartbeatJSON
);
const data = { "text": renderedText };
await axios.post(notification.googleChatWebhookURL, data);
return okMsg;
}
let chatHeader = {
title: "Uptime Kuma Alert",
@ -88,7 +100,6 @@ class GoogleChat extends NotificationProvider {
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
}

View file

@ -10,4 +10,40 @@
</i18n-t>
</div>
</div>
<div class="mb-3">
<div class="form-check form-switch">
<input id="google-chat-use-template" v-model="$parent.notification.googleChatUseTemplate" type="checkbox" class="form-check-input">
<label for="google-chat-use-template" class="form-check-label"> {{ $t("Template plain text instead of using cards") }} </label>
<i18n-t tag="p" class="form-text" keypath="issueWithGoogleChatOnAndroidHelptext">
<template #issuetackerURL>
<a href="https://issuetracker.google.com/issues/283746283" target="_blank">issuetracker.google.com/issues/283746283</a>
</template>
</i18n-t>
</div>
</div>
<template v-if="$parent.notification.googleChatUseTemplate">
<div class="mb-3">
<TemplatedTextarea id="google-chat-template" v-model="$parent.notification.googleChatTemplate" :required="true" :placeholder="googleChatTemplatePlaceholder" />
</div>
</template>
</template>
<script>
import TemplatedTextarea from "../TemplatedTextarea.vue";
export default {
name: "GoogleChat",
components: {
TemplatedTextarea,
},
computed: {
googleChatTemplatePlaceholder() {
return this.$t("Example:", [
"{{ name }} - {{ msg }}{% if hostnameOrURL %} ({{ hostnameOrURL }}){% endif %}"
]);
}
},
};
</script>

View file

@ -645,6 +645,8 @@
"pushyToken": "Device token",
"apprise": "Apprise (Support 50+ Notification services)",
"GoogleChat": "Google Chat (Google Workspace only)",
"Template plain text instead of using cards": "Template plain text instead of using cards",
"issueWithGoogleChatOnAndroidHelptext": "This also allows to get around bugs upstream like {issuetackerURL}",
"wayToGetKookBotToken": "Create application and get your bot token at {0}",
"wayToGetKookGuildID": "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID",
"Guild ID": "Guild ID",