如何使用Amazon Amplify SDK为我的Android应用程序用户以编程方式发送短信



当我的应用程序用户使用他们的电话号码注册时,我想向他们的电话号发送欢迎信息(SMS(。我找不到这项特殊任务的官方文件。

亚马逊允许您这样做。假设您使用Cognito进行注册,则需要使用确认后的Cognito lambda触发器。

  1. 通过AWS控制台设置您的SNS帐户,以发送短信。通过控制台向自己发送一条测试消息。

  2. 运行amplify auth update

  3. 当涉及到问题Do you want to configure Lambda Triggers for Cognito?时,回答并选择Post Confirmation触发

  4. 您需要向lambda授予SNS(SMS(权限。更新PostConfirmation-cloudformation-template.json文件以在Resources.lambdaexecutionpolicy.Properties.PolicyDocument.Statement:下添加新语句

    {
    "Resources": {
    "lambdaexecutionpolicy": {
    "Properties": {
    "PolicyDocument": {
    "Statement": [
    {
    "Effect": "Allow",
    "Action": "sns:*",
    "Resource": "*"
    }
    ]
    ...
    }
    ...
    }
    ...
    }  
    ...
    }
    ...
    }
    
  5. 使用此代码触发:

    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进行交互。

最新更新