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.

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.

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.

Anschließend kann über die getUpdates-Methode die ChatID herausgefunden werden. Hier wird beispielhaft Postman als HTTP-Client benutzt:
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();