EN

Ejemplos de código en VB.net para la API SMS de LabsMobile

A continuación se presentan los ejemplos de código de programación en lenguaje VB.net para enviar mensajes SMS a través de la API de la plataforma LabsMobile.

Esta documentación está diseñada para que puedas conectar tus aplicaciones con la plataforma LabsMobile y automatizar el envío de mensajes SMS. El principal objetivo de la integración de estas aplicaciones es el envío de mensajes SMS y comunicaciones relacionadas.

Consejo Recomendamos utilizar nuestra API SMS http/POST en formato JSON para cualquier integración con la plataforma LabsMobile. Pero tenemos otras versiones API que puedes utilizar según tu entorno y requisitos.

Con estos ejemplos podrás realizar la integración de las siguientes funcionalidades:

  • Enviar mensajes SMS de forma individual o masiva.
  • Consultar el saldo de tu cuenta.
  • Recibir las notificaciones de confirmaciones de entrega y/o error que corresponden a los mensajes enviados.
  • Obtener notificación y datos de los mensajes recibidos en los números virtuales contratados.

A tener en cuenta

La API SMS de LabsMobile utiliza una URL base común para todas las peticiones: https://api.labsmobile.com.

Es altamente recomendable emplear una URL que incluya el protocolo HTTPS en cualquier versión de la API.

La autenticación se realiza con el nombre de usuario y un token API, myUsername:myToken. Debes crear el token API desde la sección Configuración API de tu cuenta.


Enviar SMS con http/POST

Aquí tienes un ejemplo de código en lenguaje VB.net para enviar mensajes SMS utilizando la API SMS http/POST que utiliza el formato JSON para las variables de intercambio de información.

Como puedes observar, necesitas crear una estructura en formato JSON que contenga todos los parámetros necesarios para el envío y realizar una llamada HTTP/POST con estos datos en el cuerpo de la solicitud.

Envío simple a un único destinatario con http/POST (VB.net)
 
Imports System
Imports System.Net.Http
Imports System.Text

Module Module1

   Sub Main()
       Dim userToken As String = "myUsername:myToken"
       Dim credentials As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(userToken))

       Dim client As New HttpClient()
       Dim mediaType As String = "application/json"
       Dim jsonBody As String = "{
             ""message"":""Your verification code is 123"",
             ""tpoa"":""Sender"",
             ""recipient"":[
               {
                 ""msisdn"":""12015550123""
               }
             ]
           }"

       Dim content As New StringContent(jsonBody, Encoding.UTF8, mediaType)

       client.DefaultRequestHeaders.Add("Authorization", "Basic " & credentials)

       Dim request As New HttpRequestMessage(HttpMethod.Post, "https://api.labsmobile.com/json/send")
       request.Content = content

       Dim response As HttpResponseMessage = client.SendAsync(request).Result

       Dim responseContent As String = response.Content.ReadAsStringAsync().Result
       Console.WriteLine(responseContent)

   End Sub

End Module
              
Envío masivo a múltiples destinatarios con http/POST (VB.net)
Imports System
Imports System.Net.Http
Imports System.Text

Module Module1

   Sub Main()
       Dim userToken As String = "myUsername:myToken"
       Dim credentials As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(userToken))

       Dim client As New HttpClient()
       Dim mediaType As String = "application/json"
       Dim jsonBody As String = "{
             ""message"":""Your verification code is 123"",
             ""tpoa"":""Sender"",
             ""recipient"":[
               {
                 ""msisdn"":""12015550123""
               },
               {
                 ""msisdn"":""12015550124""
               },
               {
                 ""msisdn"":""12015550125""
               }
             ]
           }"

       Dim content As New StringContent(jsonBody, Encoding.UTF8, mediaType)

       client.DefaultRequestHeaders.Add("Authorization", "Basic " & credentials)

       Dim request As New HttpRequestMessage(HttpMethod.Post, "https://api.labsmobile.com/json/send")
       request.Content = content

       Dim response As HttpResponseMessage = client.SendAsync(request).Result

       Dim responseContent As String = response.Content.ReadAsStringAsync().Result
       Console.WriteLine(responseContent)
   End Sub

End Module
                
Resultado positivo
{
  "subid": "65f33a88ceb3d",
  "code": "0",
  "message": "Message has been successfully sent."
}
  
Resultado erróneo
{
  "subid": "65f7f7041385d",
  "code": "35",
  "message": "The account has no enough credit for this sending"
}
  

Es posible consultar todos los códigos de error en Documentación API, códigos de error.

Para obtener más detalles sobre los parámetros disponibles y las opciones de configuración, consulta la documentación oficial en:


Enviar SMS con http/GET

