Passa al contenuto principale

Protocollo SMPP

SMPP (Short Message Peer-to-Peer Protocol) è un protocollo binario progettato per connessioni persistenti affidabili per inviare SMS su larga scala con tracciamento della consegna. Scegli SMPP quando hai bisogno di connessioni persistenti per messaggistica ad alto volume, notifiche di consegna in tempo reale o integrazione con infrastruttura telecom esistente.

Modalità di Connessione

Il server SMPP di Agile Telecom supporta tre modalità di connessione. Scegli quella che si adatta al tuo caso d'uso:

  • Transmitter (TX) – Invia solo messaggi. Usa questo se origini solo SMS e non hai bisogno di rapporti di consegna.
  • Receiver (RX) – Ricevi notifiche di consegna solo. Usa questo per monitoraggio dedicato dei rapporti da connessioni TX altrove.
  • Transceiver (TRX) – Invia messaggi e ricevi notifiche sulla stessa connessione. Ideale per messaggistica bidirezionale con meno slot di connessione.

Per impostazione predefinita, il tuo account consente fino a 4 connessioni attive — combina le modalità come necessario (es. 4 TX + 4 RX, o 4 TRX). Contatta il supporto se hai bisogno di capacità aggiuntiva.

Dettagli Connessione

ParametroValore
HOSTsmpp.agiletelecom.com
PORT2776 (TLS)
SYSTEM IDIl tuo nome utente account
PASSWORDLa tua password account
MODETX, RX, o TRX
Login-AddrRangeLascia vuoto
Login-SystemTypeLascia vuoto
Login-TON1
Login-NPI1
Login-DCS0
Mantieni la Tua Connessione Attiva

Invia un pacchetto ENQUIRE_LINK almeno ogni 30 secondi. Se non ricevi risposta entro 5 minuti, la connessione sarà chiusa. La maggior parte delle librerie SMPP lo gestisce automaticamente.

Esempi di Codice

Installa la libreria smpplib:

pip install smpplib

Connettiti e invia un SMS:

```python
import smpplib
import smpplib.gsm
import smpplib.consts

# Crea un client
client = smpplib.client.Client("smpp.agiletelecom.com", 2776, allow_unknown_opt_params=True)

# Connettiti con TLS
client.connect()

# Esegui il bind come Transceiver (modalità TRX)
client.bind(
smpplib.consts.SMPP_BIND_TX,
system_id="YOUR_USERNAME",
password="YOUR_PASSWORD",
)

# Invia SMS
parts, encoding_flag, msg_type_flag = smpplib.gsm.make_parts("Hello World!")
for part in parts:
pdu = client.send_message(
source_addr_ton=smpplib.consts.SMPP_TON_INTL,
source_addr="12345",
dest_addr_ton=smpplib.consts.SMPP_TON_INTL,
destination_addr="+391234567890",
short_message=part,
)
print(f"Message ID: \{pdu.message_id\}")

# Mantieni la connessione attiva
import time
while True:
client.listen()
time.sleep(1)

client.unbind()
client.disconnect()

## Gestione Errori

Quando la tua connessione fallisce o un messaggio non si sottomette, controlla questi codici di errore per capire cosa è successo e come risolverlo.

### Errori di Bind & Autenticazione

| Codice di Errore | Hex | Descrizione |
|-----------|-----|-------------|
| 4 | 0x04 | **Bind non ancora completato** — Invia la richiesta di bind prima di sottomettere messaggi |
| 5 | 0x05 | **Utente già sottoposto a bind** — Hai raggiunto il tuo limite di connessione (default: 4). Chiudi le connessioni inutilizzate o richiedi limiti più alti |
| 13 | 0x0E | **Credenziali non valide** — Controlla il tuo SYSTEM ID e password |
| 8 | 0x08 | **Errore del sistema** — Riprova dopo alcuni secondi |
| 10 | 0x0A | **Indirizzo mittente non valido** — L'ID mittente deve essere numerico (max 16 caratteri) o alfanumerico (max 11 caratteri). Vedi regole ID mittente sottostanti |

## Supporto

Per assistenza tecnica, contatta [help@agiletelecom.com](mailto:help@agiletelecom.com).

## Qual è il Prossimo?

- [SMS in Ingresso](inbound-sms) – Ricevi SMS sul tuo numero dedicato
- [Verifica Crediti](credit-check) – Monitora il saldo del tuo account
- [MNP Lookup](mnp) – Interroga informazioni sulla rete mobile