Alexa Skill Java con ask-cli v2

Javi Mora Díaz
Sonara
Published in
3 min readMay 18, 2020

--

Ahora con ask-cli podemos crear Skill en Java.

Hay varios post donde se habla de cómo desarrollar una Skill de Alexa en Java:

En este caso crearemos una Skill con Java usando la versión 2 de ask-cli que cambia respecto a la versión anterior, aquí tenéis la documentación oficial.

Lo primero que haremos será crear una nueva Skill:

ask new

Seleccionaremos el lenguaje de programación.

Podemos seleccionar NodeJS, Python o Java. Este último será el que usemos para esta serie de post.

El siguiente paso será elegir cómo vamos a desarrollar nuestro backend, puede ser una hosted-skill, ejecutar una plantilla de CloudFormation con nuestra infraestructura de backend, una lambda o bien simplemente seleccionar un backend en un hosting propio.

Seleccionamos la plantilla desde la que partiremos. Nosotros hemos elegido Hello world por ser la más simple, ya que luego la modificaremos. Por último nos pedirá el nombre de la skill y del directorio.

Una vez llegado este punto ya tenemos nuestra skill, con una estructura similar a la que se muestra en la siguiente imagen.

.ask/config con configuración del proyecto.

skill-package es donde encontraremos ahora nuestro skill.json, interactionModels, isps, …

lambda no cambia respecto a la v1, es donde tendremos el código del backend

A esto hay que añadir un nuevo directorio como es infrastructure que se usará en el caso que hayamos seleccionado la opción de CloudFormation para el backend.

Por defecto, nuestra lambda en java usa Maven para construir el proyecto y gestionar las diferentes dependencias que necesitemos, pues bien, vamos a un terminal desde nuestro directorio lambda y lanzamos el siguiente comando:

mvn clean install

Esto construirá el proyecto y si todo ha ido bien os habrá descargado algunas librerías y os aparecerá el ansiado BUILD SUCCESS.

Una vez finalizado el build os habrá aparecido un nuevo directorio (target/) aquí tenemos nuestro backend (o lambda) compilada en un jar.

Ahora solo nos falta hacer deploy

ask deploy

Y ya tenemos nuestra Skill de Alexa desplegada.

OJO! Como último paso debemos entrar en nuestra lambda recientemente creada y ampliar la memoria y el timeout por defecto:

  • timeout: 3 sg -> 8 seg
  • memory: 128 -> 256

De momento para empezar con 256 está bien, debemos ampliarlo debido a que la JVM consume bastante memoria.

Ahora todo debería funcionar correctamente.

--

--