Este es un ejemplo de código en lenguaje VB.net para enviar mensajes SMS utilizando la API SMS http/GET.

Como podrás observar, debes pasar una serie de variables GET en la misma URL y realizar una llamada HTTP. Es importante codificar todos los valores como URL utilizando la función Uri.EscapeDataString().

Importante La API SMS http/GET transmite las credenciales (username y token API) sin cifrar y de forma no segura. Recomendamos utilizar esta API GET sólo cuando sea totalmente imprescindible y utilizar en su lugar la API SMS http/POST.

Envío simple a un único destinatario con http/GET (VB.net)
Imports System
Imports System.Net.Http

Module Module1

    Sub Main()
        Dim client As New HttpClient()

        Dim username As String = "my@Username"
        Dim token As String = "myToken"
        Dim msisdn As String = "12015550123"
        Dim message As String = "Your verification code is 123"

        Dim encodedUsername As String = Uri.EscapeDataString(username)
        Dim encodedToken As String = Uri.EscapeDataString(token)
        Dim encodedMsisdn As String = Uri.EscapeDataString(msisdn)
        Dim encodedMessage As String = Uri.EscapeDataString(message)

        Dim url As String = $"http://api.labsmobile.com/get/send.php?username={encodedUsername}&password={encodedToken}&msisdn={encodedMsisdn}&message={encodedMessage}"

        Dim response As HttpResponseMessage = client.GetAsync(url).Result

        Dim responseContent As String = response.Content.ReadAsStringAsync().Result
        Console.WriteLine(responseContent)
    End Sub

End Module
                
Envío masivo a múltiples destinatarios con http/GET (VB.net)
Imports System
Imports System.Net.Http

Module Module1

   Sub Main()
       Dim client As New HttpClient()

       Dim username As String = "myUsername"
       Dim token As String = "myToken"
       Dim msisdn As String = "[12015550123,12015550124,12015550125]"
       Dim message As String = "Don't miss our Sale! Use code XXXX123 for 20% off."

       Dim encodedUsername As String = Uri.EscapeDataString(username)
       Dim encodedToken As String = Uri.EscapeDataString(token)
       Dim encodedMsisdn As String = Uri.EscapeDataString(msisdn)
       Dim encodedMessage As String = Uri.EscapeDataString(message)

       Dim url As String = $"http://api.labsmobile.com/get/send.php?username={encodedUsername}&password={encodedToken}&msisdn={encodedMsisdn}&message={encodedMessage}"

       Dim response As HttpResponseMessage = client.GetAsync(url).Result

       Dim responseContent As String = response.Content.ReadAsStringAsync().Result
       Console.WriteLine(responseContent)
   End Sub

End Module
                
Resultado positivo
{
  "subid": "65f33a88ceb3d",
  "code": "0",
  "message": "Message has been successfully sent."
}
  
Resultado erróneo
{
  "subid": "65f7f7041385d",
  "code": "35",
  "message": "The account has no enough credit for this sending"
}
  

Es posible consultar todos los códigos de error en Documentación API, códigos de error.

Para obtener más detalles sobre los parámetros disponibles y las opciones de configuración, consulta la documentación oficial en:


Consulta de saldo de una cuenta

Con este ejemplo de código en VB.net se puede consultar el saldo de la cuenta utilizando la API SMS de LabsMobile

Mediante una llamada a este endpoint, puedes obtener información sobre la cantidad de créditos disponibles en tu cuenta de LabsMobile. La conexión se establece a través de una solicitud HTTP/GET con autenticación en el encabezado de la conexión HTTP.

Consulta de saldo de una cuenta (VB.net)
Imports System
Imports System.Net.Http
Imports System.Text

Module Module1

   Sub Main()
       Dim userToken As String = "myUsername:myToken"
       Dim credentials As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(userToken))

       Dim client As New HttpClient()


       client.DefaultRequestHeaders.Add("Authorization", "Basic " & credentials)

       Dim request As New HttpRequestMessage(HttpMethod.Get, "https://api.labsmobile.com/json/balance")

       Dim response As HttpResponseMessage = client.SendAsync(request).Result

       Dim responseContent As String = response.Content.ReadAsStringAsync().Result
       Console.WriteLine(responseContent)
   End Sub

End Module
                
Resultado
{"code":0,"credits":"10"}

  

Consulta la documentación completa en:


Recibir estado de mensajes enviados

Este script de ejemplo recibe una llamada por parte de la plataforma LabsMobile cuando un mensaje SMS enviado cambia de estado. Para implementar esta solución, es esencial configurar los parámetros adecuados, la URL de confirmación en el parámetro ackurl en la petición o la URL por defecto en la Configuración API de tu cuenta.

