Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266

Tekst
Loe katkendit
Märgi loetuks
Kuidas lugeda raamatut pärast ostmist
Šrift:Väiksem АаSuurem Aa

3.2 MODELO DE INTERACCIÓN

Un modelo de interacción establece la estructura de la conversación que Alexa mantendrá con el usuario en el contexto de una habilidad. Se compone de los siguientes elementos principales:

• Intenciones (intents). Son las acciones que el usuario puede llegar a solicitar, cada una de las cuales corresponde (como indica el nombre de este componente) a una intención específica. Por ejemplo, una habilidad que controlara la luz de una habitación podría tener tres intenciones: las que atienden las órdenes para encenderla o apagarla, y una tercera que permita preguntar por el estado en el que se encuentra (encendida o apagada).

• Expresiones de muestra (Sample Utterances). Son las palabras o frases utilizadas por los usuarios para invocar una intención. Estas expresiones deben abarcar todas las formas posibles de solicitar la ejecución de una determinada acción. Cuantas más haya y más variadas sean, mayor facilidad tendrá Alexa para saber a qué intención corresponden. Por ejemplo, para encender la televisión, se podría decir: “pon la televisión” o “enciende la tele”. Ambas expresiones deberían invocar la misma intención, es decir, realizar la misma acción: encender la televisión.

Es muy difícil introducir todas las variaciones posibles de expresiones empleadas para solicitar las acciones. Por eso, Alexa dispone de algoritmos de inteligencia artificial que le permiten generalizar dichas frases. Aplicando estos algoritmos, podrá saber si lo que ha dicho el usuario “encaja” con alguna de las expresiones de ejemplo, aunque no coincida exactamente con ella. En cualquier caso, cuantas más declaraciones de ejemplo tenga una intención, más probabilidades habrá de que se invoque la más adecuada.

• Tipos de slots. Las expresiones de los usuarios representan texto libre difícil de procesar por un programa informático, que es el que realmente tiene que realizar las acciones. Por ese motivo, es necesario extraer la información relevante de dichas expresiones (lo que vulgarmente se conoce separar la paja del grano), función que realizan los slots. Estos componentes pueden verse como variables, que recogen la información proporcionada como entrada al programa encargado de realizar la acción solicitada.

Al igual que cada variable es de un determinado tipo, los slots también pertenecen a un tipo de slot (slot type). Por ejemplo, si un usuario dijera: “Alexa, enciende la luz de la sala”, la palabra “sala” podría ser el valor de un tipo de slot que sirviera para identificar la habitación en la que está situada la luz. Ese valor sería el utilizado por el programa encargado de atender la petición para saber a qué dispositivo (en este caso, el situado en la sala) tiene que dirigir la orden.

• Modelo de diálogo. Este último componente, que es opcional, identifica la conversación que sería necesario mantener con el usuario para recopilar toda la información requerida para invocar una intención. Si este dijera, por ejemplo: “Enciende la luz” y hubiera varias luces en la casa, para poder llevar a cabo esta orden habría que preguntarle en qué habitación se encuentra. Este diálogo puede ser delegado en Alexa, que se encargaría de hacer las preguntas y recoger la información necesaria de las respuestas dadas por el usuario, simplificando el código de la habilidad. Siguiendo con el ejemplo de la luz, Alexa preguntaría: “¿En qué habitación está la luz que desea encender?”. Si la respuesta fuera: “La de la cocina”, recogería el valor del slot que contiene la habitación (en este caso “cocina”) de la misma forma que si el usuario hubiera dicho en un primer momento: “Enciende la luz de la cocina”.

En un próximo capítulo estudiará con más detalle todos estos conceptos mientras practica con ellos desarrollando una habilidad que le permitirá “hablar” con una máquina de café para que se lo prepare a su gusto.

3.3 INVOCACIÓN DE HABILIDADES PERSONALIZADAS

Para invocar una habilidad personalizada, deberá llamarla por su nombre (invocation name). Por ejemplo, si este fuera “previsión meteorológica”, cuando dijera: “Alexa, previsión meteorológica” ya podría empezar a plantear cuestiones sobre el tiempo.

