AWS-发送不订阅的SMS

时间:2020-01-14 16:51:08

标签: amazon-web-services amazon-sns

我正在使用AWS上的一个应用程序,该应用程序需要向客户发送文本消息。有时,该应用程序只需要发送一条短信(AWS交易式SMS可能在这里有所帮助),有时可能需要发送文本给不同的人群(AWS似乎没有针对该用例的解决方案)。这完全取决于用户在应用程序上的操作。

我已经探索了使用SNS的可能性,但是它要求用户订阅一个主题,该主题不适用于我的用例。我已经探索了使用AWS Pinpoint的可能性,但它似乎也不适用于我的用例。我可以使用Twilio,但我希望留在AWS内(另外,Twilio runs on AWS

在美国不需要订阅主题的通过AWS发送文本消息的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

使用SNS服务中的Publish操作将文本发送到没有主题的单个电话。您可以反复呼叫Publish,以将短信发送到多部电话。

https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html


使用SNS服务中的CreateTopicSubscribePublish操作将文本一次发送到多部电话(使用主题)。

https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-topic.html

答案 1 :(得分:0)

如果有人寻求这个问题的答案:

您可以在 AWS SNS 中通过 2 种方式发送 SMS。

  1. 订阅在 AWS SNS 中创建的主题并向所有订阅的号码发送短信
  2. 直接向手机号码发送短信

你需要的是第二个。

我将在这里演示如何使用 Ruby 语言做到这一点。

安装 gem aws sns:

gem install aws-sdk-sns 
require 'aws-sdk-sns'

1.设置SNS客户端

@sns_client = Aws::SNS::Client.new(
  region: ENV['AWS_SNS_REGION'],
  access_key_id: ENV['AWS_SNS_ACCESS_KEY'],
  secret_access_key: ENV['AWS_SNS_SECRET_KEY']
)

2.设置SNS客户端属性

@sns_client.set_sms_attributes({
                                 attributes: {
                                   'DefaultSenderID' => SENDER_ID,
                                   'DefaultSMSType' => SMS_TYPE
                                 }
                               })

3.发布短信

otp = (1000..9999).to_a.sample

@sns_client.publish({
                      phone_number: @mobile_no,
                      message: "#{OTM_MSG} #{otp}"
                    })

就是这样!

OTM_MSG:“您的消息来了”

SMS_TYPE:“交易”或“促销”

如果您想发送 OTP/银行交易,则是“交易”。否则,如果您想发送一些产品的促销短信,那就是“促销”

SENDER_ID:如果您想使用自己的发件人 ID,则是您已经注册的发件人 ID。

如果您没有发件人 ID,请跳过第 2 步 - 设置 SNS 客户端属性

AWS_SNS_REGION、AWS_SNS_ACCESS_KEY、AWS_SNS_SECRET_KEY - 是您希望从中使用 SNS 的 AWS 账户的凭证。

请参阅此处的 AWS 文档: https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html 它还提供 Java 语言的代码。

如果你想了解更多,我在这里写了一篇文章: https://railsdrop.com/2021/03/04/aws-sns-how-to-send-sms/

相关问题