大家好。
我在使用 AWS Cognito 用户池自定义消息时遇到问题,该消息是在 lambda 函数中作为触发器创建的(自定义消息 lambda)。带有验证链接的消息。特别是我将消息主题设置为“自定义主题”(并且电子邮件有这个主题),并将消息正文设置为“改为使用此{##Custom link##}”(并且消息没有出现在正文中,但是使用来自用户池 Web 界面的那个)。
我的代码是:
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
JsonNode json = parseJsonFromStream(input);
ObjectNode jsonWithResponse = (ObjectNode) json;
jsonWithResponse.with("response").put("emailMessage", "Use this {##Custom link##} instead");
jsonWithResponse.with("response").put("emailSubject", "Custom subject");
try (Writer w = new OutputStreamWriter(output, "UTF-8")) {
w.write(jsonWithResponse.toString());
}
}
我什至尝试设置 {####} 而不是 {##Link text##} 并且仍然相同。我几乎可以肯定它在一段时间前有效(而且我不记得我改变了什么)。有谁知道我应该去哪里看看(挖掘)。因为我在这上面花了太多时间,既没有遗漏(希望)小的东西,也没有他们有一些变化/问题。
附言lambda 测试成功。 Lambda 输出看起来不错(我在这里删除了记录器)。
更新:(带有响应的记录器输出)
OUTPUT JSON is
{
"version": "1",
"region": "eu-west-1",
"userPoolId": "****",
"userName": "*****",
"callerContext": {
"awsSdkVersion": "aws-sdk-android-2.6.7",
"clientId": "****"
},
"triggerSource": "CustomMessage_SignUp",
"request": {
"userAttributes": {
"sub": "****",
"email_verified": "false",
"cognito:user_status": "UNCONFIRMED",
"nickname": "Yaroslav",
"email": "****"
},
"codeParameter": "{####}",
"usernameParameter": null
},
"response": {
"emailMessage": "Use this {##Custom link##} instead",
"emailSubject": "Custom subject"
}
}
Upd2(JS触发):
我根据 example 在 js(自定义电子邮件的新触发器)上添加了代码当用户需要确认代码时,这适用于自定义电子邮件,但不适用于确认链接。我再次尝试 {##link##} 链接。
最佳答案
所以我最终得到的是使用代码确认。在这种情况下,自定义电子邮件会按预期工作。
为了防止用户在应用程序中输入密码,我发送了带有自定义链接的电子邮件,其中包含代码参数。自定义链接指向 API 网关,它有相应的 lambda 来处理所有事情并完成用户注册。
关于javascript - AWS Cognito 用户池、自定义消息 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47471904/