带有 ruby 的 Amazon SNS,简单的短信
Amazon SNS with ruby, simple sms message
我正在尝试使用 SNS 服务从 ruby 直接向 phone 号码发送一条简单的短信。
require 'aws-sdk'
sns = Aws::SNS::Client.new(region: 'my_region', access_key_id: 'my_id', secret_access_key: 'mykey')
sns.publish({phone_number: 'my_number', message: 'test message'})
但我得到 ArgumentError: unexpected value at params[:phone_number]
以下示例使用 E.164 格式的虚构英国移动 phone 号码对我有用,您确定要在字符串中传递 phone_number
吗?
require 'aws-sdk'
sns = Aws::SNS::Client.new(...)
#=> #<Aws::SNS::Client>
sns.publish(phone_number: '+447911123456', message: 'test message')
#=> #<struct Aws::SNS::Types::PublishResponse...>
对于任何来到这里想知道如何在 ruby 中发送 SNS 消息的人,这里有一个最小的可复制示例(基于 docs):
# Create topic
require 'aws-sdk-sns' # v2: require 'aws-sdk'
sns = Aws::SNS::Resource.new(region: 'us-west-2')
topic = sns.create_topic(name: 'MyOtherTopic')
# Subscribe to it
sub = topic.subscribe({
protocol: 'email',
endpoint: 'your.email@example.com'
})
# Check your inbox and confirm subscription! (otherwise messages won't go through)
# Publish a message to it
topic.publish({
message: 'Here is a cool message!'
})
# Check your email inbox!
如果有人寻求这个问题的答案:
您可以通过 2 种方式在 AWS SNS 中发送短信。
- 订阅在 AWS SNS 中创建的主题并向所有订阅的号码发送短信
- 直接向手机号码发送短信
你需要的是第二个
我将在这里演示如何使用 Ruby 语言来做到这一点。
安装gem aws sns:
gem install aws-sdk-sns
require 'aws-sdk-sns'
1.Set 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.Set SNS 客户端属性
@sns_client.set_sms_attributes({
attributes: {
'DefaultSenderID' => SENDER_ID,
'DefaultSMSType' => SMS_TYPE
}
})
3.Publish短信
@mobile_no = "+919888888888" # with country code
@sns_client.publish({
phone_number: @mobile_no,
message: MSG
})
就是这样!
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 语言的代码。
使用 AWS 发送短信的最简单方法(假设发件人号码是您在 AWS Pinpoint 中拥有的号码)。
client = 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']
)
response = client.publish(
phone_number: "+1<your phone>",
message: "something something",
message_attributes: {
"AWS.SNS.SMS.SMSType" => {
data_type: "String",
string_value: "Promotional",
},
"AWS.MM.SMS.OriginationNumber" => {
data_type: "String",
string_value: "+1<AWS Pinpoint number>",
},
},
)
我正在尝试使用 SNS 服务从 ruby 直接向 phone 号码发送一条简单的短信。
require 'aws-sdk'
sns = Aws::SNS::Client.new(region: 'my_region', access_key_id: 'my_id', secret_access_key: 'mykey')
sns.publish({phone_number: 'my_number', message: 'test message'})
但我得到 ArgumentError: unexpected value at params[:phone_number]
以下示例使用 E.164 格式的虚构英国移动 phone 号码对我有用,您确定要在字符串中传递 phone_number
吗?
require 'aws-sdk'
sns = Aws::SNS::Client.new(...)
#=> #<Aws::SNS::Client>
sns.publish(phone_number: '+447911123456', message: 'test message')
#=> #<struct Aws::SNS::Types::PublishResponse...>
对于任何来到这里想知道如何在 ruby 中发送 SNS 消息的人,这里有一个最小的可复制示例(基于 docs):
# Create topic
require 'aws-sdk-sns' # v2: require 'aws-sdk'
sns = Aws::SNS::Resource.new(region: 'us-west-2')
topic = sns.create_topic(name: 'MyOtherTopic')
# Subscribe to it
sub = topic.subscribe({
protocol: 'email',
endpoint: 'your.email@example.com'
})
# Check your inbox and confirm subscription! (otherwise messages won't go through)
# Publish a message to it
topic.publish({
message: 'Here is a cool message!'
})
# Check your email inbox!
如果有人寻求这个问题的答案:
您可以通过 2 种方式在 AWS SNS 中发送短信。
- 订阅在 AWS SNS 中创建的主题并向所有订阅的号码发送短信
- 直接向手机号码发送短信
你需要的是第二个
我将在这里演示如何使用 Ruby 语言来做到这一点。
安装gem aws sns:
gem install aws-sdk-sns
require 'aws-sdk-sns'
1.Set 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.Set SNS 客户端属性
@sns_client.set_sms_attributes({
attributes: {
'DefaultSenderID' => SENDER_ID,
'DefaultSMSType' => SMS_TYPE
}
})
3.Publish短信
@mobile_no = "+919888888888" # with country code
@sns_client.publish({
phone_number: @mobile_no,
message: MSG
})
就是这样!
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 语言的代码。
使用 AWS 发送短信的最简单方法(假设发件人号码是您在 AWS Pinpoint 中拥有的号码)。
client = 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']
)
response = client.publish(
phone_number: "+1<your phone>",
message: "something something",
message_attributes: {
"AWS.SNS.SMS.SMSType" => {
data_type: "String",
string_value: "Promotional",
},
"AWS.MM.SMS.OriginationNumber" => {
data_type: "String",
string_value: "+1<AWS Pinpoint number>",
},
},
)