Telegram Messenger und die Bot API

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.

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.

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.

Fertig! 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: 7. Juni, 2018
Tags: , , , , , , , , , , , , ,

Verwandte Beiträge

Nützliche Apps für deinen Instagram-Account

Like4Like Pro - Erhalte mehr likes, views und follower bei Instagram. Like4Like PRO - get more likes, video views and followers for Instagram. A dedicated Like4Like user can get over 5000 Likes and 1000 Followers on Instagram per day! Try it out, now! There is no trick, you are going to get real Likes and [...] Weiterlesen »


Fitnessboard v1 - DIYS

Am Wochenende hatte ich glücklicherweise mal wieder etwas Zeit zum Basteln und dazu noch eine ganz nette Idee für ein Fitness-Board für das Training zuhause, welches aus der Liegestütz-Position bedient wird. Ein Video dazu gibt es weiter unten in diesem Artikel und im Youtube-Channel von tedokai.de. Jeder der Zuhause dann und wann Sport betreibt kennt [...] Weiterlesen »


App des Tages: Pokemon GO

Offensichtlich kann niemand dem Pokemon GO hype entfliehen, daher wird das heute zur App des Tages ausgerufen. :-) Viel Spaß beim Suchen und Fangen! Die Pokémon sind da draußen und du musst sie finden. Läufst du in deiner Nachbarschaft herum, vibriert dein Smartphone, wenn sich ein Pokémon in der Nähe befindet. Ziele und wirf einen [...] 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 »


Apps und Spiele für Apple Watch

Die experimentelle Suchmaschine von Saschas-Bastelstube.de für iOS- und Android-Apps wurde um eine weitere Kategorie und Funktionalität erweitert. Ab sofort findet man hier neben aktuell reduzierten Apps und Spielen auch Software speziell für die Apple Watch (WatchOS). Eine Sortierfunktion nach Kundenbewertungen, um sich schnell die Top-Apps und Top-Spiele  anzeigen zulassen, gibt es jetzt auch. Genau wie ein [...] Weiterlesen »