Перейти к основному содержимому

Input-нода

Назначение​

input сама вопрос не отправляет: предыдущая message показывает его, а input ожидает следующее событие Telegram и сохраняет полезную нагрузку в переменную.

inputTargetNodeId определяет следующий узел после ответа. Само наличие этого поля в message не включает ввод: оставшиеся настройки выключенного сбора не создают input-ноду при загрузке и не заменяют клавиатуру сообщением ввода. Legacy-миграция выполняется только для message с collectUserInput: true; для новых сценариев используйте отдельный input.

Поля​

ПолеТипЗначение/ограничение
inputVariablestringимя без скобок
inputTypeenumtext, photo, video, audio, document, location, contact, any, callback
inputTargetNodeIdstringID цели или пусто
validationTypeenumnone, email, phone, number для текста
retryMessagestringповторный запрос при ошибке
inputRequiredbooleanзапрет пустого значения
minLength, maxLengthnumberограничения длины текста
inputTimeoutnumberсекунды ожидания
{"type":"input","data":{"inputVariable":"email","inputType":"text","validationType":"email","retryMessage":"Введите корректный email","inputTargetNodeId":"save"}}

Поведение​

text сохраняет текст; photo, video, audio, document, location и contact — соответствующую Telegram-полезную нагрузку; any принимает допустимое сообщение; callback ожидает нажатие inline-кнопки. После успеха значение доступно как {email}. При невалидном вводе ожидание остаётся активным и отправляется retryMessage. После timeout FSM сбрасывается и отправляется inputTimeoutMessage; /cancel сбрасывает ожидание.

Для бизнес-правил, которых нет среди встроенных validationType, используй condition или code после сохранения. На одной ветке должен быть один ожидающий input: несколько конкурирующих узлов могут перехватить событие непредсказуемо.

Примеры​

Число: inputType: "text", validationType: "number". Callback: keyboard с callback-кнопкой → input с inputType: "callback". Файл: inputType: "document", затем code или convert_file.

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

  • В inputVariable указаны {скобки} — нужны только имя и допустимые символы.
  • Вопрос пытаются задать самим input — добавь предыдущую message.
  • Callback направлен в обычный text-input — поставь inputType: "callback".
  • Не указан retryMessage при обязательной проверке.

Связанные ноды​

message, keyboard, callback_trigger, condition, code, set_variable, convert_file.

Как проверить результат​

Проверь get_node_schema(input), get_node_example(input), validate_node, затем отправь валидный и невалидный ответ. Просмотр runtime-контекста отдельным MCP-инструментом не реализован; используй логи.

Следующий шаг​

Соедини успешный input с message, condition или code и не создавай второй активный input на той же ветке.