Как использовать setWebhook в Telegram с самостоятельными сертификатами на Windows 7 и PHP?

Я совсем новичок в Telegram и пытаюсь сделать первые шаги в этом направлении.

Я нашел хороший учебник здесь https://www.youtube.com/watch?v=hJBYojK7DO4Я настроил свой Apache 2.4 с PHP и SSL, и все работает отлично, также примеры в руководстве.

Проблемы с использованием метода setWebhook …. когда я пытаюсь поставить в своем браузере

https://api.telegram.org/<my_bot_code>/setWebHook?url=https://localhost/Telegram/MyYouTubeTutorialBot/YouTubeTutorialBot.php

ответ

{"ok":false,"error_code":400,"description":"Error: Bad webhook: Error: Ip is reserved"}

Обратите внимание, что я использую собственный сертификат ….

Я нашел в документации API Telegram (исх. https://core.telegram.org/bots/faq#i-39m-having-problems-with-webhooks), тот

«….. Чтобы использовать самозаверяющий сертификат, вам необходимо загрузить сертификат открытого ключа, используя параметр сертификата в setWebhook. Пожалуйста, загрузите как InputFile, отправка строки не будет работать.«

Я не понимаю, как загрузить мой файл сертификата открытого ключа …. какие-нибудь примеры?

Проблема может быть потому, что я использую локальный и IP-адрес по умолчанию 127.0.0.1 для моего местного апача? Должен ли я сменить свой IP-адрес, используя текущий, который меняется каждый раз, когда я подключаюсь к сети (я использую интернет-ключ для подключения меня к сети …..)?

заранее большое спасибо

1

Решение

используйте следующий простой HTML-код

<html>
<body>

<form action="https://api.telegram.org/bot<BOT_TOCKEN>/setwebhook" method="post" enctype="multipart/form-data">
Select Certificate to upload:
<input type="file" name="certificate" id="fileToUpload">
URL: <input type="text" name="url"  value="https://<YOURWEBSITE>/<YOUR_PHP_URL>"><br>
<input type="submit" value="Upload Certificate" name="submit">
</form>

</body>
</html>
6

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

Следующая библиотека позволяет вам легко это сделать (и быстро настроить бота):

https://github.com/auino/php-telegram-bot-library

По сути, это Telegram’s setWebhook Функция / страница, передавая самоподписанный сертификат в виде файла, через POST запрос:

$data = array("url"=>$YOURCALLBACKURL,"certificate"=>"@$CERTIFICATEFILE");
$telegramurl = "https://api.telegram.org/bot$TOKEN/setWebhook";
// now you have to make a request on $telegramurl passing $data via POST (e.g. using curl library)

Если вы хотите использовать php-telegram-bot-libraryВы можете легко настроить его через файл install.php или используя следующий код (он работает в Linux, он должен работать и в системах Windows):

$bot = new telegram_bot($TOKEN);
$bot->set_webhook($WEBHOOKURL, $SSLCERTIFICATEFILE);
2

ваш локальный компьютер не доступен через Интернет localhost или ваш локальный IP (127.0.0.1) или локальная сеть IP (192.168.1.2)
каждая машина имеет свою собственную localhost так что серверы telegram localhost отличается от вашего
Вы должны использовать web hosting или же VPS запустить свой скрипт и использовать его адрес
Я знаю бесплатный разработчик VPS: Heroku

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