Amazon SNS发送确认SMS文本消息与Ruby SDK一起发送

时间:2017-08-17 21:44:45

标签: ruby sms amazon

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

  

当返回messageId时,消息已保存,Amazon SNS将尽快将其传递给主题的订阅者。

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

1 个答案:

答案 0 :(得分:1)

您可以查询主题或订阅,但无法查询已发布的邮件。我怀疑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

现在您需要创建POST <your_site_endpoint>以接受AWS消息。收到消息后,您就会知道SNS已发送消息。据推测,您将在数据库中创建一个新的published_messages表,以跟踪已发布的内容。