Все ноды/Integrations/Telegram

Inline-клавиатура Telegram

Отправляет сообщение с inline-кнопками или прикрепляет кнопки к существующему сообщению. Кнопки несут command/args — при нажатии workflow перезапускается с data.telegram.command/args/message_id. Требует Telegram Config через порт 'telegram_config'. Target 'reply_message' прикрепляет к текущему ответу бота.

Inline-клавиатура Telegram
Telegram ConfigSuccess
Error

Тип в графе: telegram_inline_keyboard

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Как попробовать

Минимальный рабочий воркфлоу

Вход
Inline-клавиатура Telegram
Выход
  • Исполнение
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Берите эту ноду, когда от пользователя нужен выбор из нескольких вариантов, а не свободный текст: подтверждение, меню, «да / нет / позже». Обычную реплику отправляет Отправить сообщение — здесь важна не отправка, а кнопки под сообщением и то, что происходит после нажатия.

Как это работает

Кнопка несёт пару «команда + аргументы». Нажатие приходит в платформу отдельным обновлением, и воркфлоу запускается заново: текстом входа становится команда, а в data.telegram приезжают command, args и message_id того сообщения, на котором висела кнопка. Это новый ход, а не продолжение прошлого, — состояние берите из памяти или переменных, а не из «предыдущего шага». Кнопка со ссылкой ведёт себя иначе: она просто открывает URL и никакого запуска не создаёт.

«Куда прикрепить» даёт три варианта: новое сообщение с текстом и кнопками, ответ бота на текущем ходе (кнопки навешиваются в конце хода, когда ответ уже отправлен) и конкретное сообщение по id.

Частые ошибки

  • Нажатия не приходят. По умолчанию бот подписан только на сообщения. Отметьте «Нажатия inline-кнопок» в блоке «Получаемые обновления» панели публикации — иначе кнопки видны, но воркфлоу молчит.
  • 64 байта на команду и аргументы вместе. Telegram больше не принимает; длинные аргументы роняют ноду. Передавайте короткий ключ, а данные держите в переменной или документе.
  • Прикрепить кнопки можно только к сообщению самого бота. Чужое сообщение Telegram редактировать не даёт.
  • Вариант «ответ бота» работает только в Telegram-ходе и возвращает message_id пустым: сообщения ещё нет в момент выполнения ноды.
  • Кириллица в аргументах занимает по два байта. «64 символа» и «64 байта» — это разные лимиты, и второй наступает раньше.
  • Пустой текст не останавливает ноду. Ни пустое поле «Сообщение», ни пустая подпись кнопки не считаются ошибкой: вместо них уходит пробел, и в чате появляется сообщение, выглядящее пустым. Шаблон, отрендерившийся в пустую строку, ищите глазами.

Входы

ПортПроводДанныеПримечания
Telegram Configtelegram_configДанныеdata

показывается, когда connection_source ≠ "auto"

Выходы

ПортПроводДанныеПримечания
SuccessoutputИсполнение + данныеexecute_dataobject
Erroron_errorИсполнение + данныеexecute_data

показывается, когда expose_error_output = true

Настройки

ПолеТипПо умолчаниюОписание
Источник подключенияconnection_sourcestringauto

Откуда нода берёт подключение. «Из контекста запуска» — использовать то, что платформа уже знает (Telegram-бот, на который задеплоен воркфлоу / собственное файловое хранилище этого воркспейса), проводов не требуется. «Внешнее подключение» — показать ресурсный порт, чтобы в него можно было подключить конфиг-ноду.

Варианты: auto — Из контекста запуска, external — Внешнее подключение (подключить конфиг-ноду)

Кнопкиbuttonsarray<array>

Ряды inline-кнопок (внешний список — ряды, внутренний — кнопки в ряду). У кнопки: подпись (text) + либо команда (command) и аргументы (args), либо url. При нажатии workflow перезапускается: data.telegram.command / args и data.telegram.message_id (сообщение с кнопкой). callback_data = 'command|args', лимит 64 байта.

Chat IDchat_idstring""

Telegram chat_id (поддерживаются шаблоны, напр. {{ nodes.entry.data.telegram.chat_id }})

поддерживает шаблоны

показывается при target = new_message | message_id

Message IDmessage_idstring""

ID сообщения (поддерживаются шаблоны, напр. {{send_message_1.message_id}})

поддерживает шаблоны

показывается при target = message_id

Куда прикрепитьtargetstringnew_message

Куда прикрепить кнопки: new_message — отправить новое сообщение с текстом и кнопками; reply_message — прикрепить к текущему (стримовому) ответу бота (его id на момент запуска ноды может быть неизвестен — берётся из {{ telegram.reply_message_id }}); message_id — к конкретному сообщению по id.

Варианты: new_message — Отправить новое сообщение с кнопками, reply_message — Прикрепить к ответу бота на этом ходе, message_id — Прикрепить к существующему сообщению по id

Сообщениеtextstring""

Текст нового сообщения (только для target=new_message; шаблоны поддерживаются).

поддерживает шаблоны

показывается при target = new_message

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.