Общая информация

«ETL Mailer» — это механизм отправки писем через HTTP-сервис, опубликованный в базе Modus ETL. Сервис используется для отправки системных уведомлений, в том числе писем для восстановления пароля на Аналитическом портале (Modus BI).

Для работы «ETL Mailer» необходимо:

  1. Опубликовать HTTP-сервис хс_ОтправкаЭлектронногоПисьма в Modus ETL.
  2. Создать профиль группы доступа, группу доступа и технического пользователя «EmailSender».
  3. В базе метаданных Modus BI задать настройки :

Ниже на рисунке представлена схема работы «ETL Mailer».

@startuml
skinparam componentStyle rectangle

package "Modus BI" #E3F2FD {
  [Пользователь] as U
  database "Настройки mailer.etl.*\n(таблица setting)" as N
  [Формирование письма] as F
}

package "Modus ETL" #FFF3E0 {
  [HTTP-сервис\nхс_ОтправкаЭлектронногоПисьма] as S
  [Пользователь EmailSender] as E
}

[Email получателя] as R

U --> F : 1. Запрос на восстановление
N --> F : 2. Шаблон и адрес
F --> S : 3. Запрос к сервису
E ..> S : Аутентификация
S --> R : 4. Отправка письма

@enduml

Публикация HTTP сервиса

Публикация выполняется так же, как и для других HTTP сервисов Modus ETL. Подробнее о публикации HTTP сервисов см. статью «Запуск пакетов, составов, сценариев используя API».

Рабочий процесс:

  1. Откройте Modus ETL в режиме конфигуратора.
  2. Перейдите в раздел «Администрирование/ Публикация на веб-сервере…».
  3. В открывшемся окне выберите вкладку «HTTP сервисы».
  4. Установите галочку напротив сервиса хс_ОтправкаЭлектронногоПисьма
  5. Сохраните настройки и перезагрузите веб-сервер.

Создание профиля, группы доступа и пользователя «EmailSender»

Для доступа к HTTP сервису хс_ОтправкаЭлектронногоПисьма необходимо создать технического пользователя «EmailSender» и назначить ему соответствующую роль. Общий принцип создания профилей и групп пользователей описан в статье «Настройка профилей и групп пользователей».

Ниже рассмотрен пример создания группы доступа, профиля доступа и технического пользователя для работы сервиса «ETL Mailer».

Шаг 1. Создайте профиль группы доступа

  1. Запустите Modus ETL.
  2. Перейдите в раздел «Администрирование/ Настройки пользователей и прав/ Профили групп доступа».
  3. Нажмите кнопку «Создать».
  4. В поле «Наименование» укажите наименование профиля — «EmailSender».
  5. На вкладке «Разрешённые действия (роли)» отметьте роль «Отправка электронных писем через сервис (ETL)».
  6. Нажмите на кнопку «Записать и закрыть».

Шаг 2. Создайте группу доступа

  1. Перейдите в раздел «Администрирование/ Настройки пользователей и прав/ Группы доступа».
  2. Нажмите кнопку «Создать».
  3. Укажите наименование группы, «EmailSender».
  4. В поле «Профиль» выберите созданный профиль «EmailSender». Нажмите кнопку «Записать и закрыть». Перейдите к Шагу 3. Создайте пользователя «EmailSender».

Если пользователь «EmailSender» уже  создан:

  1. Перейдите на вкладку «Участники группы», нажмите кнопку «Подобрать».
  2. В диалоговом окне «Подбор участников группы доступа» выберите пользователя «EmailSender». Нажмите кнопку «Подобрать и закрыть».
  3. Нажмите кнопку «Записать и закрыть».

Шаг 3. Создайте пользователя «EmailSender»

  1. Перейдите в раздел «Администрирование/ Настройки пользователей и прав/ Пользователи».
  2. Нажмите кнопку «Создать».
  3. Заполните поля:
    • «Полное имя» — «EmailSender»;
    • «Имя (для входа)» — «EmailSender»;
    • Установите пароль.
  4. Установите галочки:
    • «Вход в приложение разрешен»;
    • «Аутентификация 1С:Предприятия»;
    • «Аутентификация по протоколу OpenID-Connect»;
    • «Пользователю запрещено изменять пароль».
  5. Снимите галочку:
    • «Показывать в списке выбора».
  6. Перейдите в настройку «Права доступа», на вкладке «Группы доступа» нажмите кнопку «Включить в группу». В диалоговом окне «Группы доступа» назначьте пользователю группу «EmailSender», нажмите кнопку «Выбрать».
  7. Перейдите на вкладку «Разрешенные действия (роли)» убедитесь что у пользователя есть право «Отправка электронных писем через сервис (ETL)».
  8. Перейдите в настройки «Основное», нажмите кнопку «Записать и закрыть».

Настройка параметров «ETL Mailer»

Настройки «ETL Mailer» задаются напрямую в базе метаданных портала Modus BI через SQL-запрос. Интерфейса для их изменения нет. Это связано с тем, что инициатором отправки письма является портал Modus BI:

  1. Пользователь на странице входа в Modus BI в запрашивает восстановление пароля.
  2. Modus BI формирует письмо: кому, тема, тело — по шаблону установленному в mailer.etl.template
  3. Портал обращается к HTTP сервису хс_ОтправкаЭлектронногоПисьма в базе Modus ETL по адресу, указанному в настройке mailer.etl.config
  4. Modus ETL принимает запрос и отправляет письмо для восстановления пароля на почту пользователя.

