使用aws精确定位获取已发送消息的传递状态的最佳方法是什么



我浏览了AWS精确定位文档,以检查发送的SMS消息的传递状态。但是,我找不到比将SMS事件流式传输到Amazon Kinesis Data Streams或Amazon Kinesi Data Firehose,然后将数据发送到Amazon S3 bucket或Amazon Redshift数据库,然后再发送到应用程序更棒的方法了
在这里,我的要求是只发送验证码并获得短信的发送状态。有什么更好的方法可以实现这一点吗?因为我上面提到的方式太长,成本太高。任何帮助都将不胜感激。

sendMessage((API返回SMS的状态。假设此API可能不会立即返回发送状态,因为SMS可能不会立即送达。

但由于";回叫";,返回需要时间,以异步方式工作。

它返回的状态是什么?参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Pinpoint.html#sendMessages-属性

在回调中,json">数据";return has">MessageResponse";具有字段">结果";具有字段">DeliveryStatus";其可能值如下:

  • "成功">
  • "THROTTLED">
  • "暂时失败">
  • "PERMANENT_FAILURE">
  • "UNKNOWN_FAILURE">
  • "OPT_ OUT">
  • "复制">

为什么需要通过Kinesis、S3 bucket和Analytics更新状态?实际上不需要。使用Kinesis,您可以获得更详细的信息。

关于硬压更简单的方法,AWS专家提到使用Lamda服务直接发送到一些";队列";(可能是另一个AMZ产品(或通过Lamda服务调用HTTP端点。所有这些服务都很昂贵,还需要花费其他资源"总拥有成本";只是长大了,或者这些家伙是";向上销售";更多产品。

我想发送交易短信。就这样。我需要知道短信是否已送达。就是这样。但你最终会花在Kinesis(无论成本是小还是大(、S3、Analytics Services、相关的EC2、EBS等方面。

我与AMZ Architect进行了艰苦的讨论,他同意,如果您使用Kinesis配置Pinpoint,您可以直接轮询并获取状态。所以我通过Kinesis获得短信事件更新;类似的";通过调用getMessages((API可以得到什么。

在直接通过Kinesis的短信事件流中,您可以"event_type";值作为

  • &quot_SMS缓冲">
  • &quot_SMS.SUCCESS">
  • &quot_SMS故障">
  • &quot_SMS.OPTOUT">

参考:https://docs.aws.amazon.com/pinpoint/latest/developerguide/event-streams-data-sms.html

并且";record_ status";你得到的字段

  • "成功">
  • "交付">
  • "待定">
  • "INVALID">
  • "UNREACHABLE">
  • "UNKNOWN">
  • "BLOCKED">
  • "CARRIER_ UNREACHABLE">
  • "SPAM">
  • "INVALID_MESSAGE">
  • "CARRIER_BLOCKED">
  • "TTL_ EXPIRED">
  • "MAX_PRICE_EXCEEDED">

其中一些状态代码可能与您的情况无关。例如";TTL_ EXPIRED";如果您发送";延迟的";短信.

Kinesis,提供了更详细的信息,但可能没有实际用处。

如果你使用Kinesis超过了你的短信费用上限,你就会明白原因。使用sendMessages((API,您不会。但您可以通过API检查短信配额。

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ServiceQuotas.html#getServiceQuota-属性

我坚信,如果发送">事务性";短信本质上是优先发送的,你不需要Kinesis。

在某些情况下,亚马逊通过将服务卷入复合解决方案而过度销售。无论如何,他们没有错,Pinpoint是";营销"产品做活动,用户旅程和转换分析。对于亚马逊来说,这是一个更大的商业案例;只是发送SMS";。你可能不会得到你的用例的最佳建议,所以努力协商以节省你的美元。

最新更新