Conceptos Generales [Construyendo mi Alexa Skill]

Vicente Gerardo Guzman Lucio
My Bots Latam
Published in
6 min readJan 24, 2019

En mi artículo anterior (Hi Alexa [Skills]) vimos una introducción sobre el servicio de voz de Amazon y las “aplicaciones (habilidades)” que se le pueden integrar, estas mejormente conocidas como Skills.

Si bien ya sabemos que podemos hacer que Alexa pueda ejecutar cualquier tipo de tarea a través de comandos de voz, hay que saber como es que funciona dicho proceso.

Para poder desarrollar una Skill es necesario el Alexa Skill Kit (ASK), el cual recordemos que es una colección de APIs y herramientas, que incluye el reconocimiento de voz, la codificación de texto a voz y el procesamiento del lenguaje natural.

Ahora bien, ¿cómo está compuesto una Alexa Skill?

Los skills de Alexa constan de dos componentes principales: Skill Interface y el Skill Service.

En este articulo nos centraremos en el primero, la cual se define como la interfaz de la habilidad o como me gusta definirlo, la parte del “cliente”, esto usando la Alexa Developer Console.

Una vez que accedemos con nuestra cuenta podemos iniciar a crear nuestras skills. Si ya hemos generado una que otra, podremos ver el listado de estas con cierta información, así como con acciones directas sobre algunas secciones como las analíticas o el poder editar la misma o eliminarla. Cabe mencionar que cuando publiquemos una skill, esta aparecerá por partida doble, pero con distinto estado, la de desarrollo (In Development) y la que está publicada (Live), en la “tienda de Alexa skills” de Amazon.

Manos a la obra

Al comenzar a crear nuestro skill se nos solicitan tres cosas: el nombre, idioma y el tipo.

Puedes consultar los distintos tipos aquí.

Los tipos disponibles dependen del idioma por defecto que seleccionemos. El idioma como bien saben será el “Spanish (MX)” y el tipo que elegiremos para este tutorial será “Custom”. Una vez generado, se nos mostrará una ventana que nos dará acceso a todo lo necesario para el desarrollo de la skill.

Siendo sincero, la mayoría del tiempo nos centraremos en la pestaña “Build” de la consola.

Siguiendo el “Skill builder checklist” del lado derecho completaremos de manera rápida lo mínimo necesario para tener un skill listo. Para esto, enfoquémonos en el lado izquierdo, aquí existen dos partes básicas pero relevantes: el interaction model del skill y el endpoint, el que indica el server que gestionará las peticiones al skill.

Recordemos, en este articulo trabajaremos solo en la primera parte, así como de todos sus descendientes.

Interaction Model

El interaction model consta de 4 partes, pero dos “obligatorias”:

· El nombre de invocación de la Skill.

· El conjunto de Intents (acciones) que deben corresponder con las peticiones de los clientes.

Nombre de Invocación

Este es de suma importancia, puesto que es el cual el usuario use para comenzar a interactuar con nuestra skill y aunque parezca sencillo, debe cumplir una serie de requisitos. Por eso antes de querer tirar código se recomienda demasiado el hacer una buena elección del nombre del skill que se quiere desarrollar, debido a que referente a esto es que el usuario podrá invocarlo, el cual como sabemos ejecuta un intent de una sola vez, por ejemplo, “Alexa, abre frases de películas”.

Intents

Un intent es en pocas palabras “lo que el usuario quiere que haga la skill cuando se activa por una determinada petición”. Ejemplo: Dime una frase de película.

Si nos adentramos más detalladamente, un intent está compuesto de dos partes: los utterances (sentencias) que van a servir para invocarlo y los slots (argumentos) que puede tener, estos últimos son opcionales.

A tener en cuenta:

· Un mismo intent no puede contener dos utterances repetidos.

· Los utterance los usa Alexa para inferir que intent corresponde a lo que desea hacer el usuario.

Nota: Cuando se manda a revisión, el proceso de certificación es una de las cosas que validan, en caso de tener errores, nos harán saber a través de un correo y tendremos que corregirlo (experiencia propia).

Intents obligatorios

Al crear un nuevo skill, este conlleva 4 Intents obligatorios y predefinidos ya por Alexa, los cuales hay que considerar puesto que son de suma importancia, estos se encuentran debajo de “Built-in Intents”.

La verdad es fácil de comprender, debido a que no cuentan con slots, estos se pueden interpretar de la siguiente manera:

· CancelIntent — se usa para cancelar alguna interacción en proceso

· HelpIntent — es utilizado para solicitar ayuda al skill en proceso

· StopIntent — normalmente se centra en detener por completo el skill

· NavigateHomeIntent — este se podría entender como un “regresa al inicio”

Para cada uno de estos, es necesario declararle un/os utterances para su invocación.

Custom Intents

Estos intents serán los que definan realmente los casos de uso que queremos cubrir en nuestro skill. Para este ejemplo solo se necesita uno: solicitar las frases de las películas.

Al crear un intent tenemos la opción de hacer uso uno existente de la librería de Alexa, como los built-in intent que eran obligatorios, o uno custom. Para este tutorial no hay uno existente que nos sirva.

El nombre del intent debe ser explicativo de la acción correspondiente que se quiere cubrir. Llamémosle “FraseIntent”, el cual servirá para cubrir la petición de las frases. Una vez creado, lo único que tenemos que añadir son los utterance para ser invocado.

Hay que pensar bien los utterances para el intent que se agregaran, puesto que entre más se añadan mejor será la identificación. Aquí les dejo una guía de buenas prácticas por idioma.

Build Model

En la parte superior se encuentra el botón que nos permitirá construir nuestro modelo, presionémoslo. Cabe destacar que el modelo que se genera es un JSON con toda la información que hemos ido construyendo con la consola. Susodicho se puede modificar una vez generado.

De momento es todo en esta primera entrega, en el siguiente articulo veremos como hacer la parte server utilizando AWS Lambda y el cómo vincular este con nuestro skill para poder hacer una primera prueba completa de su funcionamiento.

Mas información: Amazon Developer | Alexa Skills Kit

--

--