Sie haben JavaScript deaktiviert. Vermutlich sind Sie ein Kollege und wollen nur sehen, ob meine Website auch ohne JavaScript funktioniert.
Andernfalls: Bitte aktivieren Sie JavaScript!

webdesign weisshart Startseite

zurück zum Standard-Style

Push Benachrichtigung von PHP an Smartphones

Hinweis:
Dieser Artikel ist älter als 18 Monate / wurde seit 18 Monaten nicht aktualisiert. Dies kann (muss aber nicht) dazu führen, dass der Artikel, und / oder darin beschriebene Techniken, nicht mehr aktuell sind. Bitte berücksichtigen Sie diesen Hinweis bei der Lektüre.

Dieser Artikel ist am 18. Oktober 2018 von meinem Wordpress-Blog hierher umgezogen. Weitere Artikel werden folgen.

Die Aufgabe:

Eine Website soll im Anschluss an eine bestimmte Aktion (Beispiel: User betritt einen Support-Chat) eine Push Benachrichtigung ans Smartphone senden.

Eine Lösungsmöglichkeit:

Man schickt per PHP eine Nachricht an einen Messenger, und lässt diesen die Push Benachrichtigung erledigen.
Als Messenger hierfür bietet sich Telegram an. Telegram bietet, anders als beispielsweise WhatsApp, eigens zu diesem Zweck eine Bot API.

Screenshot
Die Push Meldung auf dem iPhone:
"[Uhrzeit] [Username] hat den Chat betreten."

Eine kurze Anleitung zur Einrichtung eines Telegram Bots

