Les codes d'erreur SMPP sont les valeurs command_status qu'un fournisseur renvoie dans des réponses comme submit_sm_resp. 0x00000000 (ESME_ROK) signifie accepté ; toute autre valeur est une erreur, par exemple 0x0B adresse de destination invalide, 0x14 file pleine ou 0x58 throttling. Certaines erreurs sont temporaires et méritent une nouvelle tentative, d'autres sont définitives et ne doivent pas être réessayées.
Où apparaissent les codes
Chaque PDU de réponse SMPP porte un champ command_status. Quand vous envoyez un submit_sm, le fournisseur répond par un submit_sm_resp : le statut 0 accompagné d'un message ID signifie que le message a été accepté pour livraison, un statut non nul qu'il a été rejeté à la soumission. Ces codes sont différents du champ err des accusés de réception, qui arrive plus tard et décrit ce qui s'est passé sur le réseau. Pour ceux-là, voir les statuts des accusés de réception SMS.
Codes les plus courants (SMPP 3.4)
| Code | Nom | Signification | Réessayer ? |
|---|---|---|---|
| 0x00 | ESME_ROK | Pas d'erreur | Inutile |
| 0x01 | ESME_RINVMSGLEN | Longueur de message invalide | Non, corrigez le message |
| 0x02 | ESME_RINVCMDLEN | Longueur de commande invalide | Non, corrigez le client |
| 0x04 | ESME_RINVBNDSTS | Statut de bind incorrect pour cette commande (par exemple soumission sur un bind receiver) | Non, corrigez le bind |
| 0x05 | ESME_RALYBND | Déjà connecté | Non |
| 0x08 | ESME_RSYSERR | Erreur système chez le fournisseur | Oui, plus tard |
| 0x0A | ESME_RINVSRCADR | Adresse source invalide (sender ID) | Non |
| 0x0B | ESME_RINVDSTADR | Adresse de destination invalide | Non |
| 0x0D | ESME_RBINDFAIL | Échec du bind | Après vérification des identifiants et des limites |
| 0x0E | ESME_RINVPASWD | Mot de passe invalide | Non |
| 0x0F | ESME_RINVSYSID | System ID invalide | Non |
| 0x14 | ESME_RMSGQFUL | File de messages pleine | Oui, avec délai croissant |
| 0x45 | ESME_RSUBMITFAIL | Échec du submit_sm (générique) | Selon le cas, demandez au fournisseur |
| 0x48 / 0x49 | ESME_RINVSRCTON / NPI | TON ou NPI source invalide | Non, corrigez les paramètres d'adresse |
| 0x50 / 0x51 | ESME_RINVDSTTON / NPI | TON ou NPI de destination invalide | Non, corrigez les paramètres d'adresse |
| 0x58 | ESME_RTHROTTLED | Erreur de throttling, trop de messages par seconde | Oui, ralentissez |
| 0x61 | ESME_RINVSCHED | Heure de livraison programmée invalide | Non |
| 0x62 | ESME_RINVEXPIRY | Période de validité invalide | Non |
| 0x64 | ESME_RX_T_APPN | Erreur temporaire de l'application réceptrice | Oui |
| 0x65 | ESME_RX_P_APPN | Erreur définitive de l'application réceptrice | Non |
| 0x66 | ESME_RX_R_APPN | Message rejeté par l'application réceptrice | Non |
| 0xFF | ESME_RUNKNOWNERR | Erreur inconnue | À analyser |
Les codes 0x0400 à 0x04FF sont réservés aux erreurs propres à chaque éditeur. Beaucoup de fournisseurs les utilisent pour des règles commerciales comme « pas de crédit », « destination non autorisée », « sender ID non enregistré » ou « contenu bloqué ». Demandez sa propre table à chaque fournisseur.
Causes typiques et corrections
- Destination invalide (0x0B) : numéro pas au format international, zéro initial ou signe plus là où le fournisseur ne l'attend pas, ou pays non activé sur votre compte. Envoyez les numéros en chiffres E.164 et vérifiez les paramètres TON/NPI (en général TON 1, NPI 1 pour les numéros internationaux).
- Source invalide (0x0A) : expéditeur alphanumérique de plus de 11 caractères, mauvais TON pour un expéditeur alphanumérique (en général TON 5), ou sender ID non autorisé ou non enregistré sur cette route. Voir les types de sender ID SMS.
- Longueur de message invalide (0x01) : texte trop long pour un seul PDU, souvent un message long envoyé sans découpage correct. Voir les SMS longs concaténés.
- Throttling (0x58) et file pleine (0x14) : vous dépassez votre TPS ou le fournisseur est congestionné. Voir binds SMPP et TPS.
- Échecs de bind (0x0D, 0x0E, 0x0F) : identifiants faux, IP non autorisée, ou plus de binds qu'autorisé.
Construire une politique de nouvelles tentatives
- Classez chaque code, y compris les codes éditeur, comme temporaire ou définitif.
- Réessayez les erreurs temporaires avec des délais croissants (par exemple 1, 5, 30 secondes), et arrêtez après quelques tentatives.
- Pour les OTP, basculer vers une deuxième route vaut en général mieux qu'attendre. Voir les bonnes pratiques des OTP par SMS.
- Ne réessayez jamais en boucle les erreurs définitives : cela gaspille du débit et peut faire signaler votre compte.
- Journalisez le code par destination et par fournisseur pour repérer vite les nouveaux rejets.
Obtenir de l'aide sur une route
Une hausse soudaine d'un code d'erreur signale souvent un changement de configuration ou de règle chez le fournisseur. Quand VoIPMatcher gère vos routes SMS A2P, nous traitons avec le fournisseur pour vous. Demandez une route SMPP.
Questions fréquentes
Qu'est-ce que le code d'erreur SMPP 69 ?
L'erreur 69 vaut 0x45 en hexadécimal, ESME_RSUBMITFAIL : le submit_sm a échoué pour une raison que le code ne précise pas. Certaines plateformes l'utilisent pour des règles commerciales comme un crédit insuffisant ou une destination non activée. Faut-il réessayer ? Cela dépend de la cause : demandez au fournisseur ce qui la déclenche de son côté.
Qu'est-ce que le code d'erreur SMPP 88 ?
L'erreur 88 vaut 0x58 en hexadécimal, ESME_RTHROTTLED : vous envoyez plus de messages par seconde que votre compte ou votre bind ne le permet. Elle est temporaire. Ralentissez et réessayez avec des délais croissants plutôt qu'immédiatement, et vérifiez si la limite de TPS s'applique par bind ou à tout le compte.
Qu'est-ce que le code d'erreur SMPP 11 ?
L'erreur 11 vaut 0x0B, ESME_RINVDSTADR : adresse de destination invalide. Le numéro est en général dans un mauvais format, avec un zéro initial ou un signe plus que le fournisseur n'attend pas, ou le pays n'est pas activé sur votre compte. Envoyez les numéros en chiffres E.164 internationaux avec TON 1 et NPI 1, et ne réessayez pas sans modification.
Qu'est-ce que le code d'erreur SMPP 13 ?
L'erreur 13 vaut 0x0D, ESME_RBINDFAIL : la demande de bind a été refusée. Causes fréquentes : identifiants faux, adresse IP non autorisée par le fournisseur ou plus de binds simultanés qu'autorisé. Vérifiez le system_id, le mot de passe et l'IP source, fermez les anciennes sessions et confirmez la limite de binds avant de réessayer.
Qu'est-ce que le code d'erreur SMPP 255 ?
L'erreur 255 vaut 0xFF, ESME_RUNKNOWNERR : erreur inconnue. La plateforme du fournisseur n'a pas pu associer l'échec à un code standard. Ne réessayez pas en boucle. Notez la destination, le sender ID et l'heure, et envoyez des exemples au fournisseur, qui pourra vérifier ses propres journaux et sa connexion amont.
Besoin d'une route ?
Indiquez la destination, le type de route et le tarif cible. Nous vous répondons avec ce que nous pouvons fournir.