lunes, febrero 27, 2012

EJB + GeneXus + JBoss 5.1


Desde hace unos días estoy participando en un proyecto en el cual tengo que trabajar contra JBoss, en principio no tenía que hacer nada complicado pero después de varias idas y vueltas me plantearon sacar información del contexto de JBoss mediante EJB al igual que los sistemas existentes.
Analizando un poco el proyecto decidí investigar las opciones que me brinda GeneXus para trabajar con EJBs, en principio estoy solo experimentando ya que seguramente tenga que poner código java a mano pero si lo puedo hacer parcialmente en GeneXus es ganancia ya que siempre que puedo trato de poner Genexus en lugares donde no lo usan.

Estoy trabajando con GeneXus 9.0 sin posibilidad de migrar de versión por lo que tuve que comenzar a configurar el ambiente para experimentar con EJB,   lo primero que me complico fue la configuración del Classpath ya que los jars que se configuraban en versiones anteriores de JBoss  cambiaron de nombre.  Mejor dicho JBoss reorganizo sus archivos de dependencias cambiando el nombre por lo que la versión 4.1, 5.1 y 6.0 tienen nombres diferentes.

En síntesis para compilar un EJB tenemos que agregar al classpath:
JBoss 4X:  jboss-j2ee.jar, javax.servlet.jar
JBoss 5.1: jboss-javaee.jar
JBoss 6X: jboss-ejb-api_3.1_spec.jar, jboss-jms-api_1.1_spec.jar

Esto son los archivos que se refieren a JBOSS, en la documentación de GeneXus se explican los otros archivos que se deben agregar al classpath para trabajar con EJBs.

martes, febrero 21, 2012

Ingeniería inversa en Android

 Todo desarrollador en alguna oportunidad ha tenido la necesidad o la curiosidad de realizar la "Ingeniería Inversa" a un programa para verle las tripas. 

En mi caso lo he realizado alguna vez para investigar el código de algo que me llamaba la atención, en particular lo hice muchas veces con la gxclassr.zip de GeneXus hasta que publicaron el código fuente. 

En la actualidad me encuentro investigando Android por lo que me puse a buscar herramientas que a partir de un ".apk"  me permitieran ver el código fuente. En internet encontré un documento PDF que explica muy claramente como realizar Ingeniería inversa básica en Android, de todas formas hago un resumen para los que no les gusta leer mucho.

En otro post explique que son los APK por lo que voy directo al grano:

a) Descomprimir el APK con cualquier herramienta que tengan a mano, en mi caso winrar
b) Tomar el classes.dex (Dalvik Executable) y usar el dex2jar para convertirlo a jar
c) Tomar el JAR y pasarlo por el JD-GUI

Siguiendo estos pasos podemos tener el código fuente de un apk, siempre nos podemos topar con algún código "ofuscado" o protegido con proGuard pero siempre existe forma por lo que usa google y tendrás resultados.

lunes, febrero 20, 2012

Soap 1.1 y Soap 1.2 en el mismo WSDL

Hace unos días tuve que participar en un proyecto con algo muy pequeño que básicamente consiste en consumir un servicio web con varios métodos. En principio esto no debería traer ningún problema ya que simplemente desde GeneXus ejecuto el WSDL Inspector y listo. 

El problema estaba a la hora de compilar ya que me daba error de métodos duplicados, por ej. Existía un método llamado "TienePermiso" que a la hora de compilar me decía que ya estaba definido.


Compiling plogin.java
.\Sdtuy_Gup_wsdl__wsGup.java:182: tienepermiso(SdtTienePermiso_Param) is already defined in Sdtuy_Gup_wsdl__wsGup
   public SdtTienePermiso_Result tienepermiso( SdtTienePermiso_Param gxTp_TienePermiso_Param )
                                 ^
1 error
NMAKE : fatal error U1077: 'C:\SoftGXJava\java16\bin\javac.exe' : return code '0x1'
Stop.
 
