---
url: https://docs.juniper.bot/cmd/custom/actions/modal-form.md
description: >-
  Тип действия Диалоговое окно используется для отображения всплывающего окна с
  полями ввода для получения каких-либо данных от участника в удобном
  интерфейсе.
---

[`modal.values`]: ../../../message-templates/types/custom-commands/modal

# Диалоговое окно

Тип действия "Диалоговое окно" используется для отображения всплывающего окна с полями ввода для получения каких-либо данных от участника в удобном интерфейсе.

## Чем полезно? { #why }

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

## Поведение и настройки { #settings }

Диалоговые окна состоят из [компонентов](../../../message-templates/components/index#modal-forms) и могут быть запущены, используя только:

* [Слэш-команды](../index#slash);
* [Контекстные меню](../index#context-menus).
* [Компоненты сообщений](../../../message-templates/components/index).

Все компоненты, доступные для добавления в диалоговое окно, описаны в статье [Компоненты](../../../message-templates/components/index#modal-forms).

В настройках диалогового окна необходимо указать действие подтверждения, в шаблоне которого будет доступна
переменная-карта [`modal.values`], ключи которой — идентификаторы компонентов, а значения — введённые участником данные.

## Ограничения { #limitations }

::: warning Ограничения
Диалоговые окна имеют некоторые ограничения:

1. Диалоговое окно должно иметь хотя бы один компонент, но не более пяти компонентов.
2. Диалоговое окно не может запускать другое диалоговое окно при подтверждении.
   :::

## Пример { #example }

Например, вы хотите создать простую команду профиля участника. Для этого:

1. Создайте новую пользовательскую команду (обратите внимание на уже существующее действие, не трогайте его пока, оно понадобится позже);

2. Создайте новое действие с названием "Подтверждение" и выберите "Отправка сообщение" как тип действия, отметьте "Эфемерное сообщение" и вставьте следующий шаблон:

   ```template
   {% do member.getAttribute('profile').update(modal.values.profile) %}
   Новый профиль успешно сохранён.
   {{ modal.values.profile }}
   ```

3. Создайте новое действие с названием "Диалог" и сделайте следующее:
   1. Выберите "Диалоговое окно" как тип действия;
   2. Введите наименование "Обновление профиля";
   3. Установите действие "Подтверждение" как действие подтверждения диалога:
   4. Добавьте компонент [Поле ввода](../../../message-templates/components/text-input/index) как многострочный, заполните наименование как "Введите профиль", введите `profile` в идентификатор, отметьте "Требуется значение" и вставьте следующий шаблон в значение по-умолчанию:

      ```template
      {{ member.getAttribute('profile').value }}
      ```

4. В стандартном действии из первого шага убедитесь что оно типа "Отправка сообщения" и введите следующий шаблон для отображения текущего профиля:

   ```template
   {{- (member.getAttribute('profile').value) ?: 'Нет информации' -}}
   ```

   Сюда же добавьте новую [Кнопку](../../../message-templates/components/button/index) с наименованием "Обновить" и любым идентификатором и выберите "Диалог" как его действие.

5. Сохраните.
