WSO2 - IS - отправка настраиваемого шаблона электронной почты с сервера идентификации с помощью настраиваемого обработчика событий
Я пробовал использовать подход, предложенный в блоге ниже
https://is.docs.wso2.com/en/latest/develop/writing-a-custom-event-handler/
У меня есть требование отправлять настраиваемый шаблон электронной почты при изменении роли пользователя на сервере идентификации. Каким-то образом я выяснил событие, когда мы меняем роль. Но у меня нет возможности отправить письмо из настраиваемого обработчика событий. Я хотел бы знать, есть ли другой способ добиться этого? заранее спасибо
1 ответ
Все, что вам нужно сделать, это вызвать событие из вашего обработчика событий с некоторыми свойствами, тогда существующая реализация этого события получит идентификатор шаблона и заполнит заполнители значениями, переданными в событии, и отправит письмо.
Это примерный сегмент кода.
String eventName = IdentityEventConstants.Event.TRIGGER_NOTIFICATION;
HashMap<String, Object> properties = new HashMap<>();
properties.put(IdentityEventConstants.EventProperty.USER_NAME, user.getUserName());
properties.put(IdentityEventConstants.EventProperty.TENANT_DOMAIN, user.getTenantDomain());
properties.put(IdentityEventConstants.EventProperty.USER_STORE_DOMAIN, user.getUserStoreDomain());
properties.put("OLD_ROLE", oldRole);
properties.put("NEW_ROLE", newRole);
properties.put("TEMPLATE_TYPE", templateId);
Event identityMgtEvent = new Event(eventName, properties);
try {
NotificationFunctionServiceHolder.getInstance().getIdentityEventService().handleEvent(identityMgtEvent);
} catch (IdentityEventException | NotificationRuntimeException e) {
LOG.error(String.format("Error when sending notification of template %s to user %s", templateId, user
.toFullQualifiedUsername()), e);
}
Здесь нужно заменить
user
,
oldRole
,
newRole
и . В управлении шаблонами вам необходимо создать новый шаблон электронной почты с этим
templateId
и там вы можете создать письмо с помощью этих заполнителей (
OLD_ROLE
,
NEW_ROLE
, для других заполнителей вы можете обратиться к существующим шаблонам.).
Вы можете найти реализацию обработчика событий
TRIGGER_NOTIFICATION
здесь для любой справки об этом.