Home Page Home Page Articoli Spedire messaggi SMS con .NET

Spedire messaggi SMS con .NET

Spiegheremo in questo articolo alcune tecniche per inviare messaggi SMS tramite .NET: invio tramite Web Service, invio diretto tramite cellulare oppure invio tramite un SMS Gateway. Presente anche un esempio pratico di invio con ASP.NET e Web Service.
Autore: David De Giacomi Livello:
Il passato recente dei messaggi SMS
E' questa una delle domande che compaiono molto frequentemente nei Forum e nei newsgroups. Effettivamente negli ultimi anni c'è stata una rapida integrazione fra i media di comunicazione, Internet e Cellulari in particolare.
Agli inizi molti siti web offrivano la possibilità di inviare gratis SMS ma con il tempo i gestori dei siti web si sono accorti che questo sistema era insostenibile e in un batter d'occhio tutti i servizi di invio SMS sono scomparsi. La principale causa forse era data dal fatto che questi servizi SMS erano orientati al mercato Consumer e non a quello Business.

Servizi SMS Business
Spesso e volentieri infatti in ambito sistemistico un SMS ci può salvare la vita, per esempio per segnalarci sul cellulare che un server è down oppure che i Job notturni si sono conclusi con successo e via di seguito. Non solo, potrebbe essere necessario fare una campagna pubblicitaria tramite SMS e quindi è richiesta una piattaforma o servizio per l'invio contemporaneo di più SMS a più destinatari.
Sono nati quindi e si sono sviluppati servizi Business per inviare SMS, gratuitamente o a pagamento. Grazie alla tecnologia dei Web Services questo è ancora più facile. Possiamo infatti agganciare il Web Service alla nostra applicazione e inviare SMS in modo molto semplice, ora vediamo in che modo.

Inviare SMS tramite Web Service
Tiscali è stata un precursore nel campo dei Web Services, infatti ha sviluppato una piattaforma molto potente che potete trovare qui:
http://webservices.tiscali.com ">http://webservices.tiscali.com 

Come potete vedere fra i Web Services offerti ce n'è uno per instradare gli SMS sulla rete GSM:
http://webservices.tiscali.com/SMSServices.asmx ">http://webservices.tiscali.com/SMSServices.asmx 



Questo servizio vi consente di spedire messaggi SMS:

- a pagamento
- gratis (purtroppo il servizio è stato temporaneamente sospeso)

Nella nostra soluzione utilizzeremo quindi il servizio a pagamento per dimostrarne il funzionamento. Iniziamo quindi creando una nuova soluzione con .NET di tipo Web Application. Successivamente è necessario come di consueto aggiungere una Web Reference al nostro progetto.
Nel nostro caso dovremo fare riferimento al Web Service offerto da Tiscali.
Per chi non avesse mai eseguito la procedura può consultare il seguente Tip:
http://www.dotnethell.it/tips/ConsumeWebService.aspx ">Come consumare un Web Service da ASP.NET ?



Dopo aver aggiunto il riferimento Web alla soluzione possiamo procedere creando una pagina Web che ci servirà da interfaccia. I controlli da utilizzare sono banalmente tre:

- Una Textbox per il numero di cellulare
- Una Textbox per il testo del Messaggio SMS
- Un pulsante per inviare il messaggio



Manca solo il codice per l'invio dell'SMS. Sarà necessario instanziare la proxy class del Web Service in questo modo:


SMSTiscali.TiscaliSMSServices ws=new SMSTiscali.TiscaliSMSServices();


e chiamare il metodo passando i parametri contenuti nelle Textbox:


ws.SendSMS("******","*******",txtCellNumber.Text,txtSMS.Text);


Provate ora a lanciare la soluzione Web, riempite i campi e premete il pulsante Invia SMS. In questo momento il vostro Application Server si collegherà al Web Service di Tiscali, farà un'autenticazione (il servizio a pagamento richiede autenticazione) e depositerà l'SMS.
Tiscali prenderà in carico l'SMS e lo instraderà sulla rete GSM. Se tutto è andato bene sul vostro Cellulare arriverà l'SMS:

L'SMS su uno Smartphone Windows Mobile 2003
L'SMS su uno Smartphone Windows Mobile 2003


Elenchiamo qui di seguito altri siti web che come Tiscali offrono il servizio di invio SMS:
http://www.smsdriver.com ">SMSDriver.com
http://www.sms.it ">SMS.it
http://www.smshosting.it ">SmsHosting.it

