Все ноды/Integrations/Telegram

Telegram: кнопки

Отправляет сообщение с inline-кнопками или прикрепляет кнопки к существующему сообщению. Кнопки несут command/args — при нажатии сценарий перезапускается с data.telegram.command/args/message_id. Использует бота, на которого опубликован сценарий; чтобы взять другого бота через порт «Подключение Telegram», переключите «Источник подключения» на «Внешнее подключение». Target 'reply_message' прикрепляет кнопки к ответу бота на этом ходе; он доставляется в конце хода.

Telegram: кнопки▶
Подключение TelegramИтог действия
Ошибка

Тип в графе: telegram_inline_keyboard

Exec

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

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

Минимальный рабочий сценарий

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

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

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

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

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

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

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

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

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

Входы

ПортПроводДанныеПримечания
Подключение Telegramtelegram_configДанныеdata—

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

Выходы

ПортПроводДанныеПримечания
Итог действияoutputИсполнение + данныеexecute_dataobject
Ошибкаon_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_idstring""

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

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

показывается при «Куда прикрепить» = Отправить новое сообщение с кнопками | Прикрепить к существующему сообщению по id

ID сообщенияmessage_idstring""

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

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

показывается при «Куда прикрепить» = Прикрепить к существующему сообщению по id

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

Куда прикрепить кнопки: new_message — отправить новое сообщение с текстом и кнопками; reply_message — прикрепить к стримовому ответу бота на этом ходе (его id на момент запуска ноды может ещё не существовать, поэтому прикрепление откладывается до конца хода); message_id — к конкретному сообщению по id.

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

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

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

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

показывается при «Куда прикрепить» = Отправить новое сообщение с кнопками

Общие поля

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

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

Готовые примеры с этой нодой