Уведомления в Telegram из сценариев Алисы через Node-RED
Голосовые уведомления от Яндекс Станции невероятно удобны, когда вы находитесь дома. Однако если вы ушли на работу или уехали в отпуск, колонка не сможет предупредить вас о внештатной ситуации. В таких случаях идеальным каналом связи становится Telegram. Создав собственного бота и интегрировав его с сервером домашней автоматизации, вы сможете мгновенно получать сообщения о протечках воды, открытии окон, фиксации движения или отключении электроэнергии.
Для реализации этой схемы нам понадобится настроенный сервер автоматизации. Если вы еще не выполнили базовое развертывание, обратитесь к пошаговому руководству по установке Node-RED и интеграции с Яндекс Алисой. Ниже мы разберем процесс создания бота и настройки отправки сообщений.
Шаг 1: Создание Telegram-бота и получение токена
Создание бота происходит непосредственно внутри мессенджера Telegram и занимает всего пару минут:
- Откройте Telegram и в строке поиска введите
@BotFather(это официальный бот для регистрации других ботов). Убедитесь, что у него есть синяя галочка верификации. - Запустите бота кнопкой Start и отправьте команду
/newbot. - Введите понятное имя для вашего бота (например, «Мой Умный Дом»).
- Придумайте уникальный юзернейм, который обязательно должен оканчиваться на
bot(например,my_yandex_smarthome_bot). - После успешного создания BotFather пришлет вам длинную строку — это API Token (например,
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). Скопируйте и сохраните его.
Теперь вам нужно узнать свой персональный идентификатор пользователя (Chat ID), чтобы бот знал, куда именно отправлять сообщения. Для этого найдите бота @userinfobot или @myidbot, запустите его, и он пришлет числовой код (например, 987654321).
Шаг 2: Установка и настройка палитры в Node-RED
Чтобы Node-RED мог взаимодействовать с Telegram API, установим популярную библиотеку интеграции:
- Откройте веб-интерфейс Node-RED ➡️ перейдите в Manage palette ➡️ вкладка Install.
- Введите в строке поиска
node-red-contrib-telegrambotи нажмите кнопку Install. - После установки на левой панели в разделе «social» появятся новые ноды, среди которых основными являются
telegram receiver(для приема команд от вас) иtelegram sender(для отправки сообщений вам).
Перетащите ноду telegram sender на рабочий холст и дважды кликните по ней. В строке «Bot» выберите «Add new telegram bot…». В открывшемся окне введите имя бота и вставьте сохраненный ранее API Token. Нажмите Add для сохранения конфигурации.
Шаг 3: Форматирование сообщений с помощью Markdown
Чтобы сообщения выглядели профессионально и легко читались, используйте встроенную поддержку разметки Markdown в Telegram. Вы можете выделять важные слова жирным шрифтом, оформлять системные логи моноширинным текстом и добавлять информативные эмодзи.
Для отправки сообщения перед нодой telegram sender устанавливается узел Function или Change. Узел должен сформировать объект сообщения следующей структуры:
msg.payload = {
chatId: 987654321, // Замените на ваш реальный Chat ID
type: "message",
content: "⚠️ *Внимание!* \nЗафиксировано движение в зоне *Гостиная*.\nВремя события: `" + new Date().toLocaleTimeString() + "`",
options: {
parse_mode: "Markdown"
}
};
return msg;
Использование параметра parse_mode: "Markdown" указывает Telegram, что текст нужно отформатировать перед показом пользователю.
Шаг 4: Практический пример сценария безопасности
Реализуем подробный сценарий отправки тревожного оповещения:
- В приложении Дом с Алисой вы настраиваете виртуальный тумблер под названием «Режим Охраны». Когда вы уходите из квартиры, вы произносите голосовую команду: «Алиса, я ухожу», после чего этот тумблер переводится в активное состояние.
- Текущее состояние этого виртуального тумблера мгновенно транслируется в локальную среду Node-RED через сетевой вебхук или MQTT-топик.
- Физический беспроводной датчик открытия входной двери передает сигнал о своем состоянии на хаб умного дома, который пересылает его в Node-RED.
- В Node-RED узел типа Switch производит автоматическую проверку условий: если тумблер режима охраны активен (значение переменной
global.securityModeравноtrue) и при этом датчик двери перешел в состояниеopen, то управляющий сигнал немедленно передается на узел формирования тревожного сообщения. - Бот в ту же секунду отправляет на ваш мобильный телефон сообщение: «🚨 ТРЕВОГА! Нарушен внешний периметр охраны. Зафиксировано открытие входной двери!».
Вы можете пойти еще дальше и добавить в тревожное сообщение интерактивные кнопки быстрого реагирования (Inline Keyboards). Например, под текстом тревоги Telegram-бот выведет кнопку «Выключить сирену» или «Вызвать службу охраны». При нажатии на такую кнопку бот отправит callback-запрос обратно в Node-RED, который отдаст команду Алисе или локальному реле на выполнение соответствующего действия.
IMPORTANT
Никогда не храните конфиденциальный API-токен вашего Telegram-бота в открытом виде внутри кода функций, особенно если вы планируете экспортировать свои потоки для обмена с коллегами или выкладывать их в публичные репозитории. Используйте системные переменные окружения операционной системы или храните настройки в защищенном конфигурационном файле, считывая их динамически при каждом запуске сервера Node-RED.
TIP
Вы можете настроить отправку не только обычных текстовых сообщений, но и мультимедийных файлов. Например, при срабатывании датчика движения Node-RED может автоматически запросить свежий кадр с домашней купольной IP-камеры и отправить его в Telegram в виде фотографии с текстовой подписью. Для этого в объекте msg.payload свойство type меняется на photo, а в content передается буфер изображения или прямая URL-ссылка на видеопоток.
WARNING
Строго соблюдайте лимиты отправки сообщений, установленные Telegram API. Мессенджер жестко ограничивает общую частоту отправки до 30 сообщений в секунду для одного бота. Если какой-то датчик начнет ложно срабатывать или дребезжать, отправляя сотни сигналов в секунду, Telegram заблокирует вашего бота (ошибка HTTP 429 Too Many Requests). Чтобы этого не произошло, всегда устанавливайте узел ограничения частоты Delay в режиме ограничения потока (Rate Limit) непосредственно перед отправкой сообщений в Telegram.
Интеграция сценариев голосового помощника Алисы с мессенджером Telegram через гибкие алгоритмы Node-RED полностью стирает границы управления умным домом, обеспечивая вам непревзойденный уровень контроля над безопасностью, энергопотреблением и общим комфортом вашего жилья из любой точки земного шара.
Инструкция по настройке
Создание Telegram-бота через BotFather
Найдите официального бота BotFather в Telegram, отправьте команду /newbot и сохраните полученный уникальный API-токен.
Определение вашего Chat ID
Напишите вашему созданному боту любое сообщение, затем узнайте свой уникальный числовой идентификатор Chat ID через специальных ботов.
Установка палитры Telegram в Node-RED
Установите пакет node-red-contrib-telegrambot через Palette Manager. Перетащите ноду 'Sender' на рабочую область.
Формирование и отправка уведомлений
Настройте узел Function для подготовки сообщения msg.payload, содержащего текст, ID чата и режим форматирования Markdown.