【发布时间】:2020-02-27 10:15:09
【问题描述】:
我想在我的应用用户使用电话号码注册时向他们的电话号码发送欢迎消息 (SMS)。我找不到这个特定任务的官方文档。
【问题讨论】:
标签: aws-amplify aws-amplify-sdk-android
我想在我的应用用户使用电话号码注册时向他们的电话号码发送欢迎消息 (SMS)。我找不到这个特定任务的官方文档。
【问题讨论】:
标签: aws-amplify aws-amplify-sdk-android
亚马逊允许您这样做。假设您使用 Cognito 进行注册,您需要使用确认后 Cognito lambda 触发器。
通过 AWS 控制台设置您的 SNS 帐户,以发送 SMS 消息。通过控制台向自己发送一条测试消息。
运行amplify auth update
当遇到问题Do you want to configure Lambda Triggers for Cognito?时,回答是并选择Post Confirmation触发器
您需要向 lambda 授予 SNS (SMS) 权限。更新PostConfirmation-cloudformation-template.json 文件以在@987654325@ 下添加新语句:
{
"Resources": {
"lambdaexecutionpolicy": {
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Action": "sns:*",
"Resource": "*"
}
]
...
}
...
}
...
}
...
}
...
}
将此代码用于触发器:
var aws = require('aws-sdk');
var sms = new aws.SNS();
exports.handler = (event, context, callback) => {
console.log(event);
if (event.request.userAttributes.phone_number) {
sendSMS(event.request.userAttributes.phone_number, "Congratulations " + event.userName + ", you have been confirmed: ", function (status) {
// Return to Amazon Cognito
callback(null, event);
});
} else {
// Nothing to do, the user's phone number is unknown
callback(null, event);
}
};
function sendSMS(to, message, completedCallback) {
const params = {
Message: message, /* required */
PhoneNumber: to
};
sns.publish(params, function (err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
} else {
console.log(data);
}
completedCallback("SMS Sent");
})
};
【讨论】:
不确定发送 SMS 是否是 Amazon Amplify 提供的服务。
但您可以使用Twilio 之类的服务向手机发送短信(等等)。
【讨论】:
AWS Amplify 可以通过与 Amazon Pinpoint 集成来帮助您设置短信、电子邮件和推送通知给您的用户。在此处查看文档:https://aws-amplify.github.io/docs/js/push-notifications。
Amazon Pinpoint 允许您创建用户细分、消息模板、活动(也包括 A/B 测试和金丝雀)、旅程(目前仅适用于电子邮件)以及更多其他内容。您可以使用 AWS Amplify 集成和配置它,但我提到的其中一些功能仍然不受 AWS Amplify 支持,您必须使用 AWS 控制台配置或使用 AWS 开发工具包与您的应用程序集成。您可以利用 AWS Amplify Auth 模块来获取有效的 Cognito 令牌,这将允许您直接与 Amazon Pinpoint 交互。
【讨论】: