Migración de una función de Lambda de Amazon Lex V1 a Amazon Lex V2 - Amazon Lex V1

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 y alternativeIntents por la estructura interpretations. 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 y sessionAttributes de Amazon Lex V1 a la estructura sessionState 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 estructura sessionState.

  • La entrada de Amazon Lex V2 proporciona botId y localeId en el atributo bot.

  • 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 y sessionAttributes de Amazon Lex V1 se reemplazan por la estructura sessionState 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 estructura sessionState, y messages, que se requiere cuando dialogAction.type es ElicitIntent. 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