Crear un Alexa Skill

Erick Navarro
May 17 · 8 min read

En este tutorial crearemos un Alexa Skill, pero nuestro principal objetivo es explorar estas herramientas de AWS y familiarizarnos con su uso para poder elaboraro soluciones más complejas y determinar cómo podemos usarlas para nuestros fines.

Antes de comenzar vale la pena hacer una aclaración sobre la diferencia entre Alexa y Echo:

  • es el servicio de voz ubicado en la nube de Amazon disponible en los dispositivos de Amazon y dispositivos tercios con Alexa integrada.
  • Amazon Echo es un altavoz inteligente, es un dispositivo de hardware producido por Amazon.

Sucede a menudo que los usuarios utilizan el término alexa para referirse indiscriminadamente a ambas cosas, pero lo cierto es que tecnicamente son diferentes.

A lo anterior debemos agregar que Alexa está presente en muchos dispositivos de Amazon.

Luego de la aclaración anterior comenzaremos con el tutorial.

1. Crear un S3 bucket público

  • Ingresamos a la
  • Buscamos el
  • Seleccionamos la opción create bucket
  • Asignamos un nombre válido para el nuevo bucket, un nombre que no haya sido usado para ningun otro bucket (recibiremos un mensaje de error si el nombre no fuera válido).
  • Seleccionamos la opción create

Posteriormente hacemos todo el contenido del bucket público, para ello seleccionamos nuestro bucket creado y hacemos click en el boton Edit public access settings

Validamos que todas las opciones no esten seleccionadas y hacemos click en save.

Escribimos el texto solicitado y hacemos click en confirm.

Entramos al bucket cerado, nos movemos a la pesataña properties y en la opción Bucket Policy, configuramos la siguiente política:

{
  "Version": "2012-10-17",
  "Statement": [
    { 
      "Sid": "PublicReadGetObject", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "ARN here/*" 
    } 
  ] 
}

Es impotante cambiar la parte de “ARN here” por el ARN de nuestro bucket, posteriormente hacemos click en save y nuestra política será aplicada:

2. Explorar Amazon Polly

En este segmento del tutorial podremos explorar el servicio de a nivel general, lo haremos creando un audio a partir de cierto texto, este audio será almacenado en S3, lo primero es buscar el servicio Amazon Polly :

Una vez dentro de la , hacemos click en Get Started:

Posteriormente nos encontraremos con un panel en el que podemos escribir texto que será leído según las configuraciones que hagamos, podemos por ejemplo configurar el idioma del texto y la persona que lo leerá, es decir, si esta persona leerá con un tono de voz masculino o femenino y el tono de voz de la persona en específico, incluso tenemos para el mismo idioma diferentes acentos, por ejemplo, yo incrusté cierto texto que será leído en español mexicano, con una voz femenina perteneciente a Mia.

Luego vamos a hacer click en synthesize to S3, para poder exportar el audio correspondiente a este texto en nuestro bucket de S3.

Al hacerlo nos desplegará una ventana en la que debemos ingresar el nombre de nuestro bucket.

Seleccionamos Synthesize y se creará una tarea para sintetizar el audio correspondiente al texto ingresado.

En la pestaña de S3 synthesis tasks podemos ver el estado de esta tarea para determinar si ya fue completada o no.

Al completar la tarea, tendremos este audio en el bucket que indicamos.

3. Crear una función Lambda

Buscamos el servicio en la consola de aws.

Una vez en la consola de , procedemos a crear una nueva función, es importante crear esta función en una region en donde Alexa trigger esté habilitado, yo lo haré en US East (N. Virginia). Esto puede verse en la esquina superior derecha de nuestra consola.

Luego de hacer click en Create function, encontraremos en el panel 3 opciones, Author from scratch, Use a blueprint y Browse serverless app repository, nosotros seleccionaremos esta última y buscaremos el repositorio alexa-skills-kit-nodejs-factskill.

Escogemos el respositorio y dejamos todas sus configuraciones con los valores por defecto, posteriormente hacemos click en deploy y esperamos hasta que termine el proceso de deploy de nuestra función:

Ingresamos a la función y vemos que ya cuenta con un alexa trigger, esto porque hicimos el deploy de la función en una región que lo soporta, en este caso N. Virginia.

En el código autogenerado por la función veremos que hay un set de oraciones aleatoreas, agregaré mi nombre en el listado, luego procedí a hacer click en Save, para guardar los cambios en la función.

Vamos a e ingresamos a Amazon Alexa:

Una vez registrados y dentro de nuestra cuenta, procedemos a buscar el Alexa Skills kit:

En la consola de Alexa, escogemos la opción Create Skill.

Luego de crearla nos da la opción de escoger un template, escogemos Fact Skill y continuamos:

Luego estaremos en el Alexa Development Console:

Vamos a la sección de invocations, asignamos un nombre a nuestra invocation, en este caso coloque el nombre Cloud Facts y seleccionamos la opción save model:

Regresamos a la consola de Lambda, a la función anteriormente creada e identificamos y copiamos el ARN de nuestra función:

Vamos de nuevo a Alexa Developer Console, a la sección Endpoint y configuramos el ARN de nuestra función, de tal manera que nuestro Alexa Skill apuntará a la fución Lambda anteriormente creada. Luego de agregar el ARN, seleccionamos Save Endpoints.

Vamos a la sección GetNewFactIntent, incresamos un nuevo fact, a cloud fact en este caso, luego agregamos este fact y seleccionamos Save Model para guardar el modelo. Y luego Build Model para construir nuestro modelo. Al finalizar el Build recibiremos una notificación.

Luego de terminar el Build, vamos a la sección Test, cambiamos el modo a Development e ingresamos la instrucción open cloud facts. Luego vamos a obtejer un fact de la función asociada. En este caso recibí el siguiente: Here’s your fact: A year on Mercury is just 88 days long. Con lo anterior tenemos que nuestra Alexa Skill funciona y que nuestra función lambda también lo hace.

Regresamos a la consola de Lambda y seleccionamos todos los facts del arreglo.

Los eliminamos, dejamos solamente nuestro nombre y guardamos los cambios haciendo click en el boton Save.

Vamos nuevamente a Alexa Developer Console e ingresamso open cloud facts.

Luego de ingresarlo el único resultado posible es nuestro nombre, pues eliminamos el resto de facts.

Ahora en lugar de usar mi nombre como Fact, usaremos el archio de audio generado anteriormente con Polly, para ello vamos a nuestro bucket, a nuestro archivo de audio y en sus propiedades de la pestaña Overview encontraremos el URL del file.

Vamos a la consola de Lambda y modificamos el fact, en lugar de ser nuestro nombre introducimos el URL de nuestro audio con el siguiente formato para indicar que se trata de un audio

'<audio src=\"  " />'

Y hacemos click en Save.

Antes de ejecutar nuestro Skill, es importante que nos aseguremos de que el file en el bucket es público, para ello vamos a la consola de S3, seleccionamos nuestro bucket, seleccionamos nuestro archivo y seleccionamos la opción Make Public.

Posteriormente vamos a nuestro Skill, ingresamos la instrucción open cloud facts y obtendremos el audio configurado.

Con esto llegamos al final del tutorial, espero que esta introducción a Alexa Skills, les motive a seguir explorando estas herramientas de AWS.

Delfos

Cloud services for everyone

Erick Navarro

Written by

Delfos

Delfos

Cloud services for everyone