Поиск по базе знаний

Уведомления в Telegram из сценариев Алисы через Node-RED

Голосовые уведомления от Яндекс Станции невероятно удобны, когда вы находитесь дома. Однако если вы ушли на работу или уехали в отпуск, колонка не сможет предупредить вас о внештатной ситуации. В таких случаях идеальным каналом связи становится Telegram. Создав собственного бота и интегрировав его с сервером домашней автоматизации, вы сможете мгновенно получать сообщения о протечках воды, открытии окон, фиксации движения или отключении электроэнергии.

Для реализации этой схемы нам понадобится настроенный сервер автоматизации. Если вы еще не выполнили базовое развертывание, обратитесь к пошаговому руководству по установке Node-RED и интеграции с Яндекс Алисой. Ниже мы разберем процесс создания бота и настройки отправки сообщений.


Шаг 1: Создание Telegram-бота и получение токена

Создание бота происходит непосредственно внутри мессенджера Telegram и занимает всего пару минут:

  1. Откройте Telegram и в строке поиска введите @BotFather (это официальный бот для регистрации других ботов). Убедитесь, что у него есть синяя галочка верификации.
  2. Запустите бота кнопкой Start и отправьте команду /newbot.
  3. Введите понятное имя для вашего бота (например, «Мой Умный Дом»).
  4. Придумайте уникальный юзернейм, который обязательно должен оканчиваться на bot (например, my_yandex_smarthome_bot).
  5. После успешного создания BotFather пришлет вам длинную строку — это API Token (например, 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). Скопируйте и сохраните его.

Теперь вам нужно узнать свой персональный идентификатор пользователя (Chat ID), чтобы бот знал, куда именно отправлять сообщения. Для этого найдите бота @userinfobot или @myidbot, запустите его, и он пришлет числовой код (например, 987654321).


Шаг 2: Установка и настройка палитры в Node-RED

Чтобы Node-RED мог взаимодействовать с Telegram API, установим популярную библиотеку интеграции:

  1. Откройте веб-интерфейс Node-RED ➡️ перейдите в Manage palette ➡️ вкладка Install.
  2. Введите в строке поиска node-red-contrib-telegrambot и нажмите кнопку Install.
  3. После установки на левой панели в разделе «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: Практический пример сценария безопасности

Реализуем подробный сценарий отправки тревожного оповещения:

  1. В приложении Дом с Алисой вы настраиваете виртуальный тумблер под названием «Режим Охраны». Когда вы уходите из квартиры, вы произносите голосовую команду: «Алиса, я ухожу», после чего этот тумблер переводится в активное состояние.
  2. Текущее состояние этого виртуального тумблера мгновенно транслируется в локальную среду Node-RED через сетевой вебхук или MQTT-топик.
  3. Физический беспроводной датчик открытия входной двери передает сигнал о своем состоянии на хаб умного дома, который пересылает его в Node-RED.
  4. В Node-RED узел типа Switch производит автоматическую проверку условий: если тумблер режима охраны активен (значение переменной global.securityMode равно true) и при этом датчик двери перешел в состояние open, то управляющий сигнал немедленно передается на узел формирования тревожного сообщения.
  5. Бот в ту же секунду отправляет на ваш мобильный телефон сообщение: «🚨 ТРЕВОГА! Нарушен внешний периметр охраны. Зафиксировано открытие входной двери!».

Вы можете пойти еще дальше и добавить в тревожное сообщение интерактивные кнопки быстрого реагирования (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 полностью стирает границы управления умным домом, обеспечивая вам непревзойденный уровень контроля над безопасностью, энергопотреблением и общим комфортом вашего жилья из любой точки земного шара.

Инструкция по настройке

1

Создание Telegram-бота через BotFather

Найдите официального бота BotFather в Telegram, отправьте команду /newbot и сохраните полученный уникальный API-токен.

2

Определение вашего Chat ID

Напишите вашему созданному боту любое сообщение, затем узнайте свой уникальный числовой идентификатор Chat ID через специальных ботов.

3

Установка палитры Telegram в Node-RED

Установите пакет node-red-contrib-telegrambot через Palette Manager. Перетащите ноду 'Sender' на рабочую область.

4

Формирование и отправка уведомлений

Настройте узел Function для подготовки сообщения msg.payload, содержащего текст, ID чата и режим форматирования Markdown.