Telegram Benachrichtigungsdienst mit einer einzigen PHP
Ein Benachrichtigungsansatz, der schnell und einfach umzusetzen ist - in nur einer Datei, in Ausnahme einer Konfiguration, wäre ein Träumchen. Das habe ich mir gedacht und habe das telegram.php ins Leben gerufen.
Diese Datei ist universell ausgelegt, betriebssystemunabhängig, also rein PHP - logisch, wie der Dateiname verrät. Alles, was benötigt wird, ist PHP selbst. Falls die PHP scripttechnisch aufgerufen wird, nicht nur im Browser, dann wird auch z. B. curl benötigt.
Der PHP müssen sämtliche Daten mit GET mitübergeben werden, damit das PHP intern verarbeiten kann.
Beispielaufruf:
php -f telegram.php "?bot=123456789:ABCdefGhIjKlMnOpQrStUvWxYz&chatid=987654321&msg=Hallo%20ich%20bins,%20ok?"
http(s)://sub.domain.tld/telegram.php?bot=123456789:ABCdefGhIjKlMnOpQrStUvWxYz&chatid=987654321&msg=Hallo%20ich%20bins,%20ok?
Zeile 1 zeigt einen Aufruf aus z. B. Bash.
Zeile 2 zeigt einen Aufruf direkt im Browser.
Beide Varianten bringen das gewünschte Ergebnis. Hier die Schalter erklärt:
• bot= ist der BOT:TOKEN des Botfathers von Telegram,
• chatid= ist der Chat, an dem die Nachricht gehen soll,
• msg= ist die Nachricht, die übergeben wird.
Das wars.
Hier das Script:
<?php
// Telegram Send Script - Vollständig ohne Config, alle Parameter per URL
// Parameter einlesen
$bot = isset($_GET['bot']) ? $_GET['bot'] : '';
$chatid = isset($_GET['chatid']) ? $_GET['chatid'] : '';
$msg = isset($_GET['msg']) ? $_GET['msg'] : '';
if (empty($bot) || empty($chatid) || empty($msg)) {
echo "[FEHLER] Bot-Token, ChatID oder Nachricht fehlt.\n";
exit(1);
}
// URL-decodieren (ersetzt %20 etc. durch Leerzeichen und echte Zeichen)
$msg = urldecode($msg);
// Telegram API URL
$url = "https://api.telegram.org/bot$bot/sendMessage";
// POST-Daten
$data = array(
'chat_id' => $chatid,
'text' => $msg
);
// cURL-Request ausführen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
// Ergebnis anzeigen
echo $result . "\n";
?>