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.
Migración de una función de Lambda de Amazon Lex V1 a Amazon Lex V2
Amazon Lex V2 solo admite una función de Lambda para cada idioma en un bot. La función de Lambda y sus valores se configuran para el alias del bot que se utiliza en tiempo de ejecución.
La función de Lambda se invoca para todas las intenciones en el idioma correspondiente si los enlaces de código de diálogo y de cumplimiento están habilitados para la intención.
Las funciones de Lambda de Amazon Lex V2 tienen un formato de mensaje de entrada y de salida diferente al de Amazon Lex V1. A continuación se indican las diferencias en lo que respecta al formato de entrada de las funciones de Lambda.
-
Amazon Lex V2 reemplaza las estructuras
currentIntent
yalternativeIntents
por la estructurainterpretations
. Cada interpretación contiene una intención, la puntuación de confianza de NLU para dicha intención y un análisis de opiniones opcional. -
Amazon Lex V2 mueve los objetos
activeContexts
ysessionAttributes
de Amazon Lex V1 a la estructurasessionState
unificada. Esta estructura proporciona información acerca del estado actual de la conversación, incluido el ID de la solicitud de origen. -
Amazon Lex V2 no devuelve
recentIntentSummaryView
. En su lugar, utilice la información de la estructurasessionState
. -
La entrada de Amazon Lex V2 proporciona
botId
ylocaleId
en el atributobot
. -
La estructura de entrada contiene un atributo
inputMode
que proporciona información acerca del tipo de entrada, que puede ser texto, voz o DTMF.
A continuación se indican las diferencias en lo que respecta al formato de salida de las funciones de Lambda.
-
Las estructuras
activeContexts
ysessionAttributes
de Amazon Lex V1 se reemplazan por la estructurasessionState
en Amazon Lex V2. -
recentIntentSummaryView
no se incluye en el resultado. -
La estructura
dialogAction
de Amazon Lex V1 se divide en dos estructuras:dialogAction
, que forma parte de la estructurasessionState
, ymessages
, que se requiere cuandodialogAction.type
esElicitIntent
. Amazon Lex selecciona los mensajes de esta estructura para mostrárselos al usuario.
Cuando crea un bot con las API de Amazon Lex V2, solo puede haber una función de Lambda en cada alias de bot por idioma, en vez de una función de Lambda para cada intención. Si desea continuar usando funciones distintas, puede crear una función de enrutamiento que active una función distinta para cada intención. A continuación se muestra un ejemplo de función de enrutamiento que puede utilizar o modificar en su aplicación.
import os import json import boto3 # reuse client connection as global client = boto3.client('lambda') def router(event): intent_name = event['sessionState']['intent']['name'] fn_name = os.environ.get(intent_name) print(f"Intent: {intent_name} -> Lambda: {fn_name}") if (fn_name): # invoke lambda and return result invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event)) print(invoke_response) payload = json.load(invoke_response['Payload']) return payload raise Exception('No environment variable for intent: ' + intent_name) def lambda_handler(event, context): print(event) response = router(event) return response
Lista de campos actualizados
En las siguientes tablas se incluye información detallada sobre los campos actualizados en el formato de solicitud y respuesta de Lambda para Amazon Lex V2. Utilice las tablas para asignar campos entre versiones.
Solicitud
Los campos siguientes se han actualizado en el formato de solicitud de las funciones de Lambda.
Contextos activos
La estructura activeContexts
ahora forma parte de la estructura sessionState
.
Estructura de V1 | Estructura de V2 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
Intenciones alternativas
La lista de interpretaciones del índice 1 al N contiene la lista de intenciones alternativas que Amazon Lex V2 ha predicho, junto con las puntuaciones de confianza correspondientes. recentIntentSummaryView
se ha eliminado de la estructura de solicitud en Amazon Lex V2. Para obtener información acerca de recentIntentSummaryView
, utilice la operación GetSession.
Estructura de V1 | Estructura de V2 |
---|---|
alternativeIntents |
interpretations[1:*] |
recentIntentSummaryView |
N/A |
Bot
En Amazon Lex V2, los bots y los alias cuentan con identificadores. El ID del bot forma parte de la entrada del enlace de código. Se incluye el ID del alias, pero no su nombre. Amazon Lex V2 admite varias configuraciones regionales para el mismo bot, por lo que se incluye el ID de la configuración regional.
Estructura de V1 | Estructura de V2 |
---|---|
bot |
bot |
bot.name |
bot.name |
N/A |
bot.id |
bot.alias |
N/A |
N/A |
bot.aliasId |
bot.version |
bot.version |
N/A |
bot.localeId |
Intención actual
La estructura sessionState.intent
contiene los detalles de la intención activa. Amazon Lex V2 también devuelve una lista con todas las intenciones, incluidas intenciones alternativas, en la estructura interpretations
. El primer elemento de la lista de interpretaciones coincide con el primer elemento de sessionState.intent
.
Estructura de V1 | Estructura de V2 |
---|---|
currentIntent |
sessionState.intent O interpretations[0].intent |
currentIntent.name |
sessionState.intent.name O interpretations[0].intent.name |
currentIntent.nluConfidenceScore |
interpretations[0].nluConfidence.score |
Acción de diálogo
El campo confirmationStatus
ahora forma parte de la estructura sessionState
.
Estructura de V1 | Estructura de V2 |
---|---|
currentIntent.confirmationStatus |
sessionState.intent.confirmationState O interpretations[0].intent.confirmationState |
N/A |
sessionState.intent.state O interpretations[*].intent.state |
Amazon Kendra
El campo kendraResponse
ahora forma parte de las estructuras sessionState
y interpretations
.
Estructura de V1 | Estructura de V2 |
---|---|
kendraResponse |
sessionState.intent.kendraResponse O interpretations[0].intent.kendraResponse |
Opinión
La estructura sentimentResponse
se mueve a la nueva estructura interpretations
.
Estructura de V1 | Estructura de V2 |
---|---|
sentimentResponse |
interpretations[0].sentimentResponse |
sentimentResponse.sentimentLabel |
interpretations[0].sentimentResponse.sentiment |
sentimentResponse.sentimentScore |
interpretations[0].sentimentResponse.sentimentScore |
Slots
Amazon Lex V2 proporciona un solo objeto slots
en el interior de la estructura sessionState.intent
que contiene los valores resueltos, el valor interpretado y el valor original de lo que ha dicho el usuario. Amazon Lex V2 también admite ranuras con múltiples valores si se establece slotShape
como List
y si se configura la lista values
. El campo value
admite ranuras con un solo valor y se asume que su forma es Scalar
.
Estructura de V1 | Estructura de V2 |
---|---|
currentIntent.slots |
sessionState.intent.slots O interpretations[0].intent.slots |
currentIntent.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue O interpretations[0].intent.slots[*].value.interpretedValue |
N/A |
sessionState.intent.slots[*].value.shape O interpretations[0].intent.slots[*].shape |
N/A |
sessionState.intent.slots[*].values O interpretations[0].intent.slots[*].values |
currentIntent.slotDetails |
sessionState.intent.slots O interpretations[0].intent.slots |
currentIntent.slotDetails[*].resolutions |
sessionState.intent.slots[*].resolvedValues O interpretations[0].intent.slots[*].resolvedValues |
currentIntent.slotDetails[*].originalValue |
sessionState.intent.slots[*].originalValue O interpretations[0].intent.slots[*].originalValue |
Otros
El campo sessionId
de Amazon Lex V2 es el mismo que el campo userId
de Amazon Lex V1. Amazon Lex V2 también envía el objeto inputMode
de la persona que llama: texto, DTMF o voz.
Estructura de V1 | Estructura de V2 |
---|---|
userId |
sessionId |
inputTranscript |
inputTranscript |
invocationSource |
invocationSource |
outputDialogMode |
responseContentType |
messageVersion |
messageVersion |
sessionAttributes |
sessionState.sessionAttributes |
requestAttributes |
requestAttributes |
N/A |
inputMode |
N/A |
originatingRequestId |
Respuesta
Los campos siguientes se han modificado en el formato de mensaje de respuesta de las funciones de Lambda.
Contextos activos
La estructura activeContexts
se mueve a la estructura sessionState
.
Estructura de V1 | Estructura de V2 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
Acción de diálogo
La estructura dialogAction
se mueve a la estructura sessionState
. Ahora puede especificar varios mensajes en una acción de diálogo. La estructura genericAttachments
es ahora la estructura imageResponseCard
.
Estructura de V1 | Estructura de V2 |
---|---|
dialogAction |
sessionState.dialogAction |
dialogAction.type |
sessionState.dialogAction.type |
dialogAction.slotToElicit |
sessionState.intent.dialogAction.slotToElicit |
dialogAction.type.fulfillmentState |
sessionState.intent.state |
dialogAction.message |
messages |
dialogAction.message.contentType |
messages[*].contentType |
dialogAction.message.content |
messages[*].content |
dialogAction.responseCard |
messages[*].imageResponseCard |
dialogAction.responseCard.version |
N/A |
dialogAction.responseCard.contentType |
messages[*].contentType |
dialogAction.responseCard.genericAttachments |
N/A |
dialogAction.responseCard.genericAttachments[*].title |
messages[*].imageResponseCard.title |
dialogAction.responseCard.genericAttachments[*].subTitle |
messages[*].imageResponseCard.subtitle |
dialogAction.responseCard.genericAttachments[*].imageUrl |
messages[*].imageResponseCard.imageUrl |
dialogAction.responseCard.genericAttachments[*].buttons |
messages[*].imageResponseCard.buttons |
dialogAction.responseCard.genericAttachments[*].buttons[*].value |
messages[*].imageResponseCard.buttons[*].value |
dialogAction.responseCard.genericAttachments[*].buttons[*].text |
messages[*].imageResponseCard.buttons[*].text |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryFilterString |
dialogAction.kendraQueryFilterString |
Intenciones y ranuras
Los campos de intención y ranura que formaban parte de la estructura dialogAction
ahora forman parte de la estructura sessionState
.
Estructura de V1 | Estructura de V2 |
---|---|
dialogAction.intentName |
sessionState.intent.name |
dialogAction.slots |
sessionState.intent.slots |
dialogAction.slots[*].key |
sessionState.intent.slots[*].key |
dialogAction.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue |
N/A |
sessionState.intent.slots[*].value.shape |
N/A |
sessionState.intent.slots[*].values |
Otros
La estructura sessionAttributes
ahora forma parte de la estructura sessionState
. La estructura recentIntentSummaryReview
se ha eliminado.
Estructura de V1 | Estructura de V2 |
---|---|
sessionAttributes |
sessionState.sessionAttributes |
recentIntentSummaryView |
N/A |