Revolutioniere deinen Kundenservice
mit einem eigenen Telegram-Bot – Teil 2
- Christian Süßenguth
- 19.07.2020, aktualisiert am
- Blog
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
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.
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.
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
.
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.
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.
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:
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!
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.
Weiterführende Links
Alternative PHP-Bibliotheken
Änderungshistorie
21.07.2020, 17:50 – Anmerkung zum Impressum ergänzt
19.07.2020, 19:15 – Artikel erstellt
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