BroadNet
SMPP v3.4 · funciona en tu navegador

Decodificador de PDU SMPP.

Pega el hexadecimal de un PDU SMPP v3.4 para decodificar su cabecera de 16 bytes — command_length, command_id (con su nombre), command_status y sequence_number — y ver el diseño obligatorio de campos del cuerpo para submit_sm y deliver_sm. Nada sale de tu dispositivo.

16 bytes
Prueba un ejemplo
command_length
160x00000010
command_id
enquire_link0x00000015
command_status
0x00000000

ESME_ROK — No error

sequence_number
10x00000001
Cuerpo (0 bytes tras la cabecera de 16 bytes)

PDU solo de cabecera — sin cuerpo (típico de enquire_link, unbind y la mayoría de los acuses _resp).

La respuesta breve

¿Qué es un PDU SMPP?

Un PDU (Unidad de Datos de Protocolo) es un único mensaje SMPP en el cable. Todo PDU —un bind, un submit_sm, un acuse de entrega, un enquire_link— comienza con la misma cabecera de 16 bytes de cuatro enteros de 32 bits big-endian: command_length (la longitud total en bytes incluyendo la cabecera), command_id (qué operación es), command_status (el resultado, que es 0 / ESME_ROK en una respuesta exitosa) y sequence_number (usado para emparejar una respuesta con su solicitud). Cualquier campo del cuerpo sigue a la cabecera.

El diseño de la cabecera de 16 bytes

SMPP v3.4 PDU header fields
BytesCampoSignificado
0–3command_lengthLongitud total del PDU en octetos, cabecera incluida.
4–7command_idIdentifica la operación (p. ej. 0x00000004 = submit_sm).
8–11command_statusCódigo de resultado; 0 = ESME_ROK. Solo significativo en respuestas.
12–15sequence_numberCorrelaciona una solicitud con su respuesta.

Campos del cuerpo submit_sm / deliver_sm

Después de la cabecera, un submit_sm o deliver_sm porta sus campos obligatorios en un orden fijo, opcionalmente seguidos de parámetros TLV (opcionales). Esta herramienta enumera el orden; no analiza por completo las cadenas C-Octet de longitud variable, porque sus límites dependen de los terminadores nulos y del campo sm_length.

submit_sm / deliver_sm mandatory body fields
CampoTipoSignificado
service_typeC-Octet StringIndica el servicio de aplicación SMS (nulo = predeterminado).
source_addr_tonInteger (1)Tipo de número del remitente.
source_addr_npiInteger (1)Indicador del plan de numeración del remitente.
source_addrC-Octet StringDirección del originador del mensaje.
dest_addr_tonInteger (1)Tipo de número del destinatario.
dest_addr_npiInteger (1)Indicador del plan de numeración del destinatario.
destination_addrC-Octet StringMSISDN / código corto de destino.
esm_classInteger (1)Modo y tipo de mensaje (p. ej. 0x04 = acuse de entrega).
protocol_idInteger (1)Identificador de protocolo (específico de la red).
priority_flagInteger (1)Nivel de prioridad del mensaje.
schedule_delivery_timeC-Octet StringHora de entrega programada (nulo = inmediato).
validity_periodC-Octet StringPeríodo de validez del mensaje (nulo = predeterminado).
registered_deliveryInteger (1)Si se solicita un acuse de entrega (DLR).
replace_if_present_flagInteger (1)Reemplazar un mensaje existente si está presente.
data_codingInteger (1)Esquema de codificación (0 = GSM-7, 8 = UCS-2).
sm_default_msg_idInteger (1)Identificador de mensaje predefinido.
sm_lengthInteger (1)Longitud en octetos del campo short_message.
short_messageOctet StringLa carga útil del mensaje (hasta 254 octetos).

Preguntas frecuentes

¿Cuáles son los cuatro campos de la cabecera SMPP?

Todo PDU SMPP comienza con una cabecera de 16 bytes de cuatro enteros de 32 bits big-endian: command_length (longitud total del PDU en octetos incluyendo la cabecera), command_id (la operación, como 0x00000004 para submit_sm), command_status (el código de resultado, 0 = ESME_ROK) y sequence_number (que correlaciona una respuesta con su solicitud original).

¿Por qué command_status suele ser 0 en mis solicitudes?

command_status solo es significativo en PDU de respuesta y generic_nack. En PDU de solicitud (submit_sm, bind, enquire_link) está reservado y debe establecerse en 0. Un valor distinto de cero en un _resp indica un error — por ejemplo 0x00000058 es ESME_RTHROTTLED.

¿Los enteros de SMPP son big-endian?

Sí. SMPP codifica los enteros multi-octeto en orden de bytes de red (big-endian, byte más significativo primero). Este decodificador lee cada campo de cabecera de 4 bytes como un entero sin signo de 32 bits big-endian.

¿Esta herramienta decodifica el texto del mensaje?

Decodifica la cabecera fija de 16 bytes y enumera el orden de campos del cuerpo para submit_sm y deliver_sm, pero no analiza el cuerpo de longitud variable en valores individuales. Las cadenas C-Octet terminan en nulo y la longitud de short_message se transporta en sm_length, así que un análisis completo del cuerpo depende de esos límites — esta herramienta se ciñe al diseño de cabecera basado en el estándar.

¿Dónde puedo buscar un command_status que no reconozco?

Usa la referencia de códigos de error de SMPP, que enumera cada valor command_status de SMPP v3.4 por su nombre hexadecimal y simbólico, con un significado en lenguaje sencillo y la causa y solución probables.

¿Necesitas un bind SMPP real?

BroadNet ofrece enlaces SMPP 3.4 directos junto con una API REST y webhooks de entrega en 200+ países. Habla con nuestro equipo sobre rendimiento y enrutamiento.