Der BotFather: Einrichtung eines Chat-Bots

Um Push-Nachrichten per Telegram zu erhalten, muss zunächst ein eigener Bot als Empfänger eingerichtet werden

6500 Zeichen
Score aktualisiert
100%
Code: e51cf6cd3b0643e28e17d87f4708e72d
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert

Telegram-Nachrichten von der CCU werden in einem eigenen Chat landen. Auf der Gegenseite sitzt kein Gesprächspartner, sondern ein „Bot“ (also ein Text-Roboter). Dieser Bot muss als erstes eingerichtet werden.

Vorbereitungen

Zunächst sollte Telegram installiert werden. Das geht natürlich als App auf dem Smartphone – das ist schließlich unser Ziel –, aber es gibt auch Telegram-Clients für alle gängigen Betriebssysteme. Für den PC empfehle ich die portable Version; ich mag PortableApps – wenn man sie nicht mehr braucht, kann man sie rückstandsfrei löschen.

Nach der Installation und der Anmeldung bei Telegram kann man mit der Einrichtung des Chat-Bots beginnen.

Für den Chat-Bot werden folgende Informationen benötigt:

Im Laufe der Einrichtung werden die folgenden Informationen ausgegeben, die später beim Versand benötigt werden:

Klingt kompliziert, aber das geht Schritt für Schritt eigentlich ganz einfach.

Mit den obigen Daten können Außenstehende die Kommunikation zwischen CCU und Ihnen mithören oder Nachrichten im Namen der CCU an Sie schicken. Insbesondere für Spammer wäre das vermutlich ein lohnenswertes Ziel.

Sie sollten diese Daten daher möglichst geheim halten.

Ich veröffentliche meine Daten nur deshalb freimütig auf diesen Seiten, weil ich meinen Bot eh am Ende wieder löschen und mir einen „richtigen“ (geheimen) anlegen werde.

BotFather

Als ersten Schritt gebe ich im Suchfeld des Telegram-Clients den BotFather ein und beginne einen Chat mit ihm.

Mit /newbot wird ein neuer Bot erstellt. Anschließend müssen im Dialog der Botname und der Benutzername angegeben werden.

Botname

Der Botname wird in der Chat-Liste angezeigt. Hier sollte also irgendetwas hübsches gewählt werden, was dann auf dem Smartphone auch gut aussieht.

Mein homematic-test-bot-20170122 ist eine eher schlechte Wahl. Besser wäre zum Beispiel „HomeMatic-Meldungen“ oder „Benachrichtigungen der CCU“ oder ähnliches.

Benutzername

Über den Benutzernamen kann man den Bot später finden. Hier sollte man etwas eindeutiges, einmaliges wählen, das von Außenstehenden nicht zu leicht zu erraten ist. Der Name muss auf „bot“ enden, wie z. B. homematic_20170122_bot.

In der Regel wird man – wie in meinem Beispiel – Zufallsfunde mit einem eingefügten Datum schon ausreichend vermeiden können. Man kann natürlich auch Uhrzeit und sonstige Daten anfügen.

Was man nicht nehmen sollte: irgendwelche Passwörter, denn der Nutzername wird an verschiedenen Stellen im Klartext angezeigt.

API-Token und Chat-ID

Der BotFather antwortet, wie oben zu sehen, mit einem Token für die HTTP-API (HTTP-Token). Diesen sollte man sich irgendwo notieren – am besten in einer kleinen Textdatei zusammen mit Bot- und Benutzernamen.

In diese Datei kann man auch gleich noch die Chat-ID schreiben, die ich jetzt herausfinden werde. Dazu rufe ich den neuen Bot auf und beginne eine Konversation mit ihm.

Am einfachsten klickt man auf den Link in der Antwort des BotFathers. Man kann natürlich auch über die Suche von Telegram nach dem Benutzernamen des Bots suchen – so kann man ihn jederzeit und auf allen Geräten wiederfinden.

Es öffnet sich ein neues Chatfenster. Ein „Hallo“ tut es an dieser Stelle.

Es ist wirklich wichtig, hier einen Chat zu beginnen, denn sonst funktioniert der nächste Schritt nicht.

Als nächstes ruft man folgende URL im Browser auf:

https://api.telegram.org/bot[HTTP-TOKEN]/getUpdates

Der [HTTP-TOKEN] muss mit dem jeweiligen Token ersetzt werden, den der Botfather geliefert hat. Meine URL sieht also so aus:

https://api.telegram.org/bot314321353:AAFKjr29dF940b-aTchoFJ_pb6oZKxzx8Zw/getUpdates

Mit getUpdates liefert Telegram die Konversation des Bots zurück. Spätestens an dieser Stelle dürfte klar werden, warum die Daten geheimgehalten werden sollten … In meinem Fall bekomme ich folgende Ausgabe:

{"ok":true,"result":[{"update_id":277706888,
"message":{"message_id":3,"from":{"id":374629384,"first_name":"Christian","last_name":"L\u00fctgens"},"chat":{"id":374629384,"first_name":"Christian","last_name":"L\u00fctgens","type":"private"},"date":1485083417,"text":"Hallo hallo"}}]}

Wichtig hier die Zahl nach id, also 374629384. Das ist die Chat-ID, die zu den anderen Daten in die Textdatei kommt.

Falls keine Nachricht zurückkommt, sondern nur eine einzelne Zeile, dann einfach noch eine weitere Nachricht über den Telegram-Client an den Bot senden. Wer genau hinsieht, der erkennt, dass ich noch ein „Hallo hallo“ hinterherschicken musste, um eine Antwort mit Chat-ID zu erhalten.

Damit habe ich alles zusammen, was ich für meinen Chatbot brauche:

Ihre Werte werden natürlich andere sein.

Den Bot testen

Um zu testen, ob Nachrichten ankommen, kann man im Browser eine passende URL mit einer Nachricht zusammenbasteln:

https://api.telegram.org/bot[HTTP-TOKEN]/sendMessage?chat_id=[CHAT-ID]&text=[NACHRICHT]

In [Klammern] gesetzte Werte müssen natürlich ersetzt werden, konkret bei mir also:

https://api.telegram.org/bot314321353:AAFKjr29dF940b-aTchoFJ_pb6oZKxzx8Zw/sendMessage?chat_id=374629384&text=Selber%20Hallo

Die Antwort kommt umgehend an:

Wenn der Chatbot so weit funktioniert, dann kann als nächstes das Telegram-Framework eingerichtet werden.

Optik

Man kann dem Bot auch ein hübsches (oder jedenfalls irgendein) Profilbild spendieren. Dazu dem BotFather zunächst /setuserpic senden und dann den Bot auswählen, um den es geht.

Danach über die Büroklammer ein Bild hochladen …

… dabei darauf achten, dass Komprimiere Bild angehakt ist …

… und fertig.

Eventuell muss der Bot noch einmal aus der Liste gelöscht werden, aber spätestens danach wird das ausgewählte Bild angezeigt.

Bei der Bildauswahl sollte man beachten, dass Telegram die Profilbilder rund ausschneidet. Im Zweifelsfall etwas herumprobieren, bis das Bild passend angezeigt wird.

Navigation