亚马逊的简单通知服务(Simple Notification Service,SNS)最近已经可以在全世界范围内发送短信(SMS),现在支持这项功能的亚马逊网页服务(Amazon Web Services,AWS)大区已经又增加了五个。
AWS 把亚马逊 SNS 描述成“一种快速、灵活、完全可控的通知推送服务,可以向个人发送消息,也可以向大批接收者广播消息”。它支持向 Apple、Google、Fire OS 和 Windows 等设备推送通知,也可以把消息发送给 HTTP 终端、电子邮件接收者以及像亚马逊 SQS 或 AWS Lambda 等其他 AWS 服务。
在这之前,SNS 只能让使用者把 SMS 发送给美国的手机号码,而且支持的功能也比较有限,因此对 AWS 的全球用户没有太大吸引力。现在就完全不同了,已经可以支持 200 多个国家,而且还增加了许多新功能,所以亚马逊才可以声称要做成:“只需一个服务就可以向全球发送 SMS,再也不需要发现并整合各种消息聚合服务,也不必管理手机号码”。
在功能介绍的博客上有张表格对比了过去的 SMS 服务和现在的新全球 SMS 服务提供的功能,有下面几点值得一提的:
- 支持超过 200 个国家的手机号码
- 除了 us-east-1 之外,又有五个新的大区支持这项功能
- 直接把消息推送到支持 SMS 的设备上
- 通过对 opt-out 的管理来取消 opt-in
- 监控发送状态
- 支持发送费用限制
现在已经可以直接把 SMS 消息发送到支持 SMS 的设备了,完全不需要先把他们注册到某个主题上,或者等待接收者的确认。基于注册的广播 SMS 消息的机制也已经从 opt-in 改成了对手机号码的 opt-out管理:
有些地方(比如美国和加拿大)的法律或法规规定,SMS 用户在收到了不想收到的消息之后,可以向亚马逊发送这条消息所用的短号码或长号码直接回复 STOP 或 ARRET(法语),这样以后就再也收不到这个 AWS 账号发出来的消息了,除非你明确的把他的手机号码再加进列表中。
AWS 用户可以看到拒收消息的手机号码列表,可以把它再加进去,但这样的操作每 30 天只能做一次。
有几个 AWS 服务是可以做到对账号级别的费用支出进行控制的,亚马逊 SNS 就是其中之一。它可以在 SMS 消息发送费用超过了每月限额之后,做到在几分钟之内停止 SMS 广播。用户也可以自行查看自己账号的预算和账单预警。
还有一些其他特性,比如亚马逊 S3 Bucket 会每天收到一份 CSV 格式的关于某个默认发送账号的每日使用报告,默认有两种发送消息模式,这个是可以在每次发送消息时指定的:
- 促销型:价格比较便宜,适用于非关键性消息推送,比如广告
- 交易型:可靠性很好,适用于支持用户交易的关键消息,比如认证过程中的一次性密码
也可以通过 SMS 推送的 CloudWatch 指标和日志来监控 SMS 活动。用户可以创建 CloudWatch 告警,当推送失败的数量超过阈值时就会收到告警,然后进一步通过分析相应的 CloudWatch 日志内容来了解情况:
{ "notification": { "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf", "timestamp": "2016-06-28 00:40:34.558" }, "delivery": { "phoneCarrier": "My Phone Carrier", "mnc": 270, "destination": "+1XXX5550100”, "priceInUSD": 0.00645, "smsType": "Transactional", "mcc": 310, "providerResponse": "Message has been accepted by phone carrier", "dwellTimeMs": 599, "dwellTimeMsUntilDeviceAck": 1344 }, "status": "SUCCESS" } {1} {1}
上面的几个 dwell 时间是一些时间差,一个是从消息发送到 SNS 开始到消息发送到目标运营商的时间,另一个是从消息发送到 SNS 开始到收到了目标用户的设备发回来的响应的时间。如果支持的话,providerResponse 的内容中还会表明 SMS 发送失败的原因。
微软 Azue 的 Notification Hubs 和谷歌云平台的 Cloud Pub/Sub 服务都没能对 SMS 消息支持到这种程度,即使他们都和 Twilio 结合提供了更高级的程序服务——微软的 Logic Apps 和谷歌的 App Engine 。
亚马逊的 SNS 文档有开发者指南有一个专门的章节讲述如何发送SMS 消息,以及 API 参考。还有一章 FAQ 。还包括每个国家每个运营商的 SMS 定价情况,慢慢地,亚马逊还会争取“有办法争取最优惠的价格”。在亚马逊SNS 论坛可以找到支持信息。
阅读英文原文: Amazon Simple Notification Service (SNS) Gains Worldwide SMS Delivery
评论