简短回答
短信送达回执状态说明运营商接收后短信的结果。在 SMPP 3.4 中,DELIVRD 表示已送达,UNDELIV 无法送达,EXPIRED 有效期已过,REJECTD 被网络拒收。HTTP API 通常映射为 DELIVERED 或 FAILED。
SMPP 的 stat 值是什么意思?
SMPP 3.4 规范给出了一种回执示例格式,其中 stat 字段保存最终的消息状态。回执文本的具体格式由各 SMSC 自行决定,但以下取值被广泛使用。
| stat | 含义 | 典型原因 |
|---|---|---|
| DELIVRD | 已送达手机 | 正常成功 |
| UNDELIV | 无法送达 | 号码无效、未激活或被限制 |
| EXPIRED | 送达前有效期已过 | 手机关机或长时间无信号 |
| REJECTD | 被网络拒收 | Sender ID 未注册、内容或线路被拦截 |
| DELETED | 送达前被删除 | 在 SMSC 被取消 |
| ACCEPTD 或 UNKNOWN | 已接受状态,或无效/未知状态 | 由 SMSC 自行定义;请向服务商确认 |
平台的 Webhook 状态与之如何对应?
API 会把运营商回执归一化为更简单的状态。在 OmniChannels.ai 平台上,每个渠道都会报告 SUBMITTED、SENT、DELIVERED、READ、FAILED 和 REJECTED。SUBMITTED 和 SENT 是中间状态;对短信而言,DELIVERED、FAILED 和 REJECTED 是终态。状态可能乱序到达,所以切勿让迟到的 SENT 覆盖 DELIVERED。
如何解读原始送达回执?
- 将回执中的 id 与 submit_sm_resp 返回的 message_id 对应。
- 读取 stat 获取最终状态,读取 err 获取运营商错误码。
- 对比提交时间和完成时间,了解送达花了多久。
- 对于长短信,汇总每一段的回执后,再将整条短信标记为已送达。
送达回执有哪些局限?
部分运营商不返回回执或延迟返回,有些在短信到达网络而非手机时就报告送达。伪造的 DELIVRD 回执是灰色线路的典型迹象。请把回执视为有力证据,而不是短信已被阅读的证明。
