Tabla de contenidos
Polen Madrid: La skill para los madrileños alérgicos
Aunque acabe de empezar el verano todavía queda al menos un mes por delante hasta que se vayan definitivamente todos los síntomas de la alergia primaveral, ¿no sería útil poder preguntarle a Alexa cuánto polen hay en el aire para saber si salir a correr a la calle es una terrible idea? 😷
¿Qué hace Polen Madrid?
Cuando ya tengamos todo instalado y configurado, la skill hará lo siguiente:
- Scrapear la web de servicios e información de la Comunidad de Madrid.
- Obtiener los últimos datos sobre la cantidad de polen en el aire.
- Procesar, resumir y eliminar las partes que no queremos.
- Decirle al usuario directamente el resultado.
Bueno, pues eso es lo que hace esta skill, es un proceso muy sencillo de desarrollar y es perfecto para aprender a utilizar Jovo.
¿Qué es Jovo?
Jovo es un framework de código libre escrito en typescript que te permite hacer apps de voz para Alexa y Google Assistant (GA) con el mismo código. Además tiene otras herramientas muy útiles que te ayudan a hacer tus skills más rápido:
- Un cliente de consola con el que controlar todo desde la terminal.
- Un webhook para desarrollo para que puedas probar tus skills sin tener que subirlas a ningún sitio.
- Un modelo de lenguaje común para Alexa y GA.
- Y un montón de integraciones.
The Framework for Voice App Development
¿Cuándo y por qué usar Jovo?
Si ya has probado a hacer alguna que otra skill, te habrás dado cuenta que hay algunas diferencias entre Alexa y Google Assistant (GA) y que no podemos hacer una app de voz que funcione exactamente igual para las dos, como si pasa por ejemplo con plataformas de chat como WhatsApp y Messenger, en las que puedes hacer un backend común y reutilizarlo.
Si lo que quieres es hacer una skill para ambas plataformas, Jovo puede ser de gran ayuda, el framework tiene un modelo de lenguaje que se exporta en un formato compatible para Alexa y GA y es muy fácil de utilizar, con solo un par de comandos en la terminal puedes compilar, probar y subir a tu skill a la nube.
Además es de código libre y tiene el apoyo de una gran comunidad de desarrolladores. Si te interesa, no olvides pasarte por su Slack.
Requisitos previos
Jovo funciona con typescript, un superset de javascript (aunque puedes utilizar directamente javascript también), para utilizarlo necesitarás instalar Node.js y npm y añadir algunos paquetes para el desarrollo.
Instalar Jovo y crear el proyecto
// Instala el cliente de Jovo $ npm install -g jovo-cli// Comprueba que la instalación se hizo correctamente $ jovo -v// Crea una skill en español y con typescript $ jovo new polen-madrid -l es-ES --language typescript
Instalar Cheerio y Request-Promise
// Request-Promise para obtener el html $ npm install --save request $ npm install --save request-promise-native $ npm install --save @types/request-promise-native// Cheerio para procesar el html $ npm install --save cheerio $ npm install --save @types/cheerio
Instalar Alexa Skills Kit
Para subir la skill a Dialogflow puedes configurar el sdk de Google Cloud, pero por defecto Jovo creará un zip que podrás importar directamente, sin embargo para Alexa no existe esta opción y tendrá que configurar el cliente de Amazon para subir la skill a Amazon Developer Console. Para hacerlo puedes seguir esta guía.
Cuando termines deberías tener una estructura como esta:
polen-madrid ├── models │ └── es-ES.json ├── platforms │ └── alexaSkill ... ├── src │ ├── app.ts │ ├── config.ts │ └── index.ts ├── test │ └── sample.test.ts └── project.js ...
Haz tu primera skill multiplataforma — Primeros pasos
En la siguiente parte de esta guía veremos como programar la skill, de momento ignora todas las cosas que no conozcas y vamos a hacer una versión inicial básica para poder ver el debugger de Jovo y comprobar que todo funciona bien.
Declarando las intenciones
Lo primero es definir las intenciones que vamos a usar. Como esta es una skill muy sencilla solo necesitaremos una sola intención, que es cuando el usuario diga “Polen Madrid” o abra la skill directamente.
models/es-ES.json
Programar a función de la intención
Hemos declarado una intención que se llama “Polen” que se activa al decir “polen” o “madrid”, ahora tenemos que definir una función que se ejecute cuando se abre esta intención. Además, la función LAUNCH es la primera en llamarse al abrise la skill y es la que usaremos para llamar a la función “Polen” cuando el usuario active la skill. Estas serán las dos formas de llegar al contenido.
Haz tu primera skill multiplataforma — src/app.ts
Compilar y ejecutar
Ahora que ya tenemos todo listo, ejecuta los siguientes comandos para compilar el código y abrir el debugger de Jovo:
// Compilar el código de typescript a javascript $ tsc// Crear el bundle del código $ jovo build// Ejecutar el debugger de Jovo $ jovo run
Después de estos pasos, en la terminal verás que Jovo a creado un webhook para que puedas probar la skill en el puerto 3000 de tu localhost. Abre el enlace y podrás ver el debugger de Jovo.
Si pulsas en “Request Buttons” puedes añadir botones para poder activar más intenciones. Si añades la intención “Polen”, ya podrás probar que tanto esta como la de LAUNCH dicen “Polen Madrid”, que es lo que habíamos programado.
Recapitulando
Hemos visto para que sirve Jovo y como instalarlo y dar los primeros pasos, en la siguiente parte de esta guía veremos como programar nuestra skill, verás que con menos de 20 líneas de código tendremos la funcionalidad principal lista para probarla y subirla a AWS.