From 4bd9df8a55e1da24f8c93d5c9eb562680f2afe09 Mon Sep 17 00:00:00 2001 From: BothimTV Date: Wed, 20 Mar 2024 19:06:25 +0100 Subject: [PATCH] Added support for the CallMeBot API (WhatsApp, Telegram Call and Facebook Messanger) --- server/notification-providers/call-me-bot.js | 21 +++++++++ server/notification.js | 2 + src/components/NotificationDialog.vue | 1 + src/components/notifications/CallMeBot.vue | 45 ++++++++++++++++++++ src/components/notifications/index.js | 2 + src/lang/de-DE.json | 5 ++- src/lang/en.json | 5 ++- 7 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 server/notification-providers/call-me-bot.js create mode 100644 src/components/notifications/CallMeBot.vue diff --git a/server/notification-providers/call-me-bot.js b/server/notification-providers/call-me-bot.js new file mode 100644 index 00000000..88f06c3a --- /dev/null +++ b/server/notification-providers/call-me-bot.js @@ -0,0 +1,21 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class CallMeBot extends NotificationProvider { + name = "CallMeBot"; + + /** + * @inheritdoc + */ + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + const okMsg = "Sent Successfully."; + try { + await axios.get(`${notification.callMeBotEndpoint}&text=${encodeURIComponent(msg)}`); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = CallMeBot; diff --git a/server/notification.js b/server/notification.js index 5a412c6e..0457b53d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -6,6 +6,7 @@ const AliyunSms = require("./notification-providers/aliyun-sms"); const Apprise = require("./notification-providers/apprise"); const Bark = require("./notification-providers/bark"); const ClickSendSMS = require("./notification-providers/clicksendsms"); +const CallMeBot = require("./notification-providers/call-me-bot"); const SMSC = require("./notification-providers/smsc"); const DingDing = require("./notification-providers/dingding"); const Discord = require("./notification-providers/discord"); @@ -78,6 +79,7 @@ class Notification { new Apprise(), new Bark(), new ClickSendSMS(), + new CallMeBot(), new SMSC(), new DingDing(), new Discord(), diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue index 56580fbf..105502ed 100644 --- a/src/components/NotificationDialog.vue +++ b/src/components/NotificationDialog.vue @@ -115,6 +115,7 @@ export default { "apprise": this.$t("apprise"), "Bark": "Bark", "clicksendsms": "ClickSend SMS", + "CallMeBot": "CallMeBot (WhatsApp, Telegram Call, Facebook Messanger)", "discord": "Discord", "GoogleChat": "Google Chat (Google Workspace)", "gorush": "Gorush", diff --git a/src/components/notifications/CallMeBot.vue b/src/components/notifications/CallMeBot.vue new file mode 100644 index 00000000..db7f51ac --- /dev/null +++ b/src/components/notifications/CallMeBot.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 6cb0c9fd..369c8ca2 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -4,6 +4,7 @@ import AliyunSMS from "./AliyunSms.vue"; import Apprise from "./Apprise.vue"; import Bark from "./Bark.vue"; import ClickSendSMS from "./ClickSendSMS.vue"; +import CallMeBot from "./CallMeBot.vue"; import SMSC from "./SMSC.vue"; import DingDing from "./DingDing.vue"; import Discord from "./Discord.vue"; @@ -65,6 +66,7 @@ const NotificationFormList = { "apprise": Apprise, "Bark": Bark, "clicksendsms": ClickSendSMS, + "CallMeBot": CallMeBot, "smsc": SMSC, "DingDing": DingDing, "discord": Discord, diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 0d233636..00942553 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -918,5 +918,8 @@ "statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird", "ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet", "ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, außer {0}-Ereignisse, die eine Priorität von {1} haben", - "What is a Remote Browser?": "Was ist ein Remote-Browser?" + "What is a Remote Browser?": "Was ist ein Remote-Browser?", + "callMeBotGet": "Bekomme den Endpoint für {0}.", + "callMeBotInfo": "Beachte, dass du evtl. ratenbegrenzt wirst. Beispiel: Du darfst nur einen Telegram call pro 65 sekunden versenden! Bitte benutze den Cleanup-Button, um die URL nutzen zu können.", + "callMeBotInvalidEndpoint": "The specifyed endpoint is invalid!" } diff --git a/src/lang/en.json b/src/lang/en.json index 11190a08..5ffd7a9e 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -887,5 +887,8 @@ "Browser Screenshot": "Browser Screenshot", "What is a Remote Browser?": "What is a Remote Browser?", "wayToGetHeiiOnCallDetails": "How to get the Trigger ID and API Keys is explained in the {documentation}", - "documentationOf": "{0} Documentation" + "documentationOf": "{0} Documentation", + "callMeBotGet": "Get the endpoint for {0}.", + "callMeBotInfo": "Note that you may get rate limited. Example: You are only allowed to send one Telegram call per 65 seconds! Please use the cleanup button to be able to use the URL.", + "callMeBotInvalidEndpoint": "The specifyed endpoint is invalid!" }