После обновления, в hass.io появился штатный инструмент polling для использования прокси в настройках telegram_bot. (Официальная инструкция по его настройке бота в НА находится здесь)
Вкратце основные действия которые нужно совершить для создания собственного бота заключаются в следующих шагах:
- Открываем Telegram
- Ищем пользователя @BotFather
- Пишем ему /newbot
- Отвечаем на вопросы относительно Имени и юзернейма для бота (Имя это то, как бот будет выглядеть в списке пользователей)
- Получаем сообщение с API ключом нашего бота.
Далее мы идем в браузер и вводим следующий текст в адресную строку:
https://api.telegram.org/botТОКЕН_КОТОРЫЙ_ВЫ_ПОЛУЧИЛИ_ОТ_BotFather/getUpdates
<span style="font-size: 16px; background-color: rgb(255, 255, 255); color: rgb(51, 51, 51);">{</span> "ok": true, "result": [{ "update_id": 254199982, "message": { "message_id": 27, "from": { "id": 123456789, "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME", "last_name": "YOUR_LAST_NAME", "username": "YOUR_NICK_NAME" }, "chat": { "id": 123456789, "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME", "last_name": "YOUR_LAST_NAME", "username": "YOUR_NICK_NAME", "type": "private" }, "date": 1678292650, "text": "test" } }] }
Где id: в разделе "chat" и есть искомый "chat_id" необходимый для конфигурирования бота.
Однако есть ряд особенностей.
Для того чтобы у вас открылась эта строка в браузере, нужно чтобы ваш браузер обходил блокировки телеграма. Для этого можно поставить браузерный прокси, например Proxy SwitchyOmega для Google Chrome. (Это кстати решит и проблему постоянного отваливания официального сайта Home Assistant)
Также можно воспользоваться ботами, сообщающими ваш ID @myidbot или @get_id_bot
Далее приступим к настройке
Чтобы быть последовательным, приведу базовую конфигурацию бота, которая проверена и работает:
telegram_bot: - platform: polling proxy_url: !secret telegram_proxy_url proxy_params: username: !secret telegram_proxy_username password: !secret telegram_proxy_password api_key: !secret telegram_bot_api_key allowed_chat_ids: - !secret telegram_bot_chat_id notify: - name: telegram platform: telegram chat_id: !secret telegram_bot_chat_id
Данная конфигурация содержит в себе ссылки на разные данные хранящиеся в файле secrets.yaml, инструкцию по использованию которого можно прочитать в официальной документации.
В файл Secrets.yaml мы вносим все полученные ранее данные (API Key и chat_id)
Настройка Proxy
Как мы видим, для того чтобы бот работал из России, необходимо использовать прокси. Тип прокси для корректной работы - SOCKS5.
Перечень рабочих прокси можно найти в интернете. Например идем по этой ссылке и ищем там список прокси. Если скопировать ссылку из списка, то мы получим строку содержащую в себе:
Адрес прокси, порт, логин и пароль для прокси (обычно это telegram|telegram) но есть исключения.
Строка url для конфигурации должна выглядеть в итоге так:
socks5://адрес_прокси_сервера:порт
Чтобы проверить работоспособность прокси, нужно установить ее в свое приложение на десктопе и что-нибудь написать самому себе (установка обычно осуществляется кликом на ссылку, но можно и вручную в разделе Настройки приложения Telegram)
ВАЖНО !!!
Надо понимать, что использование сторонних бесплатных прокси серверов, влечет за собой возможность использования технологии Men In The Middle (MiTM что означает "Человек посередине"). НО! В официальном FAQ от Telegram указано, что перехват сообщений невозможен как при использовании обычных так и секретных чатов. (Будем надеяться что все таки это факт)
Проверка работы
После того как мы все настроили, нужно проверить работоспособность бота. Для этого мы идем в раздел Инструменты разработчика -> Службы
Далее выбираем службу notify.telegram и вводим следующий текст: {"message":"test"} и отправляем.
И тут мы подошли к самому важному
Несмотря на то, что вроде бы все настроено, прокси работает и все должно быть замечательно, но ничего не приходит, нужно учесть один маленький нюанс:
IP адрес сервера Telegram 149.154.167.220, но некоторые провайдеры (например Дом.ру точно) подменяют этот адрес на свой адрес блокировки.
Поэтому для того, чтобы все корректно работало, надо прописать этот IP адрес в раздел HOSTS вашего роутера в виде:
149.154.167.220 api.telegram.org
На тот случай если адрес сменится, вот вам заграничный ресурс, который выдаст актуальный IP адрес сервера.
После всех этих этапов все должно заработать.