Что такое формы¶
Что такое формы¶
Содержание инструкции:
Определение¶
Формы (от англ. "forms") — это набор слотов, ожидающих заполнения. Когда запускается диалог с формой, она перебирает слоты и задаёт соответствующие вопросы пользователю, пока все они не будут заполнены действительными данными. Форма — это активный инструмент, который, будучи запущенным, стремится самостоятельно заполнить все свои поля, настойчиво задавая пользователю соответствующие вопросы.
Форма описывается в файле domain.yml
.
Активация формы¶
Чтобы активировать форму, нужно добавить её в историю или создать правило, которое будет определять, когда помощник должен запустить форму.
Пример записи в файле domain.yml
:
stories:
- story: Book a table
steps:
- intent: book_table
- action: restaurant_form # Активированный цикл
- active_loop: restaurant_form # Активный цикл
Здесь:
- Действие
restaurant_form
активирует форму. - Форма становится активным циклом, и бот начинает запрашивать данные у пользователя.
Деактивация формы¶
Форма завершается в следующих случаях:
-
Заполнение всех обязательных слотов
- Когда все необходимые слоты формы заполнены корректными значениями
- Форма автоматически деактивируется после этого
-
Явное завершение формы
- Через специальное намерение пользователя
- Через кастомное действие
- Через правило (rule)
Пример записи в файле domain.yml
:
- story: Завершение формы
steps:
- intent: submit # Пользователь выражает желание завершить форму
- action: my_form
- active_loop: null # Форма деактивируется
Здесь действие active_loop: null
деактивирует форму.
Правила для неудачных путей в форме¶
Иногда пользователь может отклоняться от ожидаемого сценария, например, задавать вопросы, менять тему, предоставлять неполные данные или отказываться от продолжения. Для обработки таких ситуаций можно написать правила или истории, которые включают ожидаемые прерывания.
-
Обработка нерелевантных интентов
Если пользователь задает вопрос или выражает намерение, не связанное с текущей формой, бот должен корректно ответить и вернуть пользователя к заполнению формы.
Пример:
- Бот: На какую дату вы хотите забронировать столик?
- Пользователь: Какая сегодня погода?
- Бот: Вы задали вопрос, не связанный с бронированием столика. Давайте продолжим заполнение формы. На какую дату вы хотите забронировать столик?
-
Обработка отсутствия ответа
Если пользователь не отвечает на запрос формы, бот должен напомнить о необходимости заполнить данные.
Пример:
- Бот: На какую дату вы хотите забронировать столик?
- Пользователь: (молчит)
- Бот: Пожалуйста, ответьте на вопрос, чтобы продолжить. На какую дату вы хотите забронировать столик?
-
Обработка некорректных данных
Если пользователь предоставляет данные, которые не могут быть обработаны (например, неправильный формат даты), бот должен сообщить об ошибке и запросить данные снова.
Пример:
- Бот: На какую дату вы хотите забронировать столик?
- Пользователь: Завтра
- Бот: Некорректный формат даты. Пожалуйста, введите дату в формате ГГГГ-ММ-ДД.
-
Прерывание формы
Если пользователь хочет прервать заполнение формы, бот должен предложить варианты (например, отменить форму или продолжить).
Пример:
- Бот: На какую дату вы хотите забронировать столик?
- Пользователь: Стоп
- Бот: Вы хотите прервать бронирование столика?
- Пользователь: Да
- Бот: Чем еще могу помочь?