API 调用不是系统本身
发送一条 A2P SMS 只是一次 HTTP 请求。运营 A2P SMS 则要管理一整套你并不掌控的依赖关系:每个市场的发送方注册、供应商路由、运营商过滤、终端状态,以及这条消息真正服务的应用流程。
本文关注决定消息是否有用的那些环节,以及让这些环节保持可见的运营习惯。
发送方 注册是市场依赖,而不是一个配置项
在一些市场,发送方身份必须先注册才会被视为合法流量。在美国,长码上的 A2P 流量通过 The Campaign Registry(10DLC)注册;品牌与活动信息,包括申报的使用场景,会影响流量的处理方式。在多个欧洲和中东市场,字母数字 Sender ID 按运营商预先注册,所需材料因运营商和供应商而异。
由此带来的运营影响,而不是某个具体时间线:
- 更换发送方身份依赖第三方,应该写进项目计划,而不是发布清单。要向负责该市场的供应商和运营商确认当前的处理周期,因为它会变化。
- 为容灾新增第二家供应商,通常意味着为这家供应商的连接重复一遍注册工作,而不只是加个密钥。
- 在一些市场,内容和模板规则挂在已注册的身份上,因此模板变更可能需要重新审批。
为每个市场维护一份发送方身份登记表,记录注册状态、持有该身份的供应商,以及使用的证明材料。当压力之下必须更换路由时,这份登记表决定了这是一次路由切换,还是一次临时排查。
隔离流量类别
认证验证码、服务通知和促销活动的截止时间、同意基础和内容审核要求各不相同。共用一个发送方身份和一条路由,意味着某个活动的排队行为、以及针对该活动的 内容审核,都会同时作用在你的认证流量上。
在四个层面分离:
- 发送方身份与注册,使某一类别的内容审核不会波及另一类别。
- 路由,使吞吐量分配和供应商限流相互独立。
- 队列与优先级,使计划中的活动发送不会排在用户正在等待的验证码前面。
- 监控基线与告警,使一次缓慢的活动不会与一条退化的认证路由触发同一个人的呼叫。
相关细节见交易流量与营销流量。
把 DLR 和错误映射为自己的词汇表
供应商以各自的格式、各自的缺口来报告状态和错误信息。送达回执说明的是网络对该消息的报告,而不是收件人做了什么,中间环节还可能改写或伪造这些回执。
这项映射工作只需要做一次:
- 一套统一状态——已接受、已提交、已送达、失败、过期、未知——同时保留供应商的原始状态和错误码。
- 一套统一的失败原因,按谁能针对它采取行动分组:你的应用、供应商、目标网络,还是收件人。
- 记录哪些路由返 回的状态不可信,这样分析结果就不会被悄悄扭曲。
没有这层映射,更换或新增供应商改变的只是你的报表,而不是你的可靠性。
按路由、按目的地、按类别监控
聚合送达率会掩盖真正值得处理的失败,因为失败通常是具体的:某个目的地网络、某条路由、某个流量类别、某个发送方身份。
有用的监控应该具备:
- 按项目和路由各自建立的基线,来自该项目自身的近期历史,而不是通用目标。
- 延迟分布,而不是平均值,统计从提交到最终状态的全过程。
- 实时探测——向你自己控制的号码持续发送少量真实消息,覆盖每条重要路由和市场——使退化在生产流量模式之外也能被发现。
- 针对项目自身基线偏离的告警,配有明确的负责人和确定的处理动作。
重试、幂等与截止时间
消息领域最棘手的情形是提交结果不明:请求超时,而下游是否已经生成消息不得而知。
- 每次发送都生成一个应用侧引用并在提交前存储,以该引用为准做幂等提交,供应商支持幂等键时优先使用。
- 为每个流量类别定义有意义的截止时间:过了这个点,送达对用户已无帮助。过了截止时间就停止,而不是继续重试。
- 绝不允许重试或故障切换为同一会话生成第二个认证码。去重应该在状态层面进行,而不是消息层面。
- 针对每个类别单独决定:超时结果不明时是否值得重试、承担重复的风险。这是一个策略选择,不是默认行为。
衡量应用层的结果
送达回执描述的是传输层。真正的结果发生在你的应用里:用户是否验证、点击、回复、支付、领取。用一个从发送决策到每次尝试和状态的贯穿标识把两者关联起来,并在两端都存储它。
正是这层关联使路由对比变得有意义。两条报告送达率相近的路由,验证成功率可能截然不同,只有应用侧的数据能看出来。完整的衡量模型见揭示送达与验证失败的 OTP 指标。
供给与运营是两个独立的决策
Flowstates 出售并运营消息路由,支持客户保留自己的供应商合同(BYOV),也支持两者混合。这是一个商业选择。运营层——注册、路由、统一状态映射、监控、升级和报表——无论谁持有供给合同,都是同样的工作,而且始终需要有人负责。
运营检查清单
- 每个市场的发送方身份登记表,记录注册状态、持有方和证明材料。
- 流量类别在发送方身份、路由、队列优先级和告警上均已分离。
- 统一状态与错误映射,保留供应商原始代码。
- 按路由、目的地、类别建立的基线,来自各项目自身历史。
- 在重要路由和市场上部署实时探测。
- 每次发送都有应用侧生成的引用,并在提交前存储。
- 每个流量类别都有有意义的截止时间,以停止条件替代无限重试。
- 跨重试和故障切换的状态层去重。
- 一个贯穿发送、状态和应用结果的关联标识。
- 每条告警都有明确负责人和确定动作,并且路由变更路径不依赖单一个人。