Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266. Tomás Domínguez Mínguez
Чтение книги онлайн.
Читать онлайн книгу Alexa. Desarrollo de aplicaciones IoT para Arduino y ESP8266 - Tomás Domínguez Mínguez страница 6
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