Tutorial parte 5: Desarrolla aplicaciones de voz multiplataforma con VOXA

Cómo crear una tabla de liderazgo para Alexa y Google Assistant

Octavio Menocal
5 min readOct 25, 2019

--

Imagen vía www.pl.wikipedia.org

Esta es la quinta y última parte de la serie de tutoriales de cómo crear aplicaciones de voz multiplataforma con VOXA [estos son los links para las Partes 1, 2, 3, y 4]. En el artículo anterior, abordamos la característica de nuestra aplicación para permitir al usuario comprar una subscripción; una In-skill purchasing para Alexa, y para Google Assistant, una subscripción Digital Good. En esta parte, aprenderemos a mostrar la tabla de liderazgo de un juego para dispositivos con pantalla y cómo hacer unit testing en VOXA.

Alexa Presentation Language

Alexa Presentation Language (APL por sus siglas en inglés) es una librería de componentes visuales que puedes usar para crear asombrosas experiencias multimodal para dispositivos con pantalla. Antes de APL, Amazon tenía la interfaz Display Render Template, pero no es tan flexible como APL. Con APL, puedes personalizar tus pantallas con mayor facilidad. En nuestro código fuente, también soportamos la interfaz RenderTemplate porque aún existen algunos dispositivos con pantalla que no soportan APL. Si intentas enviar una directiva APL a un dispositivo no compatible con APL, la skill fallará.

En nuestra Alexa skill Quick Maths, usaremos APL para mostrar a los usuarios la tabla de liderazgo. Ellos podrán ver su posición, nombre, ciudad, y puntaje si están entre los mejores 10 jugadores. Si el usuario no otorgó permiso para accesar a su dirección en alguna de las plataformas, simplemente mostraremos su locale; si es en-US, tomaremos solo la parte U.S. Si es en-GB, tomaremos G.B.

La pantalla APL con la tabla se ve así:

Tabla de liderazgo en Echo Show segunda generación
Tabla de liderazgo en Echo Spot

Puedes encontrar el código para mostrar esta tabla en la rama part5 del repositorio, específicamente en el archivo ./src/app/model.js

función showWinnersDashboard

Para Google Assistant, usaremos la table card. Esta tabla agrupa nuestra tabla de liderazgo para mostrar las posiciones, similar a lo que hemos hecho en Alexa, para que ambas aplicaciones tengan la misma experiencia.

Tabla de liderazgo en Google Assistant (teléfono)
Tabla de liderazgo en Google Assistant (Smart Display)

La funciónshowWinnersDashboard crea las directivas de VOXA para diseñar la plantilla en ambas plataformas. Para Alexa, valida si APL es soportada en el dispositivo, y devuelve una directiva alexaAPLTemplate. De otra forma, devolverá una directiva alexaRenderTemplate. Si es una Google Action, devolverá una directiva dialogflowTable.

Unit Testing para Alexa Skills

Puedes crear unit testing con VOXA para Alexa skills usando el paquete alexa-mime. Este paquete te permite crear tests con una estructura YML. Utiliza el Alexa Skill Test Framework. En la carpeta test puedes encontrar un ejemplo que prueba el siguiente escenario:

  • El usuario abre la skill por primera vez.
  • El usuario escucha el mensaje de primera vez y acepta empezar un juego.
  • El usuairo escucha la operación “5 + 5” y Alexa pregunta el resultado.
  • El usuario responde correctamente y gana 10 puntos. Alexa pregunta al usuario si desea continuar, pero el usuario detiene el juego.

El otro unit test es un poco diferente. El usuario contesta incorrectamente, y Alexa pregunta si quiere intentar de nuevo. El usuario acepta y esta vez contesta correctamente.

La propiedad beforeEach te ayuda a simular (mock) el comportamiento de cualquier función, conexión a base de datos o llamado a alguna API. La propiedad afterEach te ayudará a resetiar o limpiar cualquier mock. Puedes encontrar estas operaciones en este archivo: ./test/main.spec.js.

Para simular una operación de DynamoDB, usamos el paquete aws-sdk-mock. Y para simular una llamada a la API de Alexa de configuraciones, usamosel paquete nock. También usamos el paquete simple-mock para simular algunas funciones del paquete Lodash que nos ayuda al proceso de elección aleatoria propio de VOXA.

Puedes crear tantos archivos .yml como quieras para agrupar tus casos de uso en el folder ./test/use-cases/.

Más información

En este punto, deberías poder enviar tu Alexa skill y Google Action a certificación. Puedes encontrar el proyecto completo en la rama part5 de mi repositorio:

Las hojas de Excel que controlan la VUI, en este caso, la información del manifest para la Alexa skill, y los intents/utterances para ambas plataformas ya están en el archivo interaction.json. Debes crear tus propias hojas de cálculo para copiar la información de las que están en estos archivos.

Final

Este es el final de la serie de 5 artículos que te mostraron cómo crear un juego VoiceFirst con el framework multiplataforma VOXA, para las 2 plataformas de voz más importantes hoy en día: Alexa y Google Assistant. Espero que te haya sido útil, y estoy ansioso de escuchar el siguiente juego de voz que vayas a crear. ¡Gracias por leer!

Y recuerda: ¡No tires basura al océano!

--

--

Octavio Menocal

Software engineer at Soar.com. Nicaraguan developing Amazon Alexa Skills and actions for Google Assistant. Pingpong lover, big fan of Ma Long!