Sign inGet Started

SMS 投递错误

未成功的 SMS 包含一个投递状态和一条解释结果的错误。使用此参考来解读消息附带的失败原因和数字提供商代码。

请求错误(例如无效的发送载荷)使用 API 错误目录。本页中的代码描述的是已被接受但随后失败或被拒绝的消息。

读取错误

在 SMS 日志 中打开一条消息并选择 Details。Error 显示描述和标准化失败原因。Carrier error code 显示提供商返回的数字代码(如有)。

通过 API,读取 GET /v1/sms/messages/{message_id}。其 last_error 包含:

字段含义
codeBird 的标准化失败原因,例如 unreachable 或 unknown
description以文字形式报告的说明
carrier_error_code供应商返回的原始代码(如有提供)
occurred_at失败发生的时间

失败 webhook 事件和消息时间线事件在 error 中包含相同的字段。

字段名 carrier_error_code 同样涵盖由 Bird 的发送供应商返回的代码,包括欺诈保护拦截。代码缺失表示供应商未提供,或消息在提交前即被拒绝。

标准化失败原因

以下是消息 API定义的失败原因。供应商回执可能包含比标准化原因更具体的数字代码。例如,带有 code: unknown 的消息仍可携带一个已识别的 carrier_error_code。

原因含义
invalid_destination号码未分配或无效
unreachable终端已关机或不在服务区
blocked_by_carrier接收运营商过滤了该消息
blocked_by_fraud_protectionBird 欺诈防护拦截了疑似 SMS 流量欺诈
blocked_by_recipient收件人的设备屏蔽了该发送方
landline_unreachable该固定电话不接受 SMS
content_rejected运营商拒绝了消息内容
sender_unregistered发送方缺少必要的注册
recipient_opted_out收件人在屏蔽列表中
provider_unavailable提供商或网络不可用
insufficient_balance工作区钱包余额不足,无法完成发送
unknown无法对该失败进行分类

这是一个开放集合:遇到不熟悉的值时,保留描述和原始代码以便排查。临时原因仍会终止本次消息尝试,但不保证系统会自动重新提交。

供应商错误代码

在 carrier_error_code 中查找返回的数字字符串。这些代码属于 Bird 的 SMS 发送供应商;不同供应商可能为相同数字赋予不同含义。

代码含义
0无错误
1未知订阅用户
2未知基站
3未知移动交换机
5未识别的订户
7终端无法连接
8禁止漫游
9订户鉴权失败
10SMS 承载未开通
11SMS 服务未开通
12终端被列入黑名单
13SMS 服务被禁止
21SMS 不受支持
26网络切换失败
27用户不可用
28不在覆盖范围内
29终端已关机
30移动交换机故障
31用户忙
32SMS 投递失败
33待发消息存储已满
34网络系统故障
35缺少必需数据
36消息字段值异常
39漫游路由号不可用
40网络内存耗尽
71不支持的字母表
72USSD 忙
100发送余额不足
101用户余额不足
103用户已退订
104发送方未注册
105内容未注册
106活动量超限
107活动吞吐量超限
110运营商过滤了消息
130SurgeGuard 检测到流量欺诈
131SurgeGuard 屏蔽了疑似欺诈目的地

在 Bird 消息和事件读取中,carrier_error_code 会省略代码 0。遇到不熟悉的代码时,请保留在记录中,以便联系支持团队时提供。

欺诈保护屏蔽

SurgeGuard 是 Bird 的 SMS 欺诈保护功能。

被欺诈保护拦截的消息具有失败原因 blocked_by_fraud_protection 和描述 "Blocked by fraud protection: suspected SMS pumping." 投递状态根据供应商的报告保持为 failed、rejected 或 expired。相同的原因和描述会出现在消息详情、时间线事件和失败 webhook 中。原始供应商代码在提供时仍可通过 carrier_error_code 获取。

在 SMS 日志中,将Failure reason筛选为Blocked by fraud protection即可找到这些消息。

较早的记录可能仍显示 unknown 和 generic_delivery_failure。仅凭这些标签无法确认是否为欺诈保护拦截。请在供应商错误代码中查找对应的 carrier_error_code 以确定原因。如果代码缺失或无法识别,请携带工作区 ID、消息 ID、时间戳以及供应商代码(如有)联系支持团队。

调查被拦截的 OTP 时,将 SMS 与触发它的账户或验证请求关联起来。请勿自动重新发送或切换路由来绕过拦截。如果你怀疑合法请求被误拦截,请携带工作区 ID、消息 ID、时间戳和供应商代码联系支持团队。

后续步骤