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:
- der Name des neuen Bots (Botname) – bei mir homematic-test-bot-20170122
- der Name, mit dem der neue Bot gesucht werden kann (Benutzername) – bei mir
homematic_20170122_bot
Im Laufe der Einrichtung werden die folgenden Informationen ausgegeben, die später
beim Versand benötigt werden:
- der „Token“ für die HTTP-API (HTTP-Token)
- die Chat-ID für den Chat, in dem der Bot die Nachrichten der CCU versendet
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.
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.
Ü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:
- Botname: homematic-test-bot-20170122
- Benutzername: homematic_20170122_bot
- HTTP-Token: 314321353:AAFKjr29dF940b-aTchoFJ_pb6oZKxzx8Zw
- Chat-ID: 374629384
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.