Oramai gli SMS fanno parte della vita comune di tutti i giorni. Tutti noi inviamo e riceviamo messaggi tramite il cellulare. Nel corso degli anni si sono sviluppati molti servizi basati su questa tecnologia che hanno riscosso e riscuotono molto successo, si pensi ad esempio alle notifiche via SMS delle e-mail che arrivano nella nostra mailbox. Quotidianamente inviamo semplici messaggi di testo, con il vincolo noto a tutti di 160 caratteri; tuttavia esistono altri tipi di messaggi cioè quelli non di testo, chiamati messaggi binari, che vengono normalmente utilizzati per servizi più complessi quali l‘invio di suonerie o di messaggi che configurano il nostro telefonino. Con questa serie di articoli cercheremo di approfondire alcune tematiche relative agli SMS di testo e capire come è possibile utilizzare il linguaggio Java per implementare un semplice servizio di messaggistica.
Architettura di un servizio di messaggistica SMS
Senza dilungarci troppo in descrizione tecniche di una rete per l‘invio e la ricezione di SMS, si può dire semplificando che il cuore di questa rete è un componente chiamato SMSC (Short Message Service Center). Normalmente le applicazioni che vengono sviluppate per fornire servizi tramite short message interagiscono direttamente o indirettamente con questo componente. Esistono ovviamente intorno al SMSC numerosi altri componenti che sono indispensabili per il corretto invio e ricezione di un messaggio ma la loro trattazione è al di fuori dello scopo di questi articoli.
Per prima cosa capiamo come è fatta una infrastruttura di rete per realizzare un servizio di messaggistica tramite SMS.
Figura 1 – Infrastruttura di rete per un servizio di messaggistica
Un aspetto importante è il server che ingloba al suo interno un database dove vengono memorizzate le informazioni che dovranno essere restituite in funzione di una generica richiesta. Analizzeremo più in dettaglio questo aspetto nei paragrafi successivi.
Servizi basati su SMS
Fino ad ora abbiamo parlato genericamente di servizi basati su SMS, ma quali servizi è possibile fornire? In realtà si possono offrire innumerevoli servizi ed alcuni di questi, i più comuni, sono elencati qui di seguito:
Servizi di notifica.Questa classe di servizi è forse quella più diffusa, essa comprende alcuni tra i servizi più noti che tutti noi utilizziamo quali:
- notifiche voce/fax che ci informano che sono presenti dei messaggi vocali o fax nella nostra casella vocale
- notifiche di email che ci indicano che sono arrivate nuove mail nella nostra mailbox
- notifiche relative a scadenze o appuntamenti (reminder service)
Servizi di informazioni. Questa classe di servizi oggi sta diventando sempre più diffusa dopo che sono fiorite numerose azienda che forniscono servizi di questo tipo. Le informazioni che possono essere inviate tramite SMS riguardano le previsioni del tempo, stato del traffico, news, quotazione dei titoli di borsa ecc.. Molti di questi servizi possono essere anche abbinati ad un sistema di localizzazione GPS per fornire informazioni più specifiche relative all‘area in cui ci troviamo.
Provisioning. Utilizzando SMS opportunamente formattati contenenti particolari comandi, gli operatori telefonici possono configurare ed attivare alcune funzionalità sul nostro cellulare. Si pensi per esempio ai messaggi che richiediamo ai nostri operatori telefonici per configurare la connessione GPRS o MMS e così via.
Concetti di base
Prima di addentrarci nelle tematiche più tecniche è necessario definire alcuni concetti e termini che verranno utilizzati in questa serie di articoli.
Abbiamo già descritto cosa si intende per SMS e abbiamo sottolineato che esistono diversi formati per i messaggi, in particolare ne possiamo distinguere due tipi:
- Messaggi di testo
È il più semplice dei formati per l‘invio di SMS ed è il formato che utilizziamo tutti i giorni
- Messaggi binari
Sono messaggi più complessi che contengono informazioni che non possono essere inviate tramite messaggi di testo e normalmente vengono utilizzati per funzioni più specifiche quali le configurazioni automatiche delle impostazioni del nostro cellulare ecc.
Dalla nostra esperienza quotidiana sappiamo che possiamo ricevere ed inviare SMS, proprio per questa ragione, gli SMS si suddividono in due categorie:
- Messaggi MT
Questi messaggi sono quelli che vengono inviati al nostro cellulare da un centro servizi. I messaggi che il centro servizi invia al nostro cellulare potrebbero essere generati da un altro cellulare oppure provenire da altre sorgenti di informazioni quali per esempio uno dei servizi che prima stavamo descrivendo (servizi di notifica, di informazione ecc.). In tutti questi casi si parla di SMS Mobile Terminated o più semplicemente di MT.
- Messaggi MO
Questi tipo di messaggi sono quelli che noi inviamo dal nostro cellulare al centro servizi e possono essere indirizzati verso altri cellulari oppure verso un sistema per richiedere un particolare servizio. In questi casi si parla di SMS Mobile Originate o più semplicemente di MO.
È necessario tener presente che tutti i messaggi che riceviamo o che inviamo vengono sempre smistati da un centro servizi.
Protocolli
Abbiamo visto l‘interazione con il centro servizi per l‘invio o la ricezione di un messaggio, ma attraverso quali protocolli possiamo interagire?
Esistono diversi protocolli supportati dai centri servizi tramite i quali un sistema esterno può colloquiare e inviare oppure ricevere messaggi. È possibile tuttavia sviluppare dei servizi tramite SMS senza interagire direttamente con un centro servizi, ma utilizzare piuttosto un modem GSM.
La scelta del tipo di connessione è basata su diversi fattori tra i quali uno dei più importanti è il costo. Il costo di un modem GSM è nettamente inferiore rispetto ad una connessione diretta verso un centro servizi, d‘altra parte però il traffico di messaggi supportato da un modem non è comparabile con quello supportato da una connessione verso un centro servizi. In generale, quindi, bisogna prima di tutto stabilire quale è la mole di messaggi SMS che si prevede di inviare e ricevere; sulla base di questa informazione scegliere poi la modalità di connessione più adatta.
Tra i protocolli più noti tramite i quali è possibile connettersi ad un centro servizi ricordiamo:
- EMI/UCP
L‘acronimo EMI sta per External Machine Interface; si tratta di uno tra i protocolli più diffusi in Italia per la connessione verso un SMSC. È costituito da una serie di comandi inviati tramite stringhe opportunamente formattate. Di questo protocollo ce ne occuperemo in dettaglio nei prossimi articoli
- CIMD2
È un altro protocollo abbastanza diffuso tramite il quale inviare e ricevere SMS sul quale non ci dilungheremo molto.
- SMPP
L‘acronimo sta per Short Message Peer to Peer: è un altro standard utilizzato per l‘invio e la ricezione di SMS. Si basa su coppie richiesta/risposta costituiti da PDU (Pocket Data Unit) che vengono “encodati” in formato binario per una maggiore efficienza di trasmissione.
Oggi sono stati sviluppati alcuni sistemi generalmente chiamati Gateway che supportano anche altri tipi di protocolli quale per esempio il protocollo HTTP. L‘obiettivo di questi sistemi è facilitare l‘interazione con un centro servizi e fornire un‘interfaccia, dal punto di vista dei comandi, più semplice da utilizzare.
Come abbiamo detto non è sempre necessario connettersi direttamente ad un centro servizi per realizzare un servizio di messaggistica ma è possibile utilizzare anche un semplice modem GSM (come per esempio il nostro cellulare) , ed in questo caso il protocollo è molto diverso da quelli prima descritti e si basa sui famosi comandi AT, tramite i quali è possibile controllare il funzionamento del modem ed inviare e/o ricevere SMS.
Funzionamento
Fino ad ora abbiamo descritto i concetti fondamentali, ora scendiamo più in dettaglio ed analizziamo l‘architettura di un sistema che fornisce dei servizi tramite SMS.
Generalmente tali servizi si basano su una serie di comandi che un utente invia ad un server tramite un SMS. Es: NEWS. In base al contenuto del messaggio il server reperisce da un database delle informazioni che vengono processate e trasformate in un nuovo messaggio SMS che viene mandato indietro all‘utente e costituisce la risposta.
Qui di seguito è riportato uno schema che descrive i principali moduli per la realizzazione di tale servizio.
Figura 2 – Componenti per la realizzazione di servizi via SMS
Dalla figura si possono individuare due moduli principali:
- Connection Manager
Ha il compito di gestire la connessione verso un centro servizi implementando uno dei protocolli prima riportati. Esso è composto da due sottosistemi: uno che gestisce tutti i dettagli della connessione (Connection Handler) ed un altro che ha il compito di trasformare le richieste provenienti da altri moduli in comandi da inviare verso il centro servizi e viceversa trasformare i comandi inviati dal centro servizi in opportuni oggetti gestiti dai componenti successivi (Protocol Handler).
- SMS Parser
Questo componente ha il compito di analizzare il contenuto informativo del messaggio che normalmente si trova nel corpo (o body) e scegliere l‘azione successiva da intraprendere. Normalmente per un semplice servizio di notizie l‘azione successiva è quella di accedere al database delle informazioni e recuperare la più recente.
Per scendere ancora più in dettaglio e capire meglio come questi componenti interagiscono, qui di seguito è riportato un diagramma di sequenza che mostra i messaggi scambiati dai componenti del sistema al fine di fornire una risposta in base al messaggio SMS, contente un opportuno comando, inviato da un utente.
Figura 3 – Diagramma di sequenza
Conclusioni
In questo primo articolo abbiamo introdotto i concetti base di un servizio di messaggistica , che sono fondamentali per comprendere a pieno gli argomenti trattati nei prossimi articoli, dove entreremo nel vivo delle tematiche relative agli short message.
Riferimenti
[1] ETSI http://www.etsi.org
Francesco Azzola, laureato in Ingegneria Elettronica, lavora da diversi anni nel campo dell‘IT. Dal 1998 si occupa dello sviluppo di applicazioni basate su tecnologie J2EE nel campo delle telecomunicazioni e in particolare nella progettazione di gateway SMS e di applicazioni per SIM Card.