Использование динамических c заполнителей в электронной почте cognito AdminCreateUser - PullRequest
1 голос
/ 17 февраля 2020

Я создаю своих пользователей с помощью API-интерфейса cognito-idp, вызывающего adminCreateUser, но проблема, с которой я сталкиваюсь, заключается в том, что, если я создаю пользователя, который принадлежит к разработке или производству, я установлю другие среды и ссылка для щелчка по электронной почте будет быть другим URL-адресом.

В данный момент я отправляю электронное письмо, которое выглядит следующим образом:

<h3>Hello {username} !</h3>
<p>To finish your subscription please click on <a href="http://localhost:3000/signup?token={####}" >finish my subscription</a></p>

Но, как вы можете видеть, оно будет охватывать только вариант разработчика, я хотел бы вместо было бы очень полезно отправить электронное письмо с некоторыми местозаполнителями, которые я могу использовать динамически, независимо от того, создаем ли мы пользователя-разработчика или производственного пользователя, например, использование тега {url}.

Это то, что я хотел бы делать:

<h3>Hello {name} !</h3>
<p>Your username is {username}</p>
<p>To finish your subscription to {project} please click on <a href="{url}{####}" >finish my subscription</a></p>

AWS Cognito принимает это? Я читал, что вы можете сделать что-то подобное через лямбды, но не уверен, смогу ли я создать свои собственные переменные или только существующие переменные в Cognito.

Кто-то с большим опытом работы с Cognito, который может помочь мне на это?

Большое спасибо!

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете использовать триггер Cognito Custom Message для выполнения sh этого. Это немного сложнее, потому что вы обрабатываете сообщение в лямбда-функции, но это единственный способ получить возможность доступа к атрибутам и именам групп и тому подобное в вашем ответе.

Пример кода для лямбда-триггер:

exports.handler = (event, context, callback) => {
    //
    if(event.userPoolId === "theSpecialUserPool") {
        // Identify why was this function invoked
        if(event.triggerSource === "CustomMessage_AdminCreateUser") {
            // Ensure that your message contains event.request.codeParameter event.request.usernameParameter. This is the placeholder for the code and username that will be sent to your user.
            event.response.smsMessage = "Welcome to the service. Your user name is " + event.request.usernameParameter + " Your temporary password is " + event.request.codeParameter;
            event.response.emailSubject = "Welcome to the service";
            event.response.emailMessage = "Welcome to the service. Your user name is " + event.request.usernameParameter + " Your temporary password is " + event.request.codeParameter;
        }
        // Create custom message for other events
    }
    // Customize messages for other user pools

    // Return to Amazon Cognito
    callback(null, event);
};

Документы здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html

...