Skripte mit Webhooks starten

Das eigene Skript lässt sich auch Event-basiert starten, mithilfe von sogenannten Webhooks. Bei Webhooks werden, meist bei Onlinediensten, URLs hinterlegt, die bei bestimmten Ereignissen aufgerufen werden. Allerdings müssen wir dafür noch einen Webserver auf dem Raspberry Pi installieren und die Firewall beziehungsweise den Router konfigurieren.

Stellenmarkt
  1. Gruppenleiter für Embedded Softwareentwicklung (m/w/d)
    Endress+Hauser Conducta GmbH+Co. KG, Gerlingen (bei Stuttgart)
  2. DevOps Entwickler (m/w/d)
    ABUS Security Center GmbH & Co. KG, Affing (bei Augsburg)
Detailsuche

An der Firewall beziehungsweise dem Router muss eine Portweiterleitung zum Webserver eingestellt werden. Die Portweiterleitung leitet damit das Protokoll HTTP (Port 80) oder HTTPS Port 443 an den Raspberry Pi weiter. Eine URL könnte beispielsweise so aussehen:

  1. http:// 91.201.185.xxx/meineWebseite.

Hierbei müssen wir aber auf den Internetanschluss achten. Nicht jeder Anschluss hat eine eigene IP-Adresse, die über das Internet erreichbar ist.

Nachdem die Portweiterleitung eingestellt ist, muss der Telegram-API noch die Webhook-URL mitgeteilt werden. Danach wird von Telegram bei Ereignissen automatisch die hinterlegte Webseite/URL aufgerufen. In unserem Fall die des Raspberry Pi. Diese Seite kann zum Beispiel mit PHP auf das Ereignis reagieren und weitere Aktionen auslösen.

Golem Karrierewelt
  1. Informationssicherheit in der Automobilindustrie nach VDA-ISA und TISAX® mit Zertifikat: Zwei-Tage-Workshop
    19./20.07.2022, Virtuell
  2. Container Technologie: Docker und Kubernetes - Theorie und Praxis: virtueller Drei-Tage-Workshop
    04.-07.07.2022, virtuell
Weitere IT-Trainings

Um einen Webhook für den Bot zu hinterlegen, müssen wir lediglich die folgende URL aufrufen. Vorher ändern wir natürlich den Token und die URL entsprechend der Umgebung ab:
https://api.telegram.org/bot%DEIN_TOKEN%/setWebhook?url=%URL zu unserer Webseite%. Wenn wir Informationen zu unserem eingestellten Webhook abrufen möchten, rufen wir einfach folgende URL auf:

  1. https://api.telegram.org/bot%DEIN_TOKEN%/getWebhookInfo

Zum Löschen des Webhooks rufen wir diese URL auf:

  1. https://api.telegram.org/bot%DEIN_TOKEN%/deleteWebhook

PHP-Beispiel

Dieses PHP-Beispiel beinhaltet das Versenden von Nachrichten an deinen Bot. Hierbei müssen nur einige wenige Anpassungen vorgenommen werden.

  1. <?php
  2. $Text = "-Leer-";
  3. if(isset($_POST["Text"]))
  4. $Text = $_POST["Text"];
  5.  
  6. if(isset($_GET["Text"]))
  7. $Text = $_GET["Text"];
  8.  
  9.  
  10. function sendMessage($chatID, $message, $token) {
  11. echo "sending message to " . $chatID . "\n";
  12.  
  13. $url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chatID;
  14. $url = $url . "&text=" . urlencode($message);
  15. $ch = curl_init();
  16. $optArray = array(
  17. CURLOPT_URL => $url,
  18. CURLOPT_RETURNTRANSFER => true
  19. );
  20. curl_setopt_array($ch, $optArray);
  21. $result = curl_exec($ch);
  22. curl_close($ch);
  23. return $result;
  24. }
  25.  
  26. $token = "%meinToken%";
  27. $chatid = "XXXXXXX";
  28. echo sendMessage($chatid, $Text, $token);
  29. echo $chatid." - ". $Text." - ";
  30.  
  31. ?>

