我想在我的应用用户使用他们的电话号码注册时向他们的电话号码发送欢迎消息 (SMS)。我找不到这个特定任务的官方文档。
3 回答
亚马逊让你这样做。假设您使用 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
文件以在下面添加新语句Resources.lambdaexecutionpolicy.Properties.PolicyDocument.Statement
:{ "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 之类的服务向手机发送 SMS(以及更多)。
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 交互。