Все ноды/Integrations/Telegram
Telegram: кнопки
Отправляет сообщение с inline-кнопками или прикрепляет кнопки к существующему сообщению. Кнопки несут command/args — при нажатии сценарий перезапускается с data.telegram.command/args/message_id. Использует бота, на которого опубликован сценарий; чтобы взять другого бота через порт «Подключение Telegram», переключите «Источник подключения» на «Внешнее подключение». Target 'reply_message' прикрепляет кнопки к ответу бота на этом ходе; он доставляется в конце хода.
Тип в графе: telegram_inline_keyboard
Exec
Можно включить выход ошибки и обработать сбой отдельным путём.
Как попробовать
Минимальный рабочий сценарий
- Исполнение
- Исполнение + данные
Запускается сразу
Как применять
Берите эту ноду, когда от пользователя нужен выбор из нескольких вариантов, а не свободный текст: подтверждение, меню, «да / нет / позже». Обычную реплику отправляет Отправить сообщение — здесь важна не отправка, а кнопки под сообщением и то, что происходит после нажатия.
Как это работает
Кнопка несёт пару «команда + аргументы». Нажатие приходит в платформу отдельным
обновлением, и сценарий запускается заново: текстом входа становится команда, а в
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_data | object | |
Ошибкаon_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_id | string | "" | Telegram chat_id (поддерживаются шаблоны, напр. {{ nodes.entry.data.telegram.chat_id }}) поддерживает шаблоны показывается при «Куда прикрепить» = Отправить новое сообщение с кнопками | Прикрепить к существующему сообщению по id |
ID сообщенияmessage_id | string | "" | ID сообщения (поддерживаются шаблоны, напр. {{send_message_1.message_id}}) поддерживает шаблоны показывается при «Куда прикрепить» = Прикрепить к существующему сообщению по id |
Куда прикрепитьtarget | string | new_message | Куда прикрепить кнопки: new_message — отправить новое сообщение с текстом и кнопками; reply_message — прикрепить к стримовому ответу бота на этом ходе (его id на момент запуска ноды может ещё не существовать, поэтому прикрепление откладывается до конца хода); message_id — к конкретному сообщению по id. Варианты: |
Сообщениеtext | string | "" | Текст нового сообщения (только для target=new_message; шаблоны поддерживаются). поддерживает шаблоны показывается при «Куда прикрепить» = Отправить новое сообщение с кнопками |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.