diff --git a/server/notification.js b/server/notification.js
index 56838513e..ea065b2fa 100644
--- a/server/notification.js
+++ b/server/notification.js
@@ -354,6 +354,41 @@ class Notification {
throwGeneralAxiosError(error)
}
+ } else if (notification.type === "pushbullet") {
+ try {
+ let pushbulletUrl = `https://api.pushbullet.com/v2/pushes`;
+ let config = {
+ headers: {
+ 'Access-Token': notification.pushbulletAccessToken,
+ 'Content-Type': 'application/json'
+ }
+ };
+ if (heartbeatJSON == null) {
+ let testdata = {
+ "type": "note",
+ "title": "Uptime Kuma Alert",
+ "body": "Testing Successful.",
+ }
+ await axios.post(pushbulletUrl, testdata, config)
+ } else if (heartbeatJSON["status"] == 0) {
+ let downdata = {
+ "type": "note",
+ "title": "UptimeKuma Alert:" + monitorJSON["name"],
+ "body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"],
+ }
+ await axios.post(pushbulletUrl, downdata, config)
+ } else if (heartbeatJSON["status"] == 1) {
+ let updata = {
+ "type": "note",
+ "title": "UptimeKuma Alert:" + monitorJSON["name"],
+ "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"],
+ }
+ await axios.post(pushbulletUrl, updata, config)
+ }
+ return okMsg;
+ } catch (error) {
+ throwGeneralAxiosError(error)
+ }
} else {
throw new Error("Notification type is not supported")
}
diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue
index a3e72da07..5d2dbd6b8 100644
--- a/src/components/NotificationDialog.vue
+++ b/src/components/NotificationDialog.vue
@@ -25,6 +25,7 @@
+
@@ -371,6 +372,17 @@
+
+
+
+ More info on: https://docs.pushbullet.com
+