Spedire SMS direttamente via GSM
Utilizzare i Web Services per inviare un SMS non è l'unica strada chiaramente, però è una delle più facili da implementare e una delle meno costose.
Un altro metodo molto utilizzato è tentare l'invio usando direttamente il vostro cellulare GSM. In questo caso però c'è un livello di complessità più alto. Il cellulare intanto deve supportare il set di comandi AT Hayes che è il set di comandi supportato da tutti i Modem.
Con questi comandi potete colloquiare con il vostro cellulare ed eseguire dal PC qualunque tipo di operazione, come leggere la rubrica, modificarla, leggere e scrivere SMS, e via di seguito. Non è scopo di questo articolo però spiegare come fare tutte queste cose, ci limiteremo semplicemente ad indicare le linee guida in modo che ognuno armato di buona volontà possa riuscire a realizzare l'obbiettivo.

Per poter collegare il Cellulare al PC potete seguire più strade. O con un classico cavo che si collega alla porta seriale RS-232 o via Infrared (Infrarossi), se per caso avete un portatile. Probabilmente sono disponibili altri modi ma quelli che ho sperimentato io e che funzionano sono questi.
Se vi collegate via Infrarossi il sistema operativo comunque rimapperà una nuova porta COM e quindi per voi sarà uguale ad aver collegato il cellulare via cavo seriale.
Nasce quindi il problema di come parlare con una porta RS-232. Ci sono anche in questo caso differenti metodi.

E' possibile utilizzare una classe già pronta oppure crearne una da zero.
Per semplicità consigliamo l'uso di questa classe costruita dal collega MVP Corrado Cavalli:
http://www.codeworks.it/net/VBNetRs232.htm ">Classe VB.NET RS-232

Se qualcuno volesse intraprendere la via della costruzione di una classe ad hoc può farlo ma deve dotarsi di pazienza e sangue freddo. Bisogna innazitutto dire che gestire una porta COM su un sistema operativo Windows è come leggere e scrivere su un file.
Di solito si usano infatti due API di Windows molto importanti:

- ReadFile/ReadFileEx (per leggere da un file o ricevere dati da una seriale)
- WriteFile/WriteFileEx (per scrivere su un file o inviare dati ad una seriale)

Nel progetto della classe di Corrado è presente anche il codice sorgente, che può essere un valido aiuto per cominciare.

Quando mi è capitato di dover inviare/ricevere dati da porte seriali COM mi sono avvalso anche della collaborazione di un Tool molto valido, sconosciuto ai molti, contenuto in Windows chiamato Hyper Terminal. Con questo terminale infatti potete effettuare una connessione ad un cellulare e inviare o ricevere dati e quindi anche fare test sul campo.
Se infatti una volta connessi al cellulare provate a digitare dall'Hyper Terminal:

ATDT 0253459834845

e premete invio, il cellulare come per magia comincerà a fare la chiamata a quel numero.
Con lo stesso procedimento potete inviare un SMS. Vi consiglio però di scaricare il manuale degli AT Commands dal sito del produttore del vostro telefono.

Hyperterminal interroga il Modem
Hyperterminal interroga il Modem


E'necessario sottolineare che se fate questi test i costi sono a vostro carico perchè state utilizzando la vostra scheda SIM.

Inviare SMS con un Gateway
Un'ultima strada molto semplice anche se costosa per inviare SMS è quella di utilizzare un Gateway SMS. Questi sono apparati hardware tipo un router che dispongono di uno o più alloggiamenti in cui potete inserire più schede SIM. Inoltre è presente anche un'interfaccia per collegare il Gateway alla rete IP, tipicamente un'interfaccia RJ-45 per collegarlo alla rete Ethernet aziendale.

Un SMS Gateway
Un SMS Gateway


I più evoluti poi dispongono di un software molto evoluto che espone un sito web sulla porta 80. Collegandovi con il classico http://xxx.xxx.xxx.xxx  potrete accedere alla console e da lì inviare gli SMS. Si occuperà il Gateway di scegliere quale SIM utilizzare e come inviare il messaggio. Molti produttori di questi apparati rilasciano anche un SDK che vi consentirà di interfacciare le vostre applicazioni all'apparato hardware.

Per chi fosse interessato a questa soluzione ecco qui di seguito un ottimo SMS Gateway:
http://www.sysmaster.com/p_vp_sms_gateway.htm ">http://www.sysmaster.com/p_vp_sms_gateway.htm 
Voto medio articolo: 3.9 Numero Voti: 12
David De Giacomi

David De Giacomi

