>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");

}
}