viernes, agosto 17, 2007

Enviando SMS desde tus programas.

La telefonía ha cambiado mucho en los últimos 10 años, a tal grado de que el teléfono fijo, ese aparatito para comunicarnos por voz con cualquier persona que tuviera otro aparato igual, en cualquier parte del mundo ha quedado obsoleto y ha sido sustituido por el famoso teléfono "móvil" o "celular" como se le llama en América.

Un teléfono móvil ofrece los mismos servicios que un teléfono fijo, pero con la facilidad de que puedes llevarlos a cualquier parte, en los teléfonos móviles de muchos nos va la vida entera, agenda, fotos, internet, correo electrónico y mensajes SMS, todo esta metido en el aparatejo de marras, y el día que se pierde, te lo roban o se rompe, a mas de uno nos puede dar un mal.

El correo electrónico y la navegación web son cosas que "casi" nadie usa de su teléfono móvil, con sus honrosas excepciones, para lo que lo usamos mayoritariamente es para hablar y pero casi con seguridad, el envío de SMS es el servicio para el cual se usa con mayor frecuencia el teléfono móvil.

SMS son las iniciales de Short Message System o Sistema de Mensajes cortos, realmente este servicio fue el que terminó de matar a los radio localizadores o buscas, un SMS es mas discreto que una llamada telefónica a la que forzosamente te vez obligado a contestar a mitad de una película, en cambio si te llega un SMS, pues lo miras en ese momento, o mas tarde, y lo contestas cuando tu quieras, es mucho mas barato, y si no tienes necesidad de hablar, pues uno o varios SMS pueden ser mucho mas económicos que una llamada celular de 1 minuto.

Solo en México se envían mas de 40 millones de SMS todos los días, lo que equivale a que todas las personas que tenemos un teléfono celular en México enviemos o recibamos un mensaje todos los días, podrá pasar un día en que no hagas una llamada por tu teléfono móvil, pero dudo mucho que pase un día en que no recibas o envíes un SMS.

La necesidad del uso de este servicio hoy en día es tal, que para el desarrollador de aplicaciones, la posición de sus clientes ha pasado de que los programas podrían enviar SMS, a la posición de que los programas tienen que mandar mensajes SMS.

¿ Porqué o para qué tendría que incluir el soporte SMS a mis programas ?. Charlando con algunos clientes, con distintas necesidades y sistemas, me han venido a la cabeza varias ideas sobre el uso de mensajes SMS en sus programas:

Sistema de escuelas: Capacidad de enviar mensajes a los padres de familia para avisarles de tal o cual evento del colegio, entregas de calificaciones, reportes de los alumnos, a los alumnos enviarles extractos de sus calificaciones, tareas, eventos escolares, etc.

Sistemas de Nómina: Notificar a los trabajadores del pago de su sueldo, de sus movimientos en el Seguro Social, etc.

Sistemas de Gestión: y aquí es donde tenemos mas aplicación, envio del corte diario de ventas al director, notificación a los clientes de embarques, compras, saldos, pagos realizados, etc, notificación de entradas y salidas de dinero, y un largo etcétera solo por mencionar algunas características que me vienen a la cabeza.

El problema es... ¿ como hacerlo ?, la ruta mas viable es hacerlo vía internet, porque montar la infraestructura de hardware necesaria para hacerlo puede ser un tanto caro y un mucho complicado.

Dado que el boom de la tecnología del envio de mensajes casi viene de la mano con el boom de internet, en un principio los operadores telefónicos permitía el envío de SMS sin costo desde sus paginas web por dos razones: primera porque el sistema de mensajes SMS no tenía la difusión que tiene hoy en día, y segundo porque casi nadie sabía que podía enviar mensajes por medio de una página web, y los pocos que sabía, no siempre tenía acceso a una computadora con conexión a internet, en aquellos tiempos de jauja no falto aquel listo que se "robaba" las paginas web de envío de mensajes y hacía programitas como el WinSMS que te enviaba mensajes gratis a cualquier celular de cualquier compañía, lo que provocó que las telefónicas, no estando dispuestas a perder dinero, optaran por restringir el acceso a los servicios de envío de SMS por la web, forzándote a contratar servicios adicionales o condicionando el envío mediante claves que tenías que digitar para poder enviar el mensaje.

