Известно, что код телеграм-бота получает запросы от Telegram с помощью web-hook, а в ответ отправляет запрос на Telegram API. Но что делать, если код находится в стадии разработки и расположен на локальном компьютере?
Для решения этой проблемы есть сервис ngrok https://ngrok.com/
Сервис позволяет получать запросы от Telegram и направлять на локальный компьютер.
Первое, нужно зарегистрироваться на сайте https://ngrok.com/
Скопировать токен
При входе появляется сообщение создания поддомена
На странице https://ngrok.com/download скачать программу для своей платформы, в моем случае это скачивание архива и его распаковка в систему
sudo tar xvzf ./ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
Все готово для запуска
ngrok http --authtoken=2Smc22....4WoPRYXL --domain=w....nd.ngrok-free.app chatbot
В параметре --authtoken указывается свой токен, в параметре --domain - полученный поддомен на сайте ngrok, chatbot - это локальный домен, на котором расположен исходный код телеграм-бота
В настройках локального web-сервера добавить созданный домен
server { listen 80; server_name chatbot wr***ound.ngrok-free.app;
Теперь при открытии домена открывается локальный проект
На локальном веб-сервере необходимо добавить обработку поддомена, который создан в ngrok.com
Далее необходимо сообщить в Telegram куда отправлять запросы, для этого создать web-hook
$bot = new BotApi(config('telegram.token')); $response = $bot->setWebhook('https://w........d.ngrok-free.app/api/telegram');
Теперь Telegram может отправлять запросы на локальный сервер, /api/telegram - это адрес контроллера, который обрабатывает запросы из чат-бота.
Оставить комментарий