Ferramenta gratuita · Mensagens

Decodificador de erros SMPP e PDU

Cole um command_status, os campos stat e err de um recibo de entrega, ou uma PDU em hexadecimal, e veja o que significa e o que verificar em seguida.

Fica no seu navegador; nada é enviado.

Experimente um exemplo:

Como funciona e seus limites

Funciona no seu navegador: o que você digita fica no seu dispositivo e nunca é enviado.

O decodificador lê PDUs de acordo com os layouts do SMPP v3.4 e v5.0: cabeçalho, comando, número de sequência, campos obrigatórios e TLVs opcionais. Os valores de command_status definidos no padrão são explicados em linguagem simples.

Os códigos err dos recibos de entrega não são padronizados: cada SMSC usa os seus. Quando mostramos um significado para um código err, ele é um mapeamento genérico e anonimizado, marcado como variável conforme o SMSC.

Fontes de dados e licenças

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.

As informações regulatórias são apenas de referência e não constituem aconselhamento jurídico; consulte o link do regulador e a data de “última verificação”.

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.

Como ler erros SMPP e recibos de entrega

O SMPP informa problemas em dois lugares. O command_status na resposta a uma requisição diz se a requisição chegou a ser aceita; um recibo de entrega, enviado depois como deliver_sm, diz o que aconteceu com a mensagem no caminho até o aparelho. Leia o command_status primeiro: uma rejeição ali diz respeito à própria requisição, e só mensagens aceitas geram recibos de entrega.

Um command_status igual a zero significa que a requisição foi aceita. Os demais valores definidos no padrão apontam para uma causa: o bind (um system_id ou uma senha incorretos, ou um comando que o tipo de bind não permite), os endereços (um destino inválido, ou um TON ou NPI que a rota não aceita), a própria mensagem (seu comprimento, data_coding ou esm_class) ou a vazão (throughput), quando a conexão envia mais rápido do que o acordado. O SMPP v5.0 acrescenta valores para tipos de serviço e cell broadcast, e deixa uma faixa para fornecedores de SMSC, cujo significado varia de uma plataforma para outra.

Um recibo de entrega traz um valor stat como DELIVRD, UNDELIV, EXPIRED ou REJECTD, e um código err que dá o motivo. Os valores stat são comuns à maioria das plataformas. Os códigos err não são padronizados: cada SMSC mantém a sua própria lista, embora muitos repassem a causa informada pela rede móvel, então o mesmo número pode significar coisas diferentes em rotas diferentes. Trate uma leitura genérica como ponto de partida e peça ao provedor da rota a lista de códigos dele.

Quando você só tem uma PDU bruta, o cabeçalho informa o comando, seu status e o número de sequência que associa uma requisição à sua resposta. Os campos obrigatórios vêm em seguida, em uma ordem fixa para cada comando, e os parâmetros opcionais, ou TLVs, vêm por último, cada um com uma tag, um comprimento e um valor. Um command_length que não confere, ou um campo que termina antes do esperado, geralmente significa que o cliente montou a PDU incorretamente.

A maioria das conexões A2P usa SMPP v3.4; a v5.0 acrescenta comandos e parâmetros que menos plataformas suportam. O decodificador cobre as duas versões, roda no seu navegador e nunca envia a lugar algum o que você cola.

Perguntas frequentes

Por que o mesmo código err significa coisas diferentes?

Os códigos de erro dentro dos recibos de entrega são definidos por cada SMSC, e não pela especificação SMPP, então duas rotas podem usar o mesmo número por motivos diferentes. Trate os mapeamentos genéricos como ponto de partida.

Posso colar uma PDU bruta?

Sim, em hexadecimal. O decodificador roda no seu navegador e a PDU nunca sai do seu dispositivo.

Quais versões do SMPP são suportadas?

SMPP v3.4, que a maioria das conexões A2P usa, e v5.0.