Migration d'une fonction Lambda d'Amazon Lex V1 vers Amazon Lex V2 - Amazon Lex V1

Si vous utilisez Amazon Lex V2, consultez plutôt le guide Amazon Lex V2.

 

Si vous utilisez Amazon Lex V1, nous vous recommandons de mettre à niveau vos robots vers Amazon Lex V2. Nous n'ajoutons plus de nouvelles fonctionnalités à la V1 et recommandons vivement d'utiliser la V2 pour tous les nouveaux robots.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migration d'une fonction Lambda d'Amazon Lex V1 vers Amazon Lex V2

Amazon Lex V2 n'autorise qu'une seule fonction Lambda pour chaque langue dans un bot. La fonction Lambda et ses paramètres sont configurés pour l'alias de bot que vous utilisez lors de l'exécution.

La fonction Lambda est invoquée à toutes fins utiles dans cette langue si les hooks de dialogue et de code d'exécution sont activés à cette fin.

Les fonctions Lambda d'Amazon Lex V2 ont un format de message d'entrée et de sortie différent de celui d'Amazon Lex V1. Voici les différences entre le format d'entrée de la fonction Lambda.

  • Amazon Lex V2 remplace les alternativeIntents structures currentIntent et par la interpretations structure. Chaque interprétation contient une intention, le score de confiance NLU pour l'intention et une analyse des sentiments facultative.

  • Amazon Lex V2 déplace leactiveContexts, sessionAttributes dans Amazon Lex V1, vers la sessionState structure unifiée. Cette structure fournit des informations sur l'état actuel de la conversation, y compris l'identifiant de la demande d'origine.

  • Amazon Lex V2 ne renvoie pas lerecentIntentSummaryView. Utilisez plutôt les informations de la sessionState structure.

  • L'entrée Amazon Lex V2 fournit l'attribut botId and localeId dans l'botattribut.

  • La structure d'entrée contient un inputMode attribut qui fournit des informations sur le type d'entrée : texte, voix ou DTMF.

Voici les différences entre le format de sortie de la fonction Lambda :

  • Les sessionAttributes structures activeContexts et d'Amazon Lex V1 sont remplacées par celles sessionState d'Amazon Lex V2.

  • Le recentIntentSummaryView n'est pas inclus dans la sortie.

  • La dialogAction structure Amazon Lex V1 est divisée en deux structures, dialogAction qui font partie de la sessionState structure et messages qui sont requises lorsque c'dialogAction.typeest le casElicitIntent. Amazon Lex choisit les messages de cette structure à afficher à l'utilisateur.

Lorsque vous créez un bot avec les API Amazon Lex V2, il n'existe qu'une seule fonction Lambda par alias de bot par langue au lieu d'une fonction Lambda pour chaque intention. Si vous souhaitez continuer à utiliser des fonctions distinctes, vous pouvez créer une fonction de routeur qui active une fonction distincte pour chaque intention. Voici une fonction du routeur que vous pouvez utiliser ou modifier pour votre application.

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

Liste des champs mis à jour

Les tableaux suivants fournissent des informations détaillées sur les champs mis à jour dans la demande et la réponse Lambda Amazon Lex V2. Vous pouvez utiliser ces tables pour mapper les champs entre les versions.

Demande

Les champs suivants ont été mis à jour dans le format de demande de fonction Lambda.

Contextes actifs

La activeContexts structure fait désormais partie de la sessionState structure.

Structure V1 Structure V2

Contextes actifs

État de la session. ActiveContexts

Contextes actifs [*]. timeToLive

SessionState.ActiveContexts [*]. timeToLive

Contextes actifs [*]. timeToLive. timeToLiveInSeconds

SessionState.ActiveContexts [*]. timeToLive. timeToLiveInSeconds

Contextes actifs [*]. timeToLive. turnsToLive

SessionState.ActiveContexts [*]. timeToLive. turnsToLive

ActiveContexts [*] .nom

SessionState.ActiveContexts [*] .nom

ActiveContexts [*] .paramètres

SessionState.ActiveContexts [*] .ContextAttributs

Intentions alternatives

La liste des interprétations de l'indice 1 à N contient la liste des intentions alternatives prédites par Amazon Lex V2, ainsi que leurs scores de confiance. Le recentIntentSummaryView est supprimé de la structure de demande dans Amazon Lex V2. Pour voir les détails durecentIntentSummaryView, utilisez l'GetSessionopération.

Structure V1 Structure V2

Tentes alternatives

interprétations [1 : *]

recentIntentSummaryAfficher

N/A

Robot

Dans Amazon Lex V2, les robots et les alias possèdent des identifiants. L'ID du bot fait partie de l'entrée du codehook. L'ID d'alias est inclus, mais pas le nom de l'alias. Amazon Lex V2 prend en charge plusieurs paramètres régionaux pour le même bot. L'identifiant local est donc inclus.

Structure V1 Structure V2

bot

bot

bot.name

bot.name

N/A

bot.id

bot.alias

N/A

N/A

ID d'alias du robot

bot.version

bot.version

N/A

ID local du robot

Intention actuelle

La sessionState.intent structure contient les détails de l'intention active. Amazon Lex V2 renvoie également une liste de toutes les intentions, y compris les intentions alternatives, de la interpretations structure. Le premier élément de la liste d'interprétations est toujours le même quesessionState.intent.

Structure V1 Structure V2

currentIntent

SessionState.intent OU interprétations [0] .intent

Nom de l'intention actuelle

SessionState.intent.name OU interprétations [0] .intent.name

CurrentIntent. nluConfidenceScore

interprétations [0] .nluConfidence.score

Action de dialogue

Le confirmationStatus champ fait désormais partie de la sessionState structure.

Structure V1 Structure V2

