И интенты, и свободный ввод настраиваются на уровне конкретного узла и оба реагируют на то, что написал пользователь. Но задачи у них разные: свободный ввод проверяет, подходит ли ответ под один конкретный формат, а интенты распознают, о чём вообще пользователь говорит, даже если фраза сформулирована по-разному.
Свободный ввод: проверка формата ответа
Свободный ввод настраивается прямо в блоке узла — фильтр в виде регулярного выражения, которому должен соответствовать ответ пользователя, и целевой узел, куда переходить при совпадении.

- Фильтр — только регулярное выражение, ничего другого. Например,
^\d+$для проверки, что пользователь прислал только цифры. - Тестовая строка — поле для проверки фильтра на примере ответа, не сохраняется.
- Целевой узел — куда переходит бот, если ответ подошёл под фильтр.
- Сообщение, если ответ не подходит под фильтр — что бот ответит, если фильтр не сработал; поддерживает переменные интеграционного слоя (
{{ ... }}). - Параметры передачи в целевой узел — можно передать в целевой узел дополнительные данные вместе с переходом.
Это разовая настройка одного конкретного узла: ожидаете здесь номер телефона, код подтверждения или дату — валидируете эту форму ответа именно в этой точке диалога.
Интенты: распознавание смысла фразы
Интенты — это отдельная сущность, словарь, который создаётся и хранится отдельно (Конструктор → Словари интентов), а потом подключается к нужным узлам. В словаре — список интентов, у каждого — набор ключевых слов и действие при совпадении (обычно переход в конкретный узел).

Чтобы словарь заработал, в узле нужно включить блок «Словарь интентов», выбрать сам словарь и решить, что делать при совпадении:

- Включить выполнение действий по интентам — если интент привязан к узлу, бот сразу туда перейдёт. Без этого флага совпадение только запишется в переменную, а бот продолжит отправку контента текущего узла — то есть можно ловить интенты «фоном», не меняя обычную логику узла.
- Записывать входящие сообщения в словарь — сохраняет все входящие сообщения для последующего анализа и обучения словаря, даже те, что ни с одним интентом не совпали.
- Записать совпадение в переменную — имя переменной чата, в которую запишется текст совпавшего интента; можно использовать дальше по флоу, например в шаблоне отправляемого узла.
У самого словаря, кроме списка интентов и ключевых слов, есть вкладки «Разобранные сообщения», «Неразобранные сообщения» и «Dataset для ИИ» — то есть словарь можно постепенно дообучать и разбирать, что осталось нераспознанным.
Три типа совпадения ключевого слова
В отличие от свободного ввода, где фильтр — это всегда регулярное выражение, ключевое слово в словаре интентов можно задать тремя способами:

| Тип | Как работает |
|---|---|
| Слово (полное вхождение) | Совпадает, только если слово встречается в сообщении целиком |
| Слово (частичное вхождение) | Совпадает и при вхождении слова как части другого слова |
| Собственное регулярное выражение | Полная свобода — как в фильтре свободного ввода |
То есть при необходимости словарь интентов может делать то же самое, что и свободный ввод (регулярка), но по умолчанию рассчитан на более простую и быструю настройку через обычные слова.
Когда что использовать
Свободный ввод — когда в этой конкретной точке диалога вы ждёте ответ одного чёткого формата и хотите провалидировать именно форму: номер телефона, код, дату, число. Настройка одноразовая и живёт только в этом узле.
Интенты — когда нужно распознать намерение или тему в свободной фразе, которая может быть сформулирована по-разному («хочу оператора», «переведите на человека», «не могу дозвониться» — всё это один и тот же интент), и особенно когда одна и та же логика распознавания должна работать сразу в нескольких узлах или сценариях — словарь переиспользуется, а не настраивается заново на каждом узле.