Все ноды/Integrations/Telegram
Inline-клавиатура Telegram
Отправляет сообщение с inline-кнопками или прикрепляет кнопки к существующему сообщению. Кнопки несут command/args — при нажатии workflow перезапускается с data.telegram.command/args/message_id. Требует Telegram Config через порт 'telegram_config'. Target 'reply_message' прикрепляет к текущему ответу бота.
Тип в графе: telegram_inline_keyboard
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение
- Исполнение + данные
Запускается сразу
Как применять
Берите эту ноду, когда от пользователя нужен выбор из нескольких вариантов, а не свободный текст: подтверждение, меню, «да / нет / позже». Обычную реплику отправляет Отправить сообщение — здесь важна не отправка, а кнопки под сообщением и то, что происходит после нажатия.
Как это работает
Кнопка несёт пару «команда + аргументы». Нажатие приходит в платформу отдельным
обновлением, и воркфлоу запускается заново: текстом входа становится команда, а в
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_data | object | |
Erroron_error | Исполнение + данныеexecute_data | — | показывается, когда expose_error_output = true |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Источник подключенияconnection_source | string | auto | Откуда нода берёт подключение. «Из контекста запуска» — использовать то, что платформа уже знает (Telegram-бот, на который задеплоен воркфлоу / собственное файловое хранилище этого воркспейса), проводов не требуется. «Внешнее подключение» — показать ресурсный порт, чтобы в него можно было подключить конфиг-ноду. Варианты: |
Кнопкиbuttons | array<array> | — | Ряды inline-кнопок (внешний список — ряды, внутренний — кнопки в ряду). У кнопки: подпись (text) + либо команда (command) и аргументы (args), либо url. При нажатии workflow перезапускается: data.telegram.command / args и data.telegram.message_id (сообщение с кнопкой). callback_data = 'command|args', лимит 64 байта. |
Chat IDchat_id | string | "" | Telegram chat_id (поддерживаются шаблоны, напр. {{ nodes.entry.data.telegram.chat_id }}) поддерживает шаблоны показывается при target = new_message | message_id |
Message IDmessage_id | string | "" | ID сообщения (поддерживаются шаблоны, напр. {{send_message_1.message_id}}) поддерживает шаблоны показывается при target = message_id |
Куда прикрепитьtarget | string | new_message | Куда прикрепить кнопки: new_message — отправить новое сообщение с текстом и кнопками; reply_message — прикрепить к текущему (стримовому) ответу бота (его id на момент запуска ноды может быть неизвестен — берётся из {{ telegram.reply_message_id }}); message_id — к конкретному сообщению по id. Варианты: |
Сообщениеtext | string | "" | Текст нового сообщения (только для target=new_message; шаблоны поддерживаются). поддерживает шаблоны показывается при target = new_message |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.