Telegram Messenger und die Bot API

Amazon

Telegram ist im Prinzip ein Messenger ähnlich Whatsapp oder Threema , kostenlos und leicht zu bedienen. Ich möchte nicht sagen das dieser besser oder schlechter ist als andere Messenger, allerdings gefällt mir die Telegram Bot API sogut, dass ich an dieser Stelle ein kleines Tutorial dazu schreiben möchte.

Inhaltsverzeichnis:

Telegram Messenger Bot API programmieren

Aber zunächst ein paar Randinformationen. Telegram ist wie gesagt komplett kostenlos, und auch die API kann man ohne Kosten nutzen. Der Telegram Messenger verschlüsselt alle Daten laut Herstellerangabe. Hierbei kommt eine Kombination aus 256-bit symmetrischer AES Verschlüsselung, 2048-bit RSA Verschlüsselung und dem sicheren Diffie-Hellman Schlüsselaustauschverfahren zum Einsatz. Die App ist für alle gängigen Betriebssysteme verfügbar: Windows, Mac, Linux, iOS (iPhone, iPad), Android und WindowsPhone. Der Messenger kann optional auch einfach über einen Webbrowser Plattformunabhängig betrieben werden.

Amazon

Das wirklich schöne an Telegram ist die einfach zu nutzende Telegram Bot API. Man ist also als Entwickler in der Lage, z.B. automatisiert News, Status-Updates oder sonstige Informationen schnell und einfach über Telegram direkt aufs Handy Handy bzw. an andere User zu schicken. Die API basiert auf dem HTTP-Protokoll und kann somit auf jeder gängigen Plattform und Programmiersprache angebunden werden.

Ich nutze mehrere Bots. Einfaches Anwendungsbeispiel: Einer der Bots sendet  mir z.B. eine Benachrichtigung, wenn mal einer der Server down ist. Hierzu "unterhalten" sich die Server ständig (bzw. alle 30 Minuten) ebenfalls per einfachen HTTP-Requests. Antwortet ein Server nicht, kann der andere mir eine Nachricht schicken und ich kann schauen was los ist. Es gibt unzählige Anwendungsbeispiele, der Kreativität sind hier keinerlei Grenzen gesetzt! ;-)

Schritt 1 - Einrichten des Telegram Bots

Zunächst installiert man sich am Besten den Telegram-Messenger (Telegram.org) auf seinem Smartphone Smartphone.

Telegram Bot FatherIn der Chat-Übersicht tappt man oben rechts auf das "Neue Nachricht"-Icon und gibt im Suchfeld bei Benutzername "Botfather" ein.

Dies ist, wie der Name schon vermuten lässt, der Telegram-Bot für die Bots.

Diesen schreibt man einfach mit /start oder /help an und erhält eine Liste mit Kommandos um seinen eigenen Bot anzulegen und zu konfigurieren.

Man gibt nun als Kommando /newbot ein und beantwortet danach ein paar Grundlegende Dinge, u.a. wie euer Bot heißen soll, sprich über welchen Benutzernamen er später erreichbar ist.

Im Anschluss bekommt man als Ausgabe einen API Access-Token, welcher später für das versenden der Nachrichten und allen anderen Funktionen benötigt wird. Dieser muss in den Requests zum Telegram-Server immer mit übergeben werden.

Schritt 2 - Einrichten des Empfängers auf User-Seite

Nun fragen wir die Id (eindeutige Nummer eures Benutzerkontos / des USERS, NICHT des Bots!) des Users ab, an den wir später Nachrichten senden wollen. Diese Nummer ist quasi die Empfängeradresse der Messages.

Hierzu schreiben wir einfach den Benutzer "userinfobot" aus der Telegram-App heraus mit /start an. Als Antwort erhält man seinen Benutzernamen, ID, sowie Vor- und Nachname (sofern angegeben ;-)). Wichtig ist die ID, also notieren wir diese schonmal für später.

Um sicherzugehen, dass der eigene Bot einen später auch anschreiben kann, schickt man noch einfach /start an den neuen eigenen Bot, wie es schon beim Botfather getan wurde. (siehe Schritt 1)

Schritt 3 - Ein kleines PHP-Script um Nachrichten an uns selbst zu schicken

Nun bauen wir uns ein kleines PHP-Script welches bei Aufruf eine kurze Nachricht versendet. Ein kurzer Blick in die Doku der Telegram-Bot-API und es wird klar wie der entsprechende HTTP-Request für das senden einer Nachricht lauten muss. Ich habe hierfür eine Konstante definiert. Das sieht in PHP dann so aus:

define("TELEGRAM_URL", "https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<ID>&text=<TEXT>");

In spitze Klammern habe ich 3 Platzhalter eingefügt welche benötigt werden. Den <Token> (euer Access-Token welche ihr vom Botfather bekommen habt, siehe Schritt 1), die <ID> (die Id des Empfängers, siehe Schritt 2) und den <Text>.  Diese werden nun mit euren Werten befüllt, entweder direkt in der define-Anweisung, oder etwas flexibler für den späteren Gebrauch ganz einfach per str_replace-Anweisung.

