miércoles, 25 de agosto de 2010

Un traductor confiable en tu celular

Sigo en la búsqueda del servicio perfecto que a todo el mundo le haga falta y que sea fácil de alcanzar. Como todavía no llego a esa meta sigo tratando y hoy les traigo otro de mis intentos.

¿Cuántas veces necesitaste traducir algo y no pudiste?

En mi caso particular esto es imposible de contabilizar, de hecho, cuando no estoy frente a mi PC conectada a Internet con Google Translator abierto, creo que me resulta difícil sino imposible conseguir una traducción.

Bueno, sin más introducción les presento el traductor español/inglés - inglés/español del mismísimo Google en tu celular!

¿Cómo funciona?
  • Envía ain + texto-en-castellano al 0981157325 para traducir un texto (o palabra) de castellano a inglés. Ejemplo: ain hola mundo!
  • Envía aes + texto-en-inglés al mismo número para el proceso inverso, español a inglés. Ejemplo: aes hello world!
Para hacerte más claro el panorama: ain viene de A-Inglés y aes de A-Español.

Lo único que tenés que hacer ahora es probar :)



viernes, 20 de agosto de 2010

La guía telefónica del país en tu celular

No exagero. Podés tener la guía de todos los usuarios de línea fija (COPACO) en tu celular al alcance de un mensaje de texto.

Muchas veces recibí llamadas de línea baja desde números desconocidos. Muchas de esas llamadas resultaron ser importantes por lo que perdí oportunidades que pude haber aprovechado si hubiera sabido quién llamaba o si hubiera podido identificar el número cuando no estaba registrado entre mis contactos.

Con este nuevo proyecto pretendo ayudar a las personas a identificar esas llamadas perdidas que podrían llegar a ser relevantes en cierto aspecto, así, ya no te quedás con la duda de saber quién te llamó.

La guía telefónica

Lo que hago no es ilegal en ningún aspecto hasta donde llega mi conocimiento legislativo. Uso una base de datos pública, no muy user friendly, le creé una interfaz un poco más intuitiva y la expongo al público con ánimos de ayudar. Es un servicio gratuito que seguirá vivo mientras dure mi saldo para mensajes. No veo nada de malo en esto.

Cómo usar

Enviá quien + nro-linea-baja al 0981157325 y recibirás un mensaje con el nombre del titular y la dirección registrada.

Por ejemplo: "quien 021998877". Quince segundos después estarás recibiendo la información que buscás.

A tener en cuenta
  • Si el número de teléfono que buscas no existe o esta mal formado, no se responde el mensaje informando tal cosa con el fin de ahorrar saldo.
  • Si el número que buscas existe, está bien construido y no recibís respuesta, probablemente me quedé sin saldo.
  • Si el número que buscás tiene menos de 6 dígitos de largo o más 6 dígitos de largo (longitud(número) <> 6) , tenés que enviar el mensaje de ésta forma: área.número. Por ejemplo: 0541.66777.
En general, es fácil de usar.

Probá

El sistema está on-line, probá, comprobá que funciona y hacele propaganda para que otros puedan usar :) .

viernes, 13 de agosto de 2010

Ejemplo 4: demo usando Windows Forms

Seguimos con los ejemplos. Lo siguiente es un programa hecho en Visual Studio utilizando Windows Forms.

Les cito lo que puede hacer:
  • Enviar mensajes por número
  • Enviar mensajes grupales por lista de números cargados a mano o desde un archivo
  • Leer los mensajes respondidos por número
  • Leer todos los mensajes respondidos
  • Chequear mensajes respondidos por tiempo (cada 5 segundos por ejemplo)
No hay mucho más que decir aparte de esto. Bajá el código y probá la aplicación :)

Les dejo las capturas.










Como siempre, también funciona desde Linux.




jueves, 12 de agosto de 2010

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.

miércoles, 11 de agosto de 2010

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

}
}

El SDK

Como había dicho en mi entrada anterior, el proyecto está construido en C# usando el perfil NET_2 para hacerlo compatible con aplicaciones viejas hechas en C#1, C#2 y VisualBasic.NET 7 y 8 pero, lo más importante, para ser usable sobre Linux y MacOS usando el compilador de C# implementado por Mono a partir del ECMA-CLI.

