amazon-web-services - AWS - 无需订阅即可发送短信
问题描述
我正在 AWS 上开发一个需要向客户发送短信的应用程序。有时,应用程序只需要发送一条短信(AWS Transactional SMS 在这里可能会有所帮助),有时它可能需要向不同的人群发送短信(AWS 似乎没有针对此用例的解决方案)。这一切都取决于用户在应用程序上所做的事情。
我已经探索了使用 SNS 的可能性,但它要求用户订阅一个主题,这不适用于我的用例。我已经探索了使用 AWS Pinpoint 的可能性,但它似乎也不适用于我的用例。我可以使用 Twilio,但我更愿意留在 AWS 中(此外,Twilio 在 AWS 上运行)
通过 AWS 在美国发送不需要订阅主题的短信的最佳方式是什么?
解决方案
如果有人寻求此 Qn 的答案:
您可以在 AWS SNS 中通过 2 种方式发送 SMS。
- 订阅在 AWS SNS 中创建的主题并向所有订阅的号码发送短信
- 直接向手机号码发送短信
你需要的是第二个。
我将在这里演示如何使用 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: '你的消息来了'</p>
SMS_TYPE :“交易”或“促销”</p>
如果您想发送 OTP / 银行交易,那么它是“交易”。否则,如果您想发送一些产品的促销短信,那么它就是“促销”</p>
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/
推荐阅读
- elasticsearch - 我可以从 Stormcrawler 获得哪些值/字段?
- r - 如何使用 R 闪亮绘制热图
- email - 一个人只能得到最后一条消息而不是整个历史吗?
- java - 错误:无法获取 ProductFlavor_Decorated 的未知属性“FabricApiKey”
- c - 将元素添加到有序链接列表
- kotlin-coroutines - 如何过滤 Kotlin Flow 中的列表
- colors - Monaco-Editor:仅激活某些行进行编辑
- android - java.lang.RuntimeException: 使用 EditText (number) 启动 Fragment 时调用观察者方法失败 双向数据绑定
- laravel - Laravel Inertia,带有谷歌登录的 CORS
- android - 使用参数查询 ROOM 数据库后无法让 ViewModel 显示数据(Kotlin)