I codici di errore SMPP sono i valori command_status che un fornitore restituisce in risposte come submit_sm_resp. 0x00000000 (ESME_ROK) significa accettato; qualsiasi altro valore è un errore, per esempio 0x0B indirizzo di destinazione non valido, 0x14 coda piena o 0x58 throttling. Alcuni errori sono temporanei e vale la pena riprovare, altri sono definitivi e non vanno ripetuti.
Dove compaiono i codici
Ogni PDU di risposta SMPP contiene un campo command_status. Quando invii submit_sm, il fornitore risponde con submit_sm_resp: stato 0 più un message ID significa che il messaggio è stato accettato per la consegna, uno stato diverso da zero significa che è stato rifiutato all'invio. Questi codici sono diversi dal campo err nei DLR, che arriva dopo e descrive cosa è successo sulla rete. Per quelli, vedi stati dei DLR SMS.
I codici più comuni (SMPP 3.4)
| Codice | Nome | Significato | Riprovare? |
|---|---|---|---|
| 0x00 | ESME_ROK | Nessun errore | Non serve |
| 0x01 | ESME_RINVMSGLEN | Lunghezza del messaggio non valida | No, correggi il messaggio |
| 0x02 | ESME_RINVCMDLEN | Lunghezza del comando non valida | No, correggi il client |
| 0x04 | ESME_RINVBNDSTS | Stato del bind non corretto per questo comando (per esempio un invio su un bind receiver) | No, correggi il bind |
| 0x05 | ESME_RALYBND | Bind già attivo | No |
| 0x08 | ESME_RSYSERR | Errore di sistema presso il fornitore | Sì, più tardi |
| 0x0A | ESME_RINVSRCADR | Indirizzo sorgente (sender ID) non valido | No |
| 0x0B | ESME_RINVDSTADR | Indirizzo di destinazione non valido | No |
| 0x0D | ESME_RBINDFAIL | Bind fallito | Dopo aver controllato credenziali e limiti |
| 0x0E | ESME_RINVPASWD | Password non valida | No |
| 0x0F | ESME_RINVSYSID | System ID non valido | No |
| 0x14 | ESME_RMSGQFUL | Coda dei messaggi piena | Sì, con attese crescenti |
| 0x45 | ESME_RSUBMITFAIL | submit_sm fallito (generico) | Dipende, chiedi al fornitore |
| 0x48 / 0x49 | ESME_RINVSRCTON / NPI | TON o NPI sorgente non validi | No, correggi le impostazioni dell'indirizzo |
| 0x50 / 0x51 | ESME_RINVDSTTON / NPI | TON o NPI di destinazione non validi | No, correggi le impostazioni dell'indirizzo |
| 0x58 | ESME_RTHROTTLED | Errore di throttling, troppi messaggi al secondo | Sì, rallenta |
| 0x61 | ESME_RINVSCHED | Orario di consegna programmata non valido | No |
| 0x62 | ESME_RINVEXPIRY | Periodo di validità non valido | No |
| 0x64 | ESME_RX_T_APPN | Errore temporaneo dell'applicazione ricevente | Sì |
| 0x65 | ESME_RX_P_APPN | Errore permanente dell'applicazione ricevente | No |
| 0x66 | ESME_RX_R_APPN | Messaggio rifiutato dall'applicazione ricevente | No |
| 0xFF | ESME_RUNKNOWNERR | Errore sconosciuto | Da indagare |
I codici da 0x0400 a 0x04FF sono riservati agli errori specifici dei vendor. Molti fornitori li usano per regole commerciali come "credito esaurito", "destinazione non consentita", "sender ID non registrato" o "contenuto bloccato". Chiedi a ogni fornitore la sua tabella.
Cause tipiche e soluzioni
- Destinazione non valida (0x0B): numero non in formato internazionale, uno zero iniziale o un segno più dove il fornitore non se lo aspetta, oppure un paese non abilitato sul tuo account. Invia i numeri come cifre E.164 e controlla le impostazioni TON/NPI (di solito TON 1, NPI 1 per i numeri internazionali).
- Sorgente non valida (0x0A): mittente alfanumerico più lungo di 11 caratteri, TON sbagliato per un mittente alfanumerico (di solito TON 5), oppure un sender ID non consentito o non registrato su quella rotta. Vedi tipi di sender ID SMS.
- Lunghezza del messaggio non valida (0x01): testo troppo lungo per una sola PDU, spesso un messaggio lungo inviato senza la corretta suddivisione. Vedi SMS lunghi concatenati.
- Throttling (0x58) e coda piena (0x14): sei sopra il tuo TPS o il fornitore è congestionato. Vedi bind SMPP e TPS.
- Bind falliti (0x0D, 0x0E, 0x0F): credenziali sbagliate, IP non in whitelist o più bind di quelli consentiti.
Costruire una politica di ritentativi
- Classifica ogni codice, compresi quelli dei vendor, come temporaneo o definitivo.
- Riprova gli errori temporanei con attese crescenti (per esempio 1, 5, 30 secondi) e fermati dopo pochi tentativi.
- Per gli OTP, passare a una seconda rotta di solito è meglio che aspettare. Vedi buone pratiche per gli SMS OTP.
- Non riprovare mai in loop gli errori definitivi: spreca throughput e può far segnalare il tuo account.
- Registra il codice per destinazione e per fornitore, così noti in fretta i nuovi rifiuti.
Aiuto con una rotta
Un aumento improvviso di un codice di errore spesso indica una modifica di configurazione o di regole dal lato del fornitore. Quando VoIPMatcher gestisce le tue rotte SMS A2P, siamo noi a parlare con il fornitore. Richiedi una rotta SMPP.
Domande frequenti
Cos'è il codice di errore SMPP 69?
L'errore 69 è 0x45 in esadecimale, ESME_RSUBMITFAIL: il submit_sm è fallito per un motivo che il codice da solo non specifica. Alcune piattaforme lo usano per regole commerciali come credito mancante o destinazione non abilitata. Se riprovare dipende dalla causa, quindi chiedi al fornitore cosa lo fa scattare dalla sua parte.
Cos'è il codice di errore SMPP 88?
L'errore 88 è 0x58 in esadecimale, ESME_RTHROTTLED: stai inviando più messaggi al secondo di quanti ne consenta il tuo account o bind. È temporaneo. Rallenta e riprova con attese crescenti invece che subito, e verifica se il limite TPS vale per bind o per l'intero account.
Cos'è il codice di errore SMPP 11?
L'errore 11 è 0x0B, ESME_RINVDSTADR: indirizzo di destinazione non valido. Di solito il numero è nel formato sbagliato, con uno zero iniziale o un segno più che il fornitore non si aspetta, oppure il paese non è abilitato sul tuo account. Invia i numeri come cifre E.164 internazionali con TON 1 e NPI 1, e non riprovare senza modifiche.
Cos'è il codice di errore SMPP 13?
L'errore 13 è 0x0D, ESME_RBINDFAIL: la richiesta di bind è stata rifiutata. Le cause comuni sono credenziali sbagliate, un indirizzo IP non in whitelist presso il fornitore o più bind contemporanei di quelli consentiti. Controlla system_id, password e IP sorgente, chiudi le vecchie sessioni e conferma il limite di bind prima di riprovare.
Cos'è il codice di errore SMPP 255?
L'errore 255 è 0xFF, ESME_RUNKNOWNERR: errore sconosciuto. La piattaforma del fornitore non è riuscita a ricondurre il guasto a un codice standard. Non riprovare in loop. Registra destinazione, sender ID e orario, e manda degli esempi al fornitore, che può controllare i propri log e il collegamento a monte.
Ti serve una rotta?
Mandaci destinazione, tipo di rotta e tariffa target. Ti rispondiamo con quello che possiamo offrirti.