Desarrollando mi primera Skill de Alexa | Día 2 de 2
Porque los programadores tenemos una forma peculiar de lidiar con nuestros problemas de motivación
Este artículo es la continuación del post original con el mismo nombre que puedes encontrar en este enlace.
Día 2: Manos a la obra
Algo que me quedó claro al final del primer día de trabajo es que mi proyecto se adapta perfectamente a una de las Skills publicadas por Amazon en su sección de tutoriales. Específicamente hablo de la Alexa Trivia Skill.
Amazon se ha dado a la tarea en los últimos dos años de publicar tantos tutoriales y proyectos guía como ha sido posible. Un esfuerzo no solo lógico sino totalmente necesario por parte de cualquier fabricante que desea que su tecnología sea rápidamente adoptada.
Yo me aprovecho de esto que se convierte en un factor clave para que el segundo día del proyecto tenga un final feliz.
Los seis pasos mínimos requeridos para desarrollar un Skill basado en el proyecto de Trivia se describen perfectamente en el sitio oficial de GitHub. Por esta razón no tiene sentido recrear una traducción directa de los pasos. Por el contrario, me enfocaré en comentar las particularidades de mi experiencia durante cada paso.
Del borrador al VUI
Los primeros pasos en las indicaciones generales nos llevan a la consola de desarrolladores para Amazon Alexa. Es aquí donde construiremos el Modelo de Interacción (frontend) de nuestra Skill.
Habiendo dedicado una importante cantidad de tiempo el día anterior a estudiar la interfaz de usuario y pasos usuales a seguir al momento de trabajar con la consola, el seguir las indicaciones del tutorial para implementar mi propia versión del Modelo de Interacción resulta bastante simple.
Un detalle interesante a destacar es que Amazon recomienda hacer un esfuerzo importante a la hora de crear las Utterances para cada Intent. El número que indican como ideal para cubrir la mayoría de los casos es 30.
Yo he dedicado una cantidad de tiempo relativa a la naturaleza express de mi proyecto y no he llegado en ningún caso a las 30 Utterances. Mi intención es completar las listas de Utterances para cada Intent una vez pueda ver mi Skill en un entorno real. Una de mis principales metas para la fase de pruebas con usuario final es observar y apuntar las posibles Utterances para completar mi modelo de interacción.
Es clave el tener en cuenta en todo momento quien es tu audiencia y optimizar la experiencia para ella. En este caso, mi Skill está pensada para ciudadanos extranjeros que desean prepararse para presentar el examen CCSE. Al momento de diseñar mi modelo de interacción intento no olvidar que:
- En la mayoría de los casos el usuario final de este producto será hispano, por lo que tendrá una mezcla de Castellano de su país de origen con el Castellano adquirido en su adaptación al entorno Español.
- En algunos casos será un ciudadano de habla no hispana que habrá aprendido el Castellano de España. Aún cuando lo haya aprendido en otro país, los extranjeros suelen buscar como fuente de su enseñanza el Castellano del país origen.
- Crear Utterances dirigidos y personalizados a grupos específicos — Venezolanos, Peruanos, Dominicanos, etc. — mejorará la experiencia del usuario final y rebasará el número recomendado de 30 Utterances por Intent.
Pro Tip: en una segunda revisión de la Skill se puede hacer un pequeño trabajo previo de investigación relacionado con las estadísticas oficiales del Instituto Cervantes o el Instituto Nacional de Estadísticas (la web ya da miedo), con la finalidad de identificar las nacionalidades que más aplican al examen y personalizar el modelo aún más para este segmento.
El elemento final de esta etapa consiste en guardar el modelo y “compilarlo” para verificar que no contiene ningún tipo de errores. Una vez terminado el trabajo en el Modelo de Interacción es hora de implementar nuestro backend.
La función Lambda
Lo primero que me gustaría mencionar en este punto del proceso es que si aún no tienes una cuenta en Amazon AWS, deja en pausa la lectura y ve a crearla de inmediato.
Fue realmente una sorpresa inesperada, sobre todo para mis planes de proyecto express, el enterarme que la creación de la cuenta AWS toma unas 24 horas aproximadamente en ser activada.
Una vez logramos el acceso a la consola AWS, seguir los pasos del tutorial para la creación de la función Lambda es realmente sencillo. Algunos de los enlaces proporcionados en el tutorial no funcionan actualmente pero ninguno es realmente crítico.
En mi caso particular, a diferencia del tutorial yo he seleccionado la región EU (Irlanda) que es una de las que corresponde a Europa con compatibilidad del Servicio de Voz Alexa al momento de crear mi Skill.
De la misma forma he seleccionado la versión 8.10 de Node.js, aún cuando en mi entorno de pruebas local he instalado la versión 10.7.
Desde el punto de vista del código, hasta este momento solo he realizado algunas modificaciones menores con el fin de obtener mayor flexibilidad en la configuración de la Skill. En lugar de tener un número fijo de preguntas y respuestas al iniciar la sesión — como sucede en el ejemplo — , prefiero que el Skill se adapte a la longitud que el archivo questions.js tenga al momento de invocar la Skill.
El resto son solo labores de traducción y localización de cadenas destinadas a interactuar con el usuario final.
Conectando el frontend con el backend
La forma en la que el Modelo de Interacción y la función Lambda se comunican en el caso de las Skills de Alexa es a través del Endpoint. El proceso es tan simple como copiar y pegar el valor ARN (Amazon Resource Name) de nuestra función Lambda en el campo de la región del Endpoint.
Pruebas y más pruebas
Gran parte del tiempo que invertimos en el desarrollo de aplicaciones, independientemente del tipo o de la plataforma a la cual van dirigidas, es empleado en encontrar y corregir errores.
En el caso de una Skill de Alexa podemos realizar al menos dos tipos de pruebas simples y directas.
La función Lambda se puede probar desde la consola con la opción Test de la función específica que queremos probar. El detalle de como configurar pruebas paso a paso se puede conseguir en la sección de pruebas del tutorial oficial.
Para el caso de nuestro Modelo de Interacción, las pruebas podemos realizarlas fácilmente desde el Simulador Alexa que podemos encontrar en la consola de desarrolladores.
En este paso me tomó cierto tiempo el poder depurar las cadenas de texto de mi banco de preguntas para que Alexa pudiese reproducirlas de la forma más natural posible.
No se si es un error o está diseñado de esa forma, pero las preguntas del test no pueden llevar un signo de interrogación de cierre (?), comillas dobles (“”) o algunos signos de puntuación como los dos puntos (:).
El uso de los signos de puntuación mencionados interrumpían la correcta lectura de las preguntas en algunos casos. Depurar la estructura del banco de datos de preguntas lleva tiempo pero es igualmente de vital importancia para garantizar una experiencia de usuario adecuada.
Pro Tip: Para realizar pruebas complejas y depuración de código avanzada desde un entorno seguro, sin correr el riesgo de afectar negativamente la experiencia del usuario o del equipo de certificación de Amazon, es recomendable configurar un entorno local independiente. Si quieres saber más al respecto puedes consultar mi artículo relacionado.
Distribución y Certificación
Una vez terminado el proceso de desarrollo de la versión inicial de mi Skill, era hora de completar la ficha de distribución e iniciar el proceso de certificación de la Skill para la tienda de Amazon España. Un proceso bastante simple de completar, sobre todo si ya hemos hecho algo similar para plataformas móviles de Apple y Google.
Una vez más debo recomendar el recurso en vídeo del equipo de Amazon Alexa UK, quienes han realizado un trabajo fabuloso a la hora de explicar el proceso. Incluyendo los consejos de uno de los revisores de la misma empresa.
Una de mis características preferidas de esta nueva plataforma es la libertad que logramos los desarrolladores de las laboras de diseño gráfico. Competir a nivel de diseño en el mundo web, o en el sector de las aplicaciones móviles es siempre un dolor de cabeza para los que no contamos con el talento y las herramientas de diseño gráfico de primer nivel.
En este caso, para la Skill de Alexa no necesitamos más diseño que el de un pequeño icono que será utilizado para la tienda y para los nuevos dispositivos con pantalla que son compatibles con Alexa.
La importancia que tendrá el aspecto visual de una Skill sin duda irá cambiando en el tiempo, pero mientras ese día llega, los desarrolladores celebramos el poder centrarnos en resolver un problema sin enfocarnos en los aspectos gráficos del producto.
Al momento de escribir este artículo, mi Skill de Alexa ha sido aprobada y publicada en una tienda que aún no está abierta al público. Sin duda resulta interesante formar parte de ese batch inicial de aplicaciones que estarán disponibles para el día del lanzamiento.
Si habré llegado a tiempo o no a ser uno de los 100 desarrolladores que optarán por el cacharro lo sabré en el futuro. De momento me doy por satisfecho con la gran experiencia que ha sido aprender a desarrollar una simple Skill para Alexa en un par de días.
De esta experiencia no solo me ha quedado el aprendizaje del contenido necesario para mi examen. A su vez he sumado una cantidad enorme de conceptos nuevos, he podido conocer un novedoso ecosistema de desarrollo, explorar una nueva plataforma basada en la voz, probar una serie de herramientas interesantes de trabajo, y finalmente ha surgido la iniciativa de crear Diseñando para la Voz.
¡Todo ganancia en las aventuras de verano!
Los comentarios, mejoras a las soluciones propuestas y feedback en general son siempre bienvenid@s.
Gracias por leer,
Juan.
Diseñando para la Voz es una iniciativa personal de Juan González Ponce que trae contenido relacionado al mundo del desarrollo de Alexa Skills para el servicio de Amazon, en Castellano, con la finalidad de compartir ideas y lecciones aprendidas en el camino.