Es müssen lediglich die Variablen $token und $chatid mit den Daten angepasst werden. Danach lässt sich durch das Aufrufen der Webseite mit diesem PHP-Inhalt ein beliebiger Text versenden.

Wenn man die Webseite aufruft und der URL ?Text=meinText anhängt, wird der Text meinText über das Array $_GET["Text"]; in der Variable $Text gespeichert. In der vorletzten Zeile wird die Versende-Funktion aufgerufen und alle Werte übergeben. In der Funktion selbst wird die URL aus den übergebenen Werten zusammengesetzt und im Anschluss mit curl_exec aufgerufen. Das Ergebnis des Aufrufs wird als $result zurückgegeben und über das echo auch als Text angezeigt.

Handbuch für Softwareentwickler: Das Standardwerk für professionelles Software Engineering

Das Beispiel soll nur verdeutlichen, wie man die URL zusammensetzen könnte, um Nachrichten zu versenden, und dient lediglich als Anregung für eigene Ideen. Das Skript kann für einen schnellen Einstieg verwendet, erweitert oder für den eigenen Bedarf angepasst werden. Natürlich lässt sich eine solche Funktion auch in der Lieblingsprogrammiersprache umsetzen. Viel Spaß beim Programmieren.

Kurzanleitung

Den Chat "Botfather" suchen
/newbot eingeben oder über das Menü "Create new bot" auswählen
Namen für den Bot eingeben -> der Name wird später in der Chat-Liste angezeigt.
Usernamen für den Bot eingeben -> Der Username wird verwendet, um mit ihm zu schreiben.
Die erscheinenden Infos speichern/aufschreiben
Die Chat-ID ermitteln über den Link

  1. https://api.telegram.org/bot%DEIN_TOKEN%/getMe

Nachrichten abrufen mit

  1. https://api.telegram.org/bot%DEIN_TOKEN%/getUpdates

Nachrichten senden mit

  1. https://api.telegram.org/bot%DEIN_TOKEN%/sendMessage?chat_id=5570494&text=Hallo%20das%20ist%20ein%20Test

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Messenger: Einen eigenen Telegram-Bot erstellen
  1.  
  2. 1
  3. 2


Ein Leser aus... 15. Mär 2022

Das Thema ist komplizierter als es mir lieb ist. Wenn die Server in einem Chain of trust...

oleid 09. Mär 2022

Matrix bots, pfff... IRC-bots ftw!



Aktuell auf der Startseite von Golem.de
Liberty Lifter
US-Militär lässt ein eigenes Ekranoplan entwickeln

In den 1960er Jahren schockten die Sowjets den Westen mit dem Kaspischen Seemonster. Die Darpa will ein eigenes, besseres Bodeneffektfahrzeug bauen.

Liberty Lifter: US-Militär lässt ein eigenes Ekranoplan entwickeln
Artikel
  1. Abo: Spielebranche streitet über Game Pass
    Abo
    Spielebranche streitet über Game Pass

    Nach Kritik von Sony gibt es mehr Stimmen aus der Spielebranche, die Game Pass problematisch finden - aber auch klares Lob für das Abo.

  2. Microsoft: Der Android-App-Store für Windows 11 kommt nach Deutschland
    Microsoft
    Der Android-App-Store für Windows 11 kommt nach Deutschland

    Build 2022 Der Microsoft Store soll noch attraktiver werden. So können Kunden ihre Apps künftig ohne lange Wartezeiten direkt veröffentlichen.

  3. Macht mich einfach wahnsinnig: Kelber beklagt digitale Inkompetenz von VW
    "Macht mich einfach wahnsinnig"
    Kelber beklagt digitale Inkompetenz von VW

    Der Bundesdatenschutzbeauftragte Ulrich Kelber hat vor einem Jahr ein Elektroauto bei VW bestellt. Und seitdem nichts mehr davon gehört.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PS5-Controller (alle Farben) günstig wie nie: 49,99€ • Samsung SSD 1TB 79€ • LG OLED TV 77" 56% günstiger: 1.099€ • Alternate (u. a. Cooler Master Curved Gaming-Monitor 34" UWQHD 144 Hz 459€) • Sony-Fernseher bis zu 47% günstiger • Samsung schenkt 19% MwSt.[Werbung]
    •  /