Я совсем новичок в 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-адрес, используя текущий, который меняется каждый раз, когда я подключаюсь к сети (я использую интернет-ключ для подключения меня к сети …..)?
заранее большое спасибо
используйте следующий простой 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>
Следующая библиотека позволяет вам легко это сделать (и быстро настроить бота):
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);
ваш локальный компьютер не доступен через Интернет localhost
или ваш локальный IP (127.0.0.1
) или локальная сеть IP (192.168.1.2
)
каждая машина имеет свою собственную localhost
так что серверы telegram localhost отличается от вашего
Вы должны использовать web hosting
или же VPS
запустить свой скрипт и использовать его адрес
Я знаю бесплатный разработчик VPS: Heroku