jueves, 17 de noviembre de 2011

Verboice: Escucha y responde las voces de tu comunidad...


Verboice es la nueva herramienta tecnológica de InSTEDD que permite utilizar el poder de la voz para propiciar mejoras en materia de salud, seguridad y desarrollo. Se trata de un conjunto de recursos de código abierto y gratuitos que hemos ido desarrollando con el objetivo de simplificar significativamente el despliegue de aplicaciones de voz. Verboice les posibilita a organizaciones y comunidades crear sus propias plataformas de IVR (Interactive Voice Response –respuesta de voz interactiva–) a partir de las habilidades e infraestructuras de las que dispongan.

¿Por qué desarrollar una herramienta de estas características?

Durante estos últimos años hemos venido trabajando en unos cuantos proyectos vinculados con el intercambio de mensajes de texto, y nos ocupamos de desarrollar un servicio de SMS que sirviera de soporte para nuestras herramientas, y que verdaderamente nos facilitara la creación de otras nuevas: nos referimos a Nuntium. Sin embargo, en dicho período también nos dimos cuenta de la gran necesidad que teníamos de dar un paso más allá de los SMS...

Ya habíamos diseñado soluciones low-tech, de muy bajo costo, para resolver algunos de los problemas que se nos habían ido presentando, como en el caso de la Reporting Wheel, pero eventualmente decidimos comenzar a trabajar con la voz. Y al decir "voz" nos estamos refiriendo a configurar TICs capaces de hacer o recibir llamadas telefónicas de los usuarios, y permitirles interactuar escuchando las opciones de un menú, oprimiendo la teclas correspondientes en sus celulares y grabando mensajes de voz.

La voz es prácticamente independiente de la ubicuidad y de los caracteres (no importa si tu teléfono móvil no está preparado para soportar el alfabeto de tu idioma, siempre podrás hablar y escuchar en tu propia lengua a través de él), y por lo tanto constituye la clave para desplegar soluciones tecnológicas mucho más adaptables a los más variados contextos.

En InSTEDD trabajamos de una manera ágil e iterativa, creando prototipos con celeridad y saliendo a testearlos en el campo lo antes posible, junto con aquellos que serán sus beneficiarios. Ponemos el foco y nuestro énfasis en la simplicidad y la escalabilidad a lo largo de este proceso. Por ello procurábamos obtener una herramienta que les confiriera a las aplicaciones de voz la misma flexibilidad, escalabilidad y simplicidad que ya habíamos alcanzado respecto de los SMS.

¿Por qué no utilizamos simplemente aquellas aplicaciones que ya estaban disponibles?

Existe una gran cantidad de herramientas disponibles basadas en aplicaciones de voz. Algunas son gratuitas, algunas son open-source, otras están alojadas en la Nube, pero después de haber pasado un tiempo relevándolas y de haber revisto cuáles eran nuestras posibilidades, no pudimos encontrar en ninguna de ellas la solución integral que estábamos buscando...

He aquí una reseña de algunas de las heramientas que ya existen:

Tropo

Tropo es un excelente servicio web que les permite a los programadores desarrollar y ejecutar aplicaciones de voz. Esta herramienta constituiría una solución fantástica en el contexto de algunos de los escenarios de trabajo que se nos podrían llegar a presentar, a saber:
  • En caso de que debamos aplicarlo en alguno de los 40 países (la mayoría de ellos, países en desarrollo) para los cuales Tropo dispone de números telefónicos habilitados a tal efecto. 
  • Si tuviéramos conectividad vía internet entre la infraestructura de nuestros usuarios y Tropo.
  • Si no precisáramos recurrir a la infraestructura de algún operador telefónico local.
  • Si no necesitáramos que nuestros usuarios sean capaces de crear o modificar sus aplicaciones por sí mismos.
Por el contrario, en otras numerosas circunstancias Tropo no nos serviría, como por ejemplo:
  • Si no hay soporte en la región en la que debemos desplegar la aplicación. La mayoría de los países de América Latina, el sudeste asiático y África carecen de este tipo de soporte.
  • Si tenemos que conectar la infraestructura de nuestro cliente –bases de datos, sistemas preexistentes, etc.– con la aplicación de voz, pero se carece de conexión a internet. Tropo está alojado en la Nube, así que cualquier aplicación que uno pretenda que interactúe con él precisará indefectiblemente acceso a internet.
  • Si necesitamos trabajar en el marco de la infraestructura de una compañía telefónica y conectarnos a sus líneas telefónicas. Tropo provee sus propios números telefónicos, con su facturación respectiva. En la mayoría de los escenarios a gran escala que hemos visto, el proyecto involucra un acuerdo con un operador telefónico que provea la capacidad de efectuar llamadas desde el servidor de VoIP a los usuarios de la red telefónica, y viceversa. Con un poco de suerte, dicho acuerdo incluiría la reducción de costos para esas llamadas. En un contexto de estas características no nos serviría la tecnología de Tropo.
  • Si queremos que nuestros clientes puedan desarrollar sus propias aplicaciones de voz sencillas o mantener las que hemos diseñado para ellos. Tropo requiere que un programador de software diseñe dicha aplicación. Carece de una interfaz gráfica que le permita al usuario resolver la cuestión por sí mismo.
