Un bind SMPP è una sessione autenticata tra la tua piattaforma e il fornitore SMS, e il TPS (transazioni o messaggi al secondo) è quanti messaggi puoi inviare al secondo su quella sessione. I fornitori fissano un limite TPS per bind o per account e un numero massimo di bind; se lo superi ricevi errori di throttling, quindi dimensiona la connessione sul tuo traffico di picco, contando ogni segmento.
Tipi di bind
SMPP 3.4 definisce tre modi per fare il bind verso un SMSC, ciascuno aperto con il proprio comando e con system_id e password:
| Bind | Comando | Direzione |
|---|---|---|
| Transmitter (TX) | bind_transmitter | Invii messaggi (submit_sm) |
| Receiver (RX) | bind_receiver | Ricevi DLR e messaggi in entrata (deliver_sm) |
| Transceiver (TRX) | bind_transceiver | Entrambi su una sola sessione |
Oggi la maggior parte delle connessioni A2P usa bind transceiver. Con bind TX e RX separati, assicurati che almeno un receiver sia sempre connesso, altrimenti i DLR restano in coda presso il fornitore. Le basi di SMPP sono in SMPP vs HTTP API per gli SMS A2P.
Cosa significa TPS
Il TPS è il numero di operazioni submit_sm consentite al secondo. Alcuni punti che creano confusione:
- I segmenti contano: un SMS lungo in 3 parti usa 3 transazioni.
- Per bind o per account: un limite di 50 TPS può valere per ogni bind o per tutti i bind insieme. Chiedi quale dei due.
- Picco o continuo: alcuni fornitori consentono brevi picchi sopra il limite, altri lo applicano rigidamente secondo per secondo.
- Limiti per destinazione: i collegamenti a monte del fornitore possono avere limiti più bassi per alcuni paesi o reti, quindi il TPS del tuo account non è sempre disponibile ovunque.
I valori tipici vanno da 10 a 100 TPS per bind per i normali account A2P, di più per i grandi mittenti. Una campagna di 360 mila messaggi a 100 TPS richiede un'ora; a 20 TPS ne richiede cinque.
Windowing
SMPP è asincrono: puoi inviare diversi submit_sm prima di ricevere le risposte. La dimensione della finestra (window) è quante richieste possono restare in sospeso contemporaneamente. Una finestra troppo piccola limita il throughput quando la latenza è alta (con 200 ms di andata e ritorno e una finestra di 1, non puoi superare 5 TPS). Una finestra troppo grande può sovraccaricare il fornitore. Sono comuni valori tra 10 e 50; concordali con il fornitore.
Cosa succede quando superi i limiti
- ESME_RTHROTTLED (0x58): troppi messaggi al secondo. Rallenta e riprova più tardi.
- ESME_RMSGQFUL (0x14): la coda del fornitore è piena. Riprova dopo una pausa.
- ESME_RALYBND (0x05) o ESME_RBINDFAIL (0x0D): spesso restituiti quando apri più bind di quelli consentiti o con credenziali sbagliate.
La tua piattaforma dovrebbe rallentare sugli errori di throttling invece di riprovare subito, che peggiora solo le cose. L'elenco completo è in codici di errore SMPP più comuni.
Mantenere sani i bind
- Invia enquire_link ogni 30-60 secondi (concorda l'intervallo) e riconnettiti automaticamente quando fallisce.
- Distribuisci il traffico sui bind con un semplice round-robin, e non aprirne più di quelli consentiti.
- Usa la whitelist degli IP e, dove disponibile, TLS o una VPN, perché SMPP 3.4 invia le credenziali in chiaro.
- Tieni d'occhio la latenza di submit_sm_resp: un aumento spesso anticipa throttling o problemi di consegna. Vedi tasso di consegna e latenza degli SMS.
- Per il traffico verso gli Stati Uniti, ricorda che i limiti di throughput degli operatori per brand e campagna possono essere più bassi del tuo TPS SMPP. Vedi SMS 10DLC e toll-free.
Dimensionare una richiesta
Calcola il tuo picco al secondo, non il volume mensile: il traffico OTP alle 9:00 di un lunedì o il lancio di una campagna possono valere dieci volte la media. Quando richiedi rotte SMS A2P tramite VoIPMatcher, indica il TPS e il numero di bind che ti servono. Richiedi una rotta SMPP.
Domande frequenti
Perché il mio bind SMPP fallisce?
Le cause più comuni sono system_id o password sbagliati, un indirizzo IP non in whitelist presso il fornitore, oppure più bind aperti di quanti l'account ne consenta. Il fornitore risponde allora con errori come ESME_RBINDFAIL (0x0D), ESME_RINVPASWD (0x0E) o ESME_RALYBND (0x05). Controlla credenziali e IP autorizzati, chiudi le sessioni rimaste appese e conferma il limite di bind.
Quanti bind SMPP mi servono?
Dividi i messaggi al secondo di picco per il TPS consentito per bind, poi aggiungi un bind di ridondanza. Se il fornitore fissa il limite per account invece che per bind, i bind in più aggiungono resilienza ma non throughput. La maggior parte delle connessioni A2P usa bind transceiver, così una sola sessione porta sia gli invii sia i DLR.
Qual è un buon TPS per gli SMS?
I normali account A2P sono di solito impostati tra 10 e 100 TPS per bind, di più per i grandi mittenti. Il valore giusto dipende dal tuo picco, non dal volume mensile: 360 mila messaggi richiedono un'ora a 100 TPS e cinque ore a 20 TPS. Ricorda che ogni segmento di un messaggio lungo conta come una transazione.
Cos'è enquire_link in SMPP?
Enquire_link è un comando di keep-alive che entrambe le parti inviano per verificare che la sessione SMPP funzioni ancora. La maggior parte delle configurazioni lo invia ogni 30-60 secondi, con l'intervallo concordato con il fornitore. Se non arriva risposta, il client dovrebbe chiudere il bind e riconnettersi automaticamente, così messaggi e DLR non restano in coda.
Ti serve una rotta?
Mandaci destinazione, tipo di rotta e tariffa target. Ti rispondiamo con quello che possiamo offrirti.