

Avis de fin de support : le 15 septembre 2025, le support pour Amazon Lex V1 AWS sera interrompu. Après le 15 septembre 2025, vous ne pourrez plus accéder à la console Amazon Lex V1 ni aux ressources Amazon Lex V1. Si vous utilisez Amazon Lex V2, consultez plutôt le [guide Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

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
<a name="message-lambda"></a>

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 le`activeContexts`, `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 le`recentIntentSummaryView`. Utilisez plutôt les informations de la `sessionState` structure.
+ L'entrée Amazon Lex V2 fournit l'attribut `botId` and `localeId` dans l'`bot`attribut.
+ 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.type`est le cas`ElicitIntent`. Amazon Lex choisit les messages de cette structure à afficher à l'utilisateur.

Lorsque vous créez un bot avec Amazon Lex V2 APIs, il n'y a 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
<a name="lambda-migrating"></a>

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
<a name="migrating-lambda-request"></a>

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

#### Contextes actifs
<a name="lambda-migrating-contexts"></a>

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


| Structure V1 | Structure V2 | 
| --- | --- | 
|  Contextes actifs  |  État de la session. ActiveContexts  | 
|  Contextes actifs [\$1]. timeToLive  |  SessionState.ActiveContexts [\$1]. timeToLive  | 
|  Contextes actifs [\$1]. timeToLive. timeToLiveInSeconds  |  SessionState.ActiveContexts [\$1]. timeToLive. timeToLiveInSeconds  | 
|  Contextes actifs [\$1]. timeToLive. turnsToLive  |  SessionState.ActiveContexts [\$1]. timeToLive. turnsToLive  | 
|  ActiveContexts [\$1] .nom  |  SessionState.ActiveContexts [\$1] .nom  | 
|  ActiveContexts [\$1] .paramètres  |  SessionState.ActiveContexts [\$1] .ContextAttributs  | 

#### Intentions alternatives
<a name="lambda-migrating-alternative"></a>

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 du`recentIntentSummaryView`, utilisez l'[GetSession](API_runtime_GetSession.md)opération.


| Structure V1 | Structure V2 | 
| --- | --- | 
|  Tentes alternatives  |  interprétations [1 : \$1]  | 
|  recentIntentSummaryAfficher  |  N/A  | 

#### Robot
<a name="lambda-migrating-bot"></a>

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
<a name="lambda-migrating-intent"></a>

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 que`sessionState.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
<a name="lambda-migrating-dialog"></a>

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 [\$1] .intent.state  | 

#### Amazon Kendra
<a name="lambda-migrating-kendra"></a>

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
<a name="lambda-migrating-sentiment"></a>

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
<a name="lambda-migrating-slots"></a>

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'être`Scalar`.


| Structure V1 | Structure V2 | 
| --- | --- | 
|  Current Intent. Slots  |  SessionState.Intent.Slots OU interprétations [0] .intent.slots  | 
|  CurrentIntent.slots [\$1] .valeur  |  SessionState.Intent.Slots [\$1] .value.InterpretedValue OU interprétations [0] .intent.slots [\$1] .value.InterpretedValue  | 
|  N/A  |  SessionState.Intent.Slots [\$1] .value.shape OU interprétations [0] .intent.slots [\$1] .shape  | 
|  N/A  |  SessionState.Intent.Slots [\$1] .values OU interprétations [0] .intent.slots [\$1] .values  | 
|  Détails de la machine à sous Current Intent.  |  SessionState.Intent.Slots OU interprétations [0] .intent.slots  | 
|  CurrentIntent.SlotDetails [\$1] .résolutions  |  SessionState.Intent.Slots [\$1] .ResolvedValues OU interprétations [0] .intent.slots [\$1] .ResolvedValues  | 
|  CurrentIntent.SlotDetails [\$1] .Valeur originale  |  SessionState.Intent.Slots [\$1] .OriginalValue OU interprétations [0] .intent.slots [\$1] .OriginalValue  | 

#### Autres
<a name="lambda-migrating-other"></a>

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
<a name="migrating-lambda-response"></a>

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

#### Contextes actifs
<a name="lambda-migrating-resonse-context"></a>

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 [\$1]. timeToLive  |  SessionState.ActiveContexts [\$1]. timeToLive  | 
|  Contextes actifs [\$1]. timeToLive. timeToLiveInSeconds  |  SessionState.ActiveContexts [\$1]. timeToLive. timeToLiveInSeconds  | 
|  Contextes actifs [\$1]. timeToLive. turnsToLive  |  SessionState.ActiveContexts [\$1]. timeToLive. turnsToLive  | 
|  ActiveContexts [\$1] .nom  |  SessionState.ActiveContexts [\$1] .nom  | 
|  ActiveContexts [\$1] .paramètres  |  SessionState.ActiveContexts [\$1] .ContextAttributs  | 

#### Action de dialogue
<a name="lambda-migrating-response-dialog"></a>

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 [\$1] .ContentType  | 
|  DialogAction.Message.Content  |  messages [\$1] .contenu  | 
|  DialogAction.ResponseCard  |  messages [\$1]. imageResponseCard  | 
|  DialogAction.ResponseCard.Version  |  N/A  | 
|  DialogAction.ResponseCard.ContentType  |  messages [\$1] .ContentType  | 
|  DialogAction.Responsecard.GenericAttachments  |  N/A  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .title  |  messages [\$1]. imageResponseCard.titre  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .sous-titre  |  messages [\$1]. imageResponseCard.sous-titre  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .imageURL  |  messages [\$1]. imageResponseCard.URL de l'image  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .buttons  |  messages [\$1]. imageResponseCard.boutons  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .buttons [\$1] .valeur  |  messages [\$1]. imageResponseCard.buttons [\$1] .valeur  | 
|  DialogAction.Responsecard.GenericAttachments [\$1] .buttons [\$1] .text  |  messages [\$1]. imageResponseCard.boutons [\$1] .texte  | 
|  DialogAction. kendraQueryRequestCharge utile  |  DialogAction. kendraQueryRequestCharge utile  | 
|  DialogAction. kendraQueryFilterCorde  |  DialogAction. kendraQueryFilterCorde  | 

#### Intentions et créneaux
<a name="lambda-migrating-response-slots"></a>

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 [\$1] .key  |  SessionState.Intent.Slots [\$1] .clé  | 
|  DialogAction.slots [\$1] .valeur  |  SessionState.Intent.Slots [\$1] .value.InterpretedValue  | 
|  N/A  |  SessionState.Intent.Slots [\$1] .value.shape  | 
|  N/A  |  SessionState.Intent.Slots [\$1] .valeurs  | 

#### Autres
<a name="lambda-migrating-response-other"></a>

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  | 