Dialog Management en Alexa: confirmando slots e intents
Si no conoces de qué va esto del Dialog Management te recomiendo leer primero mi post sobre conceptos y algunos recursos básicos :)
Para algunas skills puede ser importante confirmar con el usuario la información que éste le ha dado. Imaginemos una skill para pedir comida a domicilio donde el usuario dice qué quiere comer y dónde hacer el pedido. Estaría bien tener un resumen previo a realizar el pedido que pueda validar el usuario o, incluso, si simplemente queremos validar la comida o el restaurante.
Gracias a dialog management podemos tener ese control, tanto a nivel de slot como a nivel de intent, para nuestro skill. Además, delegando el diálogo a Alexa de forma automática podemos usar la Alexa Developer Console para todo resultando muy sencillo.
Confirmación a nivel de slot
Sigamos con el ejemplo de una skill para pedir comida a domicilio. Para esa skill podríamos tener un intent, OrderIntent, que recoja los valores tanto de la comida como del restaurante.
Vamos a suponer que nos interesa validar con el usuario la información que Alexa entiende como "la comida a pedir". Todo lo necesario lo podemos hacer desde la ventana de edición del slot. Accedemos a esa ventana desde la opción de "Edit Dialog" del listado de slots del intent concreto.
Una vez en la ventana de edición del slot tenemos que habilitar primero la opción de "Slot filling" para luego habilitar la opción de "Slot Confirmation". La parte de slots obligatorios ya lo vimos en otro post.
Una vez habilitada la opción debemos proporcionar a Alexa frases de confirmación que dirá al usuario. A estas frases les podemos añadir el nombre del slot de forma que Alexa incluirá el valor recogido desde el usuario.
Al igual que con las frases para slots obligatorios se pueden indicar varias frases y Alexa irá eligiendo de forma aleatoria cada vez.
Confirmación a nivel de intent
Siguiendo con el mismo caso de uso vamos a ver cómo sería si queremos confirmar el OrderIntent al completo antes de ser enviado al back.
Para esto tenemos que habilitar la opción desde la pantalla de edición del intent.
Las frases que podemos usar en este caso siguen las mismas consideraciones que para la confirmación de un slot pero con la ventaja de que aquí tienes acceso a todos los valores que dijo el usuario para cada slot obligatorio.
OJO! Aquí tenemos que tener especial cuidado con los prompts que creamos. Alexa sólo podrá usar prompts que estén "completos" en el momento de la confirmación del intent. Esto es:
- un prompt que no use valores de slots para su composición será siempre elegible por Alexa. Por ejemplo: "Vale, ya tenemos toda la información para tu pedido, ¿continuamos?"
- un prompt para el cual pueda completar todos sus valores de slots. Por ejemplo, el prompt de la imagen anterior requiere que "food" y "restaurant" sean obligatorios para ser elegible por Alexa.
Como siempre, existe documentación oficial tanto para la confirmación del slot como para la confirmación del intent. Es algo bastante simple de hacer desde la consola sin tirar una sola línea de código en el back. Para probar estas cosas del modelo sin estar atados a un back existente, tal y como indiqué en el post anterior, yo recomiendo usar el Utterance Profiler.