Si riporta l'articolo scritto per il sito
https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-inviare-sms-tramite-ehiweb-con-vbnet-e-c_1656.aspx
In questo articolo vedremo come fornire ai nostri programmi la possibilità di inviare SMS a numeri cellulari che possono tornare utili in vari ambiti.
L’invio degli SMS è molto usato nei casi di avvisi tecnici, come per esempio in caso di allarmi o di manutenzione su macchinari che non funzionano correttamente, oppure in ambito marketing. In questo campo la strategia è spesso determinante perché il negozio o l'azienda potrebbero fidelizzare in maniera ottimale il cliente.
Supponiamo che un’attività commerciale, come un negozio, vuole informare i propri clienti di sconti, saldi o di nuovi prodotti. Tramite un valido invio di SMS può contattare tanti clienti, anche migliaia, stando in negozio e con pochi clic e meno di un minuto raggiungere e informare tante persone.
Altro esempio può essere lo studio medico o dentistico che vuole ricordare al paziente dell’appuntamento preso, oppure che sono pronti i referti da ritirare. Molto usati gli SMS anche per inviare codici e password come fanno le banche con le OTP, oppure per i concorsi, inviti e molto altro.
Questi sono solo alcuni scenari che si possono verificare con un uso intelligente degli SMS ma anche con semplici applicazioni facilmente realizzabili.
In questo articolo vedremo come la piattaforma BeSMS
https://www.besms.net/ di Ehiweb.it mette a disposizione un servizio online, che possiamo utilizzare tramite linguaggio di programmazione VB.Net e C# in vari ambiti quale Web (Asp.Net) o Windows Application.
Tramite la prova gratuita
https://www.besms.net/prova-gratis/ vedremo come utilizzare il servizio web, che è lo stesso anche per i vari pacchetti a pagamento.
Creazione del progetto
Si crea un nuovo progetto di tipo Windows Form, ma gli esempi proposti si possono utilizzare anche per l’ambiente web.
Nella form, aggiungiamo due controlli label, due caselle di testo, e due pulsanti, il tutto come mostrato in figura 1.
Figura 1 – i vari controlli nella form
Dopo aver posizionato i vari controlli ed impostato i testi nelle label, aggiungiamo al nostro programma il riferimento al servizio web messo a disposizione dall’azienda.
Il servizio web è raggiungibile al seguente sito
https://secure.apisms.it/nosesszone/soap_web_service.php?wsdl e va aggiunto tramite i riferimenti di Visual Studio .Net.
Nella finestra di esplora soluzioni, facciamo click con il tasto destro sul nome del progetto e nel menu che viene visualizzato, selezioniamo la voce “Aggiungi” e nel sottomenu la voce “Riferimento al Servizio”. Nella finestra che viene aperta (figura 2) aggiungiamo il servizio messo a disposizione da Ehiweb e facciamo click sul pulsante “Vai”.
Verranno visualizzati i vari metodi messi a disposizione dal servizio web.
Figura 2 – I metodi del servizio web.
Da questa finestra, dobbiamo fare click sul pulsante “Avanzata…” il quale aprirà una finestra “Figura 3” con il quale possiamo inserire il riferimento al servizio “WSDL”, tramite il pulsante “Aggiungi riferimento web…”
Figura 3 – la finestra per aprire aggiungere il riferimento web
Nella finestra che viene aperta (figura 4) , verrà visualizzato il file xml del servizio soap, nella casella “Nome riferimento web:” impostiamo il valore “ServizioSMS” e facciamo click sul pulsante “Aggiungi riferimento”.
Figura 4 – L’aggiunta del servizio WSDL
Nel nostro progetto avremmo aggiunto il riferimento al servizio web.
Stesura del codice
Terminata questa parte per l’aggiunta di riferimenti al servizio web messo a disposizione di Ehiweb, non ci resta che scrivere il codice per la gestione degli sms.
Passiamo in visualizzazione codice, perché dovremmo creare una funzione che codifica in byte e poi di tipo string il testo che sarà presente nella casella di testo e che sarà inviato al destinatario.
Qui di seguito il frammento di codice per entrambi i linguaggi.
VB.Net
Private Function convertToBase64String(ByVal value As String) As String
Return System.Convert.ToBase64String(Encoding.Default.GetBytes(value))
End Function
C#
private string convertToBase64String(string value)
{
return System.Convert.ToBase64String(Encoding.Default.GetBytes(value));
}
Ora passiamo in visualizzazione grafica della nostra form.
Facciamo doppio click sul pulsante per l’invio degli sms, in modo che passiamo in visualizzazione codice, nell’evento click del pulsante.
La classe gwsms è il client del servizio, con il quale possiamo utilizzare i vari metodi messi a disposizione, tra cui il metodo “SendSms” che sarà quello per inviare gli sms.
Per eseguire questo metodo, dobbiamo utilizzare la classe “Richiesta” con la quale ci saranno le informazioni per l’invio del sms, quale i dati di autenticazione ed una proprietà di tipo sms, che contiene informazioni per l’invio del messaggio, quale numero del destinatario e testo da inviare.
Si riporta il frammento di codice per le suddette operazioni per i linguaggi VB.Net e C#.
VB.Net
Private Sub BtnInvia_Click(sender As Object, e As EventArgs) Handles BtnInvia.Click
Try
If TxtNumeroDestinatario.Text.Trim() = "" Then
MessageBox.Show("Inserire un numero di telefono")
Return
End If
Dim clientSMS As ServizioSMS.gwsms = New
ServizioSMS.gwsms()
‘Oggetto per la gestione di uno o
più sms
Dim
Richiesta As ServizioSMS.Richiesta = New ServizioSMS.Richiesta()
Richiesta.authlogin = "NomeUtente"
Richiesta.authpasswd = "Password"
‘Oggetto per l'invio di sms - imposto il testo, il telefono
del destinatario ed id api preso dal pannello di controllo del sito
Dim
SmsDaInviare As ServizioSMS.SMS = New ServizioSMS.SMS()
SmsDaInviare.body =
convertToBase64String(TxtTestoInviare.Text)
SmsDaInviare.destination = "39" &
TxtNumeroDestinatario.Text
SmsDaInviare.id_api = "19"
‘inizializzo la proprietà sms
che riguarda il numero degli sms in questo caso uno
Richiesta.sms = New ServizioSMS.SMS() {SmsDaInviare}
‘invio SMS
Dim
risultatoInvio As ServizioSMS.SMSresp() =
clientSMS.sendSms(Richiesta)
For
Each risultato As ServizioSMS.SMSresp In risultatoInvio
MessageBox.Show("ID: " & risultato.ID_Spedizione & " Codice: " + risultato.Codice & " Descrizione: " + risultato.Descrizione)
Next
Catch ex As Exception
MessageBox.Show("Errore: "
& ex.Message)
End
Try
End Sub
C#
private void BtnInvia_Click(object sender, EventArgs e)
{
try
{
if (TxtNumeroDestinatario.Text.Trim() == "")
{
MessageBox.Show("Inserire un numero di
telefono");
return;
}
ServizioSMS.gwsms clientSMS = new
ServizioSMS.gwsms();
//Oggetto per la gestione di uno o più
sms
ServizioSMS.Richiesta Richiesta = new ServizioSMS.Richiesta();
Richiesta.authlogin = "NomeUtente";
Richiesta.authpasswd = "Password";
//Oggetto per l'invio di sms - imposto il
testo, il telefono del destinatario ed id api preso dal pannello di controllo del
sito
ServizioSMS.SMS SmsDaInviare = new ServizioSMS.SMS();
SmsDaInviare.body
=convertToBase64String(TxtTestoInviare.Text);
SmsDaInviare.destination = "39" + TxtNumeroDestinatario.Text;
SmsDaInviare.id_api = "19";
//inizializzo la proprietà sms che
riguarda il numero degli sms in questo caso uno
Richiesta.sms = new ServizioSMS.SMS[] { SmsDaInviare };
//invio SMS
ServizioSMS.SMSresp[] risultatoInvio =
clientSMS.sendSms(Richiesta);
foreach (ServizioSMS.SMSresp risultato in risultatoInvio)
{
MessageBox.Show("ID: " + risultato.ID_Spedizione + " Codice: " + risultato.Codice + " Descrizione: " + risultato.Descrizione);
}
}
catch (Exception ex)
{
MessageBox.Show("Errore: " +
ex.Message);
}
}
Si esegue tale codice, impostando un numero di telefono e mettendo del testo, vedremo dopo pochi secondi la ricezione del messaggio sms.
Ora dobbiamo scrivere il codice per sapere quanto credito abbiamo a disposizione.
Passiamo in visualizzazione grafica della nostra form, e facciamo doppio click sul pulsante “Credito” in modo che passiamo in visualizzazione codice nell’evento click del pulsante.
Tramite il metodo “GetCredit” della classe “Gwsms” impostando le credenziali, possiamo sapere quanti sms disponiamo.
Qui di seguito il frammento di codice per entrambi i linguaggi delle suddette operazioni.
VB.Net
Private Sub BtnCredito_Click(sender As Object, e As EventArgs) Handles BtnCredito.Click
Try
Dim clientSMS As ServizioSMS.gwsms = New
ServizioSMS.gwsms()
Dim RichiestaCredito As
ServizioSMS.getCreditRequest = New ServizioSMS.getCreditRequest()
RichiestaCredito.authlogin = "NomeUtente"
RichiestaCredito.authpasswd = "Password"
Dim esitoCredito As String = clientSMS.getCredit(RichiestaCredito).ToString()
MessageBox.Show(esitoCredito)
Catch ex As Exception
MessageBox.Show("Errore: "
& ex.Message)
End
Try
End Sub
C#
private void BtnCredito_Click(object sender, EventArgs e)
{
try
{
ServizioSMS.gwsms clientSMS = new
ServizioSMS.gwsms();
ServizioSMS.getCreditRequest RichiestaCredito = new ServizioSMS.getCreditRequest();
RichiestaCredito.authlogin = "NomeUtente";
RichiestaCredito.authpasswd = "Password";
string esitoCredito = clientSMS.getCredit(RichiestaCredito).ToString();
MessageBox.Show(esitoCredito);
}
catch (Exception ex)
{
MessageBox.Show("Errore: " +
ex.Message);
}
}
Alcune considerazioni da dire, il codice id_api lo troviamo nel pannello centrale come riportato nella figura qui di seguito, accedendo al seguente sito
https://www.ehiweb.it/cliente/credito_besms.php dopo aver fatto login abbiamo id_ap per i vari tipi sms.
Figura 5 – Il codice api della pagina principale
Mentre per sapere i codici errore, nella tabella 10 della documentazione, qui
https://secure.apisms.it/documentazione_api/Documentazione_BCP_API.pdf troviamo i vari codici di errore e descrizione oltre al quale sono presenti informazioni utili sul servizio web.
Conclusioni
L’articolo ha voluto fornire all’utente una tecnica per l’invio di messaggi SMS, tramite la piattaforma BeSMS del provider Ehiweb.
L’utilizzo di SMS può tornare utile ai programmatori per integrare queste funzionalità di messaggistica ai proprio applicativi, oppure per creare appositi programmi per acquisire nuovi clienti (funnel marketing) o supportare le PMI che necessitano di strategie vincenti per la gestione dei propri clienti.