

Avviso di fine del supporto: il 15 settembre 2025 AWS interromperà il supporto per Amazon Lex V1. Dopo il 15 settembre 2025, non potrai più accedere alla console di Amazon Lex V1 o alle risorse di Amazon Lex V1. Se utilizzi Amazon Lex V2, consulta invece la [guida Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Migrazione di una funzione Lambda da Amazon Lex V1 ad Amazon Lex V2
<a name="message-lambda"></a>

Amazon Lex V2 consente una sola funzione Lambda per ogni lingua in un bot. La funzione Lambda e le relative impostazioni sono configurate per l'alias bot utilizzato in fase di esecuzione. 

La funzione Lambda viene invocata a tutti gli effetti in quel linguaggio se i dialoghi e gli hook dei codici di adempimento sono abilitati per l'intento.

Le funzioni Lambda di Amazon Lex V2 hanno un formato di messaggio di input e output diverso da Amazon Lex V1. Queste sono le differenze nel formato di input della funzione Lambda.
+ Amazon Lex V2 sostituisce le `alternativeIntents` strutture `currentIntent` and con la `interpretations` struttura. Ogni interpretazione contiene un intento, il punteggio di confidenza NLU relativo all'intento e un'analisi facoltativa del sentiment.
+ Amazon Lex V2 sposta il`activeContexts`, `sessionAttributes` in Amazon Lex V1 alla struttura `sessionState` unificata. Questa struttura fornisce informazioni sullo stato corrente della conversazione, incluso l'ID della richiesta di origine.
+ Amazon Lex V2 non restituisce il`recentIntentSummaryView`. Utilizza invece le informazioni nella `sessionState` struttura.
+ L'input Amazon Lex V2 fornisce l'`botId`e `localeId` nell'`bot`attributo.
+ La struttura di input contiene un `inputMode` attributo che fornisce informazioni sul tipo di input: testo, voce o DTMF.

Queste sono le differenze nel formato di output della funzione Lambda:
+ Le `sessionAttributes` strutture `activeContexts` e in Amazon Lex V1 vengono sostituite dalla `sessionState` struttura in Amazon Lex V2.
+ `recentIntentSummaryView`Non è incluso nell'output.
+ La `dialogAction` struttura di Amazon Lex V1 è suddivisa in due strutture, `dialogAction` che fanno parte della `sessionState` struttura e `messages` sono necessarie quando lo `dialogAction.type` è`ElicitIntent`. Amazon Lex sceglie i messaggi da questa struttura per mostrarli all'utente.

Quando crei un bot con Amazon Lex V2 APIs, esiste solo una funzione Lambda per alias bot per lingua anziché una funzione Lambda per ogni intento. Se desideri continuare a utilizzare funzioni separate, puoi creare una funzione router che attivi una funzione separata per ogni intento. Di seguito è riportata una funzione del router che è possibile utilizzare o modificare per l'applicazione.

```
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
```

## Elenco dei campi aggiornati
<a name="lambda-migrating"></a>

Le tabelle seguenti forniscono informazioni dettagliate sui campi aggiornati nella richiesta e risposta Amazon Lex V2 Lambda. Puoi usare queste tabelle per mappare i campi tra le versioni.

### Richiesta
<a name="migrating-lambda-request"></a>

I seguenti campi sono stati aggiornati nel formato di richiesta della funzione Lambda.

#### Contesti attivi
<a name="lambda-migrating-contexts"></a>

La `activeContexts` struttura ora fa parte della `sessionState` struttura.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  Contesti attivi  |  SessionState.Active Contexts  | 
|  Contesti attivi [\$1]. timeToLive  |  SessionState.ActiveContexts [\$1]. timeToLive  | 
|  Contesti attivi [\$1]. timeToLive. timeToLiveInSeconds  |  SessionState.ActiveContexts [\$1]. timeToLive. timeToLiveInSeconds  | 
|  Contesti attivi [\$1]. timeToLive. turnsToLive  |  SessionState.ActiveContexts [\$1]. timeToLive. turnsToLive  | 
|  ActiveContexts [\$1] .nome  |  sessionstate.activeContexts [\$1] .nome  | 
|  ActiveContexts [\$1] .parametri  |  sessionstate.activeContexts [\$1] .ContextAttributi  | 

#### Intenti alternativi
<a name="lambda-migrating-alternative"></a>

L'elenco delle interpretazioni dall'indice 1 a N contiene l'elenco degli intenti alternativi previsti da Amazon Lex V2, insieme ai relativi punteggi di fiducia. `recentIntentSummaryView`viene rimosso dalla struttura delle richieste in Amazon Lex V2. Per visualizzare i dettagli di`recentIntentSummaryView`, usa l'[GetSession](API_runtime_GetSession.md)operazione.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  Intenti alternativi  |  interpretazioni [1: \$1]  | 
|  recentIntentSummaryVisualizza  |  N/D  | 

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

In Amazon Lex V2, i bot e gli alias dispongono di identificatori. L'ID bot fa parte dell'input del codehook. L'ID dell'alias è incluso, ma non il nome dell'alias. Amazon Lex V2 supporta più versioni locali per lo stesso bot, quindi l'ID locale è incluso.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  bot  |  bot  | 
|  bot.name  |  nome.bot  | 
|  N/D  |  bot.id  | 
|  bot.alias  |  N/D  | 
|  N/D  |  ID bot.alias  | 
|  versione bot  |  versione bot  | 
|  N/D  |  ID locale bot  | 

#### Intento attuale
<a name="lambda-migrating-intent"></a>

La `sessionState.intent` struttura contiene i dettagli dell'intento attivo. Amazon Lex V2 restituisce anche un elenco di tutti gli intenti, inclusi gli intenti alternativi, presenti nella struttura. `interpretations` Il primo elemento nell'elenco delle interpretazioni è sempre lo stesso di. `sessionState.intent`


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  currentIntent  |  sessionState.intent OR interpretazioni [0] .intent  | 
|  CurrentIntent.name  |  sessionstate.intent.name O interpretazioni [0] .intent.name  | 
|  CurrentIntent. nluConfidenceScore  |  interpretazioni [0] .nluConfidence.score  | 

#### Azione di dialogo
<a name="lambda-migrating-dialog"></a>

Il `confirmationStatus` campo fa ora parte della `sessionState` struttura.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  CurrentIntent.Confirmation Status  |  sessionstate.intent.confirmationState OR interpretazioni [0] .intent.confirmationState  | 
|  N/D  |  sessionstate.intent.state OR interpretazioni [\$1] .intent.state  | 

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

Il campo fa ora parte delle strutture and. `kendraResponse` `sessionState` `interpretations`


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  kendraResponse  |  sessionstate.intent.KendraResponse OR interpretazioni [0] .intent.KendraResponse  | 

#### Sentiment
<a name="lambda-migrating-sentiment"></a>

La struttura viene spostata `sentimentResponse` nella nuova struttura. `interpretations`


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  sentimentResponse  |  interpretazioni [0] .SentimentResponse  | 
|  SentimentResponse.SentimentLabel  |  interpretazioni [0] .sentimentResponse.sentiment  | 
|  SentimentResponse.sentimentScore  |  interpretazioni [0] .sentimentresponse.SentimentScore  | 

#### Slot
<a name="lambda-migrating-slots"></a>

Amazon Lex V2 fornisce un singolo `slots` oggetto all'interno della `sessionState.intent` struttura che contiene i valori risolti, il valore interpretato e il valore originale di ciò che l'utente ha detto. Amazon Lex V2 supporta anche slot multivalore impostando `slotShape` as `List` e impostando l'elenco. `values` Gli slot a valore singolo sono supportati dal `value` campo, si presume che la loro forma sia. `Scalar`


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  CurrentIntent.Slots  |  sessionstate.intent.slots O interpretazioni [0] .intent.slots  | 
|  currentIntent.slots [\$1] .value  |  sessionstate.intent.slots [\$1] .value.interpretedValue OR interpretazioni [0] .intent.slots [\$1] .value.interpretedValue  | 
|  N/D  |  sessionstate.intent.slots [\$1] .value.shape O interpretazioni [0] .intent.slots [\$1] .shape  | 
|  N/D  |  sessionstate.intent.slots [\$1] .values OR interpretazioni [0] .intent.slots [\$1] .values  | 
|  CurrentIntent.slotDettagli  |  sessionstate.intent.slots O interpretazioni [0] .intent.slots  | 
|  currentIntent.slotDetails [\$1] .risoluzioni  |  sessionstate.intent.slots [\$1] .ResolvedValues OR interpretazioni [0] .intent.slots [\$1] .ResolvedValues  | 
|  currentIntent.slotDetails [\$1] .OriginalValue  |  sessionstate.intent.slots [\$1] .originalValue OR interpretazioni [0] .intent.slots [\$1] .originalValue  | 

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

Il `sessionId` campo Amazon Lex V2 è lo stesso del `userId` campo di Amazon Lex V1. Amazon Lex V2 invia anche il codice `inputMode` del chiamante: testo, DTMF o voce.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  userId  |  sessionId  | 
|  inputTranscript  |  inputTranscript  | 
|  invocationSource  |  invocationSource  | 
|  outputDialogMode  |  responseContentType  | 
|  messageVersion  |  messageVersion  | 
|  sessionAttributes  |  Attributi sessionState.SessionSession  | 
|  requestAttributes  |  requestAttributes  | 
|  N/D  |  Modalità di input  | 
|  N/D  |  originatingRequestId  | 

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

I seguenti campi sono stati modificati nel formato del messaggio di risposta alla funzione Lambda.

#### Contesti attivi
<a name="lambda-migrating-resonse-context"></a>

La `activeContexts` struttura si è spostata nella `sessionState` struttura.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  Contesti attivi  |  SessionState.Active Contexts  | 
|  Contesti attivi [\$1]. timeToLive  |  SessionState.ActiveContexts [\$1]. timeToLive  | 
|  Contesti attivi [\$1]. timeToLive. timeToLiveInSeconds  |  SessionState.ActiveContexts [\$1]. timeToLive. timeToLiveInSeconds  | 
|  Contesti attivi [\$1]. timeToLive. turnsToLive  |  SessionState.ActiveContexts [\$1]. timeToLive. turnsToLive  | 
|  ActiveContexts [\$1] .nome  |  sessionstate.activeContexts [\$1] .nome  | 
|  ActiveContexts [\$1] .parametri  |  sessionstate.activeContexts [\$1] .ContextAttributi  | 

#### Azione di dialogo
<a name="lambda-migrating-response-dialog"></a>

La `dialogAction` struttura si è spostata nella `sessionState` struttura. Ora puoi specificare più messaggi in un'azione di dialogo e la `genericAttachments` struttura è ora la `imageResponseCard` struttura.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  dialogAction  |  SessionState.DialogAction  | 
|  DialogAction.Type  |  SessionState.DialogAction.Type  | 
|  DialogAction. slotToElicit  |  SessionState.Intent.DialogAction. slotToElicit  | 
|  DialogAction.Type.FulfillmentState  |  SessionState.Intent.State  | 
|  DialogAction.Messaggio  |  messages  | 
|  dialogAction.Message.ContentType  |  messaggi [\$1] .ContentType  | 
|  dialogAction.message.Content  |  messaggi [\$1] .content  | 
|  DialogAction.ResponseCard  |  messaggi [\$1]. imageResponseCard  | 
|  DialogAction.ResponseCard.Version  |  N/D  | 
|  DialogAction.ResponseCard.ContentType  |  messaggi [\$1] .contentType  | 
|  dialogAction.ResponseCard.GenericAttachments  |  N/D  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .title  |  messaggi [\$1]. imageResponseCard.titolo  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .subtitle  |  messaggi [\$1]. imageResponseCard.sottotitolo  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .ImageURL  |  messaggi [\$1]. imageResponseCard.URL dell'immagine  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .buttons  |  messaggi [\$1]. imageResponseCard.pulsanti  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .buttons [\$1] .value  |  messaggi [\$1]. imageResponseCard.buttons [\$1] .valore  | 
|  dialogAction.ResponseCard.genericAttachments [\$1] .buttons [\$1] .testo  |  messaggi [\$1]. imageResponseCard.buttons [\$1] .testo  | 
|  DialogAction. kendraQueryRequestCarico utile  |  DialogAction. kendraQueryRequestCarico utile  | 
|  DialogAction. kendraQueryFilterStringa  |  DialogAction. kendraQueryFilterStringa  | 

#### Intenti e slot
<a name="lambda-migrating-response-slots"></a>

I campi Intent e slot che facevano parte della `dialogAction` struttura ora fanno parte della `sessionState` struttura.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  DialogAction.IntentName  |  SessionState.Intent.Name  | 
|  DialogAction.slot  |  SessionState.Intent.Slots  | 
|  dialogAction.slots [\$1] .key  |  sessionstate.intent.slots [\$1] .chiave  | 
|  dialogAction.slots [\$1] .valore  |  sessionstate.intent.slots [\$1] .value.interpretedValue  | 
|  N/D  |  sessionstate.intent.slots [\$1] .value.shape  | 
|  N/D  |  sessionstate.intent.slots [\$1] .values  | 

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

La `sessionAttributes` struttura ora fa parte della struttura. `sessionState` La `recentIntentSummaryReview` struttura è stata rimossa.


| Struttura V1 | Struttura V2 | 
| --- | --- | 
|  sessionAttributes  |  SessionState.SessionAttributes  | 
|  recentIntentSummaryVisualizza  |  N/D  | 