Un'applicazione può inviare un messaggio prima che il telefono del destinatario diventi raggiungibile. Una connessione SMPP trasporta quell'invio e le operazioni successive che riportano l'esito.
Cosa trasporta la connessione?
SMPP trasporta invii di messaggi, messaggi in arrivo e report di consegna tra i sistemi connessi.
La tua applicazione può connettersi a un gateway che instrada il traffico oltre. Può anche connettersi direttamente a un centro messaggi se il provider supporta questa configurazione.
Il riferimento SMPP descrive questi ruoli e operazioni. Un centro messaggi memorizza i messaggi e li inoltra verso i destinatari.
Un gateway tra la tua applicazione e il centro aggiunge un ulteriore passaggio di instradamento. Il nome del protocollo da solo non indica quanti sistemi gestiscono il messaggio.
Come funziona una sessione SMPP?
Il tuo client apre una connessione. Autentica la sessione e la mantiene disponibile per le operazioni sui messaggi.
Il passaggio di autenticazione si chiama bind. Una sessione transmitter invia messaggi. Una sessione receiver li riceve. Una sessione transceiver supporta entrambe le direzioni.
Usa il tipo di sessione richiesto dal tuo workflow. Una connessione di solo invio non può sostituire una sessione di ricezione quando servono operazioni in entrata.
Il tuo client deve ripristinarsi dalla perdita di connessione. Deve anche confermare le operazioni che riceve. Tieni traccia delle richieste in attesa di risposta, in modo da associare una risposta ritardata alla richiesta corretta.
Una risposta di invio dimostra la consegna?
Una risposta di invio indica se il servizio connesso ha accettato l'invio, non se il telefono ha ricevuto il messaggio.
L'operazione submit_sm invia un messaggio. La corrispondente submit_sm_resp riporta il risultato di quella richiesta.
Messaggi in arrivo e ricevute di consegna possono arrivare tramite deliver_sm. Il riferimento sulle ricevute di consegna spiega le operazioni di ricevuta e il loro contenuto.
Mantieni separato il risultato dell'invio dal risultato della consegna nella tua applicazione. Un messaggio può essere accettato e successivamente fallire perché il destinatario resta irraggiungibile.
Cosa cambia quando uso un HTTP API?
HTTP espone operazioni di richiesta e risposta senza richiedere alla tua applicazione di gestire un bind SMPP.
La tua applicazione deve comunque gestire i tentativi. Deve anche elaborare gli esiti di consegna successivi. HTTP non trasforma la consegna asincrona di un operatore in una garanzia sincrona.
Con Bird, invii tramite POST /v1/sms/messages e tieni traccia dell'identificativo del messaggio restituito. La guida all'invio spiega la risposta di accettazione 202. Eventi SMS fornisce i report di consegna successivi.
Queste responsabilità di API sono separate dalla gestione di una connessione SMPP verso un provider. API e gateway spiega i livelli.
Usare SMPP rende i provider intercambiabili?
I provider non sono intercambiabili solo perché condividono un protocollo. Possono supportare operazioni, codifiche e limiti diversi.
Testa le funzionalità usate dalla tua applicazione prima di spostare il traffico. Un bind riuscito non dimostra che ogni operazione necessaria funzioni su quel provider.
Il riferimento sui gateway consiglia di testare il supporto all'implementazione e le prestazioni. Mantieni i tuoi controlli di consegna quando cambi connessione, anziché trattare un nuovo endpoint come una migrazione completa.
Quando scegliere SMPP?
Scegli SMPP quando un sistema esistente necessita di un bind persistente o di operazioni in entrata specifiche di SMPP.
- Usa HTTP per una nuova applicazione senza requisiti SMPP specifici.
- Usa SMPP quando un sistema esistente necessita di un bind persistente o di operazioni in entrata specifiche di SMPP.
- Testa il supporto del provider e gli esiti di consegna prima di spostare il traffico di produzione.
In breve
Il tuo client gestisce una sessione.
Autentica la connessione e gestisce il ripristino quando la connessione cade.
Invio e consegna sono operazioni diverse.
Una risposta di invio riuscita non dimostra che il dispositivo abbia ricevuto il messaggio.
Il supporto varia tra i provider.
Testa operazioni, codifica e capacità anziché dare per scontato che il protocollo renda i provider intercambiabili.
HTTP può evitare la gestione della sessione SMPP.
HTTP evita la gestione di un bind SMPP, mentre la tua applicazione continua a gestire gli eventi di consegna.