PHP WebHook Telegram Bot — SSL CloudFlare

после нескольких исследований на форуме я решил написать, чтобы узнать, можете ли вы мне помочь.

Я хочу создать бот-телеграмму в PHP для образовательных целей.
Прочитав его документацию, я создал гибкий SSL-сертификат на CloudFlare для своего домена.

Я создал своего бота с помощью telegram, получил токен и установил свой webhook со следующим кодом

https://api.telegram.org/bot <my token>? url = https: //miodominio.eu/page.php

ответ :

{"Ok": true, "result": false, "description": "Webhook was set"}

Я поместил этот код в моей page.php

<?php

function checkJSON($chatID,$update){

$myFile = "log.txt";
$updateArray = print_r($update,TRUE);
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, $chatID ."\n\n");
fwrite($fh, $updateArray."\n\n");
fclose($fh);
}

function sendMessage()
{
$message = "I am a baby bot.";
return $message;
}

define('BOT_TOKEN', '< mio token >');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');

// read incoming info and grab the chatID
$content = file_get_contents("php://input");
$update = json_decode($content, true);
$chatID = $update["message"]["chat"]["id"];


// compose reply
$reply =  sendMessage();

// send reply
$sendto =API_URL."sendmessage?chat_id=".$chatID."&text=".$reply;
file_get_contents($sendto);

checkJSON($chatID,$update);

?>

Но ничего, если я пишу в загрузку, я не получаю никакого ответа и в лог-файл ничего не вводится.
как я могу отладить?
У вас есть какие-нибудь рекомендации??
спасибо всем заранее

1

Решение

Используйте этот код и замените ваш API:

$content=file_get_contents("php://input");
$content = json_decode($content,TRUE);


$params = array(
'chat_id'   => $content["message"]["chat"]["id"],
'action'     => 'typing'
);
$api="123";
$url = 'https://api.telegram.org/bot'.$api."/sendChatAction";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
enter code herecurl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result=curl_exec ($ch);
1

Другие решения

Я не уверен, что это решит вашу проблему, но я обнаружил две проблемы с вашим кодом.

Чтобы установить webhook, ваша строка PHP должна быть:

'https://api.telegram.org/bot<token>/setWebhook?url='.urlencode('https://miodominio.eu/page.php');

Чтобы отправить сообщение, ваша строка PHP должна быть:

API_URL."sendmessage?chat_id=".$chatID."&text=".urlencode($reply)

Для любых нетривиальных параметров, вы должны всегда urlencode() их, прежде чем добавить их в строку запроса.

Надеюсь, поможет.

0

По вопросам рекламы [email protected]