MVP Program Logo Approda al mondo dell'informatica nell' Aprile del 1994. Un amico gli fa conoscere il Quick Basic del DOS. E' cosi che inizia la sua attività di sviluppatore. Prosegue il suo percorso con altri linguaggi (Visual Basic, Pascal, Java, ANSI C), fino ad arrivare a .NET. Per un certo periodo affianca all'attività ... Profilo completo

Articoli collegati

Utilizzare controlli lato server in un Datagrid
Il DataGrid è un controllo molto avanzato spesso usato in ASP.NET. La maggior parte degli sviluppatori utilizza le funzioni basilari. E' possibile però estenderlo utilizzando controlli server aggiuntivi all'interno delle celle. Vediamo un esempio con una Combo Box.
Autore: Luca Graziani | Difficoltà: | Commenti: 6 | Voto:
Utilizzare il Tracing in ASP.NET
Scopriamo in questo articolo il servizio di analisi di ASP.NET che permette di controllare e analizzare le richieste web, consentendo di scrivere nel log del servizio di analisi in modo da effettuare a runtime una sorta di debug dell'applicazione Web.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Utilizzare il Web Service dei SQL Reporting Services da una pagina ASP.NET
Vedremo in questo articolo un altro modo di utilizzo dei Reporting Services. Mostreremo infatti come consumare il Web Service offerto dai RS per esportare i Reports in vari formati (XML, Excel, PDF, HTML, CSV) e visualizzarli in una pagina ASP.NET.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Visualizzare gerarchicamente i dati con una speciale DataGrid
La rappresentazione grafica di dati gerarchicamente connessi tra loro può essere realizzata anche con l'ausilio di un free control, creato da Denis Bauer, ottenendo un risultato veramente ottimo sia dal punto di vista grafico sia da quello funzionale.
Autore: Andrea Bersi | Difficoltà: | Commenti: 1 | Voto:
Mobile Web Forms e compatibilità tra Device
Ecco un articolo che illustra la creazione di una pagina mobile, tenendo conto delle compatibilità tra vari Device mobili.
Autore: Giovanni Ferron | Difficoltà:
DataSet, CreateChildView, e DataRelation: usare DataGrid per visualizzare dati da 2 tabelle
Un semplice e chiaro esempio per sfruttare al meglio il controllo DataGrid, per la visualizzazione di dati provenienti da 2 tabelle diverse, ma collegate fra loro. Viene spiegato come utilizzare il DataSet per creare delle relazioni tra le tabelle in esso contenute.
Autore: Andrea Bersi | Difficoltà: | Commenti: 1 | Voto:
Caching di pagine ASP.NET
Quando si ha a che fare con l'ingegnerizzazione di un programma la gestione del cache è una cosa importante. La "cache" e' un'area molto veloce (di solito la RAM) dove vengono copiati i dati che necessitano di essere disponibili nel piu breve tempo possibile. Vediamo com'è possibile gestire la Cache in ASP.NET
Autore: Matteo Raumer | Difficoltà:
Paginare un Datalist utilizzando il metodo ReadXml della classe Dataset
Il controllo DataGrid è uno strumento molto completo, ma che a volte può risultare troppo complesso in base alle esigenze della nostra applicazione. In questo articolo verrà spiegato come utilizzare al massimo il controllo DataList, anch'esso ottimo visualizzatore di dati, utilizzando però un'origine dati in formato XML, implementandone la paginazione.
Autore: Matteo Raumer | Difficoltà:
Come paginare un DataList
In questo articolo viene spiegato come paginare un DataList, grazie all'aiuto di stored procedure e al supporto per il paging offerto dal controllo stesso. Per ottenere una paginazione veloce, leggera, e personalizzabile al massimo.
Autore: Loris Badii | Difficoltà: | Commenti: 2 | Voto:
Ridimensionare al volo le immagini uploadate sul server, per creare le ThumbnailImages.
Molto spesso ci capita di voler visualizzare un'anteprima di un'immagine che magari ha grosse dimensioni. In questo articolo verrà spiegato come creare le immagini ridimensionate senza perdita di qualità.
Autore: Valerio Fornito | Difficoltà: | Commenti: 6
Renderizzare automaticamente gli URL come links in formato HTML
Molto spesso ci capita di dover visualizzare nelle pagina web degli URL, letti magari dal DB, ma che non ci vengono visualizzati subito come link cliccabili dall'utente. In questo articolo verrà spiegato come automatizzare questo processo.
Autore: Valerio Fornito | Difficoltà: | Voto:
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5