Si utiliza Amazon Lex V2, consulte la guía de Amazon Lex V2.
Si utiliza Amazon Lex V1, le recomendamos que actualice los bots a Amazon Lex V2. Hemos dejado de agregar nuevas características a V1, por lo que recomendamos encarecidamente utilizar V2 para todos los nuevos bots.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Administración de mensajes
Temas
Al crear un bot, puede configurar los mensajes de aclaración o informativos que desea que envíe al cliente. Considere los siguientes ejemplos:
-
Podría configurar el bot con la siguiente pregunta aclaratoria:
I don't understand. What would you like to do?
Amazon Lex envía este mensaje al cliente si no entiende la intención del usuario.
-
Suponga que crea un bot para respaldar una intención llamada
OrderPizza
. Para pedir una pizza, desea que los usuarios proporcionen información como el tamaño, los ingredientes y el tipo de masa de la pizza. Podría configurar las siguientes preguntas:What size pizza do you want? What toppings do you want? Do you want thick or thin crust?
En cuanto Amazon Lex determina la intención del usuario de pedir una pizza, envía estos mensajes al cliente para obtener información del usuario.
En esta sección se explica el diseño de las interacciones del usuario en la configuración de su bot.
Tipos de mensajes
Un mensaje puede ser una pregunta o una afirmación.
-
Una pregunta normalmente es una consulta y espera la respuesta del usuario.
-
Una afirmación es informativa. No espera una respuesta.
Un mensaje puede incluir referencias a slots, a atributos de sesión o a atributos de solicitud. En el tiempo de ejecución, Amazon Lex reemplaza estas referencias por valores reales.
Para hacer referencia a los valores de slot que se han configurado, utilice la sintaxis siguiente:
{SlotName
}
Para incluir los atributos de la sesión, utilice la sintaxis siguiente:
[SessionAttributeName
]
Para hacer referencia a los atributos de sesión, utilice la sintaxis siguiente:
((RequestAttributeName
))
Los mensajes pueden incluir valores de slot, atributos de sesión y atributos de solicitud.
Por ejemplo, suponga que configura el siguiente mensaje en la intención OrderPizza de su bot:
"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes."
Este mensaje se refiere tanto a los atributos de slot (PizzaTopping
) como a los de la sesión (FirstName
y DeliveryTime
). En el tiempo de ejecución, Amazon Lex sustituye estos marcadores de posición por valores y devuelve el siguiente mensaje al cliente:
"Hey John, your cheese pizza will arrive in 30 minutes."
Para incluir corchetes ([]) o llaves ({}) en un mensaje, utilice el carácter de barra inversa (\). Por ejemplo, el siguiente mensaje incluye las llaves y los corchetes:
\{Text
\} \[Text
\]
El texto que se devuelve a la aplicación se parece al siguiente:
{Text
} [Text
]
Para obtener información sobre los atributos de sesión, consulte las operaciones de la API en tiempo de ejecución PostText y PostContent. Para ver un ejemplo, consulte Reserva de viaje.
Las funciones de Lambda también pueden generar mensajes y devolverlos a Amazon Lex para que se los envíe al usuario. Si agrega funciones de Lambda al configurar la intención, puede crear mensajes de forma dinámica. Al proporcionar los mensajes mientras se configura el bot, puede eliminar la necesidad de construir una pregunta en la función de Lambda.
Contextos para la configuración de mensajes
Al crear el bot, puede crear los mensajes en diferentes contextos, como preguntas aclaratorias en el bot, preguntas para los valores de ranura y mensajes a partir de las intenciones. Amazon Lex elige un mensaje adecuado en cada contexto para devolverlo al usuario. Puede proporcionar un grupo de mensajes para cada contexto. Si lo hace así, Amazon Lex elige aleatoriamente un mensaje del grupo. También puede especificar el formato del mensaje o agrupar los mensajes. Para obtener más información, consulte Formatos de mensajes admitidos.
Si tiene una función de Lambda asociada con una intención, puede anular cualquiera de los mensajes que ha configurado en tiempo de compilación. Sin embargo, no se necesita una función de Lambda para utilizar cualquiera de estos mensajes.
Mensajes de bot
Puede configurar el bot con preguntas aclaratorias y mensajes de final de sesión. En tiempo de ejecución, Amazon Lex utiliza la pregunta aclaratoria si no comprende la intención del usuario. Puede configurar el número de veces que Amazon Lex solicita una aclaración antes de enviar el mensaje de fin de sesión. Puede configurar los mensajes en el nivel del bot en la sección Gestión de errores de la consola de Amazon Lex, tal como se indica en la siguiente imagen:
Con la API, puede configurar mensajes mediante el establecimiento de los campos clarificationPrompt
y abortStatement
en la operación PutBot.
Si utiliza una función de Lambda con una intención, la función de Lambda podría devolver una respuesta que indicara a Amazon Lex que preguntara la intención de un usuario. Si la función de Lambda no proporciona ese mensaje, Amazon Lex utiliza la pregunta aclaratoria.
Preguntas de slot
Debe especificar al menos un mensaje con pregunta para cada uno de los slots necesarios en una intención. En tiempo de ejecución, Amazon Lex utiliza uno de estos mensajes para solicitar al usuario que proporcione un valor para la ranura. Por ejemplo, para un slot cityName
, una pregunta válida sería la siguiente:
Which city would you like to fly to?
Puede configurar una o más preguntas para cada ranura utilizando la consola. También puede crear grupos de preguntas mediante la operación PutIntent. Para obtener más información, consulte Grupos de mensajes.
Respuestas
En la consola, utilice la sección Responses (Respuestas) para crear conversaciones dinámicas y participativas con el bot. Puede crear uno o varios grupos de mensajes para una respuesta. En el tiempo de ejecución, Amazon Lex crea una respuesta mediante la selección de un mensaje de cada grupo de mensajes. Para obtener más información acerca de los grupos de mensajes, consulte Grupos de mensajes.
Por ejemplo, el primer grupo de mensajes podría contener diferentes saludos: "Hola", "Buenas" y "Saludos". El segundo grupo de mensajes podría contener diferentes formas de presentación: "Soy el bot de reservas" y "Este es el bot de reservas". Un tercer grupo de mensajes podría comunicar las capacidades del bot: "Puedo ayudarle con el alquiler de automóviles y las reservas de hotel", "Puede alquilar automóviles y hacer reservas de hotel" y "Puedo ayudarle a alquilar un automóvil y a reservar un hotel".
Lex utiliza un mensaje de cada uno de los grupos de mensajes para crear de forma dinámica las respuestas en una conversación. Por ejemplo, una posible interacción puede ser:
Otra posible interacción puede ser la siguiente:
En cualquier caso, el usuario podría responder con una nueva intención, como la intención BookCar
o BookHotel
.
Puede configurar el bot para que formule una pregunta de seguimiento en la respuesta. Por ejemplo, en el caso de la interacción anterior, podría crear un cuarto grupo de mensajes con las siguientes preguntas: "¿Puedo ayudarle con un automóvil o un hotel?", "¿Desea realizar una reserva ahora?" y "¿Hay algo en lo que pueda ayudarle?". En el caso de los mensajes que incluyen "No" como respuesta, puede crear una pregunta de seguimiento. En la siguiente imagen se muestra un ejemplo:
Para crear una pregunta de seguimiento, seleccione Wait for user reply (Esperar respuesta del usuario). A continuación, escriba el mensaje o los mensajes que desea enviar cuando el usuario diga "No". Al crear una respuesta para usar como pregunta de seguimiento, también debe especificar una afirmación adecuada cuando la respuesta a la declaración sea "No". Para ver un ejemplo, consulte la siguiente imagen:
Para añadir respuestas a una intención con la API, utilice la operación PutIntent
. Para especificar una respuesta, defina el campo conclusionStatement
en la solicitud PutIntent
. Para establecer una pregunta de seguimiento, defina el campo followUpPrompt
e incluya la declaración que se enviará cuando el usuario diga "No". No se puede establecer los campos conclusionStatement
y followUpPrompt
en el mismo intento.
Formatos de mensajes admitidos
Al utilizar la operación PostText, o al utilizar la operación PostContent con el encabezado Accept
establecido en text/plain;charset=utf8
, Amazon Lex admite mensajes en los siguientes formatos:
-
PlainText
: el mensaje contiene texto UTF-8 sin formato. -
SSML
: el mensaje contiene texto con formato para salida de voz. -
CustomPayload
: el mensaje contiene un formato personalizado que ha creado para el cliente. Puede definir la carga para satisfacer las necesidades de su aplicación. -
Composite
: el mensaje es una recopilación de mensajes, uno de cada grupo de mensajes. Para obtener más información acerca de los grupos de mensajes, consulte Grupos de mensajes.
De forma predeterminada, Amazon Lex devuelve cualquiera de los mensajes definidos para una determinada pregunta. Por ejemplo, si define cinco mensajes para obtener un valor de ranura, Amazon Lex elige uno de los mensajes de forma aleatoria y lo devuelve al cliente.
Si desea que Amazon Lex devuelva un tipo de mensaje específico para el cliente en una solicitud en tiempo de ejecución, defina el parámetro de solicitud x-amzn-lex:accept-content-types
. La respuesta se limita a los tipos solicitados. Si hay más de un mensaje del tipo especificado, Amazon Lex devuelve uno al azar. Para obtener más información acerca del encabezado x-amz-lex:accept-content-types
, consulte Configuración del tipo de respuesta.
Grupos de mensajes
Un grupo de mensajes es un conjunto de respuestas adecuadas para una determinada pregunta. Utilice los grupos de mensajes cuando desee que el bot cree dinámicamente las respuestas en una conversación. Cuando Amazon Lex devuelve una respuesta a la aplicación cliente, elige de forma aleatoria un mensaje de cada grupo. Puede crear un máximo de cinco grupos de mensajes para cada respuesta. Cada grupo puede contener un máximo de cinco mensajes. Si desea obtener ejemplos de cómo crear grupos de mensajes en la consola, consulte Respuestas.
Para crear un grupo de mensajes, puede utilizar la consola o las operaciones PutBot, PutIntent o PutSlotType para asignar un número de grupo a un mensaje. Si no crea un grupo de mensajes, o si crea un único grupo de mensajes, Amazon Lex envía un solo mensaje en el campo Message
. Las aplicaciones cliente obtienen varios mensajes en una respuesta solo cuando ha creado más de un grupo de mensajes en la consola o cuando crea más de un grupo de mensajes al crear o actualizar una intención con la operación PutIntent.
Cuando Amazon Lex envía un mensaje de un grupo, el campo Message
de la respuesta contiene un objeto JSON con formato de escape que contiene los mensajes. El siguiente ejemplo muestra el contenido del campo Message
cuando contiene varios mensajes.
nota
El ejemplo está formateado para facilitar su lectura. Una respuesta no contiene retornos de carro (CR).
{\"messages\":[
{\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text
\"},
{\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text
\"},
{\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload
\"}
]}
Puede establecer el formato de los mensajes. El formato puede ser uno de los siguientes:
-
PlainText: el mensaje está en texto UTF-8 sin formato.
-
SSML: el mensaje es Speech Synthesis Markup Language (SSML, Lenguaje de marcado de síntesis de voz).
-
CustomPayload: el mensaje está en un formato personalizado que ha especificado.
Para controlar el formato de los mensajes que devuelven las operaciones PostContent
y PostText
en el campo Message
, defina el atributo de solicitud x-amz-lex:accept-content-types
. Por ejemplo, si establece el encabezado en el valor siguiente, solo recibirá mensajes en texto sin formato y SSML en la respuesta:
x-amz-lex:accept-content-types: PlainText,SSML
Si solicita un formato de mensaje específico y un grupo de mensajes no contiene ese mensaje con ese formato, obtendrá una excepción NoUsableMessageException
. Al utilizar un grupo de mensajes para agrupar mensajes por tipo, no uses el encabezado x-amz-lex:accept-content-types
.
Para obtener más información acerca del encabezado x-amz-lex:accept-content-types
, consulte Configuración del tipo de respuesta.
Tarjetas de respuesta
nota
Las tarjetas de respuesta no funcionan con el chat de Amazon Connect. Consulte Adición de mensajes interactivos al chat para descubrir una funcionalidad similar.
Una tarjeta de respuesta contiene un conjunto de respuestas adecuadas para una pregunta. Use las tarjetas de respuesta para simplificar las interacciones para los usuarios y aumentar la precisión del bot gracias a la reducción de errores tipográficos en las interacciones de texto. Puede enviar una tarjeta de respuesta para cada mensaje que Amazon Lex envía a la aplicación cliente. Puede utilizar tarjetas de respuesta con Facebook Messenger, Slack, Twilio y sus aplicaciones cliente.
Por ejemplo, en una aplicación de taxi, puede configurar una opción en la tarjeta de respuesta para "Domicilio" y establecer el valor en la dirección postal del usuario. Cuando el usuario seleccione esta opción, Amazon Lex recibirá toda la dirección como la entrada de texto. Vea la siguiente imagen:
Puede definir una tarjeta de respuesta para las siguientes preguntas:
-
Instrucción de conclusión
-
Pregunta de confirmación
-
Pregunta de seguimiento
-
Instrucción de rechazo
-
Enunciados de tipo de slot
Puede definir una única tarjeta de respuesta por pregunta.
Puede configurar tarjetas de respuesta cuando crea una intención. Puede definir una tarjeta de respuesta estática en tiempo de compilación usando la consola o la operación PutIntent. También puede definir una tarjeta de respuesta dinámica en tiempo de ejecución en una función de Lambda. Si define tarjetas de respuesta estática y dinámica, la tarjeta de respuesta dinámica tiene preferencia.
Amazon Lex envía tarjetas de respuesta en el formato que el cliente comprende. Transforma las tarjetas de respuesta para Facebook Messenger, Slack y Twilio. Para otros clientes, Amazon Lex envía una estructura JSON en la respuesta PostText. Por ejemplo, si el cliente es Facebook Messenger, Amazon Lex transforma la tarjeta de respuesta en una plantilla genérica. Para obtener más información sobre las plantillas genéricas de Facebook Messenger, consulte Generic Template
Puede utilizar tarjetas de respuesta solo con la operación PostText. No puede utilizar tarjetas de respuesta solo con la operación PostContent.
Definición de tarjetas de respuesta estática
Para definir tarjetas de respuesta estática, use la operación PutBot o la consola de Amazon Lex cuando cree una intención. Una tarjeta de respuesta estática se define al mismo tiempo que las intenciones. Utilice una tarjeta de respuesta estática cuando las respuestas son fijas. Supongamos que está creando un bot con una intención que tiene un slot para sabor. Al definir el slot de sabor, debe especificar preguntas, como se muestra en la siguiente captura de pantalla de la consola:
Al definir las preguntas, puede asociar de manera opcional una tarjeta de respuesta y definir detalles con la operación PutBot o en la consola de Amazon Lex, tal como se muestra en el siguiente ejemplo:
Ahora imagine que ha integrado el bot con Facebook Messenger. El usuario puede hacer clic en los botones para elegir un sabor, tal como se muestra en la siguiente ilustración:
Para personalizar el contenido de una tarjeta de respuesta, puede hacer referencia a los atributos de sesión. En tiempo de ejecución, Amazon Lex sustituye estas referencias por los valores adecuados de los atributos de la sesión. Para obtener más información, consulte Definición de atributos de la sesión. Para ver un ejemplo, consulte Uso de una tarjeta de respuesta.
Generación dinámica de tarjetas de respuesta
Para generar tarjetas de respuesta dinámicamente en tiempo de ejecución, utilice la función de Lambda de inicialización y validación para la intención. Utilice una tarjeta de respuesta dinámica cuando las respuestas se determinan en tiempo de ejecución en la función de Lambda. En respuesta a las acciones de los usuarios, la función de Lambda genera una tarjeta de respuesta y la devuelve en la sección dialogAction
de la respuesta. Para obtener más información, consulte Formato de respuesta.
A continuación se ofrece una respuesta parcial de una función de Lambda que muestra el elemento responseCard
. Se genera una experiencia de usuario similar a la que se muestra en la sección anterior.
responseCard: {
"version": 1,
"contentType": "application/vnd.amazonaws.card.generic",
"genericAttachments": [
{
"title": "What Flavor?",
"subtitle": "What flavor do you want?",
"imageUrl": "Link to image
",
"attachmentLinkUrl": "Link to attachment
",
"buttons": [
{
"text": "Lemon",
"value": "lemon"
},
{
"text": "Raspberry",
"value": "raspberry"
},
{
"text": "Plain",
"value": "plain"
}
]
}
]
}
Para ver un ejemplo, consulte Programación de citas.