每个人都过得愉快。
我在AWS认证用户池自定义消息中遇到问题,该消息在lambda函数内创建为触发器(自定义消息lambda)。内部有验证链接的消息。特别是我将消息设置为“自定义主题”(并且电子邮件具有此主题),并且消息正文为“使用此{##自定义链接##}”(并且消息未出现在正文中,但是使用用户池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 ##}并且仍然相同。我几乎可以肯定它已经工作了一段时间(我不记得我改变了什么)。有谁知道我应该去哪看(挖)。因为我花了太多时间在这上面,并且没有遗漏某些东西(希望)很小或者他们有一些变化/问题。
P.S。 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 ##}获取链接。
答案 0 :(得分:0)
所以我最终得到的是使用代码确认。在这种情况下,自定义电子邮件将按预期工作。
为了防止用户在应用程序中输入密码,我发送了带有自定义链接的电子邮件,其中包含代码参数。自定义链接指向API网关,该API网关具有相应的lambda来处理所有内容并完成用户注册。