$request = TELEGRAM_URL;
$request = str_replace("<TOKEN>", "hier token eingeben", $request);
$request = str_replace("<ID>", "hier id des empfängers", $request);
$request = str_replace("<TEXT>", urlencode("hier die Nachricht! Hallo Welt!"), $request);

Nun enthält die Variable $request die korrekte URL um die Testnachricht an euch selbst zu senden. Zum Testen kann man die Nachricht auf einfache Weise per file_get_contents an den Telegram-Server übermitteln.  Ggf. in der PHP-Config allow_url_fopen auf true stellen - *für Produktiv-Einsatz nicht unbedingt empfohlen*.

$response = @file_get_contents($request);
$positive_answer = "{\"ok\":true";
$telegram_sent = (substr($response, 0, strlen($positive_answer)) == $positive_answer);

Im Anschluss an file_get_contents wird noch geprüft ob die Nachricht korrekt versandt wurde, indem wir den Rückgabewert, sprich die Antwort des Telegram-Servers auswerten. Ist die Antwort "Ok:true", dann wird die Variable $telegram_sent auf true gestellt. Ist ggf. ein Fehler aufgetreten wird dies über den Inhalt der Variable $response mitgeteilt und kann weiter ausgewertet werden.

AmazonFertig! Lädt man das Script nun auf seinen Server und ruft es aus, verschickt es die gewünschte Nachricht an den jeweiligen Telegram-User. Nun hat man eine simple Basis, welche man beliebig um Funktionalität erweitern kann.

Wer sich mit seinem Bot unterhalten möchte, bzw. dieser auf Anfragen reagieren soll, der schaut sich am Besten mal die Funktion setWebHook in der Dokumentation an. Über diesen Hook kann man die Telegram-Server dazu veranlassen eine Benachrichtigung an ein beliebiges Script auf euren Server zu senden, wenn ein User den Bot anschreibt.

Was man dann daraus macht, muss jeder selber wissen. Wie man dem User antwortet weiß man ja jetzt... ;-) Viel Spaß! *happy coding*

Update: Die Fortsetzung dieses Beitrages, wie man setWebhook einrichtet und auf Nachrichten vom User reagiert, findest du hier:
Telegram Messenger und die Bot API - Teil 2

Zuletzt bearbeitet: 23. Mai, 2019
Tags: , , , , , , , , , , , , ,

Weitere interessante Beiträge

App-Suchmaschine für iOS und Android

In den letzten Wochen habe ich mich viel mit dem Lesen, Auswerten und Visualisieren von Daten aus den verschiedenen Appstores auseinander gesetzt. Dabei entstanden einige nette kleine Tools die zum Teil hier veröffentlicht wurden, wie z.B. der Apfel-Appstore-Reader und der ITC-Umsatz-Rechner. Irgendwann bin ich dann über diverse App-Suchmaschinen wie AppTicker oder AppGefahren gestolpert. Schön finde [...] Weiterlesen »


Hinzufügen von Website-Icons für iPhone, iPad und Android-Geräte

So ziemlich jeder Webseitenbetreiber hinterlegt im Wurzelverzeichnis seiner Webseite ein Favicon. Diese kleine Grafik wird dann im Browser-Tab oben neben dem Namen der Webseite angezeigt, genauso wie beim setzen eines Bookmarks bzw. Lesezeichens. Manch einer vergisst jedoch, dass inzwischen etliche Benutzer vorwiegend mit Mobilgeräten bzw. Smartphones wie iPhone, iPad oder Android-Smartphones und Tablets im Internet [...] Weiterlesen »


Meine Piraten - Interaktive Wimmelapp

"Aahhrrr - Stelle deine Mannschaft zusammen und steche in See!" In dieser App können Kinder spielerisch nach dem Ursache-Wirkung Prinzip die Welt der Piraten entdecken und spannende Situationen erleben. Diese App ist für iOS (iPhone, iPad) verfügbar. Alles ist interaktiv und kann entdeckt werden: • Stelle deine eigene Mannschaft zusammen (über 65 Millionen Variationen) • [...] Weiterlesen »


App des Tages: Mekorama

Die heutige App des Tages heißt Mekorama! Bewege einen Roboter durch über 50 Level. Grafisch ansprechend aufbereitet ist dieses Spiel ein echter Knaller, nicht umsonst steht die App schon seit einiger Zeit in den Top 10 der Download-Charts und hat schon allein im Android-Appstore knapp 40.000 fast durchweg 5-Sterne Bewertungen. Neben den bereits integrierten liebevoll [...] Weiterlesen »


Kleiner Tiger - Interaktive Kinderapp

Kleiner Tiger: Feuerwehr, Raumschiff, U-Boot - Die neue interaktive Kinderapp von wonderkind. Mit unserer neuen App können Kinder mit einem Feuerwehrauto, einem Raumschiff und einem U- Boot viele spannende Abenteuer erleben. Kinder können jedes Fahrzeug komplett selbst steuern und sich sogar einen eigenen Fahrer und Beifahrer aussuchen. • 4 witzige, süße Tiere: Panda, Tiger, Einhorn [...] Weiterlesen »