后台一片绿色,和根本没人收到,完全可以同时成立。下面讲清楚每种状态到底证明了什么,以及一个能看出服务商有没有把真实回执传给你的问题。
你发出一条短信后,传回来的确认已经经过四方:服务商提交、运营商接收、收件人的网络送达,然后回执沿着这条链传回来。每一跳都可能在下一跳发生之前就回报成功 —— 这就是服务商可以显示 100% 送达、实际却什么都没到的原因。
| 阶段 | 谁回报 | 能证明什么 | 不能证明什么 |
|---|---|---|---|
| 已提交 | 你的服务商 | 他们收下并扣了钱 | 和电信有关的任何事 |
| 已接收 | 运营商 | 网络收下了 | 手机收到了 |
| 已送达(DLR) | 收件人手机所在网络 | 送到了设备上 | 有人看了 |
| 状态 | 含义 | 常见原因 | 是否收费 |
|---|---|---|---|
| 已送达 | 已确认送到手机 | — | 收费 |
| 已发送 | 已提交,最终回执还没回来 | 回执还在路上,或运营商从不回传 | 收费 |
| 未送达 | 已接收,但没送到手机 | 关机好几天、号码被回收、内容被过滤、存储满了 | 收费 |
| 被拒收 | 根本没提交出去 | 号码格式无效、内容被拦、重复 | 不收费 —— 退回 |
未送达和被拒收必须是两个分开的数字。运营商按提交收费,一个要付钱、一个不用。只显示一个合并「失败」数字的报告,原则上就不可能和账单核对 —— 而这通常正是它被这样呈现的原因。
HantarSMS 还有一种情况:提交时上游报错或连接中断,结果未知,短信可能已经发出。这种照收不退,报告里显示为未送达。
有些运营商对一部分流量就是不回回执。短信很可能已经到了,只是确认一直没传回来。每家服务商都得决定怎么处理这些,而这个决定会影响他们公布的送达率:
没有放诸四海皆准的答案,但有正确的问法:「回执一直没回来时你们怎么处理?这占我流量的百分之几?」从没想过这个问题的服务商答不出来;想过的会直接告诉你百分比。
一个问题就能解决大部分疑问:
「给我看一份『已提交』和『已送达』数字不一样的活动报告。」
如果服务商的两个数字永远一样,他们给你看的就是换了名字的提交数。马来西亚的真实流量一定有差距 —— 有人关机、号码被回收、部分内容被过滤。大型活动长期 100% 送达不是优秀,而是服务商在回报第一阶段。
另外值得追问两件事:结果是逐个号码的,还是只有活动总数;回执要多久才算最终。逐号码的数据才能让你发现,是某一家电信在过滤你,而其他几家都正常。
每种原因的诊断细节见短信为什么发不到,背后的线路原理见短信网关。
如果你从自己的系统发送,会希望送达状态也回到同一个地方。我们的 API 用上面同样的四种状态返回逐号码结果,被拒收和未送达在你自己的对账里保持分开,而不是一到手就被合并了。
服务商收下了短信并为它扣了钱。它完全不能证明运营商或手机的任何事。有些服务商把这个标成「已发送」甚至「已送达」,所以后台可以显示完全成功,实际却没人收到。
要么服务商把提交当成送达回报,要么回执来自中间某一跳,而不是收件人的网络。请对方给你看一份「已提交」和「已送达」数字不同的报告 —— 如果永远一样,你看的就不是真实的送达数据。
同意过的干净名单、走本地直连线路,九成几是正常的。长期 100% 反而是警讯而不是成就:真实流量里一定有关机的手机和被回收的号码。
短信本身通常几秒内就到手机,但运营商的送达回执可能要几分钟到几小时才回来,回来之前报告显示「处理中」。有些运营商对一部分流量从不回传 —— 所以值得问服务商,对那些永远没有回执的短信怎么处理。
运营商接收了就要,因为运营商按提交而不是按送达收费。根本没提交出去的(号码无效、内容被拦)不收费 —— 所以这两种一定要在报告里分开显示。