马来西亚短信网关
它做什么、哪里会出问题

它是你的应用和 Maxis、CelcomDigi、U Mobile、YES、Unifi 之间的那一层。它做什么、哪里会出问题,以及怎么分辨正规网关和换了皮的后台。

网关到底做什么

你没办法自己把短信交给 Maxis。网关握有和电信之间的商业和技术连接,替你做四件事:接收你提交的短信、选一条通往收件人网络的线路、把短信交出去、收回传来的送达回执。

你在群发短信上遇到的每一个问题,都出在这四步之一。知道是哪一步出问题,修复的工作就完成了一大半。

线路:为什么同一条短信表现不一样

马来西亚可以携号转网,号段已经不能准确告诉你号码在哪家电信。网关会解析并按实际网络选线路。线路之间真正的差别在质量:

这是服务商之间最大的质量差别,而价格页上完全看不出来。价格远低于本地行情,通常就说明线路不是本地的。症状大家都熟悉:后台显示送达率接近 100%,客户却说什么都没收到。

送达回执,以及它为什么会说谎

送达回执(DLR)从收件人手机所在的网络,经过运营商、网关,一路传回给你。每一跳都可能提早回报。这就产生了大多数账单纠纷核心的「三段式混乱」:

阶段谁回报能证明什么
已提交网关它收下了你的短信并扣了钱
已接收运营商网络收下了 —— 不代表手机收到了
已送达(DLR)收件人手机所在网络送到了设备上

把第 1 阶段当成「已送达」回报的网关,不管实际如何,后台永远完美。检验方法很直接:请对方给你一份「已提交」和「已送达」数字不一样的活动报告。拿不出来的服务商,就没有把真实回执传给你。

也要问清楚:回执一直没回来时怎么处理。有些运营商对一部分流量根本不回回执 —— 诚实的网关会告诉你回执缺失,而不是往让统计数字好看的方向自己假设结果。

吞吐量和排队

吞吐量的上限由运营商线路决定,不是网关的宣传文案。比峰值速度更重要的,是出问题时队列怎么处理:线路一抖就把剩下的批次丢掉的网关,和只重发没发出去的部分、不重复发已发出的网关,是两种完全不同的产品。具体问一句:5,000 个号码的批次发到一半线路断了,会怎样?

怎么接入

方式适合代价
网页后台偶尔发活动、不懂技术的用户手动,不能自动重复
REST API由应用触发的发送需要开发人员接一次
SMPP持续的超大量发送要维护长连接,运维更重

对几乎所有达不到电信级用量的用户来说,HTTPS 上的 REST 就是正确答案 —— 不用看着长连接,任何技术栈都能用。我们的接口文档在 API 文档,选型层面的介绍在短信 API。

能分辨网关和后台的几个问题

最后一个问题成本最低、也最能说明问题。对自己线路有信心的服务商,都会让你先发到自己手机再花钱。想从价格和客服角度比较服务商,见群发平台怎么选。

常见问题

什么是短信网关?

把你的系统接到电信的服务,让你可以用程序或网页发送短信。它负责选对网络的线路、把短信提交给运营商、传回送达回执。一般商家没办法直接接 Maxis 或 CelcomDigi,这正是网关存在的原因。

短信网关和短信聚合商有什么区别?

在马来西亚这两个词基本混用。「网关」强调技术连接,「聚合商」强调和多家运营商的商业关系。重要的不是名称,而是线路是不是本地直连、传给你的送达回执是不是真的。

为什么有一家比其他家便宜很多?

通常是线路问题。绕道国际或灰色线路进马来西亚的短信更便宜、送达更差 —— Sender ID 可能被改、过滤更严,送达回执可能是中间某一跳生成的,而不是收件人网络回报的。后台显示接近完美、客户却说没收到,就是典型症状。

我需要 SMPP 吗?

几乎可以肯定不需要。SMPP 只有在持续电信级用量、长连接的维护成本划得来时才有意义。低于那个量,HTTPS 上的 REST API 更容易开发、更容易排查,任何技术栈都能用。

决定之前怎么测试一个网关?

发真实短信到至少两家不同电信的手机,然后看逐个号码的送达报告,确认「已提交」和「已送达」不是一模一样的数字。不肯让你付款前先真实测试的服务商,已经告诉你很多了。

付钱之前先发一条真实测试

注册后在 WhatsApp 领 RM1 试用额度,发到不同电信的手机,再看逐个号码的送达报告。