首页 > 解决方案 > 使用 aws pinpoint 获取已发送消息的传递状态的最佳方法是什么?

问题描述

我浏览了 AWS pinpoint 文档以检查已发送 SMS 消息的传递状态。但是,除了将 SMS 事件流式传输到 Amazon Kinesis Data Streams 或 Amazon Kinesis Data Firehose,然后将数据发送到 Amazon S3 存储桶或 Amazon Redshift 数据库,然后再发送到应用程序之外,我找不到任何更好的方法。
在这里,我的要求是只发送验证码并获取短信的发送状态。有没有更好的方法来实现这一点?因为我上面提到的方式太冗长,成本太高。任何帮助将不胜感激。

标签: asp.net-mvcamazon-web-servicesamazon-kinesisamazon-kinesis-firehoseaws-pinpoint

解决方案


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

但是由于“回调”,返回需要时间,异步工作。

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

在回调中,返回的 json“数据”具有“ MessageResponse ”字段“ Result ”具有字段“ DeliveryStatus ”,其可能值如下:

  • “成功的”
  • “节流”
  • “TEMPORARY_FAILURE”
  • “PERMANENT_FAILURE”
  • “UNKNOWN_FAILURE”
  • “选择退出”
  • “复制”

为什么需要通过 Kinesis、S3 存储桶和 Analytics 进行状态更新?其实不需要。使用 Kinesis,您可以获得更详细的信息。

在更简单的方法上,AWS专家提到使用Lamda服务直接发送到一些“队列”(可能是另一个AMZ产品)或通过Lamda服务调用HTTP端点。所有这些服务都是昂贵的,并且还花费了其他资源。“总拥有成本”只会增加,或者这些人正在“向上销售”更多产品。

我想发送交易短信。而已。我需要知道是否发送了短信。而已。但是您最终会为 Kinesis(无论成本多少)、S3、分析服务、相关的 EC2、EBS 一切支出。

我与 AMZ Architect 进行了艰苦的讨论,他们决定使用 Kinesis,如果您使用 Kinesis 配置 Pinpoint,您可以直接轮询并获取状态。因此,我也通过Kinesis获得 SMS 事件更新,这与您通过调用 getMessages() API 获得的“相似”。

在直接通过 Kinesis 的 SMS 事件流中,您将“event_type”值作为

  • “_SMS.BUFFERED”
  • “_SMS.SUCCESS”
  • “_SMS.FAILURE”
  • “_SMS.OPTOUT”

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

以及你得到的“record_status”字段的值

  • “成功的”
  • “发表”
  • “待办的”
  • “无效的”
  • “遥不可及”
  • “未知”
  • “封锁”
  • “CARRIER_UNREACHABLE”
  • “垃圾邮件”
  • “INVALID_MESSAGE”
  • “CARRIER_BLOCKED”
  • “TTL_EXPIRED”
  • “MAX_PRICE_EXCEEDED”

其中一些状态代码可能与您的情况无关。例如,如果您发送“延迟”短信,则“TTL_EXPIRED”是可能的值。

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

如果您使用 Kinesis 超过了您的最大 SMS 成本配额,您就会明白原因。使用sendMessages() API,您不会。但您可以通过 API 查看短信配额。

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

我坚信,如果发送本质上优先发送的“事务性”短信,则不需要 Kinesis。

在某些情况下,亚马逊通过将服务融入复合解决方案来实现超卖。无论如何,他们并没有错,Pinpoint 是用于营销活动、用户旅程和转化分析的“营销”产品。对于亚马逊来说,“只发送短信”是更大的商业案例。您可能无法为您的用例获得最佳建议,因此请努力协商以节省您的美元。


推荐阅读