Adicionalmente, pensamos que podíamos desplegar una solución completamente open-source y gratuita. Si bien Tropo ha liberado parte de su plataforma bajo la modalidad de código abierto, la mayoría de sus componentes fundamentales están siendo desarrollados en un repositorio privado desde mediados de 2009, y el repositorio público no ha sido actualizado ni mantenido desde entonces. Nos pasamos dos semanas intentando instalar nuestro propio servidor de Tropo, y a pesar de que los miembros de su servicio técnico fueron sumamente atentos con nosotros, no logramos hacerlo funcionar. Necesitamos algo mucho más simple para nuestros proyectos...

Twilio

Twilio es otro servicio de aplicaciones de voz, muy parecido a Tropo. Todo lo que ya hemos dicho más arriba se aplica también a esta alternativa, con la agravante de que Twilio sólo provee números para EE.UU. y Canadá.

Asterisk y Freeswitch

Asterisk y Freeswitch son dos magníficos proyectos de código abierto que cuentan con grandes comunidades y un muy buen soporte técnico. Las características principales de ambos son similares, y proveen capacidades de PBX (Private Branch Exchange –mini-central privada para extensiones telefónicas–). El rol del PBX solía ser (y aún lo es en la mayoría de los casos) cubierto por una caja gris ubicada en algún punto de la oficina, con todas las líneas telefónicas entrantes de un lado y todas las líneas de las extensiones –o internos– del otro. El PBX provee funcionalidades tales como conectar llamadas entrantes con las extensiones, correos de voz, mensajes de aviso del tipo "Estoy fuera de la oficina", etc.

Prácticamente cualquier aplicación de voz puede ser desarrollada a partir de las plataformas Asterisk y Freeswitch. El problema reside en que ambas requieren conocimientos de programación altamente especializados, y están muy lejos de ser simples de desplegar, configurar, utilizar y mantener. De todos modos, ellas proveen un increíble nivel de soporte a dispositivos muy interesantes para interconectar tus líneas telefónicas (y ésa es la razón por la que son compatibles con Verboice –¡continúa leyendo!–).

Awaaz.De

Awaaz.De es un foro de mensajes de voz –de código abierto– relativamente nuevo. Permite que la gente llame a un número telefónico, deje mensajes de voz y escuche los que han sido enviados por otros. El equipo de Awaaz.De provee un servicio alojado en la India, razón por la que tú no necesitarás tener tus propias líneas telefónicas ni infraestructura si estás trabajando en dicho país.

Awaaz.De es el típico ejemplo del tipo de desarrollo que nosotros intentaríamos simplificar al máximo... El sistema ha sido diseñado sobre una plataforma de herramientas de IBM (Spoken Web y WebSphere Voice Server), y requiere no sólo acceso a software propietario comercial sino también un experimentado equipo profesional capaz de desarrollar la aplicación que correrá sobre dicha plataforma.

Freedom Fone

Freedom Fone provee una manera sencilla de construir menúes interactivos de voz y encuestas. Constituye otro gran ejemplo del tipo de aplicaciones articuladas con Verboice que uno podría desplegar muy fácilmente.

Freedom Fone fue construido sobre la base de Freeswitch, el PBX de código abierto mencionado más arriba. La creación de aplicaciones que interactúen con Freeswitch o Asterisk requiere la experiencia de un desarrollador de software habilidoso, con conocimientos acerca de cómo instalar y configurar el sistema, sumado al conocimiento acerca de cómo desarrollar otras aplicaciones por encima de aquéllas.

Freedom Fone es fantástico para desarrollos a pequeña escala, porque no necesitas una conexión a internet y puedes ejecutar la aplicación en tu propio servidor. Pero, por contrapartida, necesitarás tu propio servidor, además de algún dispositivo de hardware al que puedas colocarle las tarjetas SIM que serán utilizadas para realizar las llamadas telefónicas. No hay manera de conectarlo con líneas de Voice over IP, o a una infraestructura como la de las centrales que usan las grandes empresas.

¿Entonces, en qué consiste nuestro desarrollo..?

La solución tecnológica que hemos diseñado consta de varias capas. Cuando tú usas una de las capas más externas, no ves ni debes preocuparte por lo que hay debajo. Si esa capa no es lo suficientemente flexible como para satisfacer tus necesidades, simplemente la "pelas" y recurres a la que yace por debajo.

Comenzando por la capa más externa y yendo hacia adentro, tenemos seis capas:

1. Una interfaz gráfica online para crear aplicaciones de voz simples
Esta herramienta estará alojada online, y tú podrás crear aplicaciones de voz interactivas sencillas, configurando visualmente los pasos en tu cuenta. No son necesarios ni un programador de software ni un servidor en este nivel. Por ahora, sin embargo, lo que sí precisarás es un proveedor de línea telefónica del tipo VoIP (Voice over IP: Voz sobre Protocolo de Internet). Nosotros confeccionaremos una lista de proveedores recomendados en varios países, y con mucho gusto te ayudaremos a encontrar uno en el tuyo.


