IOSOR 知识库
短信生命周期状态与低送达率排查指南
深入解析从提交、排队、发送到回执的完整短信状态机,涵盖预付费账本冻结、Webhook 回调与平台规则。
短信生命周期状态与低送达率排查指南。
API 接受与初始排队状态
当 API 客户端向消息端点提交短信请求时,平台会执行语法验证与账本项目授权。无论是发送事务性 OTP 验证码还是业务通知,目标号码必须严格符合 E.164 格式规范。在将消息推入核心状态机引擎之前,系统会主动校验账户是否维持了所需的 20 美元(USD 20)预付费底线门槛。若可用余额低于此 20 美元触发线,API 节点将立即拒绝新请求并返回明确的资金异常错误,防止在余额不足时产生无效的排队积压。
处理状态与运营商转接机制
一旦消息进入队列,内部调度程序会立即将其分流至外发调度管道。在此阶段,引擎会严格评估目标路由规则、发件人 ID 合规性以及底层网络的实时可用性。系统集成了严格的本地免打扰时段(Quiet hours)管控策略,对于营销类短信,若目标手机所在时区处于夜间免打扰窗口(如 22:00 至 08:00),状态机会自动将消息保持在排队挂起状态,延迟至合规时段再进行转接发件。若外发流量需要专用的发件人身份,系统将触发即时(JIT)动态分配,将活跃地址无缝关联至当前会话,从而完全消除人工配置带来的延迟。
异步 DLR 状态转换与错误代码
从 'sent' 已发送状态向最终终态的转换,是通过异步传入的送达报告(DLR)来完成的。下游移动运营商会返回状态回执,明确标示出 'delivered'、'undelivered' 或 'failed' 等具体结果。系统会对网络原生的 DLR 状态码进行标准化清洗,确保投递真相(DLR truth)能够精准映射到内部状态机中。若目标手机终端暂时无法触达,DLR 将保持挂起状态,直至运营商的重试定时器彻底耗尽并抛出最终错误代码。
预付费账本冻结与平台阈值
每一次状态的流转都与财务账本事件紧密挂钩,其中也包括号码按月发生的 MRC 成本。初次提交时,系统会基于目标前缀费率和计费分段数在预付费钱包中创建临时的预冻结金额(Wallet holds)。当消息成功送达或确认不可退款终态时,冻结资金将正式划转扣除;若消息因平台内部风控或格式校验失败被拦截,系统则会自动解除预冻结,将资金归还至可用余额。随着账户发送体量的持续放大,系统将自动启动风控合规检查,保障资金安全。
状态机可观测性与 Webhook 集成
若要将状态追踪完美融入客户端应用逻辑,必须正确配置实时的 HTTP Webhook。当消息从排队、发送逐步流转至最终的 DLR 回执时,平台会主动分发带有数字签名的回调通知,其中完整包含消息标识符、状态时间戳以及详细的错误原因码。此外,针对用户回复的 STOP/UNSUBSCRIBE 等退订指令,系统会执行实时退订同步(Opt-out sync),自动将该目标号码添加至全局黑名单数据库,在后续发送时自动阻断,确保全链路合规可控。
相关阅读: 排队消息必须暂扣资金而非按已发送扣款 · 已排队与已发送:IOSOR 中的单一条消息路径 · 首次扣款前的预付资金预留.
从 IOSOR 开始
打开 IOSOR 控制台,将系统的消息请求处理器直接映射到状态机的回调端点。确保应用逻辑在将内部消息记录状态从已排队更新为已发送之前验证 Webhook 签名。针对模拟的异步 DLR 负载测试事件处理器,以确认账本冻结能够在不阻塞并发请求的情况下完成对账。
IOSOR 要点
消息处理本质上是一个确定性有限状态机,其中每一次状态转换都反映经过验证的技术事件,而非抽象的送达指标。从最初的 API 提交、队列验证到运营商交接以及最终的异步 DLR 回调,隔离状态机制能够为事件管道与错误映射提供完全可见性。
请构建将每次状态转换都视为以已签名 Webhook 回收凭证和账本冻结为支撑的坚实契约的应用逻辑。切勿将状态机执行与送达率调优混为一谈——应将生命周期状态追踪视为具备基础设施可靠性的管道。
这篇指南有帮助吗?
相关指南
- 排队消息必须暂扣资金而非按已发送扣款
了解 IOSOR 如何在账本中管理消息排队状态。排队的 SMS 请求会创建临时余额暂扣,而非在路由确认前进行最终扣款。
- 已排队与已发送:IOSOR 中的单一条消息路径
了解财务与产品团队如何在 IOSOR 中共享统一的 SMS 与 OTP 生命周期状态机,平衡预付费冻结与 DLR 状态。