BroadNet
SMPPErrori

Codici di errore command_status di SMPP

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

command_status è il campo dell'header da 4 byte che riporta l'esito di un'operazione. In una richiesta vale 0 (ESME_ROK); in una risposta trasporta un codice di errore ESME_R*. 0x00000000 indica successo; i valori diversi da zero indicano guasti specifici come password non valida, throttling o coda dei messaggi piena.

§01

Come funziona command_status

Ogni PDU di risposta riporta il sequence_number della richiesta e imposta command_status con il risultato. ESME_ROK (0) indica successo. Qualsiasi altro valore è un errore il cui codice numerico corrisponde a una costante ESME_R* con nome nella specifica. I codici 0x00000100–0x000003FF sono riservati alle estensioni SMPP e i codici 0x00000400–0x000004FF agli errori specifici del fornitore dell'SMSC, quindi gestite sempre con eleganza i codici sconosciuti.

§02

I codici che vedrete davvero

Un piccolo insieme di codici copre la maggior parte della gestione reale. Raggruppateli per risposta: da riprovare dopo backoff (throttling, coda piena, errore di sistema), da correggere nella richiesta (indirizzo, TON/NPI, data_coding, lunghezza del messaggio non validi) e fatali per la sessione (password o system id non validi, bind fallito).

Codici command_status frequenti
ValoreNomeSignificatoReazione tipica
0x00000000ESME_ROKNessun erroreSuccesso
0x00000001ESME_RINVMSGLENLunghezza del messaggio non validaCorreggere payload / segmento
0x00000005ESME_RALYBNDBind già attivoNon rieseguire il bind; riutilizzare la sessione
0x0000000AESME_RINVSRCADRIndirizzo sorgente non validoCorreggere il mittente / TON / NPI
0x0000000BESME_RINVDSTADRIndirizzo di destinazione non validoCorreggere l'MSISDN del destinatario
0x0000000DESME_RBINDFAILBind non riuscitoBackoff, verificare le credenziali
0x0000000EESME_RINVPASWDPassword non validaFatale — correggere le credenziali
0x0000000FESME_RINVSYSIDID di sistema non validoFatale — correggere le credenziali
0x00000014ESME_RMSGQFULCoda dei messaggi pienaBackoff e nuovo tentativo
0x00000043ESME_RINVESMCLASSesm_class non validoCorreggere i bit esm_class
0x00000058ESME_RTHROTTLEDThrottling — velocità superataRallentare, backoff con jitter
0x00000062ESME_RINVEXPIRYvalidity_period non validoCorreggere il formato della validità
0x000000FEESME_RDELIVERYFAILUREMancata consegna (data_sm)Ispezionare / riprovare secondo la policy
0x000000FFESME_RUNKNOWNERRErrore sconosciutoRegistra, avvisa, riprova con cautela
§03

Intervalli riservati e specifici del fornitore

Non tutti i codici che ricevete sono nella specifica di base. La specifica riserva 0x00000100–0x000003FF a usi futuri di SMPP e 0x00000400–0x000004FF a codici specifici dell'SMSC, quindi il vostro provider può restituire un valore spiegato solo nella sua documentazione. Mappate i codici specifici del provider su una tassonomia interna normalizzata (numero non valido, bloccato, throttled, guasto temporaneo) affinché la qualità tra le rotte resti comparabile.

Intervalli riservati di command_status
IntervalloRiservato a
0x00000100 – 0x000003FFEstensioni del protocollo SMPP
0x00000400 – 0x000004FFErrori specifici del fornitore SMSC
0x00000500 – 0xFFFFFFFFRiservato
FAQ

Domande frequenti

Cosa significa ESME_RTHROTTLED e come dovrei gestirlo?

ESME_RTHROTTLED (0x00000058) indica che avete superato la velocità di invio consentita. Smettete di aumentare il carico, sospendete i submit ed eseguite un backoff con jitter prima di riprovare. Insistere alla stessa velocità rischia che il provider chiuda il bind.

ESME_RINVPASWD è recuperabile?

No, non a runtime. ESME_RINVPASWD (0x0000000E) indica credenziali errate. Non ripetete il bind in loop; correggete la configurazione di system_id/password e riconnettetevi. Bind ripetutamente falliti possono innescare il blocco dell'IP.

Qual è la differenza tra ESME_RMSGQFUL e ESME_RTHROTTLED?

ESME_RMSGQFUL (0x00000014) indica che la coda dell'SMSC è temporaneamente piena; ESME_RTHROTTLED (0x00000058) indica che avete superato il vostro limite di velocità. Entrambi richiedono un backoff, ma il throttling riguarda il vostro TPS mentre la coda piena riguarda la capacità dell'SMSC.

Ho ricevuto un codice di errore non presente nella specifica — perché?

SMPP riserva l'intervallo 0x400–0x4FF ai codici specifici del fornitore dell'SMSC, quindi il vostro provider può restituire un valore documentato solo da lui. Consultate la tabella degli errori del provider e mappatelo sulla vostra tassonomia interna.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.