BroadNet
SMPP v3.4 · funziona nel tuo browser

Decodificatore di PDU SMPP.

Incolla l'esadecimale di un PDU SMPP v3.4 per decodificare il suo header di 16 byte — command_length, command_id (con il suo nome), command_status e sequence_number — e vedere il layout obbligatorio dei campi del corpo per submit_sm e deliver_sm. Nulla lascia il tuo dispositivo.

16 byte
Prova un esempio
command_length
160x00000010
command_id
enquire_link0x00000015
command_status
0x00000000

ESME_ROK — No error

sequence_number
10x00000001
Corpo (0 byte dopo l'header di 16 byte)

PDU di sola intestazione — nessun corpo (tipico di enquire_link, unbind e della maggior parte delle conferme _resp).

La risposta breve

Cos'è un PDU SMPP?

Un PDU (Protocol Data Unit) è un singolo messaggio SMPP sul canale. Ogni PDU — un bind, un submit_sm, una ricevuta di consegna, un enquire_link — inizia con lo stesso header di 16 byte composto da quattro interi a 32 bit big-endian: command_length (la lunghezza totale in byte, header incluso), command_id (quale operazione è), command_status (il risultato, che è 0 / ESME_ROK in una risposta riuscita) e sequence_number (usato per abbinare una risposta alla sua richiesta). Eventuali campi del corpo seguono l'header.

Il layout dell'header di 16 byte

SMPP v3.4 PDU header fields
ByteCampoSignificato
0–3command_lengthLunghezza totale del PDU in ottetti, header incluso.
4–7command_idIdentifica l'operazione (es. 0x00000004 = submit_sm).
8–11command_statusCodice di risultato; 0 = ESME_ROK. Significativo solo nelle risposte.
12–15sequence_numberCorrela una richiesta con la sua risposta.

Campi del corpo submit_sm / deliver_sm

Dopo l'header, un submit_sm o deliver_sm porta i suoi campi obbligatori in un ordine fisso, opzionalmente seguiti da parametri TLV (opzionali). Questo strumento elenca l'ordine; non analizza completamente le stringhe C-Octet di lunghezza variabile, poiché i loro limiti dipendono dai terminatori nulli e dal campo sm_length.

submit_sm / deliver_sm mandatory body fields
CampoTipoSignificato
service_typeC-Octet StringIndica il servizio applicativo SMS (nullo = predefinito).
source_addr_tonInteger (1)Tipo di numero del mittente.
source_addr_npiInteger (1)Indicatore del piano di numerazione del mittente.
source_addrC-Octet StringIndirizzo del mittente del messaggio.
dest_addr_tonInteger (1)Tipo di numero del destinatario.
dest_addr_npiInteger (1)Indicatore del piano di numerazione del destinatario.
destination_addrC-Octet StringMSISDN / codice breve di destinazione.
esm_classInteger (1)Modalità e tipo di messaggio (es. 0x04 = ricevuta di consegna).
protocol_idInteger (1)Identificatore di protocollo (specifico della rete).
priority_flagInteger (1)Livello di priorità del messaggio.
schedule_delivery_timeC-Octet StringOra di consegna programmata (nullo = immediato).
validity_periodC-Octet StringPeriodo di validità del messaggio (nullo = predefinito).
registered_deliveryInteger (1)Se è richiesta una ricevuta di consegna (DLR).
replace_if_present_flagInteger (1)Sostituire un messaggio esistente se presente.
data_codingInteger (1)Schema di codifica (0 = GSM-7, 8 = UCS-2).
sm_default_msg_idInteger (1)Identificatore di messaggio predefinito.
sm_lengthInteger (1)Lunghezza in ottetti del campo short_message.
short_messageOctet StringIl payload del messaggio (fino a 254 ottetti).

Domande frequenti

Quali sono i quattro campi dell'header SMPP?

Ogni PDU SMPP inizia con un header di 16 byte composto da quattro interi a 32 bit big-endian: command_length (lunghezza totale del PDU in ottetti, header incluso), command_id (l'operazione, come 0x00000004 per submit_sm), command_status (il codice di risultato, 0 = ESME_ROK) e sequence_number (che correla una risposta con la sua richiesta originaria).

Perché command_status è solitamente 0 nelle mie richieste?

command_status è significativo solo nei PDU di risposta e generic_nack. Nei PDU di richiesta (submit_sm, bind, enquire_link) è riservato e deve essere impostato a 0. Un valore diverso da zero in un _resp indica un errore — ad esempio 0x00000058 è ESME_RTHROTTLED.

Gli interi SMPP sono big-endian?

Sì. SMPP codifica gli interi multi-ottetto nell'ordine dei byte di rete (big-endian, byte più significativo per primo). Questo decodificatore legge ogni campo header di 4 byte come un intero senza segno a 32 bit big-endian.

Questo strumento decodifica il testo del messaggio?

Decodifica l'header fisso di 16 byte ed elenca l'ordine dei campi del corpo per submit_sm e deliver_sm, ma non analizza completamente il corpo di lunghezza variabile in valori singoli. Le stringhe C-Octet terminano con null e la lunghezza di short_message è portata in sm_length, quindi un'analisi completa del corpo dipende da questi limiti — questo strumento si attiene al layout dell'header basato sullo standard.

Dove posso cercare un command_status che non riconosco?

Usa il riferimento dei codici di errore SMPP, che elenca ogni valore command_status di SMPP v3.4 per nome esadecimale e simbolico con un significato in chiaro e la probabile causa e soluzione.

Hai bisogno di un vero bind SMPP?

BroadNet offre bind SMPP 3.4 diretti insieme a un'API REST e webhook di consegna in 200+ paesi. Parla con il nostro team di throughput e instradamento.