Статья

Особенности настройки Telegram_Bot в Hass.io

После обновления, в hass.io появился штатный инструмент polling для использования прокси в настройках telegram_bot. (Официальная инструкция по его настройке бота в НА находится здесь)

Вкратце основные действия которые нужно совершить для создания собственного бота заключаются в следующих шагах:

  1. Открываем Telegram
  2. Ищем пользователя @BotFather
  3. Пишем ему /newbot
  4. Отвечаем на вопросы относительно Имени и юзернейма для бота (Имя это то, как бот будет выглядеть в списке пользователей)
  5. Получаем сообщение с 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 адрес сервера. 

После всех этих этапов все должно заработать.


Вернуться назад
Вернуться назад