Specifiche tecniche di SMPP

Vedi come Markdown

Scopri le specifiche tecniche della soluzione SMPP di OVHcloud

Obiettivo

Scopri le specifiche tecniche dell'offerta SMPP di OVHcloud.

Glossario

  • PDU: Protocol Data Unit è l'oggetto/entità che permette di scambiare richieste e risposte
  • SMPP: Short Message Peer to Peer Protocol
  • SMSC: Short Message Service Center (server)
  • ESME: External Short Message Entity (client)
  • UDH: User Data Header
  • SM: Short Message
  • DLR: Delivery Receipt
  • PTT: Premium Tracking Technical è un codice di errore comunicato nel messaggio di un DLR
  • MT: Mobile Terminated
  • MO: Mobile Originated

Per ulteriori spiegazioni sulle abbreviazioni, consulta pagina 10 delle specifiche SMPP di smpp.org.

Presentazione

A cosa serve l'SMPP?

SMPP (Short Message Peer-to-Peer) è un protocollo che permette di scambiare SMS con gli operatori telefonici e da parte dei fornitori di contenuti. Generalmente utilizza due connessioni TCP/IP, una per l'invio e una per la ricezione dei dati.

Quali sono i vantaggi dell'SMPP rispetto all'offerta SMS standard?

  • Il protocollo è standardizzato e permette di integrarsi con numerosi strumenti del mercato
  • Permette di ottenere una velocità di trasmissione elevata con bassa latenza

Qual è l'utilizzo tipico dell'invio di un SMS tramite SMPP?

L'applicazione di invio SMS del cliente (ESME) dispone di tre mezzi di comunicazione con l'SMSC:

  • Transmitter: invio di un messaggio
  • Receiver: ricezione di un messaggio
  • Transceiver: invio e ricezione di un messaggio
Info

Trova ulteriori informazioni sui mezzi di comunicazione nel capitolo Elenco dei PDU.

Una volta stabilita la connessione tra l'ESME e un SMSC di OVHcloud, è possibile effettuare l'invio e/o la ricezione di un messaggio.

L'autenticazione della connessione all'SMSC avviene con il system_id (identificativo), la password e l'indirizzo IP della tua applicazione.

L'offerta SMPP di OVHcloud permette:

  • L'invio di SMS con (o senza) avviso di ricezione (DLR)
  • La ricezione di un messaggio inviato da un cellulare
SourceDestination
Invio di un SMS (MT)- Shortcode (Francia metropolitana e Belgio)
- Alfanumerico
- Numero virtuale*
Numero internazionale in formato E.164
Invio di un SMS che consente una risposta- Shortcode (Francia metropolitana)Numero internazionale in formato E.164
Invio di un SMS che consente una risposta con un rapporto MT/MO 1:1- Numero virtuale*Numero virtuale*
Ricezione di un SMS inviato da un cellulare (MO)- Numero del telefono cellulareNumero virtuale*

Numero virtuale*: canale transazionale unicamente

Specifiche tecniche

Descrizione dei protocolli

Bind Request

Un ESME può connettersi in una delle tre modalità seguenti: Transmitter, Receiver, Transceiver.

Queste richieste di connessione sono gestite conformemente alla specifica del protocollo SMPP v3.4.

Bind Response

Durante il processo di connessione, l'ESME effettua una richiesta di Bind fornendo il system_id (identificativo) e la sua password.

Queste informazioni, insieme all'IP della tua applicazione, vengono utilizzate per autenticare la richiesta di connessione.

Successivamente, l'SMSC invia una risposta con uno stato che definisce se l'autenticazione è andata a buon fine o meno.

Elenco dei PDU

bind_transceiver e bind_transceiver_resp

Questo tipo di bind viene utilizzato per avviare una connessione che permette la comunicazione bidirezionale tra l'SMSC e l'ESME (è la fusione delle modalità transmitter e receiver).

bind_transmitter e bind_transmitter_resp

Questo tipo di bind viene utilizzato per avviare una connessione che permette unicamente la comunicazione dall'ESME verso l'SMSC (invio di SMS a un cellulare). L'SMSC invia le risposte associate ai PDU di richiesta sulla stessa connessione.

bind_receiver e bind_receiver_resp

Questo tipo di bind viene utilizzato per avviare una connessione che permette unicamente la comunicazione dall'SMSC verso l'ESME (invio di avviso di ricezione (DLR) o di messaggi inviati da un cellulare). L'ESME invia le risposte associate ai PDU di richiesta sulla stessa connessione.

unbind e unbind_resp

Richiesta di chiusura di una connessione avviata dall'SMSC o dall'ESME. La parte che riceve la richiesta invia una risposta quando è pronta a interrompere la connessione.

L'SMSC di OVHcloud chiude (unbind) le connessioni ogni 24 h; l'ESME deve riconnettersi automaticamente.

outbind

Non supportato

submit_sm e submit_sm_resp