Aunque para iniciar una habilidad solo se requiere decir su nombre de invocación, se pueden añadir otras palabras que hagan la expresión más natural. Dependiendo del tipo de habilidad invocada, se podría utilizar: “pide”, “abre, “empieza”, “empiece”, “lanza”, “juegue”, “juega el juego”, “pon” o “inicia”. Por lo tanto, la habilidad del ejemplo anterior también podría invocarse diciendo: “Alexa, abre previsión meteorológica”. Dicha expresión se muestra gráficamente en la siguiente imagen.


Para empezar a hablar con el asistente, primero se ha usado la palabra “Alexa”, a la que se conoce como palabra de activación porque es la que despierta el asistente, poniéndole a la escucha de lo que se diga a continuación. Luego viene la palabra de lanzamiento (opcional), que indica a Alexa que lo que va a decir a continuación es el nombre de la habilidad que deberá invocar. Por último, aparece el nombre de invocación de la habilidad, en este caso “previsión meteorológica”.


Como pronto descubrirá, cuando utilice el simulador o la aplicación de Alexa en un teléfono móvil, no será necesario que diga la palabra de activación (“Alexa”).


Las habilidades de casa inteligente no requieren que se invoque el nombre de una habilidad. El modelo de interacción preconstruido que viene incorporado en Alexa le permite atender frases del estilo: “Alexa, enciende la luz de la cocina”, asociadas a una determinada intención.

Los usuarios también pueden incluir otras palabras en sus expresiones de invocación de habilidades como:

• Los artículos determinados “el”, “la”, “los”, “las” antes del nombre de la invocación. Por ejemplo, “Alexa, abre la previsión meteorológica”.

• Ciertas expresiones como: “Puedes...”, “Me gustaría...”, “Yo quiero...” o, simplemente, “Quiero...”. Por ejemplo, “Alexa, quiero abrir la previsión meteorológica”.

• Para realizar peticiones de forma más cortés, puede añadir “por favor” al final de la declaración. Por ejemplo: “Alexa, abre la previsión meteorológica, por favor”.

Una vez dentro de la habilidad, el usuario podrá solicitar cualquiera de las acciones que la componen (invocar una de sus intenciones), como, por ejemplo, preguntar si va a llover hoy.


Para que la solicitud sea atendida, la expresión utilizada deberá encajar con alguna de las expresiones de muestra de sus intenciones, que en este caso concreto sería la que permite saber si va a llover. Dicha expresión contiene un slot, cuyo valor es el día para el que se desea conocer la previsión de lluvia (“hoy”).

Hasta ahora, la forma de interactuar con Alexa ha sido invocando una habilidad (la de previsión meteorológica) y posteriormente realizar una solicitud asociada a una intención específica (preguntar si va a llover). Pero también es posible pedir a Alexa que haga algo en el mismo momento en el que se invoca la habilidad. En ese caso, se debe combinar el nombre de la habilidad con alguna de las expresiones de muestra de la intención asociada a la solicitud realizada. Para ello, se debe llamar a la habilidad seguida de la intención en una frase compatible con “pregúntale a”, “dile a”. Las frases admitidas para invocar una habilidad con su intención son:

• Pregúntale a <nombre de invocación> si/sobre/que/qué/cómo’/… <solicitud de información o pregunta>

• Pídale a <nombre de invocación> <alguna acción>

• Dile a <nombre de invocación> que/sobre <alguna acción>

• Abre <nombre de invocación> para <alguna acción>

Si, por ejemplo, quisiera realizar una pregunta dentro de una habilidad, solo podría utilizar una expresión que comenzara por “pregúntale a” si fuera seguida del nombre de invocación de dicha habilidad, las palabras “si”, “sobre”, “que”, “qué”, “cómo”, etc., y una expresión que casara con alguna de las de muestra de la intención que atiende la pregunta. Por ejemplo, “Alexa, pregúntale a previsión meteorológica si va a llover hoy”. Gráficamente se mostraría de la siguiente forma:


Tras llamar a Alexa, en este caso se han utilizado las palabras de lanzamiento “pregúntale a” antes del nombre de invocación de la habilidad, ya que la expresión del usuario quedaba más natural al realizar una consulta. Dicha consulta será atendida por la intención de previsión de lluvia, al haber empleado posteriormente la expresión: “va a llover hoy”. Con el ánimo de componer una frase correctamente construida, también se ha utilizado la preposición “si” para separar la habilidad de la intención.


No todas las combinaciones de palabras de lanzamiento y/o auxiliares son permitidas, por lo que tendrá que probar cuáles son las opciones más adecuadas en cada caso.

 

Unidad 4
PORTAL DE SERVICIOS PARA DESARROLLADORES DE AMAZON

El portal de servicios para desarrolladores de Amazon, como indica su nombre, es el punto de acceso a los servicios ofrecidos por Amazon a los desarrolladores de aplicaciones que hacen uso de sus tecnologías, como, por ejemplo, Alexa.

Para acceder a dicho portal, vaya a https://developer.amazon.com. Allí, pulse sobre el enlace “Consola del desarrollador”, situado en la parte superior derecha.


Le aparecerá una pantalla en la que tendrá que autenticarse. Si ya tiene una cuenta en Amazon, puede entrar con ella. En caso contrario, tendrá que crearla pulsando el botón “Crea tu cuenta de” situado en la parte inferior.


Verá una nueva pantalla en la que tendrá que rellenar su nombre, un correo electrónico válido y una contraseña. Vuelva a pulsar el botón “Crea tu cuenta de”.


A partir de ese momento siga las instrucciones y rellene los últimos datos que se le solicite (en los de empresa puede poner los suyos).

Una vez finalizado este proceso, ya dispondrá de un usuario de acceso a la consola del desarrollador. Para entrar en ella, solo tiene que volver de nuevo a https://developer.amazon.com e introducir su correo electrónico y la contraseña con la que se dio de alta en la consola (no la del correo).

Se encontrará delante de una nueva pantalla desde la que podrá acceder a las consolas de los diversos servicios ofrecidos por Amazon a los desarrolladores. Relacionados con Alexa hay dos: Alexa Skills Kit (ASK) y Alexa Voice Sevice (AVS). El primero es el que permite el desarrollo de las habilidades de Alexa, mientras que el segundo lo utilizaría para añadir un control por voz a dispositivos con micrófono, altavoz y capacidades de procesamiento suficientes. Usted solo usará Alexa Skills Kit, así que pulse sobre él.



El símbolo de admiración que aparece en las iniciales de su nombre (situado en la parte superior derecha) le informa de que, en caso de que desarrolle habilidades de pago deberá cumplimentar la correspondiente información asociada a dichas retribuciones, así como de los impuestos correspondientes. Puesto que el ámbito de este libro se enfoca al desarrollo de habilidades de carácter personal, no tendrá que hacer nada al respecto.

Antes de acceder a la consola del desarrollador de Alexa, cambie el idioma. Esto no tendrá como consecuencia que todos los menús y documentación vayan a estar en español, pero, cuando sea posible, se mostrará en dicho idioma. Para ello, vaya al final de la página. En la esquina inferior izquierda podrá ver el idioma actual (“English”). Pulse en dicha palabra para que se despliegue un menú del que deberá elegir el español (en mi caso, el de España).


4.1 CONSOLA DEL DESARROLLADOR DE ALEXA

Al entrar en la consola del desarrollador de Alexa, lo primero que verá es la lista de habilidades que tuviera creadas (de momento, ninguna).



La consola del desarrollador de Alexa cuenta con diferentes medidas de seguridad. Por eso, cuando introduzca el usuario y la contraseña, le pedirá frecuentemente que repita la contraseña e introduzca el código captcha que aparece en pantalla. En otras ocasiones, le enviará un código de verificación a su cuenta de correo electrónico, que deberá introducir para poder acceder a la consola.

La cabecera de esta ventana, que está formada por una serie de enlaces y menús, estará siempre visible en la consola. En su parte izquierda, el nombre “alexa developer console” es un enlace que, al pulsarlo, le llevará a la página inicial (la que muestra la lista de habilidades) independientemente de donde se encuentre. En la parte derecha destacan dos menús: el primero de ellos, que lleva las iniciales de su nombre, le permitirá ver sus datos de configuración o salir de la consola; desde el segundo podrá acceder a la documentación, los foros o utilizar la consola de otros servicios Amazon. Veamos en detalle cada uno de estos menús.

El primero tiene dos opciones: “Configuración” y “Cerrar sesión”. La última opción no requiere explicaciones. La primera, como indica su nombre, permite ver su información de configuración agrupada por pestañas. Selecciónela para verla.


La siguiente imagen muestra dichas pestañas.


Entre ellas destaca la primera, ya que contiene sus datos personales (nombre, correo electrónico, teléfono y contraseña), que podrá modificar cuando quiera pulsando en el botón “Edit”. También puede ver su rol, que de forma predeterminada es el de administrador.


En la pestaña “Company profile” puede ver la información de contacto de empresa, que coincide con la suya al haber introducido los mismos datos en el proceso de registro. Todos los campos son editables (el botón “Edit” se puede ver en la parte inferior derecha), excepto el nombre del desarrollador o el nombre de la empresa.

El resto de pestañas contienen información que no va a tener que editar debido a que desarrollará habilidades sin ánimo de lucro, de carácter personal y privadas.

Así, en la pestaña “Payment information” se mantendría la información bancaria necesaria para que Amazon pudiera realizarle pagos, mientras que los datos relacionados con los impuestos asociados a contenidos digitales o anuncios mostrados, estarían en “Tax identity”.

No tendrá necesidad de usar la pestaña “User permissions” (en el que estaría la lista de usuarios que podría tener acceso a su cuenta) por trabajar de forma individual, no dentro de un equipo de trabajo.

Tampoco será necesario establecer y/o consultar el contenido de las pestañas “Mobile ads” (configura los anuncios que podrían mostrarse), “Identity” (guarda la clave utilizada para validar transacciones fuera de su aplicación) o “Security profiles” (establece los distintos perfiles de seguridad de sus aplicaciones).

El segundo menú de la cabecera de la consola (el de los tres puntos verticales), muestra dos grupos de opciones. En el primero, están las que le llevarían a la documentación (usada de referencia en este libro), a los foros o al formulario para ponerse en contacto con el servicio de atención al cliente de Alexa. El segundo grupo de opciones, le conduciría a las consolas de los diferentes servicios. La única que usará usted es “Alexa Developer Console” (en la que se encuentre ahora).


La consola del desarrollador de Alexa está organizada en una serie de pestañas.



Puesto que la consola del desarrollador de Alexa está en continua evolución, podrían aparecer otras diferentes.

La información contenida en cada una de ellas es la siguiente:

• “Skills.” Es la que aparece seleccionada por defecto cuando entra en la consola. En ella, se muestra la lista de habilidades creadas.

• “Earnings.” Mostraría la información de las ganancias obtenidas en caso de que decidiera cobrar por utilizar sus habilidades o estas incorporasen anuncios. No tendrá que acceder a ella porque solo desarrollará habilidades de uso personal.

• “Payments.” Aquí estarían los pagos recibidos a cuenta de las ganancias anteriores. Tampoco la utilizará.

• “Hosting.” Muestra los recursos utilizados cuando el código de la habilidad resida en el propio servicio Alexa, que será su caso. Verá tanto información de uso mensual (“MONTHLY USAGE”) de los recursos de procesamiento (proporcionados por el servicio AWS Lambda), como de almacenamiento (ofrecidos por el servicio Amazon S3). También podrá ver el límite al que puede llegar de forma gratuita (“MONTHLY LIMIT”).


4.2 PRÁCTICA DE CREACIÓN DE UNA HABILIDAD

Está a punto de crear su primera habilidad. Cuando la inicie, podrá establecer un diálogo con una máquina de café virtual para pedir dos tipos de café: normal y descafeinado. Cada uno de ellos podrá ser a su vez solo, cortado, con leche. Naturalmente, al café se le podrá añadir azúcar, sacarina o ningún tipo de edulcorante.

Si hubiera salido de la consola del desarrollador de Alexa, vaya a la dirección https://developer.amazon.com/alexa y seleccione la opción “Alexa Developer Console” en el menú situado en la parte superior derecha (el de los tres puntos verticales).



También se podría haber entrado desde https://developer.amazon.com pulsando el enlace “Consola del desarrollador”. Una vez autenticado, se mostraría la pantalla en la que tendría que seleccionar el servicio Alexa Skills Kit (sería el mismo camino seguido cuando se registró).

Una vez dentro de la consola del desarrollador, pulse el botón “Create Skill”.



Solo puede crear 75 habilidades. A partir de ese momento, si quisiera crear otra nueva, tendría que borrar alguna de las existentes.

Aparece una pantalla en la que deberá introducir el nombre de la habilidad y el idioma predeterminado (más delante se explicará cómo agregar idiomas adicionales). El nombre sería el que los clientes verían cuando publicara la habilidad. Como esta será de carácter personal, solo la podrá ver (y usar) usted.

Asigne el nombre “Máquina de café” a su nueva habilidad y seleccione el idioma español. Puede usar la variante española (ES), mexicana (MX) o norteamericana (US).

 

Debajo de estos dos campos, podrá seleccionar el tipo de habilidad que desea crear: personalizada, casa inteligente, Flash briefing o vídeo. Por defecto, está seleccionada la personalizada (“Custom”). Déjelo así.

Finalmente, tendrá que elegir dónde quiere que se aloje el código de la habilidad. Podrá ser en el propio servicio de Alexa o en cualquier otro que usted conozca. Por simplicidad se utilizará el de Alexa y, en concreto, la opción que le permita el desarrollo de código JavaScript, es decir, que pueda ejecutarse en Node.js: “Alexa-Hosted (Node.js)”.


De forma muy simplificada, Node.js es un entorno de ejecución de código JavaScript de lado de servidor (a diferencia del empleado en los navegadores web, en el lado cliente).


En realidad, cuando usa la opción “Alexa-Hosted (***)”, está usando AWS Lambda para alojar y ejecutar el código de la habilidad. La ventaja que proporciona es que no tendrá que gestionar dicho servicio desde su propia consola (diferente de la de Alexa), por lo que se gana en agilidad de desarrollo (aunque se pierde en flexibilidad).

Solo podrá trabajar con JavaScript o Python, y estará limitado a los recursos proporcionados de forma gratuita (AWS Free Tier). En cualquier caso, se ha elegido esta opción porque para las prácticas desarrolladas a lo largo del libro esto no supondrá ninguna limitación, además de ser gratuito.


Más adelante se explicarán las diferentes formas de alojar el código de una habilidad.

Pulse el botón “Create skill” que hay en la parte superior derecha de la ventana.



Debajo del botón “Create skill” puede ver las opciones con las que se creará la habilidad: de tipo personalizada, alojada en el propio servicio Alexa y, en este caso, en servidores de la región N. Virginia. Una región es una zona geográfica donde se ubican físicamente los servidores administrados por Amazon. Si pulsara el desplegable de esta última opción, podría elegir otra diferente.

Se mostrará una nueva ventana en la que tendrá que elegir la plantilla a partir de la que quiere empezar a desarrollar su propia habilidad. Va a usar la que está seleccionada por defecto (“Hellow World”), por lo que solo tendrá que pulsar el botón “Continue with template”.


Hecho esto, se encontrará finalmente la pantalla desde la que podrá empezar a crear y configurar todos los componentes de su habilidad.



A la derecha vera una serie de mensajes informativos que le indican (de arriba abajo) que esta habilidad ya podría utilizarse, un tutorial en el que le enseñan cómo está construida y un aviso para que cambie el nombre con el que quiera invocarla. Pulse en el icono con el aspa para eliminarlos.