Realmente estuve un par de días que no encontraba la causa por lo que ya estaba desarrollando el consumo de estos servicios a mano hasta que el proveedor del servicio me comento que el wsdl tenía la definición en Soap 1.1 y Soap1.2. Mi sorpresa era que no tenía idea que se podía hacer esto y menos que el WSDL Inspector lo iba a consumir sin problemas pero que me iba a dar error recién en la compilación.

Después de luchar un rato solo me quedaba modificar el archivo ARI y el XML que se genera cuando se usa el WSDL Inspector, en mi caso uso GeneXus 9.0 por lo que los archivos se encontraban bajo la carpeta kbdata.

En síntesis borre del archivo lo que estaba duplicado, regenere y  la aplicación quedo funcionando sin problemas. No tengo claro si en GeneXus Ev. 1 pasa esto pero lo dejo documentado por si alguien sigue trabajando con GeneXus 9.0.








domingo, febrero 19, 2012

Android Para Principiantes

La idea es compartir con la comunidad los pasos que tuve que seguir a la hora de empezar a investigar Android y que a pesar de que existe mucha documentación siempre es bueno aportar información en español para que otros puedan aprovecharla como lo hago yo a diario.


Preparando el ambiente de desarrollo para Android

Hola Mundo en Android

Errores varios trabajando con Android

sábado, febrero 18, 2012

Instalar ADT para Eclipse

A la hora de desarrollar para Android existe un plugin para Eclipse llamado ADT (Android Developer Tools), esto nos provee una herramienta para que podamos trabajar desde Eclipse con Android y hacerlo de forma rápida y sencilla.

Para instalar el ADT solo tengo que abrir mi Eclipse e ir al menú Help>Install New Software...>, en la ventana presionar el botón ADD y agregar la fuente de instalación. Eclipse nos abrirá una ventana para agregar un nuevo repositorio:


En Name podemos poner ADT y en Location: https://dl-ssl.google.com/android/eclipse/

Esto nos quedara como repositorio como muestra la siguiente imágen:


Después de configurar el nuevo repositorio solo tengo que seleccionar las opciones disponibles y presionar el botón "Finish", con esto me queda instalado el plugin ADT y solo me queda comenzar a trabajar con Android.


Preparando el ambiente de desarrollo para Android

En esta oportunidad quiero describir los pasos resumidos que se deben seguir para preparar nuestro ambiente de desarrollo a la hora de trabajar con Android utilizando Eclipse.

Lo primero que hay que hacer a la hora de preparar nuestro ambiente es empaparnos en el tema entrando en la documentación oficial que expone google para los desarrolladores Android, el sitio se llama Android Developers. En este sitio se encuentra toda la información necesaria para poder utilizar esta plataforma, pero si quieren ahorrar tiempo y buscan algo mas resumido pueden seguir los siguientes pasos:

  1. Descargar la última versión de Eclipse llamada INDIGO
  2. Descargar el SDK de Android
  3. Configurar el ADT para Eclipse o consultar la guía paso a paso
 Al finalizar estos pasos tengo pronto mi ambiente para poder desarrollar el clásico Hola Mundo para android.

viernes, febrero 17, 2012

Errores varios Trabajando con Android

La idea es documentar los problemas que voy encontrando a la hora de retomar mi trabajo con Android, los errores que se pueden encontrar son de ambiente o por inexperiencia.

La mayoría ya se encuentran documentados en la web pero siempre es bueno hacer un pequeño aporte, todo lo que encuentre lo voy a ir poniendo en esta nota.

 ERROR: Unknown command 'crunch'... Este error me daba a la hora de ejecutar una aplicación, el error se desplegaba justo antes de ejecutar el Emulador.

Lo primero que me puse a pensar fue que cosas podían haber cambiado desde la última prueba que había realizado en Android, por suerte había cambiado desde la versión de Eclipse hasta la versión del ADT por lo que me imagine que tenía que ver con incompatibilidad entre versiones o algo por el estilo. 

La solución fue abrir el SDK Manager y actualizar las Tools (Android SDK Tools y Android SDK Platform-tools) , fue lo primero que hice ya que en la imagen se puede visualizar que existía una actualización para realizar.





 ERROR: Debug Certificate expired on dd/mm/yy

