Amazon SNS 发送确认短信已通过 Ruby SDK 发送

Amazon SNS sending confirmation that SMS text message was sent with Ruby SDK

我正在使用带有 Ruby Amazon SDK 的 Amazon SNS 发送 SMS 文本消息。据我了解,方法 Aws::SNS::Client#publish 只是将消息发送排队。

When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly.

我想知道 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

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