Revolutioniere deinen Kundenservice

mit einem eigenen Telegram-Bot – Teil 2

Weiter geht es mit Teil 2 des Tutorials. Wenn du Teil 1 noch nicht gelesen hast, findest du ihn hier.

Hinweis
Solltest du Unterstützung bei Umsetzung und Weiterentwicklung benötigen, stehe ich dir gerne zur Verfügung.
Hol dir über den @botgoodDE_bot ein unverbindliches Angebot oder schreibe mir direkt eine Nachricht.

* * *

Inhaltsverzeichnis

Voraussetzungen auf deinem Webspace schaffen
    SSL-Zertifikat für deine Domain ausstellen
    PHP-Version umstellen und SSL-Zertifikat verknüpfen
Script auf dem Webspace installieren
    Bibliothek "TelegramBot API" über Composer installieren
    Bibliothek "TelegramBot API" manuell installieren
    Test-Script auf deinem Webspace anlegen
    URL-Zugriff testen
    Webhook festlegen
Bot-Funktionen festlegen
    Bot testen
Weitere Überlegungen
    Sicherheit
    Fehlersuche
    Datenschutzerklärung anpassen
    Impressum einfügen

Feedback
Weiterführende Links

* * *

Voraussetzungen auf deinem Webspace schaffen

Bevor du dich der Programmierung des Bots widmest, solltest du die Voraussetzungen für einen sicheren Betrieb auf deinem Webspace schaffen. Dazu sind ein gültiges SSL-Zertifikat für deine Domain und eine aktuelle PHP-Version (mind. PHP 7.1) zwingend notwendig. Bei einem Anbieter wie z. B. netcup.de bekommst du all das schon für unter 3 €/Monat.

SSL-Zertifikat für deine Domain ausstellen

In dem Video siehst du, wie du dir von Let's Encrypt ein SSL-Zertifikat für deine Domain ausstellen lassen kannst.

Video – SSL-Zertifikat für deine Domain ausstellen – Länge: 22 Sekunden

 

Hinweis
Die gelbe Warnung am Ende des Videos sollte bei dir nicht auftreten. Sie erscheint nur, weil ich die Domain erst kurz vorher auf den Webspace umgezogen habe und der DNS-Server davon noch nichts wusste. Das SSL-Zertifikat wurde trotzdem erfolgreich ausgestellt.

PHP-Version umstellen und SSL-Zertifikat verknüpfen

Nachdem du dir das SSL-Zertifikat ausgestellt hast, musst du es noch mit deinem Webspace verknüpfen und die PHP-Version ändern.

Video – PHP-Version umstellen und SSL-Zertifikat verknüpfen – Länge: 26 Sekunden
* * *

Script auf dem Webspace installieren

Jetzt ist dein Webspace vorbereitet und du kannst die Voraussetzungen für dein Telegram-Bot-Script schaffen. Das PHP-Script benötigt die Bibliothek TelegramBot API, welche du am besten über Composer installierst. Composer ist ein Abhängigkeits-Manager, der die benötigten Abhängigkeiten (Bibliotheken) eines PHP-Scripts automatisch in der passenden Version herunterlädt und in einen gewünschten Ordner installiert. Die Nutzung von Composer erfordert SSH-Zugriff auf deinen Webspace.

Du kannst das Script auch ohne Composer verwenden, musst dir die Abhängigkeiten dann aber manuell in einen Ordner entpacken. Wie das geht, zeige ich dir hier.

Bibliothek "TelegramBot API" über Composer installieren

Logge dich per SSH-Zugriff in deinen Webspace ein. Das geht unter Linux über bordeigene Mittel, unter Windows nutzt du am besten PuTTY dafür. Die Zugangsdaten bekommst du von deinem Provider. Bei netcup werden diese auch als SFTP-Zugangsdaten bezeichnet.

Mein Zielverzeichnis wird sein: /httpdocs/botgood.de.

Die Befehle, die ich ausführe, bekommst du direkt von der Composer Download-Seite.
Die Installation der Bibliothek "TelegramBot API" erfolgt mit dem Befehl ./composer.phar require telegram-bot/api.

Video – Bibliothek "TelegramBot API" über Composer installieren – Länge: 34 Sekunden

Bibliothek "TelegramBot API" manuell installieren

Hinweis
Wenn du die Abhängigkeiten über Composer installiert hast, kannst du diesen Schritt überspringen.

Kopiere die Dateien aus dem ZIP-Archiv (20200719-telegrambot-api-with-composer.zip) über SFTP in den Ordner, in dem du auch das Script ablegen möchtest. In meinem Beispiel ist das /httpdocs/botgood.de. Hierfür kannst du beispielsweise Filezilla verwenden.

Video – Bibliothek "TelegramBot API" manuell installieren – Länge: 19 Sekunden

Test-Script auf deinem Webspace anlegen