Si el VoIP no te funciona, siempre tendrás la alternativa de descargar Verboice en tu propio servidor y conectarle tu línea telefónica. En este caso aún podrás prescindir un desarrollador de software, en tanto continuarás creando tu aplicación visualmente, pero tal vez precises a alguien que pueda instalar y configurar el servidor.

Esta herramienta soportará las interacciones de voz más comunes, confiriéndoles una gran flexibilidad, sin dejar de ser fácil de usar. A continuación podrás ver algunos de los pasos que podrás incluir en tu aplicación:



2. Un servidor web para que puedas almacenar y ejecutar tus propios scripts
Si precisas más flexibilidad para crear tu aplicación que la que suministra la interfaz gráfica de usuario, soportamos dos estándares de voz basada en XML: Twilio Markups Language (TwiML) y VoiceXML.

Estos lenguajes XML le permiten a tu programador escribir fácilmente el script de una aplicación de voz completa. No necesitas tu propio servidor, aún puedes subir tu script a los nuestros y hacerlo correr desde allí, pero sí deberás proveernos tu línea telefónica de VoIP.

De todas formas, como en el caso anterior, siempre tendrás la alternativa de poder desacargarlo y desplegarlo en tu propio servidor, conectándole tus líneas telefónicas.

3. Un servicio web que te permite programar tus propias aplicaciones customizadas
Si el script no te resulta suficiente y dispones de un programador de software bien predispuesto, puedes aprovechar nuestro servicio web de programación para potenciar tu aplicación de voz. Lo bueno es que tu desarrollador puede trabajar en el lenguaje que él prefiera: .net, Java, Ruby, PHP, Python, etc. Cualquiera de ellos puede interactuar con nuestro servicio web. De esta manera podrás hacer que tu aplicación de voz pueda articularse con cualquier base de datos o sistema preexistente.

Éste es el nivel en el que podrías recurrir a Tropo y Twilio.

Una vez más, si dispones de tu propio servidor, podrás alojar allí tu aplicación sumada a Verboice, pudiendo prescindir de una conexión a internet.

4. Una librería que interactúe directa y sincronizadamente con Verboice
Si aún necesitas un control más refinado y no quieres depender de que tu aplicación se comunique con Verboice vía internet, puedes hacer que interactúe directamente con Verboice por código.

5. Un motor de aplicaciones de voz de código abierto y gratuito
Todo lo detallado arriba es open-source, al igual que los componentes centrales que permiten la funcionalidad de voz. En caso de que tú estés desarrollando alguna aplicación de complejidad extrema, o que presente requerimientos específicos que Verboice no pueda satisfacer, siempre tendrás la posibilidad de  modificar el código fuente y adaptarlo a tus necesidades: https://bitbucket.org/instedd/verboice/wiki/Home. ¡Tu aporte para mejorar el código será bienvenido!

6. La posibilidad de conectarse a cualquier tipo de infraestructura telefónica para recibir y realizar llamadas
Si aún continúas leyendo, en este punto la cosa se torna un poco más complicada... Si ninguna de las alternativas anteriores te han permitido solucionar el problema de que tus usuarios se comuniquen con tu aplicación, tal vez en este apartado encuentres la respuesta. Verboice ha sido creado como una aplicación "PBX-agnóstica", lo cual significa que puede ejecutarse en sea cual fuere la plataforma encargada de recibir y hacer llamadas telefónicas que estés utilizando. Hemos desarrollado soporte para líneas telefónicas SIP (el estándar VoIP), Asterisk y Freeswitch. Estas dos últimas cubren un amplio espectro de opciones de hardware.

Si estás trabajando con un hardware que no soporta Asterisk ni Freeswitch, y el VoIP no te sirve, siempre tendrás la posibilidad de crear tu propio adaptador para la infraestructura que precises usar, o bien puedes contactarnos, y nosotros lo desarrollaremos para ti.

Ejemplos

Hemos diseñado una herramienta llamada Watchfire, que utiliza Verboice. Fue desarrollada originariamente para la Cruz Roja, con financiamiento de Cisco, para ayudarlos a alistar voluntarios ante situaciones de emergencia, pero también puede ser utilizada para cualquier procedimiento de reclutamiento masivo geo-localizado, que requiera confirmación por parte de los destinatarios. Aprende más acerca de Watchfire: http://blog.ilabamericalatina.org/2011/09/la-herramienta-de-instedd-que-le.html.

Junto con PopCouncil hemos ganado una subvención para desarrollar una plataforma de monitoreo clínico de salud materno-infantil, para antes y después del parto. Baby Monitor será desplegado a partir de Verboice.

Próximos pasos

Estamos trabajando con mucho empeño en completar e ir mejorando todos los componentes mencionados arriba, mientras vamos aprendiendo a partir de la experiencia cosechada en la implementación de nuestras aplicaciones de voz en curso. Por favor, ponte en contacto con nosotros si tienes preguntas, ideas o sugerencias respecto del tipo de desarrollos que te gustaría que implementáramos o apoyáramos, o de qué manera Verboice te podría resultar útil: https://groups.google.com/group/instedd-tech/?pli=1.

1 comentario: