Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon SNS发送确认短信是使用Ruby SDK发送的_Ruby_Sms_Amazon - Fatal编程技术网

Amazon SNS发送确认短信是使用Ruby SDK发送的

Amazon SNS发送确认短信是使用Ruby SDK发送的,ruby,sms,amazon,Ruby,Sms,Amazon,我正在使用带有Ruby Amazon SDK的Amazon SNS发送短信。据我所知,方法Aws::SNS::Client#publish只是将消息发送排队 当返回messageId时,消息已被保存,Amazon SNS将很快尝试将其发送给主题的订户 我想知道publish方法是否只是将发送排队,如果是,是否有任何方法可以通过SDK确认消息已成功发送?您可以查询主题或订阅,但无法查询已发布的消息。我怀疑AWS是否保留了它们,但如果它们保留了,就我所知,没有API可以访问它们 一种解决方法是在自己

我正在使用带有Ruby Amazon SDK的Amazon SNS发送短信。据我所知,方法
Aws::SNS::Client#publish
只是将消息发送排队

当返回messageId时,消息已被保存,Amazon SNS将很快尝试将其发送给主题的订户


我想知道
publish
方法是否只是将发送排队,如果是,是否有任何方法可以通过SDK确认消息已成功发送?

您可以查询主题或订阅,但无法查询已发布的消息。我怀疑AWS是否保留了它们,但如果它们保留了,就我所知,没有API可以访问它们

一种解决方法是在自己的站点上使用http或https端点订阅每个主题。每次创建主题时,您都会创建对自己端点的相应订阅:

def generate_sns_topic(topic_name)
  sns_client = Aws::SNS::Client.new
  response = sns_client.create_topic(name: topic_name)
  if response.successful?
     sns_client.subscribe(topic_arn: topic_response.topic_arn, 
                          protocol: :https, 
                          endpoint: <your_site_endpoint>)
  else
    <error_handling_here>
  end
end
def生成主题(主题名称)
sns_client=Aws::sns::client.new
response=sns\u client.create\u topic(名称:topic\u name)
如果成功?
sns_client.subscribe(主题学习:主题学习响应.topic学习,
协议::https,
端点:)
其他的
结束
结束

现在,您需要创建
POST
,以便在AWS消息传入时接受它。一旦你收到它,你就会知道SNS已经发送了它。假设您将在数据库中创建一个新的
已发布消息表
以跟踪已发布的消息。

假设您想在标题中说“SNS”?不一定。我认为“短消息服务”这个词应该更明确地说明我在亚马逊SNS的哪一部分遇到了问题,但别担心,亚马逊SNS也是正确的。这很有意义——我编辑了这两个词——希望你同意。明白了,我会试试你的建议!非常感谢。