Veröffentlichungsdatum: 16. Juni 2016
Änderungsdatum: 03. November 2022
weblication cms. telegram webhook api cloud
Mit dem PHP-Framework können Sie über Telegram mit Weblication® kommunizieren. Sie können Sich Informationen zukommen lassen oder auch Dateien direkt in die Cloud schicken.
Der Messenger Telegram bietet eine umfangreiche, gut dokumentierte API (https://core.telegram.org/api), mit deren Hilfe Sie über einen Chat oder direkt über einen selbst programmierten Bot Informationen und Dateien austauschen können.
In unserem Fall ist ein Bot ist nichts anderes, als ein PHP-Skript, das, nachdem es registriert wurde, wie ein Benutzer angesprochen werden kann. Bei jeder Meldung, die der Bot bekommt, sei es direkt oder in einer Gruppe, der er angehört, wird das registrierte Skript aufgerufen. Dort können Sie dann die Daten der Nachricht nach belieben weiterverarbeiten.
Über die Webhook-Klasse können Sie, wie im Beispiel gezeigt, mit der Funktion $webhook->getPathPhotoTmp den Pfad ermitteln, an dem ein gesendetes Bild abliegt. Nun genügt es, das Bild, an der gewünschten Stelle abzulegen.
Sie können Telegram-Benutzern auch Nachrichten Senden, indem Sie die Funktion $webhook->sendMessage nutzen.
include($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');
//
// Telegram BOT
//
// ACHTEN SIE DARAUF, DASS DIESE URL NICHT BEKANNT IST, UND DASS SIE ÜBER HTTPS AUFRUFBAR IST!
//
// Tragen sie hier Ihren Token ein, den Sie über BotFather zugeteilt bekommen.
$botToken = '123:abc';
// Rufen Sie dieses Skript anschließend als Admin mit dem Parameter ?action=setWebhook auf, um es Ihrem Bot mitzuteilen
$webhook = new wWebhook(array('BOT_TOKEN' => $botToken));
$callbackProcessMessage = function($webhook, $message){
$chat_id = $message['chat']['id'];
if(isset($message['text'])){
$text = $message['text'];
if(strpos($text, "/start") === 0) {
$webhook->sendMessage(array('chat_id' => $chat_id,
'text' => 'Hallo, senden Sie doch einfach ein Bild an Weblication.',
'reply_markup' => array(
'keyboard' => array(array('Hallo', 'Hi')), 'one_time_keyboard' => true, 'resize_keyboard' => true)));
}
else if($text === "Hello" || $text === "Hi") {
$webhook->responseMessage(array('chat_id' => $chat_id, "text" => 'Hallo'));
}
else if(strpos($text, "/stop") === 0) {
}
else{
$webhook->sendMessage(array('chat_id' => $chat_id, "text" => 'Ich habe verstanden: '.$text));
}
}
else if(isset($message['photo'])){
$pathPhotoTmp = $webhook->getPathPhotoTmp($message['photo']);
$pathPhoto = '/weblication/grid5/tmpHTTP/'.md5(mt_rand(100000000, 999999999).time()).'.jpg';
wRepository::copyDocument($pathPhotoTmp, $pathPhoto);
$urlPhoto = wRequest::getDomain().$pathPhoto;
$webhook->sendMessage(array('chat_id' => $chat_id, "text" => 'Das Foto liegt nun hier ab: '.$urlPhoto."\nWie findest du es?", 'reply_markup' => array(
'keyboard' => array(array('toll', 'nett', 'naja')),
'one_time_keyboard' => true,
'resize_keyboard' => true)));
}
else {
//$webhook->sendMessage(array('chat_id' => $chat_id, "text" => 'Wie bitte?'));
}
};
if(wSession::getUserType() == 'admin' && wRequest::getParameter('action') == 'setWebhook') {
$webhook->setWebhookURL(wRequest::getUrl());
exit;
}
else{
$update = json_decode(file_get_contents("php://input"), true);
if(isset($update["message"])){
$webhook->processMessage($update["message"], $callbackProcessMessage);
}
}