Un error común es que el certificado que se utiliza para android expire, tenemos dos formas de solucionarlo:
a) Borrar el archivo debug del directorio ".android"



b) Utilizar la herramienta keytool para generar el certificado nuevamente con una fecha mayor a la que le pone Android por defecto.



Hola Mundo en Android

Siempre que comenzamos a investigar un lenguaje de programación siempre comenzamos con el clásico "Hola Mundo" y como no podía ser de otra manera vamos a explicar paso a paso como hacerlo con Android utilizando Eclipse como herramienta de desarrollo.

a) Crear un nuevo Proyecto para Android




b)Poner como nombre del proyecto HolaMundo




c) Seleccionar para que versión se piensa desarrollar



d) Ingresar los datos de la aplicación



Una vez creado el proyecto Eclipse me presenta el contenido del proyecto, lo que hago es ir a la Actividad llamada HolaMundoActivity para modificarla y agregar la leyenda "Hola Mundo".



La modificación que voy a realizar es agregar un TextView, para que el código quede de la siguiente manera:


La imágen muestra la pequeña modificación que hice para desplegar el Hola Mundo. Para ejecutar nuestra aplicación tenemos que ejecutar el emulador que nos mostrara el siguiente resultado:


domingo, noviembre 21, 2010

Blogs y sitios dedicados a Android en Uruguay

La gran cantidad de comentarios sobre Android y la fuerza que se le está dando desde la comunidad GeneXus me hizo investigar si realmente Android tiene fuerza en Uruguay.

Lo que hice fue buscar en google “Android Uruguay” y realmente encontré varios blogs que hacen referencia a Android fuera de la comunidad genexus, pero lo que realmente me llamo la atención y me dio una grata sorpresa fue que encontré un blog y un sitio web dedicados exclusivamente a Android.

Los recursos son los siguientes:
http://www.androiduy.com
http://zona-android-uruguay.blogspot.com

Estos sitios se encargan de difundir Android y tienen varios post interesantes sobre diversos temas de Android.

Lo otro que me llamo la atención en los resultados que me tiro google fue que en buscojobs había un pedido de Desarrollador Android.

No se si estas cosas se pueden tomar como un indicador pero realmente antes de hacer esta búsqueda pensé que en Uruguay se le daba menos bola al tema de Android.

Estas cosas ayudan a motivarnos a decidirnos por Android ya que hasta hace un par de años la única motivación existente es que pertenecía a Google.

viernes, noviembre 19, 2010

Google Apps en cyanogenmod 6

Hace un par de días actualice la versión de mi HTC Magic a Android 2.2 utilizando la rom de cyanogen, el problema estaba en que la rom viene sin las aplicaciones de google por un tema de licenciamiento.

Si no entendí mal google le mando una carta en donde le pedía que no distribuyeran mas dentro de su rom las aplicaciones de google ya que podrían llegar a violar algunas licencias. Por este motivo la gente de cyanogenmod lo que hizo fue crear la rom sin las aplicaciones de google y por otro lado en el sitio deja un zip que contiene todas las aplicaciones de google.

En síntesis si utilizan alguna rom de cyanogenmod superior a la 6.0X deben bajarse las aplicaciones que correspondan, hay que tener cuidado ya que depende del móvil el paquete a instalar.

En mi caso tuve que bajar el archivo gapps-mdpi-tiny-20101020-signed.zip y lo instale en modo recovery desde la opción “Flash zip from sdcard” obviamente que antes había copiado el zip en la sdcard.

La información completa la pueden obtener del siguiente link: http://wiki.cyanogenmod.com/index.php?title=Latest_Version

viernes, noviembre 12, 2010

¿Que son los archivos .apk?

El formato apk es una variante de los jar de java y se usan para distribuir e instalar componentes empaquetados para Android.
Para abrir un archivo apk se puede utilizar el winrar, o 7 zip o cualquier programa que permita descomprimirlo. Un archivo apk contiene lo siguiente:

La fiebre por Android