Il submit_sm viene utilizzato da un ESME per inviare un SMS all'SMSC per la trasmissione a un numero di telefono cellulare.

Parametri obbligatori:

Nome del parametroRif. Spec 3.4Supportato
service_type5.2.11No
source_addr_ton5.2.5
source_addr_npi5.2.6
source_addr5.2.8
dest_addr_ton5.2.5
dest_addr_npi5.2.6
destination_addr5.2.9
esm_class5.2.12
protocol_id5.2.13No
priority_flag5.2.14No
schedule_delivery_time5.2.15
validity_period5.2.16
registered_delivery5.2.17
replace_if_present_flag5.2.18No
data_coding5.2.19
sm_default_msg_id5.2.20No
sm_length5.2.21
short_message5.2.22
  • source_addr può essere un numero internazionale, un numero alfanumerico o un numero shortcode:
    • alfanumerico: questi numeri di telefono sono composti da lettere e cifre (es.: ovh123).
      • source_addr_ton = 5
      • source_addr_npi = 0
    • shortcode: questi numeri di telefono contengono tra 3 e 8 cifre (es.: 38069). Lo shortcode serve solo ad avvisare il nostro servizio che dovremo utilizzarne uno. Lo shortcode reale utilizzato per inviare l'SMS sarà definito dall'operatore di telecomunicazioni.
      • source_addr_ton = 3
      • source_addr_npi = 1
    • internazionale: questi numeri di telefono sono composti dall'identificativo del paese e dal numero abituale senza il primo 0 (per esempio 33601020304).
      • source_addr_ton = 1
      • source_addr_npi = 1
  • destination_addr deve essere un numero internazionale (es.: 33600000001)
    • dest_addr_ton = 1
    • dest_addr_npi = 1

Parametri opzionali:

Nome del parametroRif. Spec 3.4Supportato
user_message_reference5.3.2.17No
source_port5.3.2.20No
source_addr_subunit5.3.2.2No
destination_port5.3.2.21No
dest_addr_subunit5.3.2.1
sar_msg_ref_num5.3.2.22No
sar_total_segments5.3.2.23No
sar_segment_seqnum5.3.2.24No
more_messages_to_send5.3.2.34No
payload_type5.3.2.10No
message_payload5.3.2.32No
privacy_indicator5.3.2.14No
callback_num5.3.2.36No
callback_num_pres_ind5.3.2.37No
callback_num_atag5.3.2.38No
source_subaddress5.3.2.15No
dest_subaddress5.3.2.16No
user_response_code5.3.2.18No
display_time5.3.2.26No
sms_signal5.3.2.40No
ms_validity5.3.2.27No
ms_msg_wait_facilities5.3.2.13No
number_of_messages5.3.2.39No
alert_on_msg_delivery5.3.2.41No
language_indicator5.3.2.19No
its_reply_type5.3.2.42No
its_session_info5.3.2.43No
ussd_service_op5.3.2.44No

Il submit_sm_resp è la conferma della corretta ricezione del submit_sm da parte dell'SMSC.

Contiene un message_id, che è l'identificativo del messaggio dell'SMSC e permette di collegarlo all'avviso di ricezione (DLR) inviato in seguito quando il cellulare ha ricevuto l'SMS (a condizione che la richiesta di un DLR sia stata specificata nel submit_sm).

deliver_sm e deliver_sm_resp

Il deliver_sm viene emesso dall'SMSC per inviare un avviso di ricezione (DLR) all'ESME se quest'ultimo lo ha richiesto nel submit_sm, oppure quando viene ricevuto un SMS in entrata (risposta a uno shortcode o un SMS inviato verso un numero virtuale).

Parametri obbligatori:

Nome del parametroRif. Spec 3.4Supportato
service_type5.2.11No
source_addr_ton5.2.5
source_addr_npi5.2.6
source_addr5.2.8
dest_addr_ton5.2.5
dest_addr_npi5.2.6
destination_addr5.2.9
esm_class5.2.12
protocol_id5.2.13No
priority_flag5.2.14No
schedule_delivery_time5.2.15No
validity_period5.2.16No
registered_delivery5.2.17No
replace_if_present_flag5.2.18No
data_coding5.2.19
sm_default_msg_id5.2.20No
sm_length5.2.21
short_message5.2.22

Parametri opzionali:

Nome del parametroRif. Spec 3.4Supportato
receipted_message_id5.3.2.12
user_message_reference5.3.2.17No
source_port5.3.2.20No
destination_port5.3.2.21No
sar_msg_ref_num5.3.2.22No
sar_total_segments5.3.2.23No
sar_segment_seqnum5.3.2.24No
user_response_code5.3.2.18No
privacy_indicator5.3.2.14No
payload_type5.3.2.10No
message_payload5.3.2.32No
callback_num5.3.2.36No
source_subaddress5.3.2.15No
dest_subaddress5.3.2.16No
language_indicator5.3.2.19No
its_session_info5.3.2.43No
network_error_code5.3.2.31No
message_state5.3.2.35No

