BroadNet
SMPPErreurs

Codes d'erreur command_status SMPP

Mis à jour le 3 min de lectureFondé sur des normes
Réponse directe

command_status est le champ d'en-tête de 4 octets qui rapporte le résultat d'une opération. Dans une requête il vaut 0 (ESME_ROK) ; dans une réponse il porte un code d'erreur ESME_R*. 0x00000000 est un succès ; les valeurs non nulles indiquent des fautes précises comme un mot de passe invalide, une limitation de débit ou une file de messages pleine.

§01

Comment fonctionne command_status

Chaque PDU de réponse renvoie le sequence_number de la requête et positionne command_status au résultat. ESME_ROK (0) signifie succès. Toute autre valeur est une erreur dont le code numérique correspond à une constante nommée ESME_R* de la spécification. Les codes 0x00000100–0x000003FF sont réservés aux extensions SMPP et 0x00000400–0x000004FF aux erreurs propres au fournisseur de SMSC ; gérez donc toujours les codes inconnus avec souplesse.

§02

Les codes que vous verrez vraiment

Un petit ensemble de codes couvre l'essentiel du traitement réel. Regroupez-les par réaction : réémission après temporisation (throttling, file pleine, erreur système), correction de la requête (adresse invalide, TON/NPI, data_coding, longueur de message), et fatal pour la session (mot de passe ou system id invalide, échec de bind).

Codes command_status fréquemment rencontrés
ValeurNomSignificationRéaction typique
0x00000000ESME_ROKAucune erreurSuccès
0x00000001ESME_RINVMSGLENLongueur du message invalideCorriger la charge utile / segment
0x00000005ESME_RALYBNDBind déjà établiNe pas refaire de bind ; réutiliser la session
0x0000000AESME_RINVSRCADRAdresse source invalideCorriger l'expéditeur / TON / NPI
0x0000000BESME_RINVDSTADRAdresse de destination invalideCorriger le MSISDN du destinataire
0x0000000DESME_RBINDFAILÉchec du bindTemporiser (backoff), vérifier les identifiants
0x0000000EESME_RINVPASWDMot de passe invalideErreur fatale — corriger les identifiants
0x0000000FESME_RINVSYSIDID système invalideErreur fatale — corriger les identifiants
0x00000014ESME_RMSGQFULFile d'attente de messages pleineTemporiser (backoff) et réessayer
0x00000043ESME_RINVESMCLASSesm_class invalideCorriger les bits esm_class
0x00000058ESME_RTHROTTLEDLimitation de débit — débit dépasséRalentir, backoff avec gigue (jitter)
0x00000062ESME_RINVEXPIRYvalidity_period invalideCorriger le format de validité
0x000000FEESME_RDELIVERYFAILUREÉchec de la livraison (data_sm)Inspecter / réessayer conformément à la politique
0x000000FFESME_RUNKNOWNERRErreur inconnueJournalisation, alerte, nouvelle tentative avec prudence
§03

Plages réservées et propres au fournisseur

Tous les codes que vous recevez ne sont pas dans la spécification centrale. Celle-ci réserve 0x00000100–0x000003FF à un usage SMPP futur et 0x00000400–0x000004FF aux codes propres au SMSC ; votre fournisseur peut donc renvoyer une valeur que seule sa documentation explique. Faites correspondre les codes propres au fournisseur à une taxonomie interne normalisée (numéro invalide, bloqué, throttled, échec temporaire) pour que la qualité reste comparable entre routes.

Plages réservées de command_status
PlageRéservé à
0x00000100 – 0x000003FFExtensions du protocole SMPP
0x00000400 – 0x000004FFErreurs spécifiques au fournisseur SMSC
0x00000500 – 0xFFFFFFFFRéservé
FAQ

Questions fréquemment posées

Que signifie ESME_RTHROTTLED et comment le gérer ?

ESME_RTHROTTLED (0x00000058) signifie que vous avez dépassé votre débit de messages autorisé. Arrêtez d'augmenter la charge, suspendez les submits et temporisez avec gigue avant de réessayer. Persister au même débit risque de faire tomber le bind par le fournisseur.

ESME_RINVPASWD est-il récupérable ?

Non, pas à l'exécution. ESME_RINVPASWD (0x0000000E) indique des identifiants erronés. Ne rebouclez pas le bind à chaud ; corrigez la configuration system_id/password et reconnectez-vous. Des binds échoués répétés peuvent déclencher un blocage d'IP.

Quelle différence entre ESME_RMSGQFUL et ESME_RTHROTTLED ?

ESME_RMSGQFUL (0x00000014) signifie que la file du SMSC est temporairement pleine ; ESME_RTHROTTLED (0x00000058) signifie que vous avez dépassé votre limite de débit. Les deux appellent une temporisation, mais le throttling concerne votre TPS tandis que la file pleine concerne la capacité du SMSC.

J'ai reçu un code d'erreur absent de la spécification — pourquoi ?

Le SMPP réserve 0x400–0x4FF aux codes propres au fournisseur de SMSC ; votre fournisseur peut donc renvoyer une valeur documentée par lui seul. Consultez sa table d'erreurs et faites-la correspondre à votre taxonomie interne.

Références

Spécifications sources

Les normes publiées sur lesquelles repose cette page. S'ouvre dans un nouvel onglet.

BNMaintenu par l'équipe d'ingénierie BroadNet·Messagerie de qualité opérateur depuis 2003
Placez-le sur le fil

Conçu avec une véritable liaison SMPP et une API REST.

Demandez un accès de test avec de véritables clés de test : envoyez d’abord à votre propre numéro vérifié, puis passez en production dans plus de 200 pays une fois que votre identité d’expéditeur et vos routes seront approuvées.