Intention actuelle. État de confirmation

SessionState.Intent.ConfirmationState OU interprétations [0] .intent.confirmationState

N/A

SessionState.intent.STATE OU interprétations [*] .intent.state

Amazon Kendra

Le kendraResponse champ fait désormais partie des interpretations structures sessionState et.

Structure V1 Structure V2

kendraResponse

SessionState.Intent.KendraResponse OU interprétations [0] .intent.KendraResponse

Sentiment

La sentimentResponse structure est déplacée vers la nouvelle interpretations structure.

Structure V1 Structure V2

sentimentResponse

interprétations [0] .SentimentResponse

Réponse sentimentale. Étiquette sentimentale

interprétations [0] .sentimentResponse.Sentiment

Réponse sentimentale. Score de sentiment

interprétations [0] .sentimentResponse.SentimentScore

Emplacements

Amazon Lex V2 fournit un slots objet unique à l'intérieur de la sessionState.intent structure qui contient les valeurs résolues, les valeurs interprétées et la valeur d'origine de ce que l'utilisateur a dit. Amazon Lex V2 prend également en charge les emplacements à valeurs multiples en définissant le slotShape as List et en définissant la values liste. Les emplacements à valeur unique sont pris en charge par le value champ, leur forme est supposée l'êtreScalar.

Structure V1 Structure V2

Current Intent. Slots

SessionState.Intent.Slots OU interprétations [0] .intent.slots

CurrentIntent.slots [*] .valeur

SessionState.Intent.Slots [*] .value.InterpretedValue OU interprétations [0] .intent.slots [*] .value.InterpretedValue

N/A

SessionState.Intent.Slots [*] .value.shape OU interprétations [0] .intent.slots [*] .shape

N/A

SessionState.Intent.Slots [*] .values OU interprétations [0] .intent.slots [*] .values

Détails de la machine à sous Current Intent.

SessionState.Intent.Slots OU interprétations [0] .intent.slots

CurrentIntent.SlotDetails [*] .résolutions

SessionState.Intent.Slots [*] .ResolvedValues OU interprétations [0] .intent.slots [*] .ResolvedValues

CurrentIntent.SlotDetails [*] .Valeur originale

SessionState.Intent.Slots [*] .OriginalValue OU interprétations [0] .intent.slots [*] .OriginalValue

Autres

Le sessionId champ Amazon Lex V2 est identique à celui userId d'Amazon Lex V1. Amazon Lex V2 envoie également le message inputMode de l'appelant : texte, DTMF ou discours.

Structure V1 Structure V2

userId

sessionId

inputTranscript

inputTranscript

invocationSource

invocationSource

outputDialogMode

responseContentType

messageVersion

messageVersion

sessionAttributes

État de la session. Attributs de session

requestAttributes

requestAttributes

N/A

Mode d'entrée

N/A

originatingRequestId

Réponse

Les champs suivants ont été modifiés dans le format du message de réponse de la fonction Lambda.

Contextes actifs

La activeContexts structure a été déplacée vers la sessionState structure.

Structure V1 Structure V2

Contextes actifs

État de la session. ActiveContexts

Contextes actifs [*]. timeToLive

SessionState.ActiveContexts [*]. timeToLive

Contextes actifs [*]. timeToLive. timeToLiveInSeconds

SessionState.ActiveContexts [*]. timeToLive. timeToLiveInSeconds

Contextes actifs [*]. timeToLive. turnsToLive

SessionState.ActiveContexts [*]. timeToLive. turnsToLive

ActiveContexts [*] .nom

SessionState.ActiveContexts [*] .nom

ActiveContexts [*] .paramètres

SessionState.ActiveContexts [*] .ContextAttributs

Action de dialogue

La dialogAction structure a été déplacée vers la sessionState structure. Vous pouvez désormais spécifier plusieurs messages dans une action de dialogue, et la genericAttachments structure est désormais la imageResponseCard structure.

Structure V1 Structure V2

dialogAction

État de la session. DialogAction

Type d'action de dialogue

État de la session. 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 [*] .contenu

Carte 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.titre

DialogAction.Responsecard.GenericAttachments [*] .sous-titre

messages [*]. imageResponseCard.sous-titre

DialogAction.Responsecard.GenericAttachments [*] .imageURL

messages [*]. imageResponseCard.URL de l'image

DialogAction.Responsecard.GenericAttachments [*] .buttons

messages [*]. imageResponseCard.boutons

DialogAction.Responsecard.GenericAttachments [*] .buttons [*] .valeur

messages [*]. imageResponseCard.buttons [*] .valeur

DialogAction.Responsecard.GenericAttachments [*] .buttons [*] .text

messages [*]. imageResponseCard.boutons [*] .texte

DialogAction. kendraQueryRequestCharge utile

DialogAction. kendraQueryRequestCharge utile

DialogAction. kendraQueryFilterCorde

DialogAction. kendraQueryFilterCorde

Intentions et créneaux

Les champs Intent et slot qui faisaient partie de la dialogAction structure font désormais partie de la sessionState structure.

Structure V1 Structure V2

DialogAction.IntentName

SessionState.Intent.Name

DialogAction.slots

SessionState.Intent.Slots

DialogAction.slots [*] .key

SessionState.Intent.Slots [*] .clé

DialogAction.slots [*] .valeur

SessionState.Intent.Slots [*] .value.InterpretedValue

N/A

SessionState.Intent.Slots [*] .value.shape

N/A

SessionState.Intent.Slots [*] .valeurs

Autres

La sessionAttributes structure fait désormais partie de la sessionState structure. La recentIntentSummaryReview structure a été supprimée.

Structure V1 Structure V2

sessionAttributes

État de la session. Attributs de session

recentIntentSummaryAfficher

N/A