Telegram Messenger und die Bot API

telegram messenger

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.

uhrcenter.jpg

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.

amz music.pngFertig! 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

Author: Sascha von Saschas-Bastelstube.de

Autor: sascha

Ein paar Worte über mich selbst. Mein Name ist Sascha, wie der Titel dieses Blogs erahnen lässt. :-) Ich bin von Beruf selbstständiger Programmierer und Trader. Neben Programmierung, Trading und Kampfsport sind einige meiner Interessen und Hobbys das Kochen, Fitness und das Hören lauter Heavy-Metal Musik. :D

Dies könnte dich auch interessieren

3 Gründe warum es App-Entwickler nicht einfach haben

Aus gegebenem Anlass heute mal ein kleiner Beitrag aus der Sektion "Nicht ganz so ernst gemeinte Beiträge". Hier nun einige Überlegungen warum es App-Entwickler heute schwieriger haben, als noch vor einigen Jahren. Eines vorweg: Wer in diesem Beitrag einen Hauch von Ironie und Sarkasmus findet, darf ihn behalten! ;-) Inhaltsverzeichnis:Problem 1: Die Masse an Apps … „3 Gründe warum es App-Entwickler nicht einfach haben“ weiterlesen


Unity 2D Platformer - Level Generator

Seit einiger Zeit experimentiere ich hier und da mit der 2D- und 3D Engine Unity. Insbesondere die Programmierung eines 2D-Platformers hat es mir aktuell angetan. Allerdings ist das programmieren eines 2D-Games (sofern man Programmierer ist) nicht das größte Problem, sondern meiner Meinung nach die Optik, da ich kein Grafiker bin. :D So kommt man nicht … „Unity 2D Platformer - Level Generator“ weiterlesen


iOS-Android-Converter

Lange Zeit habe ich bei neuen App-Projekten zunächst die Sprachdateien / Language-Files für iOS geschrieben, und diese dann für die Android-Version händisch umgeschrieben. Das war vom Aufwand her immer schnell gemacht solange die Anzahl der implementierten Sprachen und der Umfang der Textbausteine niedrig war. Abgesehen vom Zeitaufwand ist das ganz schön langweilige und stumpfe Arbeit, … „iOS-Android-Converter“ weiterlesen


Apfel-Appstore-Reader - Update 2.0

Wie im Artikel - Apfel-Appstore-Reader - beschrieben, hält sich Apple bezüglich der App-Rankings (Positionierung im Appstore) sehr gedeckt. Auch im Report-Tool (ITC / iTunes-Connect -> Sales & Trends) keinerlei Informationen auftauchen, an welcher Position man sich mit der jeweiligen App in z.B. einer Kategorie wie “Produktivität” befindet, habe ich vor längerer Zeit ein kleines Java-Tool … „Apfel-Appstore-Reader - Update 2.0“ weiterlesen


Privacy Browser für mehr Sicherheit und Privatsphäre

Mehr Datenschutz, Sicherheit und vor allem mehr Privatsphäre im Internet wird von allen Seiten gefordert, und das nicht erst nach dem Inkrafttreten der EU-weiten Datenschutz-Grundverordnung (DSGVO / Datenschutz ). Generell kann man diesen Wunsch durchaus nachvollziehen, denn wer möchte schon freiwillig großen IT-Konzernen erlauben die eigenen Daten weiterzugeben, zu verkaufen und wer weiß was damit … „Privacy Browser für mehr Sicherheit und Privatsphäre“ weiterlesen