Esos tiempos quedaron atrás, ahora las telefónicas han visto en el envío de mensajes un negocio multimillonario, a tal grado que después de vender sus "sobrantes" de larga distancia (por si no lo sabías, las tarjetas telefónicas que te venden para llamar de larga distancia aprecios reducidos, son en realidad los "sobrantes" que las compañías telefónicas venden a otras empresas que a su vez venden en tarjetas el servicio a unos precios mucho mas reducidos que lo que cuesta la llamada desde tu teléfono, la tarifa mas baja viene por la compra en volumen que se hace a la telefónica de esos "sobrantes"), pues bien, los operadores celulares se han apuntado al negocio de vender servicios y ahora venden mensajes "bulk", es otras palabras, venden paquetes de mensajes "al por mayor" a otras compañías que se dedican a revenderlos en paquetes pequeños, o individualmente, como es el caso de Skype, que te permite enviar SMS a cualquier teléfono móvil de cualquier parte del mundo.

Pero Skype no es la úncia opción, existen empresas, como JIKAMA (www.jikama.com.mx), en la cual tu puedes comprar "paquetes" de mensajes SMS y enviarlos desde internet A CUALQUIER TELEFONO MOVIL DEL MUNDO, supongamos que tu estás en México, compras un paquete de mensajes SMS de Jikama, y quieres enviarle un saludo a un amiguete que tienes en España, pues nada, entras a la web de Jikama, digitas el código del país (España es el 34) y luego el numero de teléfono móvil: 646295831 y en pocos segundos ya esta tu mensaje enviado.

Jikama es una empresa Mexicana, pero ofrece el servicio prácticamente desde cualquier parte del mundo y a cualquier parte del mundo, sin importar desde que país estés, tu puedes comprar mensajes SMS en Jikama via PayPal o con tu tarjeta de crédito o débito (el servicio es de prepago) y enviarlos ya sea dentro de tu mismo país o bien fuera de este, lo único que necesitas conocer es el código de país, el envío de mensajes tiene el mismo costo, sin importar desde donde o hacia donde lo envíes.

¿ Cómo opera Jikama ?, Jikama funciona atraves de la red de America Mobile, en este caso usando el hub de comunicaciones de Telcel en México, proveedor que se encarga del envío de mensajes a todo el mundo, Jikama envía las peticiones de mensajes a Telcel, usando una pasarela de internet desde los servidores Jikama hasta los servidores de Telcel y de ahí al resto del mundo, por los convenios que tiene Telcel con otros operadores a nivel mundial.

¿ Como lo uso yo, usuario final el sistema ?, Jikama se maneja todo por internet, así que lo primero que tienes que hacer es entrar en www.jikama.com.mx, y darte de alta en el servicio, solo por el hecho de darte de alta, se te obsequian 10 mensajes sms gratis. Para enviar tus mensajes solo tienes que llenar a un formulario que esta en al Web de Jikama, proporcionar el número al cual deseas enviar el mensaje (código país+número de teléfono móvil) presionar el botón "enviar" y listo, Jikama hace el resto, enviará el mensaje al teléfono móvil deseado en cualquier parte del mundo y te enviará una copia de dicho mensaje por correo electrónico.

Todo eso esta muy bien, ¿ pero como integro esto en mis programas Xailer, FiveWin o xHarbour ?.

Es muy sencillo, las herramientas de desarrollo anteriormente citadas vienen con todo lo necesario para poder llamar a las páginas web de Jikama, aun incluso desde Clipper MS-DOS a 16 bits.

Veamos como hacerlo:

Jikama te provee a ti usuario, de un número de usuario y de un password para el envío de tus mensajes, pero también si miras en la web de Jikama podrás encontrar pequeños tesoros como la manera en la que puedes crear tu un link de internet para envio de mensajes, conociendo este link y mediante las funciones o clases para manejo de internet que tenga tu producto de programación favorito, puedes llamarlo para el envío de mensajes.

El link para enviar un mensaje por la web de Jikama es como sigue:

http://www.jikama.com/cgi-bwp/cwsmsexp.bwp?user=XXXXXX&passwd=YYYYYYYYYY&telcel=525555555555&Texto=mensaje

Dondes user y password deberán ser reemplazados por los correspondientes valores que Jikama te dará al momento de inscribirte, TECEL es el número telefónico donde quieras enviar el mensaje al cual debes anteponer el código de país (México es el 52) y TEXTO es el mensaje que quieres enviar de hasta 150 caracteres.

Con esto en la mano, ahora es muy fácil enviar "mensajitos" desde nuestros programas:

Como CA-Clipper carece de conexión o cliente web, es muy fácil aprovechar el comando RUN para enviar los SMS mediante un archivo .URL

Un archivo .URL es muy parecido a un archivo .INI, copia las siguiente 2 lineas en un archivo de texto, y guárdalo con el nombre que quieras, pero con extensión URL (la extensión es MUY importante) :

[InternetShortcut]
URL=http://www.jikama.com/cgi-bwp/cwsmsexp.bwp?user=XXXXXXX&passwd=XXXXXXXX&telcel=nnnnnnnnnnn&Texto=MensajeAEnviar