Voraussetzung: Telegram Messenger ist auf einem oder mehreren Geräten installiert und registriert. (Hinweis: Es ist für unsere Zwecke übrigens nicht nötig, Telegram den Zugriff auf Kontakte zu erlauben.)

  1. BotFather integrieren. Dazu den Nutzer @botfather hinzufügen, z. B. über die Suchfunktion.
  2. Nun an den "Nutzer" BotFather die Nachricht /newbot senden. Der BotFather stellt dann einige Fragen, u.a. nach dem gewünschten Namen des zu erstellenden Bots (Beispiel: chatbot), und teilt nach Abschluss der kurzen Routine den token mit. In der Form

    Use this token to access the HTTP API:
    1234567:AAEVcn-_ad99DmQvGTMpWGz7tCjzc9fq-os

  3. Jetzt schicken wir aus der Telegram App eine beliebige Nachricht an den eben von uns erstellten Bot (chatbot).
  4. Nun rufen wir im Browser folgende Seite auf:
    https://api.telegram.org/bot<token>/getUpdates, wobei an Stelle von <token> natürlich der wirkliche token kommt.
    Mit dem Beispiel-token aus Pkt. 2 also:
    https://api.telegram.org/bot1234567:AAEVcn-_ad99DmQvGTMpWGz7tCjzc9fq-os/getUpdates
  5. Nach dem Absenden zeigt die obige Seite etwas wie:

    {"ok":true,"result":[{"update_id":638422092,
    "message":{"message_id":9,"from":{"id":268963852,"first_name":"Max"},"chat":{"id":-268963852,"first_name":"Max"}," date":1437389925,"text":"c"}},{"update_id":638422093,

    Aus dieser Anzeige brauchen wir nur die ID (in obigem Beispiel also -268963852

  6. Nun können wir per HTTP eine Nachricht an unseren Bot (chatbot) schicken, durch Aufruf des folgenden URL im Browser:
    https://api.telegram.org/bot<token>/sendMessage?chat_id=<ID>&text="Hallo Welt!"
    Wieder ersetzen wir natürlich <token> und <ID> durch die entsprechenden Werte.
  7. Fertig. Die Nachricht "Hallo Welt!" wird auf unser Gerät gepushed.


So weit, so gut. Aber so macht das Ganze natürlich noch nicht wirklich Sinn.
Sinn macht es aber, den obigen URL mit PHP mittels cURL aufzurufen, nachdem eine bestimmte Aktion erfolgt ist, z. B. User betritt den Chatraum. Mit PHP kann man dann natürlich auch noch den Text sinnvoll gestalten, indem als text entsprechende Variablen eingesetzt werden (im Beispiel: Uhrzeit und Username).

Für den Chat ist das bereits vorbereitet (ab Version 1.167.04). Zur Aktivierung

  1. In der chat_config.php bzw. die personal_config_inc.php die folgenden beiden Variablen hinzufügen.
    Als Inhalt der beiden Variablen müssen natürlich der Token und die ID verwendet werden, die gem. obiger Anleitung ermittelt wurden.

    $token = "1234567:AAEVcn-_ad99DmQvGTMpWGz7tCjzc9fq-os"; $chatID = "-164132095";

  2. Die Datei _telegram_bot.php umbenennen in telegram_bot.php (den führenden Unterstrich entfernen)

Creative Commons Lizenzvertrag

Artikeltexte und Code-Snippets: Creative Commons CC BY-SA 4.0
Medien (Bilder, Videos, Audios) sind evtl. urheberrechtlich geschützt.

5 Kommentare

  1. Frank schrieb am Sonntag, 29.09.19 12:19 Uhr:

    Hallo,

    tolle Anleitung für einen Newbie wie mich.
    Allerdings erhalte ich 4. bzw. 5. Schritt keine ID sondern lediglich folgendes:
    {"ok":true,"result":[]}
    Wie erhalte ich die zum Senden benötigte ID?

    Danke für Ihre Antwort

  2. Fritz schrieb am Sonntag, 29.09.19 12:47 Uhr:

    @Frank
    Du hast den Punkt 3 vergessen.

  3. Frank schrieb am Sonntag, 06.10.19 11:24 Uhr:

    Danke Fritz.
    Danke für Deine schnelle Antwort, die ich wegen eines Krankenhausaufenthaltes erst heute sehe.
    Ich hatte Punkt 3 durchgeführt, aber scheinbar dauerte die Verarbeitung bei Telegram etwas länger. Später hatten 4. und 5. wie beschrieben funktioniert.
    Super-präzise und daher sehr hilfreiche Anleitung!

  4. Manfred schrieb am Sonntag, 05.01.20 11:42 Uhr:

    Hallo Fritz,
    die Anleitung, hat mich zu weiteren Ideen inspiriert,
    nutze den Bot jetzt um Sofortnachrichten von meinem Wochenendhaus zu schicken, z.B "Türe wurde geöffnet" oder "Temperatur < 3°". Der Raspberry dort läuft sowieso.

    Herzlichen Dank für die super Anleitung.

  5. Beda schrieb am Sonntag, 02.08.20 21:01 Uhr:

    Top Anleitung, sowas suche ich schon lange. Nun klappt alles. Herzlichen Dank für deine Arbeit!
    Zusammen mit php bekomme ich nun für folgende Ereignisse eine Meldung:
    - wenn ein Zugriff aus meiner näheren Umgebung auf meiner Dienstleistungs-Webseite stattfindet
    - Wenn jemand in meinem Online-Shop einkauft
    - Wenn der Bitcoin In die Höhe schnellt oder absackt

Über Ihren Kommentar zu diesem Artikel freue ich mich.
Wenn Sie aber Fragen haben, und eine Antwort erwarten, nutzen Sie bitte das Supportforum! Die Nutzung des Forums ist auch ohne Registrierung möglich.

? Anweisungen zur Eingabe von BB Code Wenn Javascript verfügbar ist, können Sie die obigen Schaltflächen zum Einfügen der folgenden Steuercodes verwenden (an der Cursorposition oder um gegebenenfalls markierten Text):

[b]als wichtig <strong>[/b] hervorgehobener Text
[c]Quellcode[/c] oder optisch hervorgehobenes Zitat