Desde hace unos días he notado que se ha desatado una fiebre por Android dentro de la comunidad GeneXus que me ha puesto muy contento, lo que más me llama la atención es que la mayoría de las personas que conozco dentro de la comunidad tienen iPhone o BlackBerry y por suerte se están metiendo con Android.
Mi interés por Android se remonta a mediados del 2008 cuando un amigo me menciono que lo que se venía era Android, en su momento me puse a investigar y el día 28/09/08 hice mi primer post en el blog haciendo referencia a Android.
Lamentablemente en su momento por cuestiones de tiempo no pude meterme a fondo con Android y lo único que hice fue un “Hola Mundo”, para esto tuve que bajar el SDK y configurar Eclipse.
En aquel momento se me fueron las ganas de seguir probando ya que al no poseer un terminal en donde probar no quería estar jugando simplemente con un emulador y decidí esperar a que llegaran a uruguay teléfonos con Android ya que si era lo que se venía seguramente no iba a pasar mucho tiempo.
En marzo del 2010 me entere que Movistar estaba trayendo los Samsung Galaxy con Android, al poco tiempo Ancel comenzó a traer los Huawei también con Android pero los dos vienen con contrato y a mí no me sirve cambiar de contrato o de proveedor por lo que busque traer algún teléfono del exterior que fuera libre.
A mediados del 2010 un amigo me consiguió un HTC Magic con Android 1.6, esto me llevo a meterme nuevamente con el desarrollo para Android y la verdad que hice muy poco ya que programar a mano lleva bastante tiempo aparte de que hay que investigar mucho para meterse en una nueva plataforma.
Por suerte hace unos días GeneXus liberó la Evolution 2 Beta 1 que me permite generar aplicaciones para Android y la verdad que ahora renové las ganas de seguir metiéndome con Android para poder sacar el mayor provecho posible a mi teléfono.
De todas formas lo primero que tengo que hacer para poder probar bien es actualizar la versión de mi teléfono ya que tengo Android 1.6 y si no me equivoco las cosas más interesantes se encuentran en la versión 2.1 de Android.

jueves, abril 29, 2010

Google App Engine Parte II

Desde hace unos días me estoy metiendo a investigar el tema de Google App Engine, la verdad que está muy bueno y lo que más me gusta es la facilidad de ejecutar ejemplos.  Todos nos hemos topado con miles de ejemplos en internet que seguramente algo no funciona o se complica y realmente me llamo la atención que todo lo que se encuentra en la documentación funciona sin problemas.

Lo que más me gusto es que la confirmación la hacen por sms, realmente cuando estaba haciendo la registración pensé que no iba a funcionar y la verdad que apenas presione el botón me llego el sms con el código de confirmación.

Para registrar una aplicación primero que nada hay que tener una cuenta de gmail y registrarse en el sitio de appengine: appengine.google.com una vez que me registro tengo que crear la aplicación. Una vez que obtenemos una aplicación contamos con un subdominio appspot.com, de todas  formas también se puede asociar a un dominio propio.

En mi caso registre http://urulinux.appspot.com/

 Los pasos a seguir son muy sencillos, para facilitar la explicación hice una copia de las pantallas y las puse tal cual el orden en que se solicitan:



Una vez que finalizamos el registro de la aplicación ya podemos realizar el deploy en la nube de nuestras aplicaciones, en mi caso lo primero que hice fue bajar el complemento para eclipse y en tres clicks pude probar el típico ejemplo de "Hola Mundo."

http://urulinux.appspot.com/

lunes, abril 26, 2010

Cosas que me vuelven loco en GeneXus Ev. 1

La verdad que GeneXus Ev. 1 tiene mil cosas que nos ayudan muchísimo y nos permite aumentar nuestra producción, de todas formas ahora que lo estoy usando a diario y por mas horas al día tengo que admitir que existen cosas que me están volviendo loco:

En GeneXus 9 teníamos la posibilidad de agregar los parámetros desde una lista de selección, en la imagen se muestra cómo podíamos seleccionar el componente y los parámetros sin problemas:



Esto lo pude observar desde GeneXus X y siguen en la Ev. 1, como muestra la imagen no puedo ingresar los parámetros de una forma amigable como teníamos en GeneXus 9.0.


