BroadNet
SMPP v3.4 · funciona no seu navegador

Decodificador de PDU SMPP.

Cole o hexadecimal de um PDU SMPP v3.4 para decodificar o seu cabeçalho de 16 bytes — command_length, command_id (com o nome), command_status e sequence_number — e ver o layout obrigatório de campos do corpo para submit_sm e deliver_sm. Nada sai do seu dispositivo.

16 bytes
Experimente um exemplo
command_length
160x00000010
command_id
enquire_link0x00000015
command_status
0x00000000

ESME_ROK — No error

sequence_number
10x00000001
Corpo (0 bytes após o cabeçalho de 16 bytes)

PDU apenas com cabeçalho — sem corpo (típico de enquire_link, unbind e da maioria das confirmações _resp).

A resposta curta

O que é um PDU SMPP?

Um PDU (Unidade de Dados de Protocolo) é uma única mensagem SMPP no fio. Todo PDU — um bind, um submit_sm, um relatório de entrega, um enquire_link — começa com o mesmo cabeçalho de 16 bytes composto por quatro inteiros de 32 bits big-endian: command_length (o comprimento total em bytes incluindo o cabeçalho), command_id (qual operação é), command_status (o resultado, que é 0 / ESME_ROK numa resposta bem-sucedida) e sequence_number (usado para associar uma resposta ao seu pedido). Quaisquer campos do corpo seguem o cabeçalho.

O layout do cabeçalho de 16 bytes

SMPP v3.4 PDU header fields
BytesCampoSignificado
0–3command_lengthComprimento total do PDU em octetos, cabeçalho incluído.
4–7command_idIdentifica a operação (ex. 0x00000004 = submit_sm).
8–11command_statusCódigo de resultado; 0 = ESME_ROK. Só relevante em respostas.
12–15sequence_numberCorrelaciona um pedido com a sua resposta.

Campos do corpo submit_sm / deliver_sm

Após o cabeçalho, um submit_sm ou deliver_sm transporta os seus campos obrigatórios numa ordem fixa, opcionalmente seguidos de parâmetros TLV (opcionais). Esta ferramenta lista a ordem; não analisa totalmente as cadeias C-Octet de comprimento variável, pois os seus limites dependem dos terminadores nulos e do campo sm_length.

submit_sm / deliver_sm mandatory body fields
CampoTipoSignificado
service_typeC-Octet StringIndica o serviço de aplicação SMS (nulo = predefinido).
source_addr_tonInteger (1)Tipo de número do remetente.
source_addr_npiInteger (1)Indicador do plano de numeração do remetente.
source_addrC-Octet StringEndereço do originador da mensagem.
dest_addr_tonInteger (1)Tipo de número do destinatário.
dest_addr_npiInteger (1)Indicador do plano de numeração do destinatário.
destination_addrC-Octet StringMSISDN / código curto de destino.
esm_classInteger (1)Modo e tipo de mensagem (ex. 0x04 = relatório de entrega).
protocol_idInteger (1)Identificador de protocolo (específico da rede).
priority_flagInteger (1)Nível de prioridade da mensagem.
schedule_delivery_timeC-Octet StringHora de entrega agendada (nulo = imediato).
validity_periodC-Octet StringPeríodo de validade da mensagem (nulo = predefinido).
registered_deliveryInteger (1)Se é solicitado um relatório de entrega (DLR).
replace_if_present_flagInteger (1)Substituir uma mensagem existente, se presente.
data_codingInteger (1)Esquema de codificação (0 = GSM-7, 8 = UCS-2).
sm_default_msg_idInteger (1)Identificador de mensagem predefinido.
sm_lengthInteger (1)Comprimento em octetos do campo short_message.
short_messageOctet StringA carga útil da mensagem (até 254 octetos).

Perguntas frequentes

Quais são os quatro campos do cabeçalho SMPP?

Todo PDU SMPP começa com um cabeçalho de 16 bytes composto por quatro inteiros de 32 bits big-endian: command_length (comprimento total do PDU em octetos, incluindo o cabeçalho), command_id (a operação, como 0x00000004 para submit_sm), command_status (o código de resultado, 0 = ESME_ROK) e sequence_number (que correlaciona uma resposta com o seu pedido original).

Por que motivo command_status é normalmente 0 nos meus pedidos?

command_status só é relevante em PDUs de resposta e generic_nack. Em PDUs de pedido (submit_sm, bind, enquire_link) é reservado e deve ser definido como 0. Um valor diferente de zero num _resp indica um erro — por exemplo, 0x00000058 é ESME_RTHROTTLED.

Os inteiros do SMPP são big-endian?

Sim. O SMPP codifica inteiros multi-octeto na ordem de bytes de rede (big-endian, byte mais significativo primeiro). Este decodificador lê cada campo de cabeçalho de 4 bytes como um inteiro sem sinal de 32 bits big-endian.

Esta ferramenta decodifica o texto da mensagem?

Decodifica o cabeçalho fixo de 16 bytes e lista a ordem dos campos do corpo para submit_sm e deliver_sm, mas não analisa completamente o corpo de comprimento variável em valores individuais. As cadeias C-Octet terminam em nulo e o comprimento de short_message é transportado em sm_length, pelo que uma análise completa do corpo depende desses limites — esta ferramenta mantém-se no layout de cabeçalho baseado na norma.

Onde posso pesquisar um command_status que não reconheço?

Utilize a referência de códigos de erro do SMPP, que lista cada valor command_status do SMPP v3.4 pelo nome hexadecimal e simbólico, com um significado em linguagem simples e a causa e correção prováveis.

Precisa de um bind SMPP real?

A BroadNet oferece ligações SMPP 3.4 diretas juntamente com uma API REST e webhooks de entrega em 200+ países. Fale com a nossa equipa sobre débito e encaminhamento.