我正在使用AWS上的一个应用程序,该应用程序需要向客户发送文本消息。有时,该应用程序只需要发送一条短信(AWS交易式SMS可能在这里有所帮助),有时可能需要发送文本给不同的人群(AWS似乎没有针对该用例的解决方案)。这完全取决于用户在应用程序上的操作。
我已经探索了使用SNS的可能性,但是它要求用户订阅一个主题,该主题不适用于我的用例。我已经探索了使用AWS Pinpoint的可能性,但它似乎也不适用于我的用例。我可以使用Twilio,但我希望留在AWS内(另外,Twilio runs on AWS)
在美国不需要订阅主题的通过AWS发送文本消息的最佳方法是什么?
答案 0 :(得分:0)
使用SNS服务中的Publish
操作将文本发送到没有主题的单个电话。您可以反复呼叫Publish
,以将短信发送到多部电话。
https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html
使用SNS服务中的CreateTopic
,Subscribe
和Publish
操作将文本一次发送到多部电话(使用主题)。
https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-topic.html
答案 1 :(得分:0)
如果有人寻求这个问题的答案:
您可以在 AWS SNS 中通过 2 种方式发送 SMS。
你需要的是第二个。
我将在这里演示如何使用 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/