Obviamente las XXXXXXXX y NNNNNNN deberán ser sustituidos por los valores que obtendrás cuando te des de alta en Jikama.

Digamos que las dos líneas anteriores han quedado guardadas en el archivo JIKAMA.URL

Ahora, desde nuestro programa Clipper agregamos la siguiente linea:

RUN start jikama.url

Y voila !!!!, mensaje SMS enviado, claro, previamente tendríamos que haber escrito algo como esto:

LOCAL cNumero := SPACE(10), cMensaje := SPACE(150)
LOCAL cURL := "[InternetShortcut]"+CHR(13)+CHR(10)
cUrl += "URL=http://www.jikama.com/cgi-bwp/cwsmsexp.bwp?"
@ 0,0 Say "No. Telefonico :" GET cNumero
@ 1,0 Say "Mensaje :" GET cMensaje
Read
cUrl += "user="+usuario jikama+"&"
cUrl += "passwd="+password jikama+"&"
cUrl += "telcel="+cNumero+"&"
cUrl += "texto="+cTexto+CHR(13)+CHR(10)
MemoWrit(".\jiakma.url",cUrl)
RUN start jikama.url


¿ Ves que fácil ?. Usarlo con Clipper tiene una pequeña pega, y es que al ser una llamada a un archivo .URL, obtendremos como respuesta una ventana del navegador de internet donde se nos notificará si el mensaje pudo ser enviado con éxito y no hay forma de evitar que esta ventana aparezca.

Para Xailer es mucho mas fácil aún, porque Xailer incluye una clase nativa para manejo de internet, así que basta con poner el siguiente código:

WITH OBJECT TInternet():New( Self )
IF :Open()
IF !Empty( hData := :OpenURL( "http://www.jikama.com/cgi-bwp/cwsmsexp.bwp?user=XXXXXXX&passwd=XXXXXXXX&telcel=nnnnnnnnnnn&Texto=MensajeAEnviar" ) )
IF :ReadFile( hData, @cData, 65536 )
MsgInfo( cData)
ENDIF
:CloseURL( hData )
ENDIF
:Close()
ENDIF
END

Y listo, el resultado de la llamada al URL queda "atrapado" en la variable cData, que es una cadena de caracteres que luego podremos analizar para ver si el mensaje se ha enviado con éxito o bien ha causado error.

Ahora con xHarbour, que también posee una clase TURL para permitirnos manejar estos menesteres de internet, de la misma forma como lo manejamos con xHarbour en modo consola es válido hacerlo con Fivewin Harbour:

oUrl := tURL():New(""http://www.jikama.com/cgi-bwp/cwsmsexp.bwp?user=XXXXXXX&passwd=XXXXXXXX&telcel=nnnnnnnnnnn&Texto=MensajeAEnviar")
oClient := tIPClient():New( oUrl )
oClient:nConnTimeout := 20000
IF oClient:Open( oUrl )
oClient:ReadToFile( ".\cdata.txt" )
oClient:Close()
ELSE
MsgStop("No se pudo enviar el mensaje")
ENDIF
MsgInfo(MemoRead(".\cdata.txt")


Lo maravilloso de esta tecnología es lo simple que es, supongo que detrás debe haber muchas cosas mas, pero la forma de acceder a ella desde nuestros programas no tiene porqué ser complicada.

Animate a probar estos ejemplos y veamos en que podríamos aplicarlos.

3 comentarios:

iortizdezuniga dijo...

René,

Muy buen artículo. Yo soy un asiduo al SMS de Skype por dos razones fundamentales. La primera y más importante porque te notifica de verdad cuando el mensaje ha sido procesado correctamente. El famoso WinSMS lo deje de usar porque tenía que llamar por teléfono para ver si lo habían recibido, verdaderamente absurdo. Y segundo por que te permite indicar el número de teléfono que quieres que aparezca como remitente, es decir, el destinatario del mensaje lo recibe como si se hubiese enviado desde mi propio movil (celular).

Skype tiene un interface COM que permite enviar mensajes y un mayor control que la ejecución de un CGI. Hace tiempo alguien publicó en el el foro de xHarbour como acceder a Skype con una sencilla clase.

Por último, y al menos en España, los precios de Skype son bastante competitivos, más baratos que los de MSN.

Un saludo,

Anónimo dijo...

Rene,
muy bueno el artículo.
¿A donde están las nuevas oficinas?

Saludos
Fernando
México

Anónimo dijo...

Muy bueno tu articulo, ¿sabes si es posible enviar el mensaje a la url que mencionas, a través de un correo electronico?