亚马逊的简单通知服务(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"}上面的几个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