Básicamente, el SDK consiste en una serie de clases especializadas para realizar el envío y recepción de mensajes de texto conectándose a un servidor externo (mi servidor) a través de Internet. La autenticación se realiza por medio de HTTP BASIC AUTHENTICATION por lo que conectarse a mi servidor no debería ser un problema ya que solo se utiliza el protocolo HTTP, sencillo y fácil de entender.

En este caso, tengo las clases escritas en C# pero la lógica puede ser perfectamente reimplementada en PHP o Java (por ejemplo) si es que existe alguna necesidad de usar esto desde otra tecnología de desarrollo.

No voy a profundizar mucho en el funcionamiento interno del SDK ya que voy a publicar el código, asi que si están interesados en cómo funciona, pueden descargar los fuentes y echarle una leída :).

Para que vean que realmente es fácil, pongo el diagrama de las principales clases. El código está en castellano para que sea apto para todo público, es decir, no hace falta que sepas inglés para usarlo.




El código

Originalmente lo escribí completamente en Linux usando Monodevelop, pero para asegurarme de que puede ser abierto por Visual Studio, lo llevé a Windows y confirmo que sí se puede.

En las siguientes entradas se vienen los ejemplos de uso.

Descarga

lunes, 9 de agosto de 2010

Kit de desarrollo para Envío/Recepción de SMS

Muchas veces, durante el transcurso de mi vida como programador, quise agregarle funcionalidades de envío de mensajes de texto a los varios programas que había desarrollado pero esto casi nunca fue posible y cuando lo fue, tenía que enviarlos a través de mails que no siempre llegaban y que cuando llegaban, no podías responderlos con facilidad, eran difíciles de leer o de identificar al remitente pero lo peor de todo esto, era que al poco tiempo, la IP de mi servidor de correo era bloqueada por la operadora haciendo inservible todo el trabajo que había hecho.

El producto: smsSDK versión 0.1

Este SDK permite el envío y recepción de mensajes de texto a través de un número real, no hay emails ni algún otro truco raro. Es un número de teléfono como el que tenés en tu aparato celular y podes usarlo como tal. Los mensajes que salen por este servicio LLEGAN, por el siempre hecho de que son enviados usando el servicio de SMS de la operadora, pagando un saldo en guaraníes y remitidos desde una cuenta (número de teléfono) comprado y pagado mensualmente por mi grupo.

El hecho de que puedas enviar usando un número real, te permite poder recibir una respuesta. Por ejemplo: si envias el texto "hola mundo" desde el 09xx111222 al celular 09xx222333, este último puede perfectamente responder tu mensaje y vos capturar su respuesta utilizando el SDK.

¿A quiénes va dirigido ésto?

Por tratarse de un kit de desarrollo, es de esperarse que vaya dirigido a los programadores. La idea es que cualquiera que necesite agregarle este tipo de funcionalidad a su trabajo, lo haga sin mayores complicaciones y en un tiempo bajísimo ya que la curva de aprendizaje del SDK es casi una recta :)

¿Para qué sirve?

Le podés dar muchísimas utilidades. A continuación te cito algunas ideas:
  • Si tenés una tienda de comercio, podés enviar mensajes de texto a tus clientes informando de nuevos productos, ofertas o promociones.
  • Si tenés o formás parte de un grupo que involucre un alto número de personas, como una cooperativa, club social o fraternidad, podés enviar mensajes masivos avisando de reuniones y como el SDK te permite leer las respuestas de cada uno, sabés quiénes van y quiénes no.
  • Si tenés un consultorio médico podés hacer confirmación automatizada de citas, cosa que las secretarias siempre hacen, pero a mano.
  • Podés hacer un recordatorio que te envíe un mensaje de texto al celular de acuerdo a fechas importantes dentro de tu agenda.
¿Cómo funciona?

Es siempre mejor explicar algo con un ejemplo y así lo voy a hacer, pero en mis siguientes posts. Mientras, lo voy a describir en palabras sencillas.

El SDK esta hecho en C#, lo podés usar desde cualquier proyecto .NET. Necesitas incluir el ensamblado DLL como referencia, importar los espacios de nombre, tener una conexión decente a Internet para conectarte a mis servidores y ya está, solo eso.



¿Cuesta algo?

El SDK no cuesta nada, voy a liberar el código fuente para que cualquiera pueda usarlo, cambiarlo o estudiarlo.

El saldo para enviar mensajes sí cuesta, pero esa es otra historia que la vamos a ir cubriendo más adelante.

Si te interesa, fijate en lo que viene muy próximamente en las siguientes entradas.