免费工具 · 消息

SMPP 错误码与 PDU 解码器

粘贴 command_status、送达回执的 stat 和 err 字段,或十六进制 PDU,查看含义和下一步该查什么。

只在您的浏览器中处理,不会上传。

试试示例:

工作原理与局限

在您的浏览器中运行:您输入的内容只留在本机,不会上传。

解码器按 SMPP v3.4 和 v5.0 的结构读取 PDU:头部、命令、序列号、必填字段和可选 TLV。标准 command_status 值用平实的语言解释。

送达回执的 err 码没有统一标准,每个 SMSC 用自己的定义。我们给出含义时,使用的是通用、匿名化的映射,并标注“因 SMSC 而异”。

数据来源与许可

Operator names, brands and codes shown here are public reference data compiled from national regulators and other public sources. Their appearance does not indicate any partnership, endorsement, agreement or connectivity between unicomam.com and the named operators. All trademarks belong to their owners. Data is provided “as is” with no warranty; verify against the official source before relying on it for routing, billing or compliance decisions.

监管信息仅供参考,不构成法律意见;请核对监管机构链接和“最后核实”日期。

Decodes PDUs per the SMPP v3.4 / v5.0 protocol specifications (opens in a new tab) (SMPP Developers Forum / SMS Forum). DLR “err” codes are SMSC-specific; mappings shown are generic and anonymised.

如何解读 SMPP 错误与送达回执

SMPP 在两个地方报告问题。请求的响应里有 command_status,说明请求是否被接受;之后以 deliver_sm 发出的送达回执,说明消息发往手机途中的结果。先看 command_status:这里被拒,问题就在请求本身;只有被接受的请求才会产生送达回执。

command_status 为零,表示请求已被接受。其他标准值分别指向具体原因:绑定(system_id 或密码错误,或绑定类型不允许该命令)、地址(目的地无效,或路由不接受该 TON 或 NPI)、消息本身(长度、data_coding 或 esm_class),或者吞吐(连接发送速度超过约定)。SMPP v5.0 增加了服务类型和小区广播的值,还留出一段范围给 SMSC 厂商,含义因平台而异。

送达回执带一个 stat 值,例如 DELIVRD、UNDELIV、EXPIRED、REJECTD,以及说明原因的 err 码。stat 值在大多数平台上通用。err 码没有统一标准,每个 SMSC 都有自己的列表。许多 SMSC 会转达移动网络给出的原因,所以同一个数字在不同路由上含义可能不同。通用解读只能当起点,具体代码表要向路由提供商索取。

手里只有原始 PDU 时,头部会告诉您命令、状态和序列号。序列号把请求和响应配成一对。每个命令的必填字段按固定顺序排在后面,可选参数(TLV)放在最后,各带标签、长度和值。command_length 对不上,或字段提前结束,通常说明客户端把 PDU 拼错了。

多数 A2P 连接使用 SMPP v3.4。v5.0 增加了一些命令和参数,支持的平台较少。解码器两种都覆盖,在浏览器中运行,粘贴的内容不会发送到任何地方。

常见问题

为什么同一个 err 码含义不同?

送达回执里的错误码由各 SMSC 自己定义,不由 SMPP 规范定义,所以两条路由可能用同一个数字表示不同原因。通用映射只能当起点。

可以粘贴原始 PDU 吗?

可以,用十六进制。解码器在浏览器中运行,PDU 不会离开您的设备。

支持哪些 SMPP 版本?

SMPP v3.4 和 v5.0。多数 A2P 连接使用 v3.4。