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.
Formato de respuesta AWS Lambda para Lex V2
El segundo paso para integrar una función de Lambda en el bot de Amazon Lex V2 consiste en comprender los campos de la respuesta de la función de Lambda y determinar qué parámetros desea manipular. El siguiente objeto JSON muestra el formato general de una respuesta de Lambda que se devuelve a Amazon Lex V2:
{ "sessionState": { // see Estado de la sesión for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }, ... ], "requestAttributes": {string
:string
, ... } }
Cada campo en la respuesta se describe a continuación.
El estado de la conversación entre el usuario y el bot de Amazon Lex V2 que desea devolver. Consulte Estado de la sesión para obtener más información sobre la estructura. Este campo siempre es obligatorio.
Lista de mensajes que Amazon Lex V2 devuelve al cliente para la siguiente sesión de la conversación. Si el contentType
que ha proporcionado es PlainText
, CustomPayload
o SSML
, escriba en el campo content
el mensaje que desea devolver al cliente. Si el contentType
que ha proporcionado es ImageResponseCard
, proporcione los detalles de la tarjeta en el campo imageResponseCard
. Si no proporciona mensajes, Amazon Lex V2 utiliza el mensaje apropiado definido cuando se creó el bot.
El campo messages
es obligatorio si dialogAction.type
es ElicitIntent
o ConfirmIntent
.
Cada elemento de la lista es una estructura con el siguiente formato, que contiene información sobre un mensaje para devolverlo al usuario. A continuación se muestra un ejemplo:
{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }
A continuación, se proporciona una descripción de cada campo:
-
Tipo de contenido: el tipo de mensaje que se va a utilizar.
CustomPayload
: una cadena de respuesta que se puede personalizar para incluir datos o metadatos para la aplicación.ImageResponseCard
: una imagen con botones que el cliente puede seleccionar. Consulte Tarjeta de respuesta de imagen para obtener más información.PlainText
: una cadena de texto simple.SSML
: una cadena que incluye el lenguaje de marcado de síntesis de voz para personalizar la respuesta de audio. -
Contenido: el mensaje que se va a enviar al usuario. Utilice este campo si el tipo de mensaje es
PlainText
,CustomPayload
, oSSML
. -
Tarjeta de respuesta de imagen: contiene la definición de la tarjeta de respuesta que se mostrará al usuario. Utilice este campo si el tipo de mensaje es
ImageResponseCard
. Corresponde a una estructura que contiene los siguientes campos:-
título: el título de la tarjeta de respuesta.
-
subtítulo: la solicitud para que el usuario seleccione un botón.
-
URL de imagen: enlace a una imagen de la tarjeta.
-
botones: lista de estructuras que contienen información sobre un botón. Cada estructura contiene un campo
text
con el texto que se debe mostrar y un campovalue
con el valor que se debe enviar a Amazon Lex V2 si el cliente selecciona ese botón. Puede incluir hasta tres botones.
-
Estructura que contiene atributos específicos de la solicitud para la respuesta al cliente. Para obtener más información, consulte Cómo establecer atributos de solicitud para su bot Lex V2. Este campo es opcional.
Campos obligatorios en la respuesta
Como mínimo, la respuesta de Lambda debe incluir un objeto sessionState
. Dentro de eso, proporcione un objeto dialogAction
y especifique el campo type
. En función del type
de la dialogAction
que proporcione, es posible que haya otros campos obligatorios para la respuesta de Lambda. Estos requisitos se describen a continuación, junto con algunos ejemplos prácticos mínimos:
El delegado permite a Amazon Lex V2 determinar el siguiente paso. No hay más campos obligatorios.
{ "sessionState": { "dialogAction": { "type": "Delegate" } }
Obtener intención pide al cliente que exprese una intención. Debe incluir al menos un mensaje en el campo messages
para que se manifieste una intención.
{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }
Obtener slot solicita al cliente que proporcione un valor de slot. Debe incluir el nombre del slot en el campo slotToElicit
del objeto dialogAction
. También debe incluir el name
de intent
en el objeto sessionState
.
{` "sessionState": { "dialogAction": { "slotToElicit":
"OriginCity"
, "type": "ElicitSlot" }, "intent": { "name":"BookFlight"
} } }
Confirmar intención confirma los valores de los slots del cliente y si la intención está lista para cumplirse. Debe incluir el name
del intent
en el objeto sessionState
y los slots
que deben confirmarse. También debe incluir al menos un mensaje en el campo messages
para solicitar al usuario que confirme los valores de los slots. Su mensaje debería arrojar una respuesta de «sí» o «no». Si el usuario responde «sí», Amazon Lex V2 establece el confirmationState
de la intención en Confirmed
. Si el usuario responde «no», Amazon Lex V2 establece el confirmationState
de la intención en Denied
.
{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name":
"BookFlight"
, "slots": {"DepartureDate"
: { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } },"DestinationCity"
: { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } },"OriginCity"
: { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }
Cerrar finaliza el proceso de cumplimiento de la intención e indica que no se espera ninguna otra respuesta del usuario. Debe incluir el name
y el state
de la intent
en el objeto sessionState
. Los estados de intención compatibles son Failed
, Fulfilled
y InProgress
.
"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name":
"BookFlight"
, "state": "Failed | Fulfilled | InProgress" } }