Um zu testen, ob alle Einstellungen für die Verwendung mit der Telegram-Bot-API korrekt gesetzt sind, hinterlegst du jetzt ein Test-Script auf deinem Webspace. Lege dazu – beispielsweise mit Filezilla – eine leere Datei im gleichen Ordner an, in welchen du vorher Composer installiert bzw. die Dateien der Bibliothek "TelegramBot API" kopiert hast. Die leere Datei bekommt folgenden Namen und Inhalt:

Name:

webhook-7458977234359376.php
Die Ziffernfolge bitte zur Sicherheit selbst aus zufälligen Zahlen erstellen

Inhalt:

<?php

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
{
    echo "Das Script funktioniert und wurde über HTTPS aufgerufen.";
}
else
{
    echo "Das Script funktioniert, wurde jedoch NICHT über HTTPS aufgerufen.";
}

?>

URL-Zugriff testen

Rufe nun das Script in einem Browser auf. In meinem Beispiel ist das

https://botgood.de/webhook-7458977234359376.php

Wenn du Das Script funktioniert und wurde über HTTPS aufgerufen. zurückbekommst, hat alles geklappt und du kannst die URL im nächsten Schritt bei Telegram für deinen Bot hinterlegen.

Sollte die Meldung hingegen Das Script funktioniert, wurde jedoch NICHT über HTTPS aufgerufen. lauten, wurde die Seite nicht per SSL-verschlüsselter Verbindung aufgerufen. Achte darauf, ob vor der URL "https://" steht.

Das Bot-API von Telegram akzeptiert ausschließlich verschlüsselte Verbindungen.

Video – URL-Zugriff testen – Länge: 3 Sekunden

Webhook festlegen

Nun hinterlegen wir die URL bei Telegram, sodass sie für alle eingehenden Nachrichten an deinen Bot automatisch aufgerufen wird. Hierzu benötigst du dein Token und die oben erfolgreich getestete URL mit "https://" am Anfang.

Rufe dazu folgenden Befehl in einem privaten Browserfenster auf, damit das Token nicht im Browser-Verlauf gespeichert wird:

https://api.telegram.org/bot[DEIN-BOT-TOKEN]/setwebhook?url=[DIE-VOLLSTÄNDIGE-URL]

Beispiel:

https://api.telegram.org/bot270485214:AAHfiqksKZ8WmR2zSjiQ7_v5TMAKdiHm6T0/setwebhook?url=https://botgood.de/webhook-7458977234359376.php

Wenn alles geklappt hast, bekommst du folgende Rückmeldung:

Telegram-Webhook Rückmeldung
* * *

Bot-Funktionen festlegen

Jetzt kannst du mit dem Bot-Script beginnen.

Info
Alle dafür benötigten Dateien findest du in meinem Codeberg-Repository.

Ersetze dafür den Inhalt in deiner Datei

webhook-7458977234359376.php

(natürlich mit eigener Ziffernfolge am Ende) durch den Inhalt aus folgender Datei aus dem Repository: webhook.php.

Die Datei ist mit ausführlichen Kommentaren versehen und beinhaltet die wichtigsten Funktionen, mit denen du Nachrichten und Bilder versenden kannst. Solltest du weitere Beispiele benötigen, so schau einfach ins Wiki der Bibliothek "TelegramBot API".

Nachdem du in der Datei oben zwischen die beiden "" dein Token eingetragen hast, kannst du deinen Bot testen.

$config_bot_api_token = "";

Bot testen

Suche dazu in Telegram deinen Bot mit seinem Benutzernamen, indem du diesen in die globale Suche eingibst. Daraufhin kannst du alle Befehle ausprobieren, die du in deinem Script hinterlegt hast. Diese müssen dazu nicht zwingend im Menü aufgeführt sein.

Viel Spaß mit deinem eigenen Telegram-Bot!

Video – Bot testen – Länge: 28 Sekunden
* * *

Weitere Überlegungen

Jetzt wo die technischen Voraussetzungen geschaffen sind, musst du deinen Bot nur noch mit Inhalt füllen. Beispielsweise mit witzigen Texten, eigenen Befehlen, kreativen Abläufen und ausgefallenen Funktionen.

Lass deiner Kreativität freien Lauf.

Hinweis
Solltest du Unterstützung bei Umsetzung und Weiterentwicklung benötigen, stehe ich dir gerne zur Verfügung.
Hol dir über den @botgoodDE_bot ein unverbindliches Angebot oder schreibe mir direkt eine Nachricht.

Sicherheit

Im Beispielscript sind bereits einige Sicherheitsmaßnahmen hinterlegt, die ich hier noch einmal zusammenfasse:

  • Die Ziffernfolge im Dateinamen webhook-7458977234359376.php verhindert, dass man die URL zu deinem Botscript durch Ausprobieren herausfinden kann.
  • Das Botscript wird nur ausgeführt, wenn die Anfrage aus dem Telegram-Netzwerk kommt und als sogenanntes POST-Request gestellt wird.

Beide Maßnahmen reduzieren das Angriffsrisiko von außen deutlich.

Warnung

Jeder, der Zugriff auf deinen SFTP-Server/Webspace hat, kann das Token aus dem Quelltext der Datei auslesen, da es dort im Klartext hinterlegt ist. Gehe nicht leichtfertig mit diesem Token oder der Datei um, in welcher es enthalten ist!