Parametri specifici di OVHcloud:

Nome del parametroTag TLV (hex)Tipo di campoDimensioneDescrizione
outgoing_id0x1401Stringa di caratteri terminata da null (\0)64 byteID interno di OVHcloud utilizzato nel caso di un DLR
incoming_id0x1402Stringa di caratteri terminata da null (\0)64 byteID interno di OVHcloud utilizzato nel caso di un MO

Il nostro servizio tenta di inviare i deliver_sm all'ESME per un massimo di 7 giorni.

Codici di errore degli avvisi di ricezione (DLR)
Error code (PTT)Description
0No Error
1Internal Error
2Network Error
3Unreachable Destination
4Equipment Error
5Subscriber / Credit Related (e.g. Account or sender is invalid, Recipient number unreachable)
6Timeout
7Operator Related
8Parental Lock
9Undeliverable
10Account Credit (e.g. Not enough credit, Auto-recredit issue)
50Internal Error
51Internal Error
52Missing Template (e.g. US destination requires approved templates)
53Blacklisted (a STOP response sent by the recipient to block the sender)
54Forbidden destination
55Sender Temporarily Ratelimited (maximum sms sent exceeded during a short period)
100Invalid Destination Numbering Plan
101Invalid Content
102Invalid GSM7 Coding (e.g. error with packed/unpacked GSM7)
103Message too long for the number of allowed segments
254Pending
255Unknown Error
800Undeliverable
801Expired
802Deleted
803Rejected
804Unknown

PDU utilizzato dall'SMSC e dall'ESME per verificare se una connessione è ancora attiva.

Si consiglia di rispettare un intervallo di 30 secondi tra ogni richiesta.

generic_nack

PDU restituito dall'SMSC quando un PDU non è supportato o è danneggiato.

query_sm e query_sm_resp

Non supportati.

cancel_sm e cancel_sm_resp

Non supportati.

replace_sm e replace_sm_resp

Non supportati.

alert_notification

Non supportato.

submit_multi e submit_multi_resp

Non supportati.

data_sm e data_sm_resp

Non supportati.

Stati dei PDU di risposta

Ogni PDU di risposta (quelli che terminano con _resp) ha uno stato. La specifica SMPP fornisce un elenco di stati generici (SMPP 3.4, 5.1.3 command_status) comuni a tutti gli SMSC.

Un intervallo specifico di stati è riservato agli SMSC. Ecco quelli utilizzati da OVHcloud:

Error codeValueDescription
ESME_RBINDTHROTTLED0x00000400Too many bind authentication
ESME_RUNSDATACODING0x00000401Data Coding unsupported
ESME_RINVGSM7CODING0x00000402Short message GSM7 (GSM 03.38) encoding issues, contact support

Data Coding Scheme

Il data coding viene utilizzato dal submit_sm e dal deliver_sm per codificare il messaggio.

Elenco dei data coding supportati:

  • GSM 03.38 (GSM 7 bits)*
  • UCS2

GSM 03.38*: questa codifica rappresenta ogni carattere su un settetto, ma alcuni client SMPP lo rappresentano su un ottetto. Poiché il formato ottetto è il più utilizzato, il tuo account SMPP è configurato su questo formato per impostazione predefinita. Se riscontri problemi di codifica con il tuo client SMPP, contatta il supporto OVHcloud per far modificare il formato.

TLV

Un TLV (Tag, Length, Value) permette di arricchire un PDU aggiungendovi informazioni opzionali. Alcuni sono comuni e utilizzati da diversi SMSC, mentre altri possono essere più specifici di OVHcloud.

Sistema di identificazione

System ID

Il system_id è l'identificativo di connessione SMPP; viene generato sotto forma di una stringa di caratteri casuali.

Password

La password viene generata e fornita a ogni creazione di un account SMPP.

Elenco degli IP autorizzati

È necessario un elenco di IP per autorizzare la o le macchine a connettersi all'SMSC.

Tipo di connessione

  • Connessione sicura: connessione crittografata con TLS 1.3 minimo.
  • Connessione non sicura: connessione che non beneficia della crittografia TLS per esigenze di retrocompatibilità (tutti gli scambi sono in chiaro e quindi visibili a terzi).

Limiti di invio

Connessione per zona

Per impostazione predefinita, un account SMPP può avere solo una coppia Transmitter/Receiver o un Transceiver per zona.

Windowing

Per impostazione predefinita, un account SMPP può elaborare fino a un massimo di 10 messaggi simultaneamente.

Velocità di trasmissione autorizzata

Per impostazione predefinita, un account SMPP può elaborare fino a un massimo di 20 messaggi al secondo per connessione.

Versione del protocollo

La versione del protocollo è la 3.4.

Elenco dei client SMPP testati da OVHcloud

  • Kannel 1.4.5

Per saperne di più

Documentazione tecnica SMPP

Gestione di un account SMS SMPP

Contatta la nostra Community di utenti.

Questa pagina ti è stata utile?