Mein Raspberry Pi spricht jetzt Telegram – er ist nun ein Bot! (Teil 1)
Die Idee hinter dem Projekt ist eine Alarmierung aufgrund eine Schaltkontaktes über eine gängige Messanger App umzusetzen. Relativ schnell bin ich auf Telegram und die Telegram Bot Api gestoßen. Über die Bot Api ist es möglich per http Calls Messages zu senden und zu empfangen. Also ging es nach ein paar Tests im Browser ans Werk.
Als erstes wird über den Telegram „BotFather“ ein Bot eingerichtet. Dazu in Telegram den Chat mit dem „BotFather“ mit /newbot beginnen und den Anweisungen des BotFather folgen. Nach erfolgreichem Anlegen, es muss nur der Bot Name und der Bot Username angegeben werden, bekommt man vom Botfather einen Token für die HTTP API in dieser Form: 123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Nun kann man den Bot benutzen. Eine schnelle und einfache Möglichkeit ist es, den Bot im Browser (nicht IE) über
https://api.telegram.org/bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getMe
aufzurufen.
Als Ergebnis bekommt man ein JSON zurück;
{"ok":true,"result":{"id":eineNummer,"first_name":"Hier erscheint der Botname","username":"und hier der bot username"}}
Die Kommunikation mit dem Bot wird anhand der chat_id eindeutig identifiziert. Das bedeutet das der Bot nur dann mit einem User kommunizieren kann wenn dieser dem Bot eine initiale Nachricht schickt und der Bot damit die eindeutige chat_id auslesen kann. Also schicken wir nun erstmal ein einfaches “Hallo Bot!” – über die Telegram App – an den Bot. Anschließend können wir über
https://api.telegram.org/bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getUpdates
die Nachricht an den Bot, über den Browser, abrufen. Das Ergebnis sieht dann in etwa so aus:
{"ok":true,"result":[{"update_id":697462298,
"message": {"message_id":123,"from":{"id":123456,"first_name":"Dein","last_name":"Name","username":"DeinUserName"}, "chat":{"id":123456,"first_name":"Dein","last_name":"Name","username":"DeinUserName","type":"private"}, "date":1478552111,"text":"Hallo Bot!"}}]}
Nun haben wir die ID damit der Bot mit uns “sprechen” kann. Mit dieser chat_id kann man nun per HTTP Request eine Nachricht verschicken:
https://api.telegram.org/bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage?chat_id=123456&text=Hallo User
Im zweiten Teil beschreibe ich dann wie ich das Ganze in php umgesetzt habe und über den Bot GPIO’s schalte.