Примечание.

  1. Настройки mailer.etl.config, mailer.etl.enable и mailer.etl.template хранятся в таблице setting базы метаданных портала Modus BI, а не в базе Modus ETL.
  2. Modus ETL в этой схеме выступает исполнителем — принимает запрос и отправляет письмо. Портал (Modus BI) инициатор — знает, что и кому отправить.
  3. В настройке mailer.etl.config указывается корневой URL HTTP сервиса, а не его имя в конфигураторе. Например, сервис хс_ОтправкаЭлектронногоПисьма имеет корневой URL sendEmail, поэтому полный путь выглядит как /hs/sendEmail/.
  4. Если  Modus ETL недоступен или HTTP сервис не опубликован — письмо пользователю не уйдёт, даже если настройки в Modus BI заданы.
  5. Если Modus BI не настроен, он не обратится к Modus ETL — письмо пользователю не уйдёт.

Обратите внимание!

  • Для работы функционала у вас должны быть оба продукта:
    • Modus BI — инициатор отправки, хранит настройки и формирует письмо;
    • Modus ETL — исполнитель, публикует HTTP-сервис и отправляет письмо.
  • В примерах кода <Логин> и <Пароль> — это логин и пароль технического пользователя EmailSender. <АдресСервераETL> — адрес вашего сервера Modus ETL, <ИмяБазыETL> — имя базы ETL.

 

Таблица с примером настроек  mailer.etl.config, mailer.etl.enable и mailer.etl.template

Параметр

Описание

Пример значения

mailer.etl.config

  • Адрес HTTP сервиса Modus ETL, к которому портал обращается для отправки письма, а также заголовки HTTP-запроса. Логин и пароль технического пользователя EmailSender» указываются прямо в URL.
  • В URL укажите адрес вашего сервера Modus ETL, имя базы ETL, логин и пароль пользователя «EmailSender».
{
  "url": "http://<Логин>:<Пароль>@<АдресСервераETL>/<ИмяБазыETL>/hs/sendEmail/",
  "headers": {
    "Content-Type": ["application/json"]
  }
}

mailer.etl.enable

Глобальный переключатель «ETL Mailer». Определяет, включена ли отправка писем через HTTP-сервис Modus ETL.

Возможные значения:

  • 1 — ETL Mailer включён;
  • 0 — ETL Mailer выключен.

1

mailer.etl.template

  • Шаблон письма. Определяет, какие поля письма подставляются при формировании: кому, тема, тело.
  • Значения #to#, #subject#, #body# — это плейсхолдеры, которые портал заменяет на фактические данные при формировании письма.
{
  "whom": "#to#",
  "subject": "#subject#",
  "body": "#body#"
}

 

 

Пример SQL-запроса:

UPDATE public.setting
SET "name"='mailer.etl.config', value='{"url": "http://<Логин>:<Пароль>@<АдресСервераETL>/<ИмяБазыETL>/hs/sendEmail/","headers":{"Content-Type":["application/json"]}}', visible=1
WHERE setting_id=111;

UPDATE public.setting
SET "name"='mailer.etl.enable', value='1', visible=1
WHERE setting_id=110;

UPDATE public.setting
SET "name"='mailer.etl.template', value='{"whom":"#to#","subject":"#subject#","body":"#body#"}', visible=1
WHERE setting_id=112;

Примечание.

  1. setting_id (111, 110, 112) — фиксированные ID для этих настроек во ВСЕХ базах метаданных, т.е. у всех баз данных он одинаковый.
  2. В SQL-запросе рекомендуется идентифицировать настройку по полю name (mailer.etl.config, mailer.etl.enable, mailer.etl.template), а не по setting_id. Это надёжнее, так как name — это имя настройки.

Пример SQL-запроса с обращением к name:

UPDATE public.setting
SET value='{"url": "http://<Логин>:<Пароль>@<АдресСервераETL>/<ИмяБазыETL>/hs/sendEmail/","headers":{"Content-Type":["application/json"]}}', visible=1
WHERE "name"='mailer.etl.config';

UPDATE public.setting
SET value='1', visible=1
WHERE "name"='mailer.etl.enable';

UPDATE public.setting
SET value='{"whom":"#to#","subject":"#subject#","body":"#body#"}', visible=1
WHERE "name"='mailer.etl.template';

 

 

Проверка работоспособности

Для проверки работоспособности«ETL Mailer», выполните шаги из плашки «Как пользователю восстановить пароль к Modus BI?» раздела «FAQ».

Ограничения и особенности

  1. Риск сброса настроек при обновлении Modus BI. Настройки mailer.etl.* хранятся в базе метаданных. При обновлении портала рекомендуется проверять их актуальность.
  2. Настройка параметров «ETL Mailer» только через SQL-запрос, вручную. Интерфейса для изменения параметров mailer.etl.* — нет.
  3. Технический пользователь «EmailSender» создаётся вручную в базе Modus ETL.
Связи контента