Fehlersuche

Während deiner Experimenten mit dem Bot-Script wirst du sicher den ein oder anderen Fehler produzieren. Diese kannst du dann bequem aus den Protokollen bei deinem Webhoster auslesen und anschließend beheben. Sollte der Bot nicht auf deinen Befehl reagieren, prüfe Folgendes:

  • Ist der hinterlegte Webhook bei Telegram richtig?
  • Stimmt mein Token?
  • Ist das Token auch in der Datei webhook-7458977234359376.php hinterlegt?
  • Treten nach der Ausführung des Scripts Fehler auf? Schau dazu in die Protokolle.
  • Reagiert der Bot auf andere Befehle?

Info
Wenn du einen PHP-Fehler verursacht hast und die Telegram-Server dein Script deswegen nicht aufrufen konnten, werden sie es in gewissen Abständen erneut versuchen. Spätestens wenn das Problem behoben ist, arbeiten die Server die zwischenzeitlich aufgelaufenen Befehle an deinen Bot ab. Es kann daher sein, dass du dann noch ein paar Antworten auf die zuvor gesendeten Befehle erhältst. Das ist ganz normal und kein Fehler im Bot-Script.

Datenschutzerklärung anpassen

Denk auch daran, deine Datenschutzerklärung anzupassen, wenn du den Bot produktiv einsetzt. Ein Beispiel, wie so eine Passage aussehen kann, findest du hier:

Ich biete im Messengerdienst Telegram einen sog. Bot an, mit dessen Hilfe Sie verschiedene Funktionen meiner Internetseite auch innerhalb des Messengers verwenden können. Mit dem Starten des Bots willigen Sie in die (temporäre) Verarbeitung der folgenden Daten ein:

- Ihrer Telegram-Benutzer-ID
- Ihres gewählten Vornamens
- Ihres gewählten Nachnamens (falls gesetzt)
- Ihrer Profilbilder (falls gesetzt)
- Ihres Benutzernamens (falls gesetzt)

Der gewählte Vorname und die restlichen Angaben werden nicht gespeichert, sondern nur zum Zwecke der Personalisierung Ihrer Anfragen verwendet. Eine Nachverfolgung und Speicherung der Nachrichten, die Sie an den Bot senden, erfolgt nicht. Jede Nachricht wird direkt nach dem Abarbeiten verworfen.

Sobald Sie mit dem Bot interagieren, könnte ich als Betreiber theoretisch auch Zugriff auf weitere Daten erhalten:

- Den Inhalt der Nachricht(en), die Sie an den Bot gesendet haben
- Ihre IP-Adresse, wenn Sie auf einen Link klicken, der über den Bot versendet wurde

Das können Sie hier im Detail nachlesen: https://telegram.org/privacy#6-3-what-data-bots-receive

Die Nachrichten, die Sie an den Bot senden, werden im Telegram-Netzwerk zwischengespeichert, bevor Sie an meinen Webhoster, welcher den Bot bereitstellt, weitergeleitet werden. Der Transport Ihrer Nachrichten zwischen meinem Webhoster und dem Telegram-Netzwerk erfolgt ausschließlich SSL-verschlüsselt. Weitere Informationen zum Datenschutz von Nachrichten innerhalb des Telegram-Netzwerks können Sie in der Datenschutzerklärung von Telegram nachlesen: https://telegram.org/privacy#6-bot-messages

Impressum einfügen

Ich rate dir ebenfalls dazu, in deinem Bot dein Impressum und deine Datenschutzerklärung zu verlinken. Ich vergebe hier gerne den Befehl /impressum. So wirkt dein Bot seriöser und du verhinderst eine Abmahnung wegen eines fehlenden Impressums – denn die geschäftliche Nutzung des Bots verpflichtet dich ebenso wie auf deiner Internetseite dazu, ein Impressum zu verlinken, siehe Impressumspflicht.

* * *

Feedback

Wenn du Anmerkungen hast, schreib mir hierzu einfach über Kontakt, per Telegram oder unten in die Kommentare eine Nachricht.

* * *

Alternative PHP-Bibliotheken

* * *

Änderungshistorie

21.07.2020, 17:50 – Anmerkung zum Impressum ergänzt
19.07.2020, 19:15 – Artikel erstellt

* * *
Christian Süßenguth Christian Süßenguth @sweetgood

Hi, ich bin Christian und Inhaber der Firma SWEETGOOD. Mit dem andersGOOD Blog möchte ich auch dich für datensichere IT-Lösungen begeistern. So bringst du dein Unternehmen voran, ohne großen Konzernen deine wertvollen Daten zu liefern. Probiers mal anders!


Kommentarbereich

Die Kommentare sind für dich noch deaktiviert, da du dem Setzen von Cookies bisher nicht zugestimmt hast.
Klicke oben rechts auf "Ja, klar!" und lade die Seite neu, um die Kommentare anzuzeigen.

Seite neu laden

👾 Magst du Kekse?

Ich würde gerne Cookies setzen

Ist das OK für dich?