Form


Form (форма) - сущность DSL, с помощью которой описывается механизм слот-филлинга. В рамках этого механизма запрос клиента - это тема обращения и набор параметров, которые образуют форму со слотами (fields).

В рамках одной формы все поля заполняются одновременно, что позволяет не описывать конкретный порядок заполнения параметров интента, а также хранить информацию в структурированном виде и переиспользовать её от одной формы к другой.

На DSL можно создать 2 типа форм:

  • Базовая форма (Form);
  • Композитная форма (CompositeForm).

Базовая форма

Базовая форма используется в сценариях, в которых имеется фиксированный для опроса набор полей. Например, есть сценарий оплаты телефона, в котором можно указать поля с суммой, номером телефона и картой для перевода. И из этих полей, к примеру, только первое поле может быть обязательным.

НазваниеОбязательноеОписание
lifetimeНетВремя жизни формы в секундах. После истечения указанного времени и после последнего попадания в форму, эта форма удаляется. По умолчанию задано значение 86400 секунд (сутки)
fieldsДаНабор полей, составляющих форму. Описываются в том порядке, в котором их необходимо заполнять и задавать уточняющие вопросы. Представляет собой словарь вида {"form_name": Form / Формы}
{
    "app_hello": {
        "lifetime": 600,
        "fields": {
            "name": {
                "required": true,
                "questions": [
                    {
                        "command": "ANSWER_TO_USER",
                        "nodes": {
                            "pronounceText": "Какой твой userID?"
                        }
                    }
                ],
                "filler": {
                    "type": "user_id"
                }
            }
        }
    }
}

Композитная форма

Композитная форма - это набор форм. Используется в сценариях с развилками, когда набор следующих уточняющих вопросов зависит от значений предыдущего набора. Выбор той или иной дочерней формы в конкретный момент времени управляется из Scenario.

НазваниеОбязательноеОписание
lifetimeНетВремя жизни формы в секундах. После истечения указанного времени и после последнего попадания в форму, эта форма удаляется. По умолчанию задано значение 86400 секунд (сутки)
formsДаНабор полей, составляющих форму. Описываются в том порядке, в котором их необходимо заполнять и задавать уточняющие вопросы. Представляет собой словарь вида {"form_name": Form / Формы}
{
  "type": "composite",
  "lifetime": 14400,
  "version": 1,
  "forms": {
    "start": {*FORM*},
    "form1": {*FORM*},
    "form2": {*FORM*}
  }
}

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней