ym88659208ym87991671
Фреймворк Form | Документация SmartMarket
Skip to main content

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"
}
}
}
}
}

Пример формы с повторными вопросами

{
"experience": {
"type": "question",
"ask_again_questions": [
{
"type": "string",
"command": "ANSWER_TO_USER",
"nodes": {
"pronounceText": "Не расслышал. Как давно ты программируешь на Python?",
"items": [
{
"bubble": {
"text": "Не расслышал. Как давно ты программируешь на Python?"
}
}
]
}
},
{
"type": "string",
"command": "ANSWER_TO_USER",
"nodes": {
"pronounceText": "Видимо, я сегодня глуховат? Повтори, пожалуйста, сколько ты программируешь на Python?",
"items": [
{
"bubble": {
"text": "Видимо, я сегодня глуховат? Повтори, пожалуйста, сколько ты программируешь на Python?"
}
}
]
}
}
],
"questions": [
{
"type": "string",
"command": "ANSWER_TO_USER",
"nodes": {
"pronounceText": "Сколько лет ты программируешь на Python?",
"items": [
{
"bubble": {
"text": "Сколько лет ты программируешь на Python?"
}
}
]
}
}
],
"filler": {
"type": "number_first"
}
}
}

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

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

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

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

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