lunes, julio 13, 2009

La Fiebre del SMS

Tengo un cliente que me pidió poder realizar algunas de las tareas que hace habitualmente mediante el envío de SMS.

En realidad al inicio la idea era poder comprar varias PDA para realizar algunas de las tareas que hoy por un tema de costos se quieren hacer por SMS.

Lo primero que se me pidió fue poder consultar la deuda de un Cliente, por lo que la idea es mandar un SMS a un número dado con la palabra DEUDA + IDCliente y que este me devuelva la deuda del Cliente.

El planteo fue realizado y tenía que investigar cómo hacer esto ya que sinceramente ni idea de cómo poder recibir SMS desde mi aplicación, lo que hice fue llamar a las diferentes compañías proveedoras de telefonia celular y me hicieron varias propuestas pero en todas ellas había que programar bastante y a un costo bastante elevado, por lo menos para la prueba inicial y para este cliente en cuestión.

Todo esto me llevo a pensar como hacía Movistar con los modem inalámbricos que distribuye para darnos acceso a internet, estos modem traen un software en donde también se puede enviar y recibir SMS.

Después de investigar encontré que la aplicación llamada Escritorio Movistar almacena la información de los mensajes en una base de datos Access lamada mensajeriadirecta.mdb.
En mi PC los datos se almacenan en el siguiente directorio:
C:\Documents and Settings\Cristhian\Datos de programa\Telefónica Móviles\Escritorio movistar Latam\
Existen varios xml que no tuve tiempo de investigar para que sirven, aparte de los xmls tengo la mdb y dos archivos con extensión .db que para mi sorpresa son base de datos SQLite.
Al abrir el archivo MDB me encuentro con lo siguiente:



La tabla en la que se guarda la información de los mensajes se llama DatosMensaje.
Después de encontrar esto lo que hice fue poner el modem en el servidor y tengo una pequeña aplicación que se encuentra corriendo con un demonio en la cual se encuentra rastrillando la tabla DatosMensaje para saber si ha llegado un nuevo mensaje de texto, cuando llega un mensaje busca las palabras clave y contesta.

Es una aplicación modesta que seguramente se podría hacer de otra manera pero con un simple modem inalámbrico que se puede conseguir a bajo costo tengo una aplicación en la que puedo recibir SMS y contestarlos rápidamente.
Seguramente existen mil formas mas elegantes de hacer esto pero lo hice rápido y a un costo muy bajo.

Comparto esta experiencia por si alguien tiene una situación similar y quiere ahorrarse el tiempo de investigación.

9 comentarios:

Marcos Crispino dijo...

Cristhian: ahora ya lo tenés resuelto, pero otra cosa que se puede hacer es mandar un SMS a una dirección de mail...

No se si todos los celulares pueden, pero creo que lo único que se precisa es tener habilitado el envío de MMS.

De esa forma del lado del servidor, solo tendrías que monitorear una casilla de correo.

David Giordano dijo...

Increíble.

Ayer probando un modem 3G de Movistar se me ocurrió investigar por el mismo lado, ¡¡me ahorraste el tiempo de investigación!!!.

Definitivamente me gusta la solución, si bien es cerrada a Movistar (y modem 3G), soluciona muchos problemas complejos que se tendrían con implementaciones genéricas.

Muchos van por la alternativa de teléfonos conectados al PC utilizando comandos para envío y recepción de SMS.

Algunas implementaciones permiten modem's (porque algunos implementan las interfases de telefonía, por lo que se podría probar también si funcionan con modem 3G de movistar)

Te paso un link con una buena recopilación de librerías (por si un día toca que sea Linux u otro tipo de dispositivo que no sea el 3G de Movi)
http://www.developershome.com/sms/freeLibForSMS.asp

Anónimo dijo...

Kpito, lei tu articulo y me parecio muy interesante. No me quedo muy claro como haces para que la aplicacion de Movistar envie la respuesta de los sms, pero ya te voy a estar molestando personalmente. He estado leyendo un poco y casi todas las soluciones planteadas son con puertos COM, pero esta solucion es barbara para la rapida solucion del problema.Saludos

Federico Varela dijo...

Cristhian, primero que nada gracias por compartir estos tips. Tengo una consulta: ¿podrías comentar a grandes rasgos cuáles fueron las opciones que te plantearon las compañías proveedoras de celular y con qué costos? ¿Te contactaste con ellos directamente por teléfono? Porque revisé los sitios web y no encontré información al respecto.
Estoy desarrollando una aplicación Java y necesito enviar notificaciones por sms, por ahora no necesitaría recibir, solamente enviar.

Gracias

Federico

jose ignacio dijo...

Amigo, muchas gracias por la informacion.

Tengo un problema con el envio de un mensaje al llenar los datos por la DB. No sale como para enviar en el dispositivo y tampoco se generar el idenvio
{F4DFE143-DB8B-4F9F-8FD1-055F68B61E9D}

No se si tienes algunas indicaciones para llenar los datos en la DB que no he realizado.

Saludos

email: foxjose@gmail.com

Gracias

Anónimo dijo...

tuvimos el mismo problema en un proyecto y lo solucionamos con JSms, si alguien tiene alguna duda ningun problema en responder

mail: jachoque@gmail.com

Andres Choque dijo...

Implemente esto on una libreria de java llamada Jsms y funciona con el cel motorola, con algunos modelos , hasta ahroa lo probe con el c650 y v235 y funciono, basicamente usas el celu como un modem.

andres , jachoque@gmail.com

Unknown dijo...

tengo también el problema que no sé como generar el IdEnvio... tengo el modem, ya entendi la base de datos solo no se como generar el IdEnvio. Si le pongo valores al azar no envia el mensaje...

Unknown dijo...

tengo también el problema que no sé como generar el IdEnvio... tengo el modem, ya entendi la base de datos solo no se como generar el IdEnvio. Si le pongo valores al azar no envia el mensaje...