No es nada grave pero me obliga a crear el Web Component a mano o recordar el nombre de las variables o atributos que quiero pasar por parámetro.

La segunda cosa que me vuelve loco es que no funciona la opción de definir un evento de usuario desde las propiedades, la opción existe pero luego tengo que ir a Eventos y escribirlo ya que no lo crea.

Google App Engine Parte I

La verdad que hace pocos días me pude dar cuenta o me desayune de la existencia de Google App Engine, en realidad me entere de la existencia de esto leyendo el blog de Enrique Almeida en el cual había realizado un comentario sobre el "CloudCamp Montevideo".

Desde ese momento me metí y descubrí una buena alternativa para introducirnos en el Cloud Computing. La verdad que me gusta mucho lo que pude leer y voy a ver si me da el tiempo para realizar algunas pruebas.

Se puede arrancar con este link: Google App Engine

domingo, noviembre 08, 2009

Respaldar Bases de datos en MySQL

Existen varias formas de realizar respaldos de bases de datos MySQL por lo que pueden existir mil sitios en donde se pueda encontrar información del estilo.

En lo personal estaba programando un backup y tuve que comenzar a hacer un script para que se encargara de respaldar las bases de datos aparte de mandar un mail en caso de fallo y otras cosas básicas de cualquier respaldo.

Lo que hice fue buscar en internet y encontré un Script llamado AutoMySQLBackup, el script se puede bajar del siguiente sitio: http://sourceforge.net/projects/automysqlbackup/

Algunas de las cosas interesantes:

- Respalda una o todas las bases de datos que se necesiten.
- Reporta por mail el resultado de ejecución del script
- Se pueden disparar otros scripts antes o después de ejecutar el respaldo.
- Ejecuta backups, diarios, semanales, mensuales, etc.

Lo principal es que nos ahorra un montón de trabajo y es muy sencillo de modificar para adaptarlo a nuestras necesidades.

martes, octubre 27, 2009

Replicación en MySQL Parte I

Desde hace un tiempo vengo manejando servidores con Replica pero no los había tenido que configurar ya que el cliente tenía un DBA que se encargaba de esas cosas. Hace unos días tuve que configurar mi primer replica con mysql y comencé a meterme en el tema. La verdad que es mucho más sencillo de lo que pensaba, hay que tener en cuenta que esta es un replica sencilla en donde tengo un servidor master y otro slave. La necesidad de tener un servidor de replica se debe a que el cliente quiere tener alta disponibilidad y en caso de fallos una alternativa rápida para seguir operativos. Me toco configurar una réplica sencilla ya que toda transacción que se hace en el master se copia en el slave, esta es la réplica más sencilla que puede existir y nos provee de un servidor alternativo en caso de que falle el master.
A continuación hago un resumen muy pero muy breve de lo que hice para tener un servidor con Replica en MySQL.
Para poder configurar mi servidor de replica tengo que hacer lo siguiente:
Configuración servidor MASTER:
1) Editar el my.cnf
log-bin=/var/lib/mysql/mysql-bin.log
binlog-do-db=test
server-id = 1

2) Bajar y Subier el mysql

3) Entro en el shell de mysql para darle permisos al usuario que voy a utilizar para la réplica.
mysql> GRANT REPLICATION SLAVE ON *.* TO usr_replica@'%' IDENTIFIED BY 'password_replica';
mysql> FLUSH PRIVILEGES;

4) Entro en el shell de mysql para consultar el estado del Master
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | test | |
+------------------+----------+--------------+------------------+
Estos datos son importantes para luego poder configurar el SLAVE.

5) mysqldump -u root -ppassword --opt test>test.sql

