После обновления, в 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 адрес сервера.
После всех этих этапов все должно заработать.
За статью спасибо! Только для новичка голопом по Европам. Куда конфигурацию Телеграма в Home Assistant вставлять, в какой файл? Дальше не продвинулся.
И как его потом использовать?
Спасибо за развитие темы ХА =)
Спасибо за статью.
У меня как раз провайдер Дом.Ру. А можете разъяснить поконкретнее, что за раздел HOSTS на роутере(у меня ASUS роутер), все вкладки перерыл, не нашел куда это прописать.
Может хотя бы на примере своего роутера дадите пояснения?
LAN - DHCP - и там надо искать hosts
Получилось настроить на Асусе Hosts?
Я не могу найти у себя в настройках.
находится в Lan - Hosts
Но меня это не спасло(((
Я в итоге сделал не через прокси, а через Tor. Все заработало.
Дай бог тебе здоровья! :D
Около часа мучился, не мог понять, почему не работает, прописал ip в локальный hosts и все пошло ) Домру, конечно, знатно гадит ))
Спасибо большое за статью!
да всегда пожалуйста :))) надо наверное переименовать статью "настройка телеграм бота для тех у кого домру" :))))))
я так понимаю это все возможно только для канала? т.е. отправка данных от сервера HA-клиенту в телеграмм, а вот с ботом такое уже не прокатит. так как прокси работают только в одностороннем режиме.
Всмысле ? Это бот жеж. То есть связь двухсторонняя. Можно как и уведомления от НА получать так и управлять НА через команды боту. Прокси работает в обе стороны.
да, разобрался уже, все работает. была ошибка, а где непонятно. да еще и на форуме вычитал, что связь через сокс односторонняя..
да, разобрался уже, все работает. была ошибка, а где непонятно. да еще и на форуме вычитал, что связь через сокс односторонняя..
Я наверное совсем тупой... Затык на первом этапе Вставляю в браузер ссылку. В ответ...
И это самый лучший вариант. Пробовал и так и эдак... В других случаях просто ошибка 404
Спасибо. Все получилось. Хоть и не сразу...
Вот блин зла не хватает))) А с другими поделиться, которые в туже лужу сели?)
Блин, я уже не помню. Но кажется задержка была большая. Через некоторое время сработало. Но могу ошибаться. Давно это было
В конце ссылки прописать так
/getUpdates?offset-1
Такая-же была ерунда, оказалось это потому что бот в телеграм был не запущен, надо начать с ним чат и дать ему команду /start и тогда приходят заветные циферки.
"Далее выбираем службу notify.telegram"... нет такой службы. Все что выше этих слов делал по инструкции. В чем может быть проблема?
Возможно что то изменили в хассио 😁 за такое то время
не изменили все работает. в конфиге в нотифи,имя телеграм укажите
А есть инструкция как просто создать телеграм-бота, отвечающий на запросы?..
именно в НА или например в нодереде ?
У меня вот на этом этапе https://api.telegram.org/bot%D0%A2%D0%9E%D0%9A%D0%95%D0%9D_%D0%9A%D0%9E%D0%A2%D0%9E%D0%A0%D0%AB%D0%99_%D0%92%D0%AB_%D0%9F%D0%9E%D0%9B%D0%A3%D0%A7%D0%98%D0%9B%D0%98_%D0%9E%D0%A2_BotFather/getUpdates">https://api.telegram.org/botТО...
не вылезает chatid. Показывает {ok: true, result: []}
а токен то верный ?
У меня та же проблема... как Вы ее решили?
разобрался... нужно стартануть бота
Бота стартанул, но проблема не решилась.
{ok: true, result: []}