Il passato recente dei messaggi SMSE' 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 BusinessSpesso 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 ServiceTiscali è 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
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 GSMUtilizzare 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 0253459834845e 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
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 GatewayUn'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
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