当我的应用程序用户使用他们的电话号码注册时,我想向他们的电话号发送欢迎信息(SMS(。我找不到这项特殊任务的官方文件。
亚马逊允许您这样做。假设您使用Cognito进行注册,则需要使用确认后的Cognito lambda触发器。
-
通过AWS控制台设置您的SNS帐户,以发送短信。通过控制台向自己发送一条测试消息。
-
运行
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"); }) };
不确定发送短信是否是亚马逊Amplify提供的服务。
但你可以使用像Twilio这样的服务向手机发送短信(以及更多(。
AWS Amplify可以通过与亚马逊Pinpoint集成,帮助您向用户设置短信、电子邮件和推送通知。请查看此处的文档:https://aws-amplify.github.io/docs/js/push-notifications.
Amazon Pinpoint允许您创建用户细分、消息模板、活动(包括A/B测试和canary(、旅程(到目前为止仅适用于电子邮件(以及更多其他内容。您可以使用AWS Amplify对其进行集成和配置,但我提到的一些功能仍然不受AWS Amplifi的支持,您必须使用AWS控制台进行配置,或者使用AWS SDK与您的应用程序进行集成。您可以利用AWS Amplify Auth模块获得有效的Cognito代币,该代币将允许您直接与亚马逊Pinpoint进行交互。