BroadNet
SMPP v3.4 · fonctionne dans votre navigateur

Décodeur de PDU SMPP.

Collez l'hexadécimal d'un PDU SMPP v3.4 pour décoder son en-tête de 16 octets — command_length, command_id (avec son nom), command_status et sequence_number — et voir la disposition obligatoire des champs de corps pour submit_sm et deliver_sm. Rien ne quitte votre appareil.

16 octets
Essayez un exemple
command_length
160x00000010
command_id
enquire_link0x00000015
command_status
0x00000000

ESME_ROK — No error

sequence_number
10x00000001
Corps (0 octets après l'en-tête de 16 octets)

PDU limité à l'en-tête — pas de corps (typique de enquire_link, unbind et de la plupart des accusés _resp).

En bref

Qu'est-ce qu'un PDU SMPP ?

Un PDU (Protocol Data Unit) est un message SMPP unique sur le fil. Chaque PDU — un bind, un submit_sm, un accusé de réception, un enquire_link — commence par le même en-tête de 16 octets composé de quatre entiers 32 bits big-endian : command_length (la longueur totale en octets, en-tête inclus), command_id (l'opération concernée), command_status (le résultat, 0 / ESME_ROK sur une réponse réussie) et sequence_number (utilisé pour faire correspondre une réponse à sa requête). Les éventuels champs de corps suivent l'en-tête.

La disposition de l'en-tête de 16 octets

SMPP v3.4 PDU header fields
OctetsChampSignification
0–3command_lengthLongueur totale du PDU en octets, en-tête inclus.
4–7command_idIdentifie l'opération (par ex. 0x00000004 = submit_sm).
8–11command_statusCode de résultat ; 0 = ESME_ROK. Significatif uniquement sur les réponses.
12–15sequence_numberFait correspondre une requête à sa réponse.

Champs de corps submit_sm / deliver_sm

Après l'en-tête, un submit_sm ou deliver_sm porte ses champs obligatoires dans un ordre fixe, éventuellement suivis de paramètres TLV (optionnels). Cet outil liste l'ordre ; il n'analyse pas entièrement les chaînes C-Octet de longueur variable, car leurs limites dépendent des terminateurs nuls et du champ sm_length.

submit_sm / deliver_sm mandatory body fields
ChampTypeSignification
service_typeC-Octet StringIndique le service applicatif SMS (nul = par défaut).
source_addr_tonInteger (1)Type de numéro de l'expéditeur.
source_addr_npiInteger (1)Indicateur de plan de numérotation de l'expéditeur.
source_addrC-Octet StringAdresse de l'émetteur du message.
dest_addr_tonInteger (1)Type de numéro du destinataire.
dest_addr_npiInteger (1)Indicateur de plan de numérotation du destinataire.
destination_addrC-Octet StringMSISDN / code court de destination.
esm_classInteger (1)Mode et type de message (par ex. 0x04 = accusé de réception).
protocol_idInteger (1)Identifiant de protocole (spécifique au réseau).
priority_flagInteger (1)Niveau de priorité du message.
schedule_delivery_timeC-Octet StringHeure de livraison programmée (nul = immédiat).
validity_periodC-Octet StringPériode de validité du message (nul = par défaut).
registered_deliveryInteger (1)Indique si un accusé de réception (DLR) est demandé.
replace_if_present_flagInteger (1)Remplacer un message existant s'il est présent.
data_codingInteger (1)Schéma d'encodage (0 = GSM-7, 8 = UCS-2).
sm_default_msg_idInteger (1)Identifiant de message prédéfini.
sm_lengthInteger (1)Longueur en octets du champ short_message.
short_messageOctet StringLa charge utile du message (jusqu'à 254 octets).

Questions fréquentes

Quels sont les quatre champs de l'en-tête SMPP ?

Chaque PDU SMPP commence par un en-tête de 16 octets composé de quatre entiers 32 bits big-endian : command_length (longueur totale du PDU en octets, en-tête inclus), command_id (l'opération, comme 0x00000004 pour submit_sm), command_status (le code de résultat, 0 = ESME_ROK) et sequence_number (qui fait correspondre une réponse à sa requête d'origine).

Pourquoi command_status vaut-il généralement 0 sur mes requêtes ?

command_status n'est significatif que sur les PDU de réponse et generic_nack. Sur les PDU de requête (submit_sm, bind, enquire_link), il est réservé et doit être mis à 0. Une valeur non nulle sur un _resp indique une erreur — par exemple 0x00000058 est ESME_RTHROTTLED.

Les entiers SMPP sont-ils en big-endian ?

Oui. SMPP encode les entiers multi-octets dans l'ordre des octets réseau (big-endian, octet le plus significatif en premier). Ce décodeur lit chaque champ d'en-tête de 4 octets comme un entier non signé 32 bits big-endian.

Cet outil décode-t-il le texte du message ?

Il décode l'en-tête fixe de 16 octets et liste l'ordre des champs de corps pour submit_sm et deliver_sm, mais n'analyse pas le corps de longueur variable en valeurs individuelles. Les chaînes C-Octet sont terminées par un caractère nul et la longueur de short_message est portée dans sm_length ; une analyse complète du corps dépend donc de ces limites — cet outil s'en tient à la disposition d'en-tête normalisée.

Où puis-je rechercher un command_status que je ne reconnais pas ?

Utilisez la référence des codes d'erreur SMPP, qui liste chaque valeur command_status de SMPP v3.4 par son nom hexadécimal et symbolique, avec une signification en clair et la cause et la correction probables.

Besoin d'un véritable bind SMPP ?

BroadNet propose des liaisons SMPP 3.4 directes ainsi qu'une API REST et des webhooks de remise dans 200+ pays. Parlez à notre équipe du débit et du routage.