Configuración servidor SLAVE:
En el esclavo lo primero que tengo que hacer es copiar la estructura de la base de datos a replicar, existen varias formas de hacerlo pero para el ejemplo preferí hacerlo de la forma más sencilla. En el ejemplo estamos replicando solo la base de datos test por lo que usando un simple dump podemos preparar el servidor esclavo para la réplica.
1) Levanto el test.sql que generamos en el Master en el SLAVE, esto lo hago simplemente con un source o de la forma que se prefiera. Hay que tener en cuenta que la base debe existir o la tenemos que crear, en este ejemplo uso la test que viene con mysql y en el test.sql traigo la estructura que tiene el master que simplemente es una tabla para las pruebas.
2) Tengo que indicarle al servidor que es slave por lo que tengo que editar el my.cnf con los siguientes datos:
server-id=2
master-host=192.168.248.136
master-user=usr_replica
master-password=password_replica
master-connect-retry=106
replicate-do-db=test
Estos datos los saco del master tal cual se muestra arriba. Después de modificar el my.cnf debo hacer un stop y start del servicio mysql.

3) Entro en el shell de mysql y hago lo sigiuente:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.248.136', MASTER_USER='usr_replica', MASTER_PASSWORD='password_replica', MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;

4) Dentro del shell lo que hago es inicializar el esclavo con el siguiente comando:
mysql> START SLAVE;

Con esta configuración todo dato que se modifique en la base de datos test del servidor master se replicara en la base de datos test del slave.

lunes, septiembre 28, 2009

Collaborative Projects 2.0

En el pasado encuentro se hizo el lanzamiento de los Collaborative Projects 2.0.

La verdad que me puso muy contento el enterarme de este lanzamiento y sin dudas esto es un estimulo para la comunidad de usuarios GeneXus.

Me gusta apoyar estas iniciativas ya que independientemente de los resultados todos los que participan se ven beneficiados de alguna manera.

En lo personal siempre intento participar de todo lo que tenga que ver con la comunidad pues la mayor parte de mi conocimiento sobre GeneXus lo he adquirido del intercambio con la comunidad.

En más de una oportunidad pude aprender muchísimas cosas al tener contacto con KBS que se publicaban en el gxopen, ni hablar del intercambio de conocimiento que se produce al juntar varias personas que usan GeneXus.

En esta oportunidad se ha aprendido de ediciones anteriores y se va a dar un tiempo de un año para poder finalizar los proyectos, calificandolos en tres oportunidades.

Por este y otros motivos voy a participar de esta edición de los CP 2.0 y recomiendo que todos participemos.

Link al wiki de Collaborative Projects 2.0: http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3ACollaborative+Projects+2.0

Link a la Presentación del Lanzamiento de Collaborative Projects 2.0 en el XIX Encuentro Internacional GeneXus: http://www.events.genexus.com/portal/hgxpp001.aspx?16,67,1134,O,S,0,,1826

jueves, julio 16, 2009

PROYECTO COMUNIX



COMUNIX es una distribución Linux basada en Knoppix. Nace dentro de la comuna canaria y fue creada por un grupo de funcionarios municipales los cuales tenían como objetivo lograr contar con una distribución Linux que tuviera el mismo aspecto que Windows XP ya que el software que reinaba dentro de la comuna canaria era Windows XP.
La importancia de crear una distribución de estas características no solo es el abaratar costos si no que permite a los usuarios no tener que volver a capacitarse y ni que hablar que logra demostrar que se pueden crear cosas importantes dentro de ambientes públicos.
En lo personal y dada la experiencia que tengo en ambientes municipales tengo que admitir que este proyecto es una pegada de todo punto de vista ya que no solo es funcional si no que esta súper bien pensado.
Sería interesante que el resto de las intendencias tomaran esta distribución como software de escritorio y ni que hablar que si se unieran todas para colaborar esta distribución podría lograr ser un estándar dentro de las intendencias.
El sitio de COMUNIX es el siguiente:
http://www.imcanelones.gub.uy/wps/wcm/connect/Sitio%20IMC/imc/comunix/
En la sección de descargas se pueden bajar la distribución, es muy sencilla de instalar y realmente parece Windows XP, yo la probé y me pareció una muy buena opción para tener Linux en un escritorio aparte de que ya tiene toda la configuración para un usuario estándar.
La verdad que me saco el sombrero ante este proyecto ya que demuestra que con ganas se pueden hacer buenas cosas.

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.