# Смарт-действия — оповещения, чаты, комментарии

> ⚠️ Символом **\*** помечены обязательные параметры. Часть [Справочника смарт-действий](https://help.1forma.ru/domains/smart-actions/actions-reference.md); как вызывать действия из SmartScript и типы параметров — там же ([Типы данных](https://help.1forma.ru/domains/smart-actions/actions-reference.md#типы-данных)).

Действия оповещений (комментарии, email, push, SMS, снекбар, диалоговые окна, напоминания) и управления чатами, тредами и чек-листами.

## Оповещения

### Вызвать диалоговое окно (`CallUpDialogBox`, ID 152)

Вызывает диалоговое окно

| Параметр | Тип | Описание |
|----------|-----|----------|
| Задача* | `1F.Task` | Задача |
| Получатели (пользователи)* | `Collection<1F.User>` | Получатели |
| Тип уведомления* | — | Ошибка / Успех / Информирование |
| Заголовок сообщения | `String` | Заголовок |
| Сообщение | `String` | Текст сообщения |

---

### Вызвать снекбар (`CallSnackBar`, ID 151)

Вызывает снекбар

| Параметр | Тип | Описание |
|----------|-----|----------|
| Задача | `1F.Task` | Задача (необязательно — можно без привязки) |
| Получатели (пользователи)* | `Collection<1F.User>` | Получатели |
| Сообщение | `String` | Текст сообщения |

---

### Отправить email (`SendEmail`)

Создает и отправляет электронное письмо от имени указанного пользователя

| Параметр | Тип | Описание |
|----------|-----|----------|
| Email отправителя* | `String` | Email для отправки |
| Получатели* | `String` | Email-адреса через запятую |
| СС | `String` | Копия (email через запятую) |
| Тема* | `String` | Тема письма |
| Текст письма* | `String` | Текст |
| Вложения | `Collection<1F.File>` | Файлы из Диска |
| Каждому адресату отдельное письмо | `Boolean` | Отдельное письмо каждому |
| Id email report | `Integer` | ID отчета FastReport для вложения в HTML |
| Параметры отчета | `String` | Параметры отчета |
| Пользователь доступа | `1F.User` | Необязательно, в конце списка. От чьего имени проверяется доступ к файлам из «Вложений». Пусто — пользователь сессии. Фоновый запуск без сессии и без заданного пользователя — отказ в доступе. Системный робот — только для доверенных фоновых сценариев. |

> ⚠️ В Общих настройках должен быть включен флажок "Разрешена работа с почтой"

**Вложения и права.** Файлы из параметра «Вложения» читаются от имени пользователя из параметра «Пользователь доступа», а если он пуст — от пользователя сессии. У пользователя без прав на файл отправка не проходит. Запуск пакета по расписанию без заданного пользователя завершается отказом, а не чтением от системного робота.

---

### Отправить email на группу (`SendMailBoxEmailToGroup`, ID 54)

Создает и отправляет электронное письмо группе

| Параметр | Тип | Описание |
|----------|-----|----------|
| Email отправителя* | `String` | Email для отправки |
| Группы получателей* | `Collection<1F.UserGroup>` | Группы-получатели |
| СС | `String` | Копия |
| Тема* | `String` | Тема |
| Текст письма* | `String` | Текст |
| Вложения | `Collection<1F.File>` | Файлы |
| Использовать внешние Email адреса | `Boolean` | Внешние email из профилей |
| Каждому адресату отдельное письмо | `Boolean` | Отдельное письмо каждому |

---

### Отправить push-сообщение (`SendPush`)

Отправляет push-сообщение

| Параметр | Тип | Описание |
|----------|-----|----------|
| ID категории | `1F.Subcat` | Категория |
| Кому | `Collection<1F.User>` | Получатели |
| Сообщение | `String` | Текст |
| Счетчик | `Integer` | Значение для iOS |
| Звук | `Integer` | Номер мелодии |
| Тихий пуш* | `Boolean` | `content-available:1` |
| ID задачи | `1F.Task` | Задача для уведомления |
| Дополнительные параметры пуша | `String` | Пары ключ-значение |
| Приоритет | `Integer` | 0=низкий, 1=обычный, 3=высокий |
| Push-токен | `String` | Токены устройств через запятую |

> ⚠️ Заполнить "Кому" или "Push-токен"

---

### Отправить SMS (`SendSms`)

Отправляет SMS

| Параметр | Тип | Описание |
|----------|-----|----------|
| Номер* | `String` | 10-значный номер |
| Текст* | `String` | Текст сообщения |
| Провайдер | `Integer` | ID провайдера SMS |

---

### Отправить voip push-сообщение (`SendVoipPush`, ID 125)

Отправляет voip push-сообщение

| Параметр | Тип | Описание |
|----------|-----|----------|
| Кому* | `Collection<1F.User>` | Получатели |
| ID задачи | `Integer` | Задача |
| Дополнительные параметры пуша | `String` | Пары ключ-значение |

---

### Отправить комментарий (`PostComment`)

Отправляет сообщение в ленту задачи. **Это основной способ добавить комментарий из SmartScript.**

| Параметр | Тип | Описание |
|----------|-----|----------|
| Автор* | `1F.User` | Автор комментария |
| Текст* | `String` | Текст |
| Задача* | `1F.Task` | Задача |
| Получатели (пользователи) | `Collection<1F.User>` | Адресаты |
| Получатели (группы) | `Collection<1F.UserGroup>` | Группы-адресаты |
| Принудительно на почту* | `Boolean` | Также по email |
| + SMS* | `Boolean` | Также по SMS |
| Не подписывать адресатов к задаче* | `Boolean` | Не подписывать получателей |
| Текст как HTML* | `Boolean` | Трактовать текст комментария как HTML |
| Пометить как вопрос | `Boolean` | Пометить вопросом |
| Копия (пользователи) | `Collection<1F.User>` | Получатели копии |
| Тип комментария | — | Тип комментария |
| Видим в ленте только для настоящих адресатов | `Boolean` | Видимость только адресатам |
| Тихий комментарий | `Boolean` | Без увеличения счётчика |
| RealUserId | `Integer` | Значение RealUserId |
| Тихий пуш | `Boolean` | `content-available:1` |
| Дополнительные параметры пуша | `String` | Пары ключ-значение |
| Файлы | `Collection<1F.File>` | Вложения |
| В ответ на комментарий | `Integer` | ID комментария для ответа |
| Тред | `Integer` | ID комментария-начала обсуждения |
| Отображать найденные ссылки | `Boolean` | Показывать ссылки (по умолчанию false) |
| Очищать неподдерживаемые CSS-цвета | `Boolean` | Удалять из стилей цветовые функции, которые лента не поддерживает (по умолчанию false) |

**Параметр «Принудительно на почту».** Он снимает пользовательские настройки почтовых уведомлений адресата: письмо уходит и тому, кто отключил у себя почтовые уведомления. Отмена уведомления смарт-событием перед отправкой действует в обоих режимах — принуждение её не обходит. Адресаты, у которых не заполнен ни внутренний, ни внешний почтовый адрес, из принудительной рассылки исключаются.

Письма готовятся и отправляются по каждому адресату отдельно, поэтому сбой на одном получателе — некорректный адрес, ошибка шаблона или недоступная отправка — не прерывает рассылку остальным: причина записывается в журнал ошибок вместе с идентификатором этого адресата, и обработка продолжается. Если письмо не пришло конкретному человеку, запись по его идентификатору и нужно искать в журнале.

---

### Отправить сигнал

Сигнализирует о входе в комнату ВКС

| Параметр | Тип | Описание |
|----------|-----|----------|
| Пользователь* | `String` | Получатель |
| Текст* | `String` | Текст сигнала |
| Тип сигнала* | `String` | Тип события |

---

### Отправить системный email (`SendMailBoxEmail`, ID 44)

Отправляет почтовое сообщение с проверкой системного почтового ящика

| Параметр | Тип | Описание |
|----------|-----|----------|
| Тема* | `String` | Тема |
| Текст письма* | `String` | Текст |
| Получатели* | `String` | Email через запятую |
| СС | `String` | Копия |
| Email отправителя* | `String` | Email отправителя |
| Вложения | `Collection<1F.File>` | Файлы |
| Каждому адресату отдельное письмо | `Boolean` | Отдельное письмо каждому |
| Преобразовывать base64-картинки во вложения | `Boolean` | По умолчанию включено |
| Id email report | `Integer` | ID отчета FastReport |
| Параметры отчета | `String` | Параметры отчета |
| In-Reply-To Message-ID | `String` | Message-ID исходного письма. Заполнен — письмо уходит с заголовками `In-Reply-To` и `References`, и почтовый клиент получателя может показать его в той же цепочке; готовую цепочку передавать не нужно, она формируется сама. Пустой — письмо отправляется как раньше, без заголовков цепочки |

**Почтовый ящик обязателен.** Действие отправляет письмо только через системный почтовый ящик — и когда включён режим «Каждому адресату отдельное письмо», и в общей отправке одним письмом. Если в параметре «Email отправителя» ящик не выбран, действие завершается ошибкой конфигурации с указанием незаполненного параметра, письма не формируются. Проверка выполняется до формирования писем, поэтому отказ одинаков для общей и раздельной рассылки.

**Результат:** `int[]` — ID отправленных писем (`Emails`).

---

### Отправить уведомление пользователю (`SendCustomMessageToUser`, ID 124)

В веб-клиент пользователя отправляется текстовое сообщение

| Параметр | Тип | Описание |
|----------|-----|----------|
| Пользователь* | `1F.User` | Получатель |
| Текст* | `String` | JSON-описание действия, например `{ type: 'OpenTask', taskId: 12345 }` |

> ⚠️ Требуется интеграция с телефонией и Signal-R

---

### Создать напоминание о задаче (`CreateTaskNotification`, ID 41)

Создает напоминание о задаче

| Параметр | Тип | Описание |
|----------|-----|----------|
| Задача* | `1F.Task` | Задача |
| Пользователь* | `1F.User` | Получатель |
| Дата* | `DateTime` | Дата и время |
| Текст* | `String` | Текст напоминания |
| Уведомить по SMS* | `Boolean` | Отправить SMS |
| Создать копию в Outlook* | `Boolean` | Создать в Outlook |
| Получатели (пользователи) | `Collection<1F.User>` | Дополнительные получатели |

---

## Чаты, комментарии, чек-листы

### Удалить комментарий (`DeleteComment`, ID 116)

Удаление одного комментария (по ID или по контексту события). Эквивалент действия пользователя в интерфейсе с правом удаления.

### Создать тред (`CreateThread`, ID 183)

Создаёт новую ветку обсуждения в рамках задачи (ответ на корневой комментарий или новая тема в чате).

### Настроить чат (`ConfigureChat`, ID 195)

Изменяет параметры чата задачи: имя, иконка, режим (открытый / закрытый), модераторы.

Логические параметры действия обязательны: если значение не задано, действие завершается ошибкой с указанием недостающего параметра. Исключение — «Включены ли стикеры»: этот параметр можно оставить незаполненным, тогда текущая настройка чата не меняется.

### Назначить роль в чате (`AssignRoleInChat`, ID 197)

Назначает роль (Owner / Moderator / Member) пользователю в чате.

### Обновить папку мультилукапа (`MultilookupFolderUpdate`, ID 199) / Удалить папку мультилукапа (`MultilookupFolderDelete`, ID 200)

Управление папками в ДП Multilookup со схемой «Чек-лист».