Por tanto, es necesario publicar un script como este en tu sistema para que nuestra plataforma llame a la URL cuando ocurra un cambio de estado en cualquiera de los mensajes enviados.

El código de ejemplo obtiene los parámetros de la URL utilizando la variable global $_GET y luego asigna estos parámetros a variables locales.

Script de recepción de estados de mensajes enviados (VB.net)
Imports System
Imports System.Collections.Specialized
Imports System.Web
Imports System.Net

Module Program
   Sub Main(args As String())
       MainRecieveMessageStatus(args)
   End Sub

   Async Sub MainRecieveMessageStatus(args As String())
       Dim port As Integer = 3000
       Dim listener As New HttpListener()
       listener.Prefixes.Add($"http://+:{port}/")
       listener.Start()
       Console.WriteLine($"The server is running on port {port}")

       While True
           Dim context = Await listener.GetContextAsync()
           Dim request = context.Request
           Dim response = context.Response

           Dim queryParams As NameValueCollection = If(request?.Url IsNot Nothing, HttpUtility.ParseQueryString(request.Url.Query), New NameValueCollection())
           Dim acklevel As String = If(queryParams.Get("acklevel"), "default_value")
           Dim credits As String = If(queryParams.Get("credits"), "default_value")
           Dim msisdn As String = If(queryParams.Get("msisdn"), "default_value")
           Dim status As String = If(queryParams.Get("message"), "default_value")
           Dim subid As String = If(queryParams.Get("subid"), "default_value")
           Dim timestamp As String = If(queryParams.Get("timestamp"), "default_value")

           Console.WriteLine($"Variable acklevel: {acklevel}")
           Console.WriteLine($"Variable credits: {credits}")
           Console.WriteLine($"Variable msisdn: {msisdn}")
           Console.WriteLine($"Variable status: {status}")
           Console.WriteLine($"Variable subid: {subid}")
           Console.WriteLine($"Variable timestamp: {timestamp}")

           Dim responseString As String = "200 OK"
           Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)

           response.ContentType = "text/plain"
           response.ContentLength64 = buffer.Length
           Await response.OutputStream.WriteAsync(buffer, 0, buffer.Length)
           response.Close()
       End While
   End Sub
End Module
                

Consulta la documentación completa en:


Recepción de mensajes SMS

Una vez contratado un número virtual, podrás recibir mensajes vía API en una URL específica mediante una llamada HTTP/GET a un script de tu sistema. Cada mensaje recibido invocará la URL, transmitiendo todos sus datos en variables en formato JSON

Para activar esta funcionalidad se debe informar la URL de recepción de mensajes en la Configuración de tu cuenta.

Es necesario configurar un endpoint en tu sistema para que la plataforma LabsMobile llame a este script cuando se reciba un SMS en cualquiera de los números virtuales contratados.

El código de ejemplo obtiene los parámetros de la URL utilizando la variable global $_GET y luego asigna estos parámetros a variables locales

Script de recepción de mensajes recibidos (VB.net)
 
Imports System
Imports System.Collections.Specialized
Imports System.Web
Imports System.Net

Module Program
   Sub Main(args As String())
       MainRecieveMessageStatus(args)
   End Sub

   Async Sub MainRecieveMessageStatus(args As String())
       Dim port As Integer = 3000
       Dim listener As New HttpListener()
       listener.Prefixes.Add($"http://+:{port}/")
       listener.Start()
       Console.WriteLine($"The server is running on port {port}")

       While True
           Dim context = Await listener.GetContextAsync()
           Dim request = context.Request
           Dim response = context.Response

           Dim queryParams As NameValueCollection = If(request?.Url IsNot Nothing, HttpUtility.ParseQueryString(request.Url.Query), New NameValueCollection())
           Dim inbound_number As String = If(queryParams.Get("inbound_number"), "default_value")
           Dim service_number As String = If(queryParams.Get("service_number"), "default_value")
           Dim msisdn As String = If(queryParams.Get("msisdn"), "default_value")
           Dim message As String = If(queryParams.Get("message"), "default_value")
           Dim timestamp As String = If(queryParams.Get("timestamp"), "default_value")

           Console.WriteLine($"Variable inbound_number: {inbound_number}")
           Console.WriteLine($"Variable service_number: {service_number}")
           Console.WriteLine($"Variable msisdn: {msisdn}")
           Console.WriteLine($"Variable message: {message}")
           Console.WriteLine($"Variable timestamp: {timestamp}")

           Dim responseString As String = "200 OK"
           Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)

           response.ContentType = "text/plain"
           response.ContentLength64 = buffer.Length
           Await response.OutputStream.WriteAsync(buffer, 0, buffer.Length)
           response.Close()
       End While
   End Sub
End Module
                

Consulta la documentación completa en: