Alexa Skill Java con ask-cli v2
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:
- Creando un custom skill para Alexa: Estrenos de cine (I) de Joaquin Engelmo Moriche
- Alexa Skill con Spring Boot de Xavier Portilla Edo
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.