domenica 16 febbraio 2020

.Net inviare SMS tramite il servizio Ehiweb con VB.Net e C#

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.

Nessun commento: