uptime-kuma/server/notification-providers/line.js

61 lines
2.3 KiB
JavaScript
Raw Normal View History

2021-09-07 14:42:46 +00:00
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { DOWN, UP } = require("../../src/util");
class Line extends NotificationProvider {
name = "line";
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
2021-10-05 19:40:59 +00:00
let okMsg = "Sent Successfully.";
2021-09-07 14:42:46 +00:00
try {
let lineAPIUrl = "https://api.line.me/v2/bot/message/push";
let config = {
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + notification.lineChannelAccessToken
}
};
if (heartbeatJSON == null) {
let testMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "Test Successful!"
}
]
2022-04-13 16:30:32 +00:00
};
await axios.post(lineAPIUrl, testMessage, config);
2021-09-07 14:42:46 +00:00
} else if (heartbeatJSON["status"] == DOWN) {
let downMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "UptimeKuma Alert: [🔴 Down]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
}
]
2022-04-13 16:30:32 +00:00
};
await axios.post(lineAPIUrl, downMessage, config);
2021-09-07 14:42:46 +00:00
} else if (heartbeatJSON["status"] == UP) {
let upMessage = {
"to": notification.lineUserID,
"messages": [
{
"type": "text",
"text": "UptimeKuma Alert: [✅ Up]\n" + "Name: " + monitorJSON["name"] + " \n" + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"]
}
]
2022-04-13 16:30:32 +00:00
};
await axios.post(lineAPIUrl, upMessage, config);
2021-09-07 14:42:46 +00:00
}
return okMsg;
} catch (error) {
2022-04-13 16:30:32 +00:00
this.throwGeneralAxiosError(error);
2021-09-07 14:42:46 +00:00
}
}
}
module.exports = Line;