jueves, septiembre 22, 2011

Mashup: Buscador de restaurantes con 11870 y Tropo en menos de 100 líneas

Como ya os anuncié hace unos días, soy miembro del equipo de Tropo. Aunque mi foco es la siguiente generación del producto, lo cierto es que de vez en cuando me gusta ir probando cosillas. Lo malo es que casi todo está en inglés. Así que decidí hacer un ejemplo rápido de aplicación en castellano que mostrase un poco como funciona el TTS y el reconocimiento de voz en Español.

Para ello decidí crear un buscador de restaurantes. El código está disponible en Github. La idea es la siguiente. Una aplicación de Tropo escucha en un teléfono al que podéis llamar. La aplicación lo primero que hace es preguntarle al usuario por la ciudad en la que quiere buscar un restaurante. Internamente, la aplicación carga una lista de ciudades de más de 10.000 habitantes y aplica reconocimiento de voz a lo que ha dicho el usuario para así detectar la ciudad. Si todo va bien, y la ciudad se detecta, se redirige al usuario al siguiente paso.

En el siguiente paso, Tropo nos pasa la ciudad que ha detectado. Esa ciudad la utilizo para llamar al API de 11870 y consultar todos los restaurantes disponibles en esa ciudad. Con esa lista de restaurantes construyo un mapa [restaurante:teléfono] que guardo en la sesión, y una lista de nombres de restaurantes que se utiliza para aplicar un nuevo proceso de reconocimiento de voz al preguntarle al usuario por el restaurante que desea consultar. Una vez que el usuario ha dicho un restaurante, si éste coincide entonces se pasa al siguiente paso.

En el último paso, simplemente se recoge el resultado del reconocimiento de voz, que es el nombre del restaurante, que nos envía Tropo. Este nombre se utiliza finalmente para obtener el teléfono y para darle el teléfono al usuario.

Os dejo el vídeo donde explico el código fuente y muestro la aplicación en funcionamiento. Aunque aviso, está en mi inglés "perralleiro", como decimos por aquí.



¿Qué mejoras se podrían añadir? Muchas:

- Gestión de errores. No la hay. Añadir reintentos en caso de fallos, avisar de que no se ha encontrado el restaurante, añadir avisos en caso de silencio, etc.
- Ampliación de los diccionarios en los restaurantes. El gran problema aquí es que 11870 te devuelve por ejemplo "Pepito". Pero habrá gente que a ese lugar le llame "restaurante pepito", "bar pepito", o incluso "casa pepito". Un buen añadido sería un sistema semi-inteligente que expandiese un poco los términos de búsqueda para hacer que resista un poco más a fallos.
- Transferir el teléfono. Este es un cambio de una línea. Simplemente en lugar de decir el teléfono, transferir directamente la llamada.

Si alguno se anima a implementarlos, ¡adelante! Sería una aplicación espectacular. Si la queréis probar, podéis simplemente llamar a este teléfono +34 931786172 o por Skype al +990009369996138011, pero ya os aviso que es muy probable que debido a los puntos explicados arriba terminéis con un "el teléfono de null es null" porque no hay ningún tipo de gestión de errores. Os dejo unos pares de ciudades restaurantes que he probado (en la aplicación) y que podéis usar si no se os viene nada a la cabeza:

Betanzos - La Casilla
Sada - Manel
Barcelona - Da Greco
Madrid - El Tigre
Sevilla - Aire de Sevilla

Espero que os guste!

No hay comentarios:

Publicar un comentario