const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { name = "Google Chat (Google Workspace only)"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; try { // Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic let textMsg = '' if (heartbeatJSON && heartbeatJSON.status === UP) { textMsg = `✅ Application is back online\n`; } else if (heartbeatJSON && heartbeatJSON.status === DOWN) { textMsg = `🔴 Application went down\n`; } if (monitorJSON && monitorJSON.name) { textMsg += `*${monitorJSON.name}*\n`; } textMsg += `${msg}`; const baseURL = await setting("primaryBaseURL"); if (baseURL) { textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`; } const data = { "text": textMsg, }; await axios.post(notification.googleChatWebhookURL, data); return okMsg; } catch (error) { this.throwGeneralAxiosError(error); } } } module.exports = GoogleChat;