>Ejemplo 3: un proyecto ejecutable

>

Esta vez les dejo un proyecto de consola utilizando el SDK. Pueden bajarlo y compilarlo utilizando el C# compiler de Visual Studio.

Este ejemplo esta basado en los otros dos anteriores pero incluye un feature todavía no explicado pero entendible al leer el código.

Como les dije, todo esto es multiplataforma:

Desde Windows

Desde GNU/Linux

>Ejemplo 2: smsSDK para recibir mensajes.

>

Ahora les traigo la segunda parte de la serie de tutoriales explicativos del smsSDK.
Esta vez voy a explicar cómo hacemos para leer las respuestas de los mensajes que enviamos.

Voy a dejar que el código hable.


public static void Main (string[] args)
{
Credencial credencial = new Credencial("demo", "d3m0");

Mensajero mensajero = new Mensajero(credencial);

/*
* Leemos la o las respuestas pasando nuestra credencial
* y el numero del cual queremos saber su respuesta
*/
ContenidoRespuesta respuesta = mensajero.LeerRespuesta(credencial, "09811111222");

/*
* Verificamos el estado de la transaccion
*/
switch(respuesta.Codigo)
{
case CodigoRespuesta.Accepted:
case CodigoRespuesta.OK:
Console.WriteLine("Pedido procesado con exito!");
break;
default:
Console.WriteLine("Hubo un error al procesar el pedido. Error: '{0}'", respuesta.Codigo.ToString());
return;
}

/*
* La propiedad "HayDatos" es true cuando hay mensajes
* respondidos para el numero que pasamos.
*/

if (!respuesta.HayDatos)
{
Console.WriteLine("No hay mensajes respondidos");
return;
}

/*
* Las respuestas son alamacenadas en "MensajeRespondido.Datos".
* Esta propiedad es un array de objetos de
* la clase "MensajeRespondido".
*
* A continuacion, iteramos sobre los datos para leer las respuestas
* e imprimirlas en pantalla.
*/
foreach(MensajeRespondido mensajeRespondido in respuesta.Datos)
{
Console.WriteLine("==========================================");
Console.WriteLine("Codigo Mensaje: {0}", mensajeRespondido.ID);
Console.WriteLine("Numero: {0}", mensajeRespondido.Numero);
Console.WriteLine("Texto Enviado: {0}", mensajeRespondido.TextoEnviado);
Console.WriteLine("Texto Recibido: {0}", mensajeRespondido.TextoRespondido);
Console.WriteLine("Fecha: {0}", mensajeRespondido.FechaRespuesta);
}

Console.WriteLine("*** LISTO ***");

}
Qué pasa si queremos recibir las respuestas de todos los números a los cuales enviamos un mensaje?. Fácil cambiamos la línea:
ContenidoRespuesta respuesta = mensajero.LeerRespuesta(credencial, "0981111222");

por lo que viene:


ContenidoRespuesta respuesta = mensajero.LeerRespuesta(credencial, Mensajero.TODOS_LOS_NUMEROS);
En mis siguientes entradas voy a explicar el modelo asíncrono de envío y recepción de mensajes. En estos dos ejemplos se puede ver que las invocaciones a los métodos son bloqueantes, cosa que puede llegar a incomodar cuando trabajamos con interfaces gráficas o cuando nuestra aplicación es multipropósito.

>Ejemplo 1: smsSDK para enviar mensajes

>Es súper fácil. Voy a tratar de ser lo más pedagógico posible, no voy a mezclar los conceptos y voy a escribir un ejemplo para cada funcionalidad, así es más fácil de entender.

Lo siguiente es una aplicación de consola en C# que envía un mensaje de texto a cierto número utilizando el SDK.

El ejemplo es autodescriptivo y está comentado.


class MainClass
{
public static void Main (string[] args)
{
/*
* Creamos una instancia de la clase credencial que
* contenga nuestro usuario y password en el servidor
*/
Credencial credencial = new Credencial("demo", "d3m0");

/*
* Creamos una instancia de la clase Mensajero
* usando la credencial que acabamos de crear
*/
Mensajero mensajero = new Mensajero(credencial);


/*
* Creamos un "MensajeDeTexto" a enviar. Cargamos
* el mensaje y el numero de celular al cual queremos enviar.
*
*/
MensajeDeTexto sms = new MensajeDeTexto();
sms.NumeroCelular = "0981111222";
sms.Texto = "Hola Mundo desde smsSDK 0.1!";


/*
* Usando el mensajero que creamos previamente enviamos
* el mensaje utilizando el "MensajeDeTexto" y la "Credencial"
* que creamos. Ademas, capturamos la respuesta del servidor
* para conocer el estado de la transaccion.
*
*/
ContenidoRespuesta respuesta = mensajero.EnviarMensaje(sms, credencial);

switch(respuesta.Codigo)
{
case CodigoRespuesta.Accepted:
case CodigoRespuesta.OK:
Console.WriteLine("Pedido procesado con exito!");
break;
default:
Console.WriteLine("Hubo un error al procesar el pedido. Error: '{0}'", respuesta.Codigo.ToString());
break;
}

Console.WriteLine("LISTO");

}
}