SMS

Cos'è una conferma di consegna (DLR) e quanto è affidabile?

Una conferma di consegna (DLR) riporta l'esito di consegna in rete di un messaggio di testo, ma non stabilisce che qualcuno lo abbia letto.

La tua richiesta di invio può avere successo prima che il telefono del destinatario riceva qualcosa. Un report successivo dell'operatore fornisce un altro risultato, che la tua applicazione deve gestire separatamente dall'accettazione della richiesta.

Cosa mi dice una conferma di consegna?

Una conferma riporta il successo della consegna o un problema di consegna dal punto di vista della rete.

Un risultato di consegna SMS può arrivare mentre il telefono resta in un cassetto senza essere letto. Non dimostra che il destinatario abbia visto l'identità del mittente. Non stabilisce nemmeno che abbia letto il testo completo.

La rete invia le conferme separatamente dalla risposta a una richiesta di invio. Può anche sopprimere alcuni report. Il riferimento per le conferme SMPP documenta questi controlli per le connessioni con l'operatore.

Quali conferme dell'operatore espone Bird?

Ricevi eventi pubblici per gli esiti di consegna riconosciuti. Le conferme in buffer restano interne.

Una conferma in buffer indica che l'operatore sta trattenendo il messaggio. Bird la registra nel proprio log eventi interno senza modificare lo stato pubblico del messaggio. Non vedi aggiornamenti nella timeline pubblica né nei tuoi webhook.

Stato conferma dell'operatoreEvento Bird
deliveredsms.delivered
expiredsms.expired
rejectedsms.rejected
delivery_failed con un motivo recuperabilesms.undelivered
delivery_failed con un motivo permanente o non mappatosms.failed
bufferedNessun evento pubblico

Uno stato dell'operatore non riconosciuto non produce alcun evento. L'assenza di un aggiornamento pubblico non stabilisce quindi che l'operatore non abbia inviato alcuna conferma.

Perché uno stesso stato di fallimento produce eventi diversi?

Bird usa il motivo di fallimento dell'operatore per decidere se il problema sottostante può risolversi.

Motivo dell'operatoreCodice di errore BirdClassificazione
unavailable_subscriberunreachableRecuperabile
received_network_errorprovider_unavailableRecuperabile
capacity_limit_reachedprovider_unavailableRecuperabile
unknown_subscriberinvalid_destinationPermanente
opted_outrecipient_opted_outPermanente
carrier_rejectedcontent_rejectedPermanente

Un fallimento recuperabile produce sms.undelivered. Il messaggio è comunque definitivo: Bird non lo reinvia automaticamente. Per raggiungere il destinatario serve un altro invio dopo che il problema sottostante si risolve.

Un fallimento permanente produce sms.failed. Anche un motivo non mappato produce lo stesso evento con il codice di errore unknown. Quel risultato significa che Bird non ha potuto classificare il motivo dell'operatore. Non dimostra in modo indipendente che la destinazione sia permanentemente irraggiungibile.

Posso impostare quando l'operatore smette di riprovare?

Non puoi impostare la scadenza di consegna dell'operatore tramite l'endpoint di invio di Bird.

Bird rifiuta qualsiasi valore fornito per validity_period con HTTP 422 SMSUnsupportedFeature. Quel campo controllerebbe per quanto tempo l'operatore continua a tentare la consegna del testo.

Il campo di risposta corrispondente non viene restituito. Bird produce sms.expired quando un operatore segnala la scadenza. La tua applicazione non può dedurre il periodo di attesa dell'operatore da un campo assente.

Come devo gestire le conferme nella mia applicazione?

Dovresti tracciare gli esiti di consegna separatamente dall'accettazione della richiesta e da qualsiasi azione del destinatario.

Considera un messaggio senza un risultato di consegna definitivo come in sospeso. Leggi il codice di errore con un evento di fallimento per poterne indagare la causa. Conserva i codici sconosciuti nei tuoi log perché l'insieme dei codici di errore è estensibile.

Usa gli eventi di consegna come metrica di recapito. Per un flusso con codice di verifica o conferma, registra il successo quando il destinatario completa l'azione. Una conferma di consegna da sola non può fornire quella misura.

Eventi SMS documenta i payload degli eventi pubblici e la timeline dei messaggi.

In breve

  1. La consegna non stabilisce la lettura.

    Una conferma riporta l'esito di consegna della rete senza confermare che una persona abbia visto il testo.

  2. Alcune conferme non hanno un evento pubblico.

    Bird registra internamente le conferme in buffer senza modificare lo stato pubblico, la timeline o il flusso webhook.

  3. Il motivo determina l'evento di fallimento.

    I motivi dell'operatore recuperabili producono sms.undelivered; i motivi permanenti o non mappati producono sms.failed.

  4. Un motivo recuperabile non attiva un altro invio.

    Un messaggio non consegnato è definitivo, quindi un altro tentativo richiede un invio separato.

Mettilo in pratica.

Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.

Ottieni un brief di implementazione

Costruisci sulla stessa rete.

Una chiave API di test è subito tua. L'accesso alla produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

La tua prossima idea.
Pronta a partire.