Telegram

Dieser Teil des Beispiels umfasst eine GET-Anfrage an die REST-API des Telegram-Messengers (Erforderliche TwinCAT-Version: 3.1.4024.10). Mit Hilfe des sogenannten „Telegram-Bots“ kann ein TwinCAT-Benutzer Mitteilungen an einen bestimmten Telegram-Chat senden.

Telegram 1:
Schema Telegram

Der erste Schritt der Herstellung einer Verbindung ist die Erstellung des „Telegram-Bots“. Dafür benötigt der Benutzer ein Telegram-Konto, von dem aus er den Bot-Father kontaktieren kann. Der BotFather ist ein allgemein verfügbarer Account für die Erstellung neuer Bots.

Telegram 2:
Telegram BotFather

Der BotFather liefert ein API-Token zurück, das beim Senden von Anfragen aus TwinCAT an die Telegram-API verwendet werden muss. Mit Zugriff auf dieses Token kann ein HTTP-Client jede Funktion steuern, die der Bot bietet. Eine Beschreibung der BOT-API findet sich hier: https://core.telegram.org/bots/api

Grundsätzlich sind die Anfragen nach folgendem Schema aufgebaut:

https://api.telegram.org/bot<token>/METHOD_NAME

Das Senden von Mitteilungen aus einer TwinCAT SPS an einen Telegram-Bot kann wie im folgenden Bild dargestellt ablaufen. In diesem Beispiel wird für die Anforderung der Chat-ID eine Mitteilung von der Telegram-Browserversion an den Bot verwendet. Zu diesem Zweck wird zunächst eine Nachricht über den Browser oder die Telegram-App in den Chat des Bots geschrieben.

Telegram 3:
Telegram-Chat

Anschließend kann über die getUpdates-Methode die ChatID herausgefunden werden. Hier wird beispielhaft Postman als HTTP-Client benutzt:

Telegram 4:

Unter Verwendung dieser Chat-ID kann dann die im Beispiel verwendete sendMessage-Methode zum Senden von Chat-Nachrichten aus dem TwinCAT-Programm verwendet werden.

PROGRAM MAIN
VAR
    // trigger command execution for Telegram samples
    bGetTelegram                    : BOOL;

    fbHttpClientTelegram            : FB_IotHttpClient :=(sHostName:='api.telegram.org',
                                    bKeepAlive:=FALSE, tConnectionTimeout:=T#10S);

    fbHttpGetTelegram               : FB_TestHTTP_Get_Telegram;
    sMessage                        : STRING(500);
END_VAR
//init client parameters at startup
IF NOT fbHttpClientTelegram.bConfigured THEN
    fbHttpClientTelegram.stTLS.sCA:='C:\TwinCAT\3.1\Config\Certificates\TelegramRoot.cer';
    fbHttpClientTelegram.nHostPort:=443;
    fbHttpClientTelegram.stTLS.bNoServerCertCheck:=FALSE;
END_IF

IF fbHttpClientTelegram.bConfigured THEN
    fbHttpGetTelegram(bSend:=bGetTelegram, fbClient:=fbHttpClientTelegram, sMessage:=sMessage);
END_IF

fbHttpClientTelegram.Execute();