VB .NET - Enviando SMS usando o serviço LocaSMS


 Neste artigo vou mostrar como enviar SMS em uma aplicação VB .NET usando o serviço da LocaSMS.  

Neste artigo eu vou usar o serviço da LocaSMS, uma empresa brasileira, para enviar SMS.

Para poder usar o serviço da LocaSMS vamos criar uma conta gratuita de avaliação neste link: http://locasms.com.br/#criarconta

Voce vai receber a sua senha de acesso na sua conta de email e terá um crédito de 30 SMS para testar o serviço.

Você pode fazer o login usando seu usuario e a sua senha e verificar os créditos disponíveis :

Documentação da API e Demos

Para acessar a documentação acesse o link : http://locasms.com.br/downloads-loca-sms/

No nosso exemplo vamos enviar SMS usando a integração por WebService e para isso vamos usar o seguinte endereço: http://54.173.24.177/painel/ServiceSms.asmx

Abaixo temos os métodos disponíveis no web service. No nosso exemplo vamos usar o método SendSMS:

Com a sua conta configurada e a documentação consultada vamos testar o serviço no VB .NET.

Nessa abordagem temos apenas que adicionar uma referência de serviço(add service reference) no nosso projeto apontando para a URL: http://54.173.24.177/painel/ServiceSms.asmx

Vamos utilizar o projeto criado na segunda parte do artigo.

Recursos Usados:

Enviando SMS com o serviço da LocalSMS

Abra o projeto criado no artigo anterior.

A seguir vamos incluir a referência ao serviço SOAP em nosso projeto. Vamos usar o serviço descrito neste link: http://54.173.24.177/painel/ServiceSms.asmx

Clique com o botão direito do mouse sobre o nome do projeto e a seguir clique em Add Service Reference;

A seguir informe o endereço :  http://54.173.24.177/painel/ServiceSms.asmx  na janela Add Service Reference e clique no botão OK;

Pronto ! já podemos usar o serviço no projeto.

Criando a classe para enviar SMS usando o serviço LocaSMS

Vamos criar uma nova classe em nosso projeto na pasta Service chamada EnviaSMSLocaSMS que vai implementar a interface IEnviaSMS conforme o código abaixo:

Public Class EnviaSMSLocaSMS
    Implements IEnviaSMS
    Public Sub EnviaSMS(telefone As Long, mensagem As String) Implements IEnviaSMS.EnviaSMS
        Try
            Dim usuario As String = "seu_usuario"
            Dim senha As String = "sua_senha"
            Dim campanha As String = "ENVIOSMS_LOCASMS"
            Using LocaSMS = New LocaSMS.ServiceSMSSoapClient()
                Dim resultado = LocaSMS.SendSMS(usuario, senha,
                New LocaSMS.rSMS() With
                {
                   .Destinations = {
                       New LocaSMS.Destination() With {.Number = telefone}},
                      .Msg = mensagem,
                      .Subject = campanha,
                      .WarningBeginningTransmission = False,
                      .Preso = False
                })
            End Using
        Catch
            Throw
        End Try
    End Sub
End Class

Observe que eu preciso informar o nome do usuário, a senha e o nome da campanha. E note que não precisei alterar nenhum código para enviar SMS apenas crie uma nova classe. Estamos assim aderente ao princípio Open-Closed.

Agora vamos alterar a nossa interface pois agora temos dois modos distintos de enviar SMS. Vamos incluir dois controles radiobutton no formulário para identificar cada um dos serviços conforme mostra a figura a seguir:

Agora vamos alterar o código do formulário e fazer alguns ajustes.

1- Vamos alterar o código do evento Click do botão de comando - Enviar SMS - conforme abaixo:

Private Sub btnEnviarSMS_Click(sender As Object, e As EventArgs) Handles btnEnviarSMS.Click
        Dim fone As Long = 0
        Dim msg As String = ""
        If Not ValidaTelefone(txtTelefone.Text) Then
            MessageBox.Show("Número de telefone inválido. Use o formato 55XX999999999. Ex: 5511987651122 ")
            txtTelefone.Text = ""
            txtTelefone.Focus()
            Return
        Else
            fone = Convert.ToInt64(txtTelefone.Text.Replace("+", String.Empty))
        End If
        If String.IsNullOrEmpty(txtMensagem.Text) Then
            MessageBox.Show("Informe a mensagem a ser enviada ")
            txtMensagem.Focus()
            Return
        Else
            msg = txtMensagem.Text
        End If
        If rdbViaNett.Checked Then
            EnviaMensagemSMSViaNett(fone, msg)
        ElseIf rdbLocaSMS.Checked Then
            EnviaMensagemSMSLocaSMS(fone, msg)
        End If
    End Sub

No código, agora verificamos qual a opção informada para envio de SMS e definimos duas rotinas:

  1.  EnviaMensagemSMSViaNett(fone, msg)
  2.  EnviaMensagemSMSLocaSMS(fone, msg)

Cada rotina vai enviar o SMS usando a classe Comunicacao(). Vamos ao código de cada uma delas:

1 - EnviaMensagemSMSViaNett(fone, msg)

 Private Sub EnviaMensagemSMSViaNett(fone As String, msg As String)
        Try
            Dim comunica As Comunicacao
            comunica = New Comunicacao(New EnviaSMSViaNett)
            comunica.EnviaMensagemSMS(fone, msg)
            MessageBox.Show("Mensagem enviada para  : " & txtTelefone.Text)
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message)
        End Try
    End Sub

 

2-  EnviaMensagemSMSLocaSMS(fone, msg)

Private Sub EnviaMensagemSMSLocaSMS(fone As String, msg As String)
        Try
            Dim comunica As Comunicacao
            comunica = New Comunicacao(New EnviaSMSLocaSMS)
            comunica.EnviaMensagemSMS(fone, msg)
            MessageBox.Show("Mensagem enviada para  : " & txtTelefone.Text)
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message)
        End Try
 End Sub

Agora executando o projeto e testando o serviço de envio de SMS da LocaSMS temos o formulário abaixo onde informamos o fone, a mensagem e marcamos a opção LocaSMS:

Clicando no botão Enviar SMS eu obtive o seguinte resultado no meu celular:

Recebi dois SMS, a mensagem enviada e um aviso informando do início da campanha:

E assim temos em nosso projeto VB .NET agora duas opções para enviar SMS, uma usando uma empresa internacional (ViaNett) e outra usando uma empresa local (LocaSMS).

Pegue o projeto completo aqui :  Vbnet_EnviaSMS2.zip

Disse-lhe Jesus: Eu sou o caminho, e a verdade e a vida; ninguém vem ao Pai, senão por mim.
João 14:6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no Visual Studio ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET ?

 

Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti