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

4.3 OPCIONES DE CONFIGURACIÓN DE HABILIDADES

Antes de empezar a desarrollar el modelo de interacción de una habilidad, conviene conocer las posibilidades que le ofrece la consola. En primer lugar, observe que el encabezado tiene ahora una serie de pestañas. En ellas se agrupan las opciones de configuración que hay disponibles en las distintas fases del desarrollo de la habilidad.


El contenido de cada una de ellas es el siguiente:

• “Build.” Aquí es donde creará el modelo de interacción de su habilidad. Las opciones que aparezcan serán diferentes dependiendo del tipo de habilidad elegida, que en su caso ha sido la personalizada. Es la pestaña seleccionada por defecto cuando entre en una habilidad.

• “Code.” Al haber elegido la opción en la que el código se aloja en el propio servicio, desde esta pestaña podrá editar y desplegar el código JavaScript de su habilidad.

• “Test.” Contiene un simulador de Alexa que le permitirá probar el comportamiento de la habilidad.

• “Distribution.” Muestra una vista previa de cómo aparecería su habilidad en la tienda de habilidades. No la va a utilizar porque las que desarrolle serán de carácter privado.

• “Certification.” Permite realizar los chequeos previos necesarios para publicar una aplicación (habilidad). Por el mismo motivo indicado el punto anterior, tampoco la usará.

• “Analytics.” Presenta las métricas de uso de su habilidad, así como el número de sesiones abiertas, el número de clientes únicos (en su caso uno, al ser una habilidad privada), el número de intenciones invocadas, etc.

Además, en la parte izquierda de dichas pestañas podrá ver el nombre de la habilidad y un enlace (“Your Skills”) que le llevará a la página inicial de la consola, aquella en la que muestra la lista de habilidades que tenga creadas. Púlselo.


Como puede apreciar en la imagen inferior, ahora aparece la habilidad que acaba de crear, en la que, además del nombre, se indica el idioma (español de España), la última vez que se ha modificado (en este caso cuando se creó) y su estado (en desarrollo).


A la derecha hay un menú desplegable con las siguientes opciones:

• “Measure.” Le llevará a la pestaña “Analitycs” de la habilidad.

• “Edit.” Irá a la pestaña “Build” de la habilidad.

• “Delete.” Borra la habilidad.


Pulse en el nombre de la habilidad “Máquina de café” para volver a la pantalla en la que se encontraba anteriormente. Ahora observe que, justo debajo del enlace “Your Skills”, se encuentra el idioma de la habilidad (el español, tal como indicó al crearla). Si pulsa sobre él, podrá añadir nuevos idiomas (una misma habilidad podría llegar a usarse en varios idiomas). Para ello, deberá seleccionar la opción “Language Settings” del menú desplegable.


Aparecerá una ventana con todos los idiomas en los que puede ser usada la habilidad (ahora solo el español). Pulsando en el enlace “Add new language” se desplegarán todos aquellos que podrían añadirse. Solo tiene que ir seleccionándolos uno a uno. En caso de error, podrá eliminarlos con el enlace “Remove” que hay a su derecha.


Situados debajo del campo con el idioma se encuentran los grupos de opciones de configuración de la habilidad.


De todos ellos, únicamente trabajará con las opciones del grupo “CUSTOM”, ya que son las que le permitirán establecer el modelo de interacción de una habilidad.

En el siguiente grupo (“MODELS”) podrá añadir o borrar un modelo de interacción a esta habilidad. Al haberla creado inicialmente como personalizada, si pulsa sobre él, en el panel principal podrá observar que pertenece a este tipo. Sin embargo, le da la opción de añadir un modelo de casa inteligente (“Smart Home”). Déjelo tal como está.


Con las opciones del grupo “IN-SKILL PRODUCTS” se determina el tipo de compras que podría hacerse con esta habilidad, así como su precio. Puesto que las habilidades que va a desarrollar son de carácter personal, no tendrá que hacer nada en este sentido.

En “ACCOUNT LINK” se realizan las configuraciones necesarias para conectar la identidad del usuario de Alexa con la que tenga en otras aplicaciones o servicios a los que se acceda desde la habilidad. Como no tendrá que acceder con su usuario Alexa a otros servicios autenticados, no usará ninguna de las opciones de este grupo.

Tampoco tendrá que entrar en “PERMISSIONS”, ya que es donde se identifica la información de carácter personal sobre la que habría que solicitar permiso al cliente en caso de que la habilidad la necesitara para su funcionamiento. Desde el punto de vista legal, la protección de datos personales es un tema de especial relevancia. En las prácticas que realice no tendrá que manejar este tipo de información.

Por lo tanto, centre su atención en el grupo de opciones que forman parte del grupo “CUSTOM”.


Las principales opciones de configuración de este grupo son:

• “Invocation.” Permite introducir la expresión con la que quiera comenzar la interacción con una habilidad.

• “Interaction Model.” Agrupa todas las opciones relacionadas con la creación del modelo de interacción. Si pulsa sobre él podrá ver cuáles son:

- “Intents.” Al seleccionarla, muestra en el panel principal la lista de intenciones de la habilidad. Pulsando el símbolo “>” que tiene a su derecha también puede verlas debajo, como opciones de un submenú: primero las personalizadas y luego las estándar (built-in intents). El número que hay entre paréntesis indica las que hay. Al haber utilizado la plantilla “Hellow World Skill”, puede ver la intención personalizada “HelloWorldIntent” creada en dicha habilidad, así como las estándar AMAZON.CancelIntent, AMAZON.HelpIntent, AMAZON.StopIntent y AMAZON.NavigateHomeIntent.

- “Annotation sets.” Es un conjunto de expresiones de prueba que se asocian a las intenciones que deberían invocar. Será utilizado por la herramienta NLU (Natural Language Undedestanting: Comprensión del Lenguaje Natural) para determinar si el comportamiento de una habilidad es el esperado.

- “Intent history.” Muestra, de forma agregada y anónima, expresiones frecuentes usadas por los usuarios mientras utilizan la habilidad, así como las intenciones invocadas en cada caso. Se emplea, básicamente, para conocer cómo se interactúa con una habilidad y, así, identificar mejoras que podrían aplicarse al modelo de interacción.

- “Utterance conflicts.” Al pulsar esta opción, en el panel principal verá los conflictos provocados por expresiones de muestra similares, pero que están asociadas a intenciones diferentes. En esos casos, cuando el usuario dijera una de dichas expresiones, Alexa no sabría cuál de las intenciones que colisionan tendría que invocar.

- “JSON Editor.” Aquí podrá hacer lo mismo que utilizando las opciones anteriores, solo que, en vez de usar la interfaz gráfica, escribirá objetos JSON. También podrá importar un fichero con dicho formato que contenga el modelo de interacción de la habilidad.

• “Assets.” Al pulsarla, permite ver como única opción los tipos de slots de la habilidad.

- “Slot types.” Permite crear los tipos de slot personalizados a los que se asociarán los slots contenidos en las expresiones de muestra de las intenciones. El número que hay entre paréntesis a su derecha indica los que tiene.


JSON (JavaScript Object Notation: Notación de objetos JavaScript) es uno de los formatos de intercambio de datos más utilizados en Internet. Tendrá ocasión de estudiarlo más adelante.

El resto de opciones del grupo “CUSTOM” las puede ver en la siguiente imagen.


Aunque no las va a utilizar, se describirá brevemente a título informativo:

• “Multimodal Responses.” Aquí podrá crear las respuestas de audio o visuales que quiera ofrecer al usuario para complementar y mejorar la experiencia de voz. Este tipo de respuestas es especialmente interesante si el dispositivo desde el que se utiliza Alexa tiene pantalla o hay que presentar grandes cantidades de información.

 

• “Interfaces.” Habilita el uso de interfaces que proporcionan directivas para el manejo de audio, vídeo, botones echo (pulsadores que permiten una interacción física con Alexa), etc. La única opción de configuración que podría llegar a usar es la de delegación automática de la conversación (“Auto Delegation”), que por defecto estará habilitada. Esto permitirá que, si el usuario no ha completado la información requerida en los slots obligatorios de una intención, Alexa establezca un diálogo con él para tratar de recabarla. Este comportamiento lo estudiará más adelante cuando se expliquen los modelos de diálogo.

• “Endpoint.” Permite especificar el punto de acceso al código de la habilidad. Aunque posteriormente se explicarán en detalle las diferentes formas de hospedaje de dicho código, le adelanto que, al desarrollarlo en la propia consola de Alexa se establecerá automáticamente, por lo que no tendrá que hacer nada al respecto.

Por último, habrá observado que en la parte derecha de la consola aparece una checklist que indica el grado de avance en el desarrollo de su habilidad. Está formado por una serie de pasos que obligatoriamente deberá completar para poder empezar a usarla.


Dichos pasos son los siguientes:

• “Invocation Name.” Indica si se ha dado un nombre de invocación a la habilidad. Si lo pulsara, tendría el mismo efecto que el de seleccionar la opción “Invocation” del menú lateral izquierdo, con la que se establece dicho nombre de invocación.

• “Intents, Samples, and Slots.” Este paso quedaría cubierto dando de alta al menos una intención y sus correspondientes expresiones de muestra. Si lo pulsara, tendría el mismo efecto que el botón “+Add Intent” que aparece en el panel principal cuando se selecciona la opción “Intents” del menú lateral izquierdo.

• “Build Model.” Una vez establecido el nombre de invocación, creadas las intenciones y los tipos de slot de una habilidad, deberá crear el modelo de interacción que permita su utilización.

• “Endpoint.” Este paso asegura que se conoce el punto de acceso del código que se tendrá que ejecutar cuando se invoque una habilidad o cualquiera de sus intenciones. Si lo pulsara, le llevaría a la misma pantalla que la opción “Endpoint” del menú lateral izquierdo. Como usted va a desarrollar el código de la habilidad en el propio servicio de Alexa, este se encargará de configurar automáticamente dicho punto de acceso.

Unidad 5
MODELO DE INTERACCIÓN

Un modelo de interacción establece la forma en la que se va a desarrollar una conversación en el marco de una habilidad. Para ello, es imprescindible establecer las intenciones que lo componen, sus expresiones de muestra, los slots que contienen, los tipos a los que pertenezcan y, por supuesto, el modelo de diálogo que determinará la forma de obtener la información que sea imprescindible para el cumplimiento de dichas intenciones. En los siguientes apartados, se analizará con detenimiento cada uno de estos componentes.

5.1 INTENCIONES

Como sabe, una intención se corresponde con una acción solicitada por el usuario. Estas pueden ser personalizadas, es decir, desarrolladas para atender necesidades específicas de su proyecto, o estándar, si realizan acciones de carácter general (como, por ejemplo, confirmar, denegar, salir de la habilidad, pedir ayuda, etc.). Veamos en detalle cada una de ellas.

5.1.1 Intenciones personalizadas

Una intención personalizada es aquella vinculada a una acción particular de una habilidad, es decir, no existe ninguna de carácter general que haga lo mismo. Cada acción tiene asociada una serie de expresiones de muestra que un usuario podría decir para solicitar que se ejecute. Además, con el fin de extraer información relevante de dichas expresiones, estas contendrán slots de los que podrá recogerse. Analicemos en detalle ambos conceptos.


Tanto las intenciones personalizadas como la estándar tienen asociadas expresiones de muestra. Pero las estándar, generalmente, no tienen slots.

5.1.1.1 Expresiones de muestra

Lo más importante de una intención son las expresiones de muestra, que son las diferentes formas en las que un usuario podría invocarla. Identifique todas las frases posibles que un usuario pueda decir para solicitar una determinada acción. De momento no se preocupe por los slots, que podrá añadir más adelante. Por ejemplo, si un usuario quisiera pedir un café, podría decir: “Quiero un café con leche y sacarina”, “Dame un café solo” o simplemente: “Hazme un café”. Naturalmente, antes de preparar un café, es necesario saber si es normal o descafeinado, la cantidad de leche o el edulcorante que hay que ponerle. Si el usuario no ha dado toda esa información, Alexa deberá pedírsela para completar la solicitud. Pero eso será algo que abordará más adelante.


En las intenciones estándar no necesitará especificar dichas expresiones ya que vienen incorporadas.


Una misma expresión no puede pertenecer a varias intenciones, ya que Alexa no sabía cuál de ellas tendría que invocar.

A la hora de especificar las expresiones de muestra, piense en todas las formas posibles con las que un usuario podría invocar una intención. Además, tenga en cuenta estos consejos básicos:

• Escriba los números con palabras. Por ejemplo, ponga “uno” en vez de “1”.

• Los acrónimos se escriben separando sus caracteres por puntos y espacios. Por ejemplo, debería escribir “E. E. U. U.“ en vez de “EEUU”.

• Por lo general, no use signos de puntuación. Por ejemplo, “1.5” debería ponerse como “uno punto cinco” o “5 €” como “5 euros”.

Lo que tiene que hacer a continuación es identificar en dichas expresiones los slots con la información relevante, que es de lo que trata el siguiente apartado.

5.1.1.2 Slots

Una vez que ya tiene la lista completa de expresiones de muestra, identifique las palabras, o grupos de palabras, que el usuario podría haber empleado en la misma expresión. Por ejemplo, en el primer enunciado: “Quiero un café con leche y sacarina”, el usuario podría haber pedido un descafeinado con leche y sacarina, o un café solo con azúcar. Por lo tanto, las palabras “café”, “descafeinado”, “con leche”, “solo”, “azúcar” o “sacarina” son valores de slots que contienen información relevante, imprescindible para poder preparar un café.

En la habilidad de la máquina de café se han identificado los siguientes slots:

• “cafe” (sin acento). Identifica el tipo de café, que podrá ser normal o descafeinado.

• “leche.” Indica la cantidad de leche que debe echarse, pudiendo servirse un café solo, cortado o con leche.

• “edulcorante.” Especifica cómo se quiere endulzar el café, para lo que se podrá usar azúcar, sacarina o nada en caso de quererlo amargo.

La forma de utilizar un slot en las expresiones de muestra es poniendo su nombre entre llaves. Así, cuando una expresión tenga un slot, dicho espacio podrá ser ocupado por cualquiera de los valores del tipo de slot al que pertenezca. Por ejemplo, los enunciados de muestra anteriores quedarían expresados de la siguiente manera: “Quiero un {cafe} {leche} y {edulcorante}”, “Dame un {cafe} {leche}” o simplemente: “Hazme un {cafe}”. Así, la primera expresión de muestra englobaría frases para solicitar todo tipo de cafés, como, por ejemplo, “Quiero un descafeinado con leche y sacarina” o “Quiero un café solo y con azúcar”.


Si observa, la última frase de ejemplo en la que se pide un café tiene la preposición “con” delante de “azúcar”, que no se encuentra en la primera expresión de muestra. La inteligencia artificial de Alexa le permite admitir variaciones a dichas expresiones cuando considera que no cambia su sentido. Aunque su grado de acierto es elevado, no se confíe, porque lo que para usted son frases similares, Alexa no lo puede considerar así. Por ejemplo, aunque las frases: “Quiero un café solo y con azúcar” y “Quiero un café solo y azúcar” encajan en la primera expresión de muestra, “Quiero un café solo con azúcar” no lo haría. Por eso es muy importante probar y añadir, si fuera necesario, todo este tipo de variaciones, para que Alexa las tenga en cuenta a la hora de invocar una intención.

5.1.2 Intenciones estándar

Tal como se ha dicho en diversas ocasiones, las intenciones representan las acciones que los usuarios pueden llegar a solicitar a una habilidad. Cuando estas son de carácter general, como, por ejemplo, las de petición de ayuda o de confirmación a una pregunta, Alexa se las da ya hechas. Las distinguirá porque su nombre empieza por “AMAZON”. Básicamente, se componen de un conjunto de expresiones de muestra que, generalmente, no llevan slots. En cualquier caso, siempre tendrá oportunidad de añadir nuevas expresiones que encajen mejor en su aplicación.

Por defecto, cuando se crea una habilidad, esta viene con las siguientes intenciones estándar:

• AMAZON.StopIntent y AMAZON.CancelIntent. Se utilizan generalmente para salir de la habilidad. Se invocan con palabras como: “cancela”, “olvídalo”, “apagar”, etc.

• AMAZON.HelpIntent. Permite solicitar ayuda sobre lo que se puede hacer en una habilidad. Se la llama con palabras como: “ayuda” o “ayúdame”.

• AMAZON.NavigateHomeIntent. Se emplea únicamente en dispositivos con pantalla. Al invocarla con expresiones como: “Ve a la pantalla de inicio” o “Ve a mi página de inicio”, muestra la página inicial

(home) de la habilidad.


A diferencia del resto de intenciones, estas no pueden borrarse.

Existen muchas intenciones estándar, entre las que únicamente destacamos las siguientes a título de ejemplo, ya que tendrá ocasión de practicar con ellas:

• AMAZON.YesIntent. Permite que un usuario responda afirmativamente a la pregunta que se le ha formulado. Admite expresiones como: “sí”, “sí, por favor”, “claro”, etc.

• AMAZON.NoIntent. En este caso, el usuario responderá negativamente con expresiones del tipo: “No” o “No, gracias”.


Si quiere conocer todas las intenciones estándar que ofrece Alexa, visite el enlace https://developer.amazon.com/en-US/docs/alexa/custom-skills/standard-built-in-intents.html.

5.2 SLOTS

Como acaba de ver, los slots identificados en las expresiones de muestra permiten que lo que diga el usuario en la posición donde están situados, pueda tener un conjunto de valores determinado. Por lo tanto, si asemejáramos los slots con variables, dichos valores pertenecerían a un tipo, que en este contexto sería el tipo de slot.

Un tipo de slot puede ser estándar o personalizado. Veamos cada uno de ellos.

5.2.1 Tipos de slot personalizados

Los tipos de slots personalizados son aquellos en los que usted establece la lista de valores que lo componen. Su nombre únicamente puede contener caracteres alfabéticos y el guion bajo (“_”). El carácter punto (.) solo está permitido para los tipos estándar (como AMAZON.HelpIntent, AMAZON. YesIntent, etc.). En el caso de la habilidad de la máquina de café, se han identificados los siguientes tipos de slot:

 

• “TipoCafe”. Sus valores son “café normal” y “café descafeinado”.

• “CantidadLeche”. Sus valores son “solo”, “cortado” y “con leche”.

• “TipoEdulcorante”. Sus valores son “azúcar ”, “sacarina” y “sin edulcorante”.

Pero los usuarios a menudo usan diferentes palabras para decir lo mismo. Por ejemplo, para pedir un café normal generalmente se hace referencia a un café a secas (se omite la palabra “normal”), mientras que, si se quiere descafeinado, se suele indicar que se trata de un café descafeinado o, simplemente, un descafeinado. Para manejar esta casuística, cada uno de los valores de un tipo de slot se definen como una entidad, formada por:

• Un valor representativo (p. ej., “café descafeinado”). Se le llama valor canónico.

• Una lista opcional de sinónimos (siguiendo el mismo ejemplo, “descafeinado”), que estarían vinculados al valor canónico.

• Un identificador único.

Como verá más adelante, cuando se invoca el código asociado a una intención, Alexa le pasa como información el valor del slot extraído de la expresión del usuario, su valor canónico y el identificador correspondiente.