BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

亚马逊的简单通知服务已经可以在全世界范围内发送短信

| 作者 Steffen Opel 关注 3 他的粉丝 ,译者 足下 关注 1 他的粉丝 发布于 2016年9月26日. 估计阅读时间: 6 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

亚马逊的简单通知服务(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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT