

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à.

# Amazon Lex: come funziona
<a name="how-it-works"></a>

Amazon Lex ti consente di creare applicazioni utilizzando un'interfaccia vocale o di testo basata sulla stessa tecnologia alla base di Amazon Alexa. Di seguito sono riportati i passaggi tipici che esegui quando lavori con Amazon Lex:

1. Crea un bot e configuralo con uno o più intenti che desideri supportare. Configura il bot in modo che comprenda l'obiettivo dell'utente (intento), inizi una conversazione per ottenere le informazioni e realizzi l'intento dell'utente.

1. Esegui il test del bot. Puoi utilizzare il client di finestra di test fornito dalla console Amazon Lex.

1. Pubblica una versione e crea un alias.

1. Distribuisci il bot. Puoi distribuire il bot sulle piattaforme come le applicazioni mobili oppure su piattaforme di messaggistica come Facebook Messenger. 

Prima di iniziare, acquisisci familiarità con i seguenti concetti e terminologia fondamentali di Amazon Lex:
+ **Bot**: un bot esegue attività automatizzate come ordinare una pizza, prenotare un hotel, ordinare fiori e così via. Un bot Amazon Lex è basato sulle funzionalità di riconoscimento vocale automatico (ASR) e Natural Language Understanding (NLU). Ogni bot deve avere un nome univoco all'interno del tuo account.

   

  I bot di Amazon Lex sono in grado di comprendere l'input dell'utente fornito tramite testo o voce e conversare in linguaggio naturale. Puoi creare funzioni Lambda e aggiungerle come code hook nella configurazione degli intenti per eseguire attività di convalida e adempimento dei dati utente. 

   
+ **Intento**: un intento rappresenta un'azione che l'utente desidera eseguire. Si crea un bot per supportare uno o più intenti correlati. Ad esempio, potresti creare un bot che ordina pizze e bevande. Per ogni intento, fornisci le informazioni obbligatorie seguenti: 

   
  + **Nome dell'intento: un nome** descrittivo per l'intento. Ad esempio, **OrderPizza**. I nomi degli intenti devono essere univoci all'interno del tuo account.
  + **Esempi di enunciati**: come un utente potrebbe esprimere l'intento. Ad esempio, un utente potrebbe dire "Posso ordinare una pizza per favore?" oppure "Vorrei ordinare una pizza". 
  + **Come adempiere all'intento**: come desideri soddisfare l'intento dopo che l'utente ha fornito le informazioni necessarie (ad esempio, ha effettuato un ordine presso una pizzeria locale). Ti consigliamo di creare una funzione Lambda per soddisfare l'intento.

     

     Facoltativamente, puoi configurare l'intento in modo che Amazon Lex restituisca semplicemente le informazioni all'applicazione client per eseguire l'adempimento necessario. 

     

  Oltre agli intenti personalizzati, come ordinare una pizza, Amazon Lex offre anche intenti integrati per configurare rapidamente il bot. Per ulteriori informazioni, consulta [Intenti incorporati e tipi di slot](howitworks-builtins.md). 

   
+ **Slot**: un intento può richiedere zero o più slot o parametri. Si aggiungono slot come parte della configurazione dell'intento. In fase di esecuzione, Amazon Lex richiede all'utente valori di slot specifici. L'utente deve fornire valori per tutti gli slot *richiesti* prima che Amazon Lex possa soddisfare l'intento.

   

  Ad esempio, l'intento `OrderPizza` richiede slot come le dimensioni della pizza, il tipo di crosta e il numero di pizze. Tali slot devono essere aggiunti nella configurazione dell'intento. Per ogni slot, fornisci il tipo di slot e una richiesta ad Amazon Lex da inviare al client per ottenere dati dall'utente. Un utente può rispondere con un valore di slot che include parole aggiuntive, come «large pizza please» o «let's stick with small». Amazon Lex è ancora in grado di comprendere il valore dello slot previsto. 

   
+ **Tipo di slot**: ogni slot ha un tipo. Puoi creare i tuoi tipi di slot personalizzati o utilizzare i tipi di slot incorporati. Ogni tipo di slot deve avere un nome univoco all'interno del tuo account. Ad esempio, puoi creare e utilizzare i tipi di slot riportati sotto per l'intento `OrderPizza`:

   
  + Dimensioni: con valori di enumerazione `Small` `Medium` e `Large`.
  + Crosta: con valori di enumerazione `Thick` e `Thin`.

   

  

  Amazon Lex offre anche tipi di slot integrati. Ad esempio, `AMAZON.NUMBER` è un tipo di slot incorporato che puoi utilizzare per il numero di pizze ordinate. Per ulteriori informazioni, consulta [Intenti incorporati e tipi di slot](howitworks-builtins.md).

Per un elenco delle regioni AWS in cui è disponibile Amazon Lex, consulta [Regioni ed endpoints AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html#lex_region) nell'*Amazon Web Services General Reference*.

Negli argomenti seguenti vengono fornite informazioni aggiuntive. Consigliamo di leggerle in ordine e di esaminare gli esercizi [Guida introduttiva ad Amazon Lex](getting-started.md).

**Topics**
+ [Lingue supportate in Amazon Lex](how-it-works-language.md)
+ [Modello di programmazione](programming-model.md)
+ [Gestione dei messaggi](howitworks-manage-prompts.md)
+ [Gestione del contesto di una conversazione](context-mgmt.md)
+ [Utilizzo dei punteggi di confidenza](confidence-scores.md)
+ [Log delle conversazioni](conversation-logs.md)
+ [Gestione delle sessioni con l'API Amazon Lex](how-session-api.md)
+ [Opzioni di distribuzione di bot](chatbot-service.md)
+ [Intenti incorporati e tipi di slot](howitworks-builtins.md)
+ [Tipi di slot personalizzati](howitworks-custom-slots.md)
+ [Offuscamento degli slot](how-obfuscate.md)
+ [Analisi delle emozioni](sentiment-analysis.md)
+ [Etichettatura delle risorse Amazon Lex](how-it-works-tags.md)

# Lingue supportate in Amazon Lex
<a name="how-it-works-language"></a>

Amazon Lex V1 supporta una varietà di lingue e impostazioni locali. Le lingue supportate e le funzionalità che le supportano sono elencate nelle seguenti tabelle. 

Amazon Lex V2 supporta lingue aggiuntive, vedi [Lingue supportate in Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html) V2

<a name="topiclist"></a>

## Lingue e impostazioni locali supportate
<a name="supported-languages-and-locales"></a>

Amazon Lex V1 supporta le seguenti lingue e impostazioni locali.


| Codice | Lingua e impostazioni locali | 
| --- | --- | 
| de-DE | Tedesco (tedesco) | 
| en-AU | Inglese (Australia) | 
| en-GB | Inglese (Regno Unito) | 
| en-IN | Inglese (India) | 
| it-IT | Inglese (Stati Uniti) | 
| es-419 | Spagnolo (America Latina) | 
| es-ES | Spagnolo (Spagna) | 
| es-US | Spagnolo (Stati Uniti) | 
| fr-CA | Francese (Canada) | 
| fr-FR | Francese (Francia) | 
| it-IT | Italiano (Italia) | 
| ja-JP | Giapponese (Giappone) | 
| ko-KR | Coreano (Corea) | 

## Lingue e impostazioni locali supportate dalle funzionalità di Amazon Lex
<a name="supported-languages-features"></a>

Tutte le funzionalità di Amazon Lex sono supportate in tutte le lingue e in tutte le lingue, ad eccezione di quelle elencate in questa tabella.


| Funzionalità | Lingue e impostazioni locali supportate | 
| --- | --- | 
| [Impostazione del contesto degli intenti](context-mgmt-active-context.md) | Inglese (Stati Uniti) (en-US) | 

# Modello di programmazione
<a name="programming-model"></a>

Un *bot* è il tipo di risorsa principale in Amazon Lex. Gli altri tipi di risorse in Amazon Lex sono *intent*, *tipo di slot*, *alias* e associazione di *canali bot*. 

Puoi creare un bot utilizzando la console Amazon Lex o l'API per la creazione di modelli. La console fornisce un'interfaccia utente grafica che puoi usare per creare un bot pronto per la produzione per la tua applicazione. Se preferisci, puoi utilizzare l'API per la creazione di modelli tramite il programma AWS CLI o il tuo programma personalizzato per creare un bot. 

Dopo aver creato un bot, devi distribuirlo in una delle [piattaforme supportate](https://docs.aws.amazon.com/lex/latest/dg/chatbot-service.html) oppure devi integrarlo nella tua applicazione. Quando un utente interagisce con il bot, l'applicazione client invia richieste al bot utilizzando l'API di runtime Amazon Lex. Ad esempio, quando un utente dice «Voglio ordinare una pizza», il cliente invia questo input ad Amazon Lex utilizzando una delle operazioni API di runtime. Gli utenti possono fornire input vocali o di testo. 

Puoi anche creare funzioni Lambda e utilizzarle in un intento. Usa questi code hook di funzioni Lambda per eseguire attività di runtime come l'inizializzazione, la convalida dell'input dell'utente e l'adempimento degli intenti. Nelle sezioni seguenti vengono fornite informazioni aggiuntive.

**Topics**
+ [Operazioni API di costruzione dei modelli](#programming-model-build-time-api)
+ [Operazioni API di runtime](#programming-model-runtime-api)
+ [Lambda funziona come code hook](#prog-model-lambda)

## Operazioni API di costruzione dei modelli
<a name="programming-model-build-time-api"></a>

Per creare in modo programmatico bot, intenti e tipi di slot, puoi utilizzare le operazioni API di costruzione dei modelli. Puoi anche utilizzare l'API di costruzione dei modelli per gestire, aggiornare ed eliminare risorse per il tuo bot. Le operazioni API di costruzione dei modelli includono:
+ [PutBot](API_PutBot.md), [PutBotAlias](API_PutBotAlias.md), [PutIntent](API_PutIntent.md) e [PutSlotType](API_PutSlotType.md) per creare e aggiornare rispettivamente bot, alias dei bot, intenti e tipi di slot.
+ [CreateBotVersion](API_CreateBotVersion.md), [CreateIntentVersion](API_CreateIntentVersion.md) e [CreateSlotTypeVersion](API_CreateSlotTypeVersion.md) per creare e pubblicare rispettivamente versioni dei tuoi bot, intenti e tipi di slot.
+ [GetBot](API_GetBot.md) e [GetBots](API_GetBots.md) per ottenere rispettivamente un bot specifico o un elenco di bot che hai creato.
+ [GetIntent](API_GetIntent.md) e [GetIntents](API_GetIntents.md) per ottenere rispettivamente un intento specifico o elenco di intenti che hai creato.
+ [GetSlotType](API_GetSlotType.md) e [GetSlotTypes](API_GetSlotTypes.md) per ottenere rispettivamente uno tipo di slot specifico o elenco di tipi di slot che hai creato.
+ [GetBuiltinIntent](API_GetBuiltinIntent.md)[GetBuiltinIntents](API_GetBuiltinIntents.md), e [GetBuiltinSlotTypes](API_GetBuiltinSlotTypes.md) per ottenere un intento integrato di Amazon Lex, un elenco di intenti integrati di Amazon Lex o un elenco di tipi di slot integrati che puoi utilizzare rispettivamente nel tuo bot.
+ [GetBotChannelAssociation](API_GetBotChannelAssociation.md) e [GetBotChannelAssociations](API_GetBotChannelAssociations.md) per ottenere rispettivamente un'associazione tra il tuo bot e una piattaforma di messaggistica o un elenco di associazioni tra il tuo bot e piattaforme di messaggistica.
+ [DeleteBot](API_DeleteBot.md), [DeleteBotAlias](API_DeleteBotAlias.md), [DeleteBotChannelAssociation](API_DeleteBotChannelAssociation.md), [DeleteIntent](API_DeleteIntent.md) e [DeleteSlotType](API_DeleteSlotType.md) per rimuovere risorse non necessarie dal tuo account.

Puoi utilizzare l'API di creazione di modelli per creare strumenti personalizzati per gestire le tue risorse Amazon Lex. Ad esempio, esiste un limite di 100 versioni per ogni bot, intento e tipo di slot. Puoi utilizzare l'API di costruzione dei modelli per creare uno strumento che elimini automaticamente le vecchie versioni quando il tuo bot si avvicina al limite.

Per assicurarsi che una sola operazione aggiorni una risorsa alla volta, Amazon Lex utilizza i checksum. Quando utilizzi un'operazione `Put` API—[PutBot](API_PutBot.md), [PutBotAlias](API_PutBotAlias.md)[PutIntent](API_PutIntent.md), o [PutSlotType](API_PutSlotType.md) —per aggiornare una risorsa, devi superare il checksum corrente della risorsa nella richiesta. Se due strumenti tentano di aggiornare una risorsa contemporaneamente, entrambi forniscono lo stesso checksum corrente. La prima richiesta per raggiungere Amazon Lex corrisponde al checksum corrente della risorsa. Nel momento in cui arriva la seconda richiesta, il checksum è differente. Il secondo strumento riceve un'eccezione `PreconditionFailedException` e l'aggiornamento termina.

Le `Get` operazioni— [GetBot](API_GetBot.md)[GetIntent](API_GetIntent.md), e [GetSlotType](API_GetSlotType.md) —alla fine sono coerenti. Se utilizzi un'operazione `Get` immediatamente dopo aver creato o modificato una risorsa con una delle operazioni `Put`, le modifiche potrebbero non essere restituite. Dopo che un'operazione `Get` restituisce l'aggiornamento più recente, restituisce sempre quella risorsa aggiornata fino a quando la risorsa non viene nuovamente modificata. È possibile determinare se una risorsa aggiornata è stata restituita osservando il checksum.

## Operazioni API di runtime
<a name="programming-model-runtime-api"></a>

 Le applicazioni client utilizzano le seguenti operazioni API di runtime per comunicare con Amazon Lex: 
+ [PostContent](API_runtime_PostContent.md)— Accetta input vocali o testuali e restituisce informazioni sull'intento e un messaggio di testo o vocale da trasmettere all'utente. Attualmente, Amazon Lex supporta i formati audio seguenti:

   

  Formati audio di input: LPCM e Opus 

  Formati audio di output: MPEG, OGG e PCM

   

  L'operazione `PostContent` supporta input audio a 8 kHz e 16 kHz. Le applicazioni in cui l'utente finale parla con Amazon Lex al telefono, come un call center automatizzato, possono trasmettere direttamente audio a 8 kHz. 

   
+ [PostText](API_runtime_PostText.md): prende il testo come input e restituisce informazioni sull'intento e un messaggio di testo da comunicare all'utente.

L'applicazione client utilizza l'API di runtime per chiamare un bot Amazon Lex specifico per elaborare gli enunciati, ovvero input di testo o voce dell'utente. Ad esempio, supponiamo che un utente dica "Voglio una pizza". Il client invia questo input utente a un bot utilizzando una delle operazioni dell'API di runtime di Amazon Lex. Dall'input dell'utente, Amazon Lex riconosce che la richiesta dell'utente riguarda l'`OrderPizza`intento definito nel bot. Amazon Lex coinvolge l'utente in una conversazione per raccogliere le informazioni richieste, o dati sugli slot, come le dimensioni della pizza, i condimenti e il numero di pizze. Dopo che l'utente ha fornito tutti i dati dello slot necessari, Amazon Lex richiama l'hook del codice della funzione Lambda per soddisfare l'intento o restituisce i dati dell'intento al client, a seconda di come è configurato l'intento.

Usa l'operazione [PostContent](API_runtime_PostContent.md) quando il tuo bot utilizza l'input vocale. Ad esempio, un'applicazione di call center automatizzata può inviare messaggi vocali a un bot Amazon Lex anziché a un agente per rispondere alle richieste dei clienti. Puoi utilizzare il formato audio a 8 kHz per inviare l'audio direttamente dal telefono ad Amazon Lex.

La finestra di test nella console Amazon Lex utilizza l'[PostContent](API_runtime_PostContent.md)API per inviare richieste di testo e vocali ad Amazon Lex. Puoi usare questa finestra di prova negli esercizi [Guida introduttiva ad Amazon Lex](getting-started.md).

## Lambda funziona come code hook
<a name="prog-model-lambda"></a>

Puoi configurare il tuo bot Amazon Lex per richiamare una funzione Lambda come hook di codice. L'hook di codice può servire a più scopi:
+ Personalizza l'interazione con l'utente: ad esempio, quando Joe richiede i condimenti per pizza disponibili, puoi utilizzare la conoscenza precedente delle scelte di Joe per visualizzare un sottoinsieme di condimenti.
+ Convalida l'input dell'utente: supponiamo che Jen voglia raccogliere fiori fuori orario. È possibile convalidare l'ora che Jen inserisce e inviare una risposta appropriata.
+ Soddisfa l'intento dell'utente: dopo che Joe ha fornito tutte le informazioni per il suo ordine di pizza, Amazon Lex può richiamare una funzione Lambda per effettuare l'ordine presso una pizzeria locale.

Quando configuri un intento, specifichi le funzioni Lambda come code hook nelle seguenti posizioni: 
+ Gancio di codice di dialogo per l'inizializzazione e la convalida: questa funzione Lambda viene richiamata su ogni input dell'utente, presupponendo che Amazon Lex abbia compreso l'intento dell'utente.
+ Fulfillment code hook: questa funzione Lambda viene richiamata dopo che l'utente ha fornito tutti i dati dello slot necessari per soddisfare l'intento.

Scegli l'intento e imposta i code hook nella console Amazon Lex, come mostrato nella seguente schermata:

![\[La console Amazon Lex che mostra i code hook delle funzioni Lambda.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/how-works-10.png)


È anche possibile impostare gli hook dei codici utilizzando i campi `dialogCodeHook` e `fulfillmentActivity` nell'operazione [PutIntent](API_PutIntent.md).

Una funzione Lambda può eseguire l'inizializzazione, la convalida e l'adempimento. I dati sugli eventi ricevuti dalla funzione Lambda hanno un campo che identifica il chiamante come dialogo o gancio di codice di adempimento. È possibile utilizzare queste informazioni per eseguire la parte appropriata del codice.

Puoi usare una funzione Lambda per creare un bot in grado di navigare in dialoghi complessi. Utilizza il `dialogAction` campo nella risposta della funzione Lambda per indirizzare Amazon Lex a intraprendere azioni specifiche. Ad esempio, puoi utilizzare l'azione di `ElicitSlot` dialogo per dire ad Amazon Lex di chiedere all'utente un valore di slot che non è richiesto. Se è stato definito un prompt di chiarimento, è possibile utilizzare l'operazione della finestra di dialogo `ElicitIntent` per ottenere un nuovo intento quando l'utente ha terminato con quello precedente.

Per ulteriori informazioni, consulta [Utilizzo delle funzioni Lambda](using-lambda.md).

# Gestione dei messaggi
<a name="howitworks-manage-prompts"></a>

**Topics**
+ [Tipi di messaggi](#msg-prompts-msg-types)
+ [Contesti per la configurazione di messaggi](#msg-prompts-context-for-msgs)
+ [Formati di messaggio supportati](#msg-prompts-formats)
+ [Gruppi di messaggi](#message-groups)
+ [Schede di risposta](#msg-prompts-resp-card)

Quando crei un bot, puoi configurare messaggi illustrativi o informativi da inviare al client. Considerare i seguenti esempi:
+ Puoi configurare il tuo bot con il prompt illustrativo seguente: 

  ```
  I don't understand. What would you like to do?
  ```

  Amazon Lex invia questo messaggio al client se non comprende l'intento dell'utente. 

   
+ Supponiamo che venga creato un bot per supportare un intento denominato `OrderPizza`. Per un ordine di pizza, gli utenti devono fornire informazioni quali le dimensioni della pizza, i contorni e il tipo di crosta. È possibile configurare i seguenti prompt:

  ```
  What size pizza do you want?
  What toppings do you want?
  Do you want thick or thin crust?
  ```

  Dopo aver determinato l'intenzione dell'utente di ordinare la pizza, Amazon Lex invia questi messaggi al client per ottenere informazioni dall'utente.

In questa sezione viene descritta la progettazione delle interazioni dell'utente nella configurazione del tuo bot. 

## Tipi di messaggi
<a name="msg-prompts-msg-types"></a>

Un messaggio può essere un prompt o un'istruzione.
+ Un *prompt* è normalmente una domanda che prevede la risposta dell'utente. 
+ Un'*istruzione* è informativa. Non prevede una risposta.

Un messaggio può includere riferimenti a slot, attributi di sessione e attributi di richiesta. In fase di esecuzione, Amazon Lex sostituisce questi riferimenti con valori effettivi. 

Per fare riferimento ai valori slot che sono stati impostati, utilizza la sintassi seguente:

```
{SlotName} 
```

Per fare riferimento agli attributi di sessione, utilizza la sintassi seguente:

```
[SessionAttributeName] 
```

Per fare riferimento agli attributi di richiesta, utilizza la sintassi seguente:

```
((RequestAttributeName)) 
```

I messaggi possono includere valori di slot, attributi di sessione e attributi di richiesta. 

Ad esempio, supponiamo di configurare il seguente messaggio nell'intento del bot: OrderPizza 

```
"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes." 
```

Questo messaggio fa riferimento sia ad attributi slot (`PizzaTopping`) sia ad attributi di sessione (`FirstName` e `DeliveryTime`). In fase di esecuzione, Amazon Lex sostituisce questi segnaposto con valori e restituisce il seguente messaggio al client:

```
"Hey John, your cheese pizza will arrive in 30 minutes." 
```

Per includere parentesi quadre ([]) o graffe (\$1\$1) in un messaggio, utilizza il carattere escape della barra rovesciata (\$1). Ad esempio, il messaggio seguente include parentesi graffe e parentesi quadre: 

```
\{Text\} \[Text\]
```

Il testo restituito all'applicazione del client ha questo aspetto:

```
{Text} [Text]
```

Per informazioni sugli attributi di sessione, consulta le operazioni API di runtime [PostText](API_runtime_PostText.md) e [PostContent](API_runtime_PostContent.md). Per vedere un esempio, consulta [Prenota un viaggio](ex-book-trip.md). 

Le funzioni Lambda possono anche generare messaggi e restituirli ad Amazon Lex per inviarli all'utente. Se aggiungi funzioni Lambda quando configuri il tuo intento, puoi creare messaggi in modo dinamico. Fornendo i messaggi durante la configurazione del bot, è possibile eliminare la necessità di creare un prompt nella funzione Lambda.

## Contesti per la configurazione di messaggi
<a name="msg-prompts-context-for-msgs"></a>

Quando crei il bot, puoi creare messaggi in diversi contesti, come richieste di chiarimento in bot, richieste di valori di slot e messaggi provenienti dagli intenti. Amazon Lex sceglie un messaggio appropriato in ogni contesto da restituire all'utente. Puoi fornire un gruppo di messaggi per ogni contesto. In tal caso, Amazon Lex sceglie a caso un messaggio dal gruppo. Puoi specificare anche il formato del messaggio oppure raggruppare i messaggi. Per ulteriori informazioni, consulta [Formati di messaggio supportati](#msg-prompts-formats).

Se hai una funzione Lambda associata a un intent, puoi sovrascrivere qualsiasi messaggio configurato in fase di compilazione. Tuttavia, non è richiesta una funzione Lambda per utilizzare nessuno di questi messaggi.

### Messaggi bot
<a name="msg-prompts-bot"></a>

Puoi configurare il bot con richieste di chiarimento e messaggi di fine sessione. In fase di esecuzione, Amazon Lex utilizza la richiesta di chiarimento ** se non comprende l'intento dell'utente. Puoi configurare il numero di volte in cui Amazon Lex richiede chiarimenti prima di inviare il messaggio di fine sessione. Puoi configurare i messaggi a livello di bot nella sezione **Error Handling** della console Amazon Lex, come nell'immagine seguente:

![\[Sezione di gestione degli errori nella scheda editor della console. È possibile specificare istruzioni di chiarimento e una frase di chiusura.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/how-works-20.png)


Con l'API, si possono configurare messaggi impostando i campi `clarificationPrompt` e `abortStatement` nell'operazione [PutBot](API_PutBot.md).

Se utilizzi una funzione Lambda con un intento, la funzione Lambda potrebbe restituire una risposta che indirizza Amazon Lex a chiedere l'intento di un utente. Se la funzione Lambda non fornisce tale messaggio, Amazon Lex utilizza la richiesta di chiarimento.

### Prompt di slot
<a name="msg-prompts-slots"></a>

È necessario specificare almeno un messaggio di prompt per ognuno degli slot obbligatori in un intento. In fase di esecuzione, Amazon Lex utilizza uno di questi messaggi per richiedere all'utente di fornire un valore per lo slot. Ad esempio, per uno slot `cityName`, il seguente è un prompt valido: 

```
Which city would you like to fly to?
```

Puoi impostare uno o più prompt per ogni slot utilizzando la console. Puoi anche creare gruppi di prompt utilizzando l'operazione [PutIntent](API_PutIntent.md). Per ulteriori informazioni, consulta [Gruppi di messaggi](#message-groups).

### Risposte
<a name="msg-prompts-response"></a>

Nella console, utilizza la sezione delle **risposte** per creare conversazioni dinamiche e coinvolgenti per il tuo bot. Puoi creare uno o più gruppi di messaggi per una risposta. In fase di esecuzione, Amazon Lex crea una risposta selezionando un messaggio da ogni gruppo di messaggi. Per ulteriori informazioni sui gruppi di messaggi, consulta [Gruppi di messaggi](#message-groups). 

Ad esempio, il primo gruppo di messaggi può contenere diversi saluti: "Salve", "Ciao" e "Saluti". Il secondo gruppo di messaggi può contenere diverse forme di presentazioni: "Io sono il bot per le prenotazioni" e "Questo è il bot per le prenotazioni". Un terzo gruppo di messaggi può comunicare le funzionalità del bot: "Posso noleggiare un'auto o prenotare un albergo", "Puoi noleggiare un'auto o prenotare un albergo" e "Posso aiutarti a noleggiare un'auto e prenotare un albergo".

Lex utilizza un messaggio da ogni gruppo di messaggi e crea risposte dinamiche dando origine a una conversazione. Ad esempio, un'interazione potrebbe essere la seguente:

![\[Una possibile conversazione con un bot.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/default-response-10b.png)


Un'altra potrebbe essere la seguente:

![\[Un'altra possibile conversazione con un bot.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/default-response-20c.png)


In entrambi i casi, l'utente può rispondere con un nuovo intento, ad esempio l'intento `BookCar` o `BookHotel`.

È possibile impostare il bot in modo che ponga una domanda di follow-up nella risposta. Ad esempio, per l'interazione precedente, puoi creare un quarto gruppo di messaggi con le domande seguenti: "Posso essere d'aiuto con un'auto o un albergo?", "Desideri effettuare una prenotazione ora?" e "C'è qualcosa che posso fare per te?". Per messaggi che includono "No" come risposta, puoi creare un prompt di follow-up. L'immagine seguente fornisce un esempio:

![\[Richiesta di follow-up in una conversazione con un bot.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/default-response-25a.png)


Per creare un prompt di follow-up, scegli **Attendi risposta utente**. Successivamente digita il messaggio o i messaggi che desideri inviare quando un utente dice "No". Quando crei una risposta da utilizzare come prompt di follow-up, è necessario specificare anche un'istruzione se la risposta all'istruzione è "No". Per un esempio, vedi le immagini seguenti.

![\[Configurazione dei messaggi per quando un utente dice «no».\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/default-response-30b.png)


Per aggiungere risposte a un intento con l'API, utilizza l'operazione `PutIntent`. Per specificare una risposta, imposta il campo `conclusionStatement` nella richiesta `PutIntent`. Per impostare un prompt di follow-up, imposta il campo `followUpPrompt` e includi l'istruzione da inviare se l'utente dice "No". Non puoi impostare entrambi i campi `conclusionStatement` e `followUpPrompt` nello stesso intento.

## Formati di messaggio supportati
<a name="msg-prompts-formats"></a>

Quando si utilizza l'[PostText](API_runtime_PostText.md)operazione o quando si utilizza l'[PostContent](API_runtime_PostContent.md)operazione con l'`Accept`intestazione impostata su`text/plain;charset=utf8`, Amazon Lex supporta messaggi nei seguenti formati:
+ `PlainText`—Il messaggio contiene testo UTF-8 semplice.
+ `SSML`—Il messaggio contiene testo formattato per l'output vocale.
+ `CustomPayload`—Il messaggio contiene un formato personalizzato che hai creato per il tuo cliente. Puoi definire il payload in base alle esigenze della tua applicazione.
+ `Composite`—Il messaggio è una raccolta di messaggi, uno per ogni gruppo di messaggi. Per ulteriori informazioni sui gruppi di messaggi, consulta [Gruppi di messaggi](#message-groups).

Per impostazione predefinita, Amazon Lex restituisce uno qualsiasi dei messaggi definiti per un particolare prompt. Ad esempio, se definisci cinque messaggi per ottenere un valore di slot, Amazon Lex sceglie uno dei messaggi in modo casuale e lo restituisce al client.

Se desideri che Amazon Lex restituisca un tipo specifico di messaggio al client in una richiesta in fase di esecuzione, imposta il parametro di `x-amzn-lex:accept-content-types` richiesta. La risposta si limita al tipo o ai tipi richiesti. Se è presente più di un messaggio del tipo specificato, Amazon Lex ne restituisce uno a caso. Per ulteriori informazioni sull'intestazione `x-amz-lex:accept-content-types`, consulta [Impostazione del tipo di risposta](context-mgmt-request-attribs.md#special-response).

## Gruppi di messaggi
<a name="message-groups"></a>

Un *gruppo di messaggi* è un insieme di risposte adatte a un particolare prompt. Usa i gruppi di messaggi quando desideri che il bot crei dinamicamente le risposte in una conversazione. Quando Amazon Lex restituisce una risposta all'applicazione client, sceglie casualmente un messaggio per ogni gruppo. Puoi creare un massimo di cinque gruppi di messaggi per ogni risposta. Ogni gruppo può contenere un massimo di cinque messaggi. Per esempi su come creare gruppi di messaggi nella console, consulta [Risposte](#msg-prompts-response).

Per creare un gruppo di messaggi, puoi utilizzare la console o le operazioni [PutBot](API_PutBot.md), [PutIntent](API_PutIntent.md) o [PutSlotType](API_PutSlotType.md) per assegnare il numero di gruppo a un messaggio. Se non crei un gruppo di messaggi o se crei solo un gruppo di messaggi, Amazon Lex invia un singolo messaggio sul `Message` campo. Le applicazioni dei client ricevono più messaggi in una risposta solo quando hai creato più di un gruppo di messaggi nella console oppure quando crei più di un gruppo di messaggi durante la creazione o l'aggiornamento di un intento con l'operazione [PutIntent](API_PutIntent.md). 

Quando Amazon Lex invia un messaggio da un gruppo, il `Message` campo della risposta contiene un oggetto JSON in escape che contiene i messaggi. L'esempio seguente mostra i contenuti del campo `Message` quando include più messaggi.

**Nota**  
L'esempio è stato formattato per la leggibilità. In una risposta non sono contenuti ritorni a capo (CR).

```
{\"messages\":[
   {\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text\"},
   {\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text\"},
   {\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload\"}
]}
```

È possibile impostare il formato dei messaggi. Il formato può essere uno dei seguenti:
+ PlainText—Il messaggio è in testo UTF-8 semplice.
+ SSML: il messaggio è SSML (Speech Synthesis Markup Language).
+ CustomPayload—Il messaggio è in un formato personalizzato specificato dall'utente.

Per controllare il formato dei messaggi che le operazioni `PostContent` e `PostText` restituiscono nel campo `Message`, imposta l'attributo della richiesta `x-amz-lex:accept-content-types`. Ad esempio, se si imposta l'intestazione a quanto segue, si ricevono solo messaggi di solo testo e SSML nella risposta:

```
x-amz-lex:accept-content-types: PlainText,SSML
```

Se si richiede un formato di messaggio specifico e un gruppo di messaggi non contiene quel messaggio con quel formato, ottieni un'eccezione `NoUsableMessageException`. Quando usi un gruppo di messaggi per raggruppare i messaggi per tipo, non utilizzare l'intestazione `x-amz-lex:accept-content-types`.

Per ulteriori informazioni sull'intestazione `x-amz-lex:accept-content-types`, consulta [Impostazione del tipo di risposta](context-mgmt-request-attribs.md#special-response).

## Schede di risposta
<a name="msg-prompts-resp-card"></a>

**Nota**  
Le schede di risposta non funzionano con la chat di Amazon Connect. Tuttavia, consulta [Aggiungere messaggi interattivi alla chat](https://docs.aws.amazon.com/connect/latest/adminguide/interactive-messages.html) per funzionalità simili.

Una *scheda di risposta* contiene un insieme di risposte appropriate per un prompt. Usa le schede di risposta per semplificare le interazioni per i tuoi utenti e aumentare la precisione dei tuoi bot riducendo errori tipografici nelle interazioni di testo. Puoi inviare una scheda di risposta per ogni richiesta che Amazon Lex invia alla tua applicazione client. Puoi utilizzare le schede di risposta con Facebook Messenger, Slack, Twilio e le tue applicazioni client.

Ad esempio, in un'applicazione per taxi, è possibile configurare un'opzione nella scheda di risposta per "Casa" e impostare il valore sull'indirizzo di casa dell'utente. Quando l'utente seleziona questa opzione, Amazon Lex riceve l'intero indirizzo come testo di input. Guarda l'immagine seguente:

![\[Un esempio di scheda di risposta.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/resp-console-5.png)


Puoi definire una scheda di risposta per i prompt seguenti:
+ Istruzione di conclusione
+ Prompt di conferma
+ Prompt di follow-up
+ Istruzione di rifiuto
+ Enunciazioni tipo slot

Puoi definire solo una scheda di risposta per ogni prompt. 

Puoi configurare le schede di risposta quando crei un intento. Puoi definire una scheda di risposta statica in fase di compilazione utilizzando la console o l'operazione [PutIntent](API_PutIntent.md). Oppure puoi definire una scheda di risposta dinamica in fase di esecuzione in una funzione Lambda. Se definisci entrambe le schede di risposta statica e dinamica, la scheda di risposta dinamica ha la precedenza. 

Amazon Lex invia schede di risposta nel formato comprensibile al cliente. Questo trasforma le schede di risposta per Facebook Messenger, Slack e Twilio. Per gli altri client, Amazon Lex invia una struttura JSON nella [PostText](API_runtime_PostText.md) risposta. Ad esempio, se il client è Facebook Messenger, Amazon Lex trasforma la scheda di risposta in un modello generico. Per ulteriori informazioni sui modelli generici di Facebook Messenger, consulta [Modello generico](https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template) sul sito Web di Facebook. Per un esempio della struttura JSON, consulta [Generazione dinamica di schede di risposta](#msg-prompts-resp-card-dynamic).

Puoi utilizzare le schede di risposta solo con l'operazione [PostText](API_runtime_PostText.md). Non puoi utilizzare le schede di risposta con l'operazione [PostContent](API_runtime_PostContent.md). 

### Definizione di Schede di risposta statica
<a name="msg-prompts-resp-card-static"></a>

Definisci schede di risposta statiche con l'[PutBot](API_PutBot.md)operazione o la console Amazon Lex quando crei un intento. Una risposta statica viene definita contemporaneamente all'intento. Utilizza una scheda di risposta statica quando le risposte sono fisse. Supponiamo che stai creando un bot con un intento che ha uno slot per il gusto. Quando definisci lo slot del gusto, devi specificare i prompt, come illustrato nella schermata della console seguente:

![\[Editor dell'intento nella console.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/resp-console-10a.png)


Quando definisci i prompt, puoi facoltativamente associare una scheda di risposta e definire i dettagli all'[PutBot](API_PutBot.md)operazione oppure, nella console Amazon Lex, come mostrato nell'esempio seguente:

![\[La console mostra l'editor della scheda di risposta.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/resp-console-20a.png)


A questo punto, supponiamo che il tuo bot sia stato integrato con Facebook Messenger. L'utente può fare clic sui pulsanti per scegliere un gusto, come mostrato nell'illustrazione seguente:

![\[Scheda di risposta su Facebook Messenger.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/resp-fb-exampleA.png)


Per personalizzare il contenuto di una scheda di risposta, si può fare riferimento agli attributi della sessione. In fase di esecuzione, Amazon Lex sostituisce questi riferimenti con valori appropriati degli attributi di sessione. Per ulteriori informazioni, consulta [Impostazione degli attributi di sessione](context-mgmt-session-attribs.md). Per vedere un esempio, consulta [Utilizzo di una scheda di risposta](ex-resp-card.md).

### Generazione dinamica di schede di risposta
<a name="msg-prompts-resp-card-dynamic"></a>

Per generare schede di risposta in modo dinamico in fase di esecuzione, usa la funzione Lambda di inizializzazione e convalida per l'intento. Utilizza una scheda di risposta dinamica quando le risposte vengono determinate in fase di esecuzione nella funzione Lambda. In risposta all'input dell'utente, la funzione Lambda genera una scheda di risposta e la restituisce nella `dialogAction` sezione della risposta. Per ulteriori informazioni, consulta [Formato della risposta](lambda-input-response-format.md#using-lambda-response-format). 

Quanto segue è una risposta parziale di una funzione Lambda che mostra l'`responseCard`elemento. Questo genera un'esperienza utente simile a quella illustrata nella sezione precedente.

```
responseCard: {
  "version": 1,
  "contentType": "application/vnd.amazonaws.card.generic",
  "genericAttachments": [
    {
      "title": "What Flavor?",
      "subtitle": "What flavor do you want?",
      "imageUrl": "Link to image",
      "attachmentLinkUrl": "Link to attachment",
      "buttons": [
        {
          "text": "Lemon",
          "value": "lemon"
        },
        {
          "text": "Raspberry",
          "value": "raspberry"
        },
        {
          "text": "Plain",
          "value": "plain"
        }
      ]
    }
  ]
}
```

Per vedere un esempio, consulta [Pianifica un appuntamento](ex1-sch-appt.md).

# Gestione del contesto di una conversazione
<a name="context-mgmt"></a>

Il *contesto di conversazione* è l'informazione che un utente, la tua applicazione o una funzione Lambda fornisce a un bot di Amazon Lex per soddisfare un intento. Il contesto della conversazione include i dati sugli slot forniti dall'utente, gli attributi di richiesta impostati dall'applicazione client e gli attributi di sessione creati dall'applicazione client e dalle funzioni Lambda. 

**Topics**
+ [Impostazione del contesto degli intenti](context-mgmt-active-context.md)
+ [Utilizzo dei valori di slot predefiniti](context-mgmt-default.md)
+ [Impostazione degli attributi di sessione](context-mgmt-session-attribs.md)
+ [Impostazione degli attributi di richiesta](context-mgmt-request-attribs.md)
+ [Impostazione del timeout di sessione](context-mgmt-session-timeout.md)
+ [Condivisione di informazioni tra intenti diversi](context-mgmt-cross-intent.md)
+ [Impostazione di attributi complessi](context-mgmt-complex-attributes.md)

# Impostazione del contesto degli intenti
<a name="context-mgmt-active-context"></a>

Puoi impostare gli intenti di attivazione di Amazon Lex in base al *contesto*. Un *contesto* è una variabile di stato che può essere associata a un intento quando si definisce un bot.

I contesti per un intento vengono configurati quando si crea l'intento utilizzando la console o utilizzando l'operazione. [PutIntent](API_PutIntent.md) È possibile utilizzare solo i contesti nella lingua inglese (US) (en-US) e solo se si imposta il `enableModelImprovements` parametro su `true` quando è stato creato il bot con l'operazione. [PutBot](API_PutBot.md)

Esistono due tipi di relazioni per i contesti, contesti di output e contesti di input. Un *contesto di output* diventa attivo quando viene soddisfatto un intento associato. Un contesto di output viene restituito all'applicazione nella risposta dell'[PostContent](API_runtime_PostContent.md)operazione [PostText](API_runtime_PostText.md) o ed è impostato per la sessione corrente. Dopo l'attivazione, un contesto rimane attivo per il numero di turni o il limite di tempo configurato al momento della definizione del contesto. 

Un *contesto di input* specifica le condizioni in base alle quali un intento può essere riconosciuto. Un intento può essere riconosciuto durante una conversazione solo quando tutti i suoi contesti di input sono attivi. Un intento senza contesti di input è sempre idoneo al riconoscimento. 

Amazon Lex gestisce automaticamente il ciclo di vita dei contesti che vengono attivati soddisfacendo gli intenti con contesti di output. Puoi anche impostare contesti attivi in una chiamata all'operazione or. `PostContent` `PostText`

Puoi anche impostare il contesto di una conversazione utilizzando la funzione Lambda per l'intento. Il contesto di output di Amazon Lex viene inviato all'evento di input della funzione Lambda. La funzione Lambda può inviare contesti nella sua risposta. Per ulteriori informazioni, consulta [Evento di input e formato di risposta della funzione Lambda](lambda-input-response-format.md).

Ad esempio, supponete di avere l'intenzione di prenotare un'auto a noleggio configurata per restituire un contesto di output chiamato «book\$1car\$1fulfilled». Quando l'intento è soddisfatto, Amazon Lex imposta la variabile di contesto di output «book\$1car\$1fulfilled». Poiché «book\$1car\$1fulfilled» è un contesto attivo, un intento con il contesto «book\$1car\$1fulfilled» impostato come contesto di input viene ora considerato ai fini del riconoscimento, purché l'enunciato dell'utente venga riconosciuto come tentativo di suscitare tale intento. Puoi usarlo per scopi che hanno senso solo dopo aver prenotato un'auto, come l'invio di una ricevuta via e-mail o la modifica di una prenotazione.

## Contesto di output
<a name="context-output"></a>

Amazon Lex rende attivi i contesti di output di un intento quando l'intento viene soddisfatto. Puoi utilizzare il contesto di output per controllare gli intenti idonei a dare seguito all'intento corrente.

Ogni contesto ha un elenco di parametri che vengono mantenuti nella sessione. I parametri sono i valori degli slot per l'intento soddisfatto. È possibile utilizzare questi parametri per precompilare i valori degli slot per altri scopi. Per ulteriori informazioni, vedere. [Utilizzo dei valori di slot predefiniti](context-mgmt-default.md)

Il contesto di output viene configurato quando si crea un intento con la console o con l'[PutIntent](API_PutIntent.md)operazione. È possibile configurare un intento con più di un contesto di output. Quando l'intento è soddisfatto, tutti i contesti di output vengono attivati e restituiti nella risposta or. [PostText](API_runtime_PostText.md) [PostContent](API_runtime_PostContent.md)

Di seguito viene illustrata l'assegnazione di un contesto di output a un intento utilizzando la console.

![\[Tag di output etichettato order_complete con un tempo di durata di 5 turni o 90 secondi.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/context-output.png)


Quando definisci un contesto di output, definisci anche la sua *durata di vita*, la durata o il numero di turni in cui il contesto è incluso nelle risposte di Amazon Lex. Un *turno* è una richiesta dalla tua applicazione ad Amazon Lex. Una volta scaduto il numero di turni o il tempo, il contesto non è più attivo. 

L'applicazione può utilizzare il contesto di output secondo necessità. Ad esempio, l'applicazione può utilizzare il contesto di output per:
+ Modificare il comportamento dell'applicazione in base al contesto. Ad esempio, un'applicazione di viaggi potrebbe avere un'azione diversa per il contesto «book\$1car\$1fulfilled» rispetto a «rental\$1hotel\$1fulfilled».
+ Restituisce il contesto di output ad Amazon Lex come contesto di input per l'enunciato successivo. Se Amazon Lex riconosce l'enunciato come un tentativo di suscitare un intento, utilizza il contesto per limitare gli intenti che possono essere restituiti a quelli con il contesto specificato.

## Contesto di input
<a name="context-input"></a>

Si imposta un contesto di input per limitare i punti della conversazione in cui viene riconosciuto l'intento. Gli intenti senza un contesto di input possono sempre essere riconosciuti.

È possibile impostare i contesti di input a cui risponde un intento utilizzando la console o l'operazione. `PutIntent` Un intento può avere più di un contesto di input. Di seguito viene illustrata l'assegnazione di un contesto di input a un intento utilizzando la console.

![\[Tag di input etichettato order_complete.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/context-input.png)


Per un intento con più di un contesto di input, tutti i contesti devono essere attivi per attivare l'intento. È possibile impostare un contesto di input quando si chiama l'operazione [PostText](API_runtime_PostText.md)[PostContent](API_runtime_PostContent.md), o. [PutSession](API_runtime_PutSession.md) 

È possibile configurare gli slot nell'intento di assumere valori predefiniti dal contesto attivo corrente. I valori predefiniti vengono utilizzati quando Amazon Lex riconosce un nuovo intento ma non riceve un valore di slot. Specifichi il nome del contesto e il nome dello slot nel modulo `#context-name.parameter-name` quando definisci lo slot. Per ulteriori informazioni, consulta [Utilizzo dei valori di slot predefiniti](context-mgmt-default.md).

# Utilizzo dei valori di slot predefiniti
<a name="context-mgmt-default"></a>

Quando si utilizza un valore predefinito, si specifica una fonte per il valore di uno slot da riempire per nuovi intenti quando l'input dell'utente non fornisce alcuno slot. Questa fonte può essere un precedente attributo di dialogo, di richiesta o di sessione oppure un valore fisso impostato in fase di compilazione. 

È possibile utilizzare quanto segue come fonte per i valori predefiniti.
+ Finestra di dialogo precedente (contesti) — \$1context -name.parameter-name
+ Attributi della sessione — [nome-attributo]
+ Attributi della richiesta: <attribute-name>
+ Valore fisso: qualsiasi valore che non corrisponde al precedente

Quando si utilizza l'[PutIntent](API_PutIntent.md)operazione per aggiungere slot a un intento, è possibile aggiungere un elenco di valori predefiniti. I valori predefiniti vengono utilizzati nell'ordine in cui sono elencati. Ad esempio, supponiamo di avere un intento con uno slot con la seguente definizione:

```
"slots": [
    {
        "name": "reservation-start-date",
        "defaultValueSpec": {
            "defaultValueList": [
                {
                    "defaultValue": "#book-car-fulfilled.startDate"
                },
                {  
                    "defaultValue": "[reservationStartDate]"
                }
            ]
        },
        Other slot configuration settings
    }
]
```

Quando l'intento viene riconosciuto, lo slot denominato "reservation-start-date" ha il suo valore impostato su uno dei seguenti.

1. Se il contesto book-car-fulfilled "" è attivo, il valore del parametro «startDate» viene utilizzato come valore predefinito.

1. Se il contesto book-car-fulfilled "" non è attivo o se il parametro «startDate» non è impostato, il valore dell'attributo di sessione reservationStartDate "" viene utilizzato come valore predefinito.

1. Se non viene utilizzato nessuno dei primi due valori predefiniti, lo slot non ha un valore predefinito e Amazon Lex genererà un valore come al solito.

Se viene utilizzato un valore predefinito per lo slot, lo slot non viene rilevato anche se è necessario.

# Impostazione degli attributi di sessione
<a name="context-mgmt-session-attribs"></a>

*Gli attributi di sessione* contengono informazioni specifiche dell'applicazione che vengono passate tra un bot e un'applicazione client durante una sessione. Amazon Lex passa gli attributi di sessione a tutte le funzioni Lambda configurate per un bot. Se una funzione Lambda aggiunge o aggiorna gli attributi della sessione, Amazon Lex restituisce le nuove informazioni all'applicazione client. Esempio:
+ Nell'[Esercizio 1: Creare un bot Amazon Lex utilizzando un blueprint (console)](gs-bp.md), il bot dell'esempio utilizza l'attributo di sessione `price` per gestire il prezzo dei fiori. La funzione Lambda imposta questo attributo in base al tipo di fiori che è stato ordinato. Per ulteriori informazioni, consulta [Fase 5 (facoltativo): Revisione dei dettagli del flusso di informazioni (console)](gs-bp-details-after-lambda.md). 
+ Nell'[Prenota un viaggio](ex-book-trip.md), il bot dell'esempio utilizza l'attributo di sessione `currentReservation` per mantenere una copia dei dati del tipo di slot durante la conversazione per prenotare un hotel o noleggiare un'automobile. Per ulteriori informazioni, consulta [Dettagli del flusso di informazioni](book-trip-detail-flow.md).

Usa gli attributi di sessione nelle tue funzioni Lambda per inizializzare un bot e personalizzare prompt e schede di risposta. Esempio:
+ Inizializzazione: in un bot per ordinare pizze, l'applicazione client trasmette la posizione dell'utente come attributo di sessione nella prima chiamata all'operazione or. [PostContent](API_runtime_PostContent.md) [PostText](API_runtime_PostText.md) Ad esempio, `"Location": "111 Maple Street"`. La funzione Lambda utilizza queste informazioni per trovare la pizzeria più vicina per effettuare l'ordine.
+ Personalizza i prompt: configura i prompt e le schede di risposta per fare riferimento agli attributi della sessione. Ad esempio, «Ehi [FirstName], quali condimenti vorresti?» Se passi il nome dell'utente come attributo di sessione (`{"FirstName": "Jo"}`), Amazon Lex sostituisce il nome al segnaposto. e invia quindi un prompt personalizzato all'utente: "Salve Giovanni, quali ingredienti aggiuntivi desideri?"

Gli attributi della sessione persistono per tutta la durata della sessione. Amazon Lex li archivia in un archivio dati crittografato fino al termine della sessione. Il client può creare gli attributi di sessione in una richiesta chiamando l'operazione [PostContent](API_runtime_PostContent.md) o [PostText](API_runtime_PostText.md) con il campo `sessionAttributes` impostato su un valore. Una funzione Lambda può creare un attributo di sessione in una risposta. Dopo che il client o una funzione Lambda hanno creato un attributo di sessione, il valore dell'attributo memorizzato viene utilizzato ogni volta che l'applicazione client non include il `sessionAttribute` campo in una richiesta ad Amazon Lex.

Presupponi, ad esempio, di avere due attributi di sessione, `{"x": "1", "y": "2"}`. Se il client chiama l'`PostText`operazione `PostContent` or senza specificare il `sessionAttributes` campo, Amazon Lex chiama la funzione Lambda con gli attributi `{"x": 1, "y": 2}` di sessione memorizzati (). Se la funzione Lambda non restituisce gli attributi di sessione, Amazon Lex restituisce gli attributi di sessione memorizzati all'applicazione client.

Se l'applicazione client o una funzione Lambda trasmettono gli attributi di sessione, Amazon Lex aggiorna gli attributi di sessione memorizzati. Il trasferimento di un valore esistente, come ` {"x": 2}`, determina l'aggiornamento del valore archiviato. Se invii un nuovo set di attributi di sessione, ad esempio `{"z": 3}`, i valori esistenti vengono rimossi e viene mantenuto solo il nuovo valore. Quando viene trasferita una mappa vuota, `{}`, i valori archiviati vengono cancellati.

Per inviare gli attributi di sessione ad Amazon Lex, crei una string-to-string mappa degli attributi. Di seguito viene spiegato come mappare gli attributi di sessione: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Per l'operazione `PostText`, inserisci la mappa nel corpo della richiesta utilizzando il campo `sessionAttributes`, come segue:

```
"sessionAttributes": {
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Per l'operazione `PostContent`, applica la codifica base64 alla mappa e inviala come l'intestazione `x-amz-lex-session-attributes`.

Per inviare dati binari o strutturati in un attributo di sessione, devi dapprima trasformarli in una stringa semplice. Per ulteriori informazioni, consulta [Impostazione di attributi complessi](context-mgmt-complex-attributes.md).

# Impostazione degli attributi di richiesta
<a name="context-mgmt-request-attribs"></a>

Gli *attributi di richiesta* contengono informazioni specifiche sulla richiesta e si applicano solo alla richiesta corrente. Un'applicazione client invia queste informazioni ad Amazon Lex. Utilizza gli attributi di richiesta per inviare informazioni che non devono essere conservate per l'intera sessione. Puoi creare i tuoi attributi di richiesta personali oppure utilizzare quelli predefiniti. Per inviare gli attributi di richiesta, utilizza l'intestazione `x-amz-lex-request-attributes` in un [PostContent](API_runtime_PostContent.md) o il campo `requestAttributes` in una richiesta [PostText](API_runtime_PostText.md). Poiché, a differenza degli attributi di sessione, gli attributi di richiesta non vengono mantenuti tra richieste diverse, non vengono restituiti nelle risposte `PostContent` o `PostText`. 

**Nota**  
Per inviare informazioni che vengano mantenute tra richieste diverse, utilizza gli attributi di sessione.

Il namespace `x-amz-lex:` è riservato agli attributi di richiesta predefiniti. Non creare attributi di richiesta con il prefisso `x-amz-lex:`.

## Impostazione di attributi di richiesta predefiniti
<a name="context-mgmt-special"></a>

Amazon Lex fornisce attributi di richiesta predefiniti per gestire il modo in cui elabora le informazioni inviate al bot. Gli attributi non vengono salvati per l'intera sessione, quindi dovrai inviare gli attributi predefiniti in ogni richiesta. Tutti gli attributi predefiniti sono nel namespace `x-amz-lex:`.

Oltre ai seguenti attributi predefiniti, Amazon Lex fornisce attributi predefiniti per le piattaforme di messaggistica. Per un elenco di questi attributi, consulta [Implementazione di un bot Amazon Lex su una piattaforma di messaggistica](example1.md).

### Impostazione del tipo di risposta
<a name="special-response"></a>

Se utilizzi due applicazioni client che hanno funzionalità diverse, potresti dover limitare il formato dei messaggi in una risposta. Ad esempio, potresti voler limitare i messaggi inviati a un client Web al testo normale, ma permettere a un client mobile di utilizzare sia testo normale sia il formato SSML (Speech Synthesis Markup Language). Per impostare il formato dei messaggi restituiti dalle operazioni [PostContent](API_runtime_PostContent.md) e [PostText](API_runtime_PostText.md), utilizza l'attributo di richiesta `x-amz-lex:accept-content-types"`. 

Puoi impostare l'attributo su una qualsiasi combinazione dei seguenti tipi di messaggi: 
+ `PlainText`—Il messaggio contiene testo UTF-8 semplice.
+ `SSML`—Il messaggio contiene testo formattato per l'output vocale.
+ `CustomPayload`—Il messaggio contiene un formato personalizzato che hai creato per il tuo cliente. Puoi definire il payload in base alle esigenze della tua applicazione.

Amazon Lex restituisce solo messaggi con il tipo specificato `Message` nel campo della risposta. Puoi impostare più di un valore separandoli con una virgola. Se utilizzi dei gruppi di messaggi, ogni gruppo di messaggi deve contenere almeno un messaggio del tipo specificato. In caso contrario, viene visualizzato un errore `NoUsableMessageException`. Per ulteriori informazioni, consulta [Gruppi di messaggi](howitworks-manage-prompts.md#message-groups).

**Nota**  
L'attributo di richiesta `x-amz-lex:accept-content-types` non ha alcun effetto sul contenuto del corpo HTML. Il contenuto di una risposta dell'operazione `PostText` è sempre testo normale UTF-8. Il corpo di una risposta dell'operazione `PostContent` contiene dati nel formato impostato nell'intestazione `Accept` nella richiesta.

### Impostazione del fuso orario preferito
<a name="special-time-zone"></a>

Per impostare il fuso orario dell'utente da utilizzare per risolvere le date, utilizza l'attributo di richiesta `x-amz-lex:time-zone`. Se non specifichi un fuso orario nell'attributo `x-amz-lex:time-zone`, il valore predefinito dipende della regione che utilizzi per il tuo bot.


| Region | Fuso orario predefinito | 
| --- | --- | 
| Stati Uniti orientali (Virginia settentrionale) |  America/New\$1York  | 
| Stati Uniti occidentali (Oregon) |  America/Los\$1Angeles  | 
| Asia Pacifico (Singapore) |  Asia/Singapore  | 
| Asia Pacifico (Sydney) |  Australia/Sydney  | 
| Asia Pacifico (Tokyo) |  Asia/Tokyo  | 
| Europa (Francoforte) |  Europe/Berlin  | 
| Europa (Irlanda) |  Europe/Dublin  | 
| Europa (Londra) |  Europe/London  | 

Ad esempio, se l'utente risponde `tomorrow` in risposta alla richiesta «In che giorno desideri che il pacco venga consegnato?» la *data* effettiva di consegna del pacco dipende dal fuso orario dell'utente. Ad esempio, quando sono le 02:00 del 16 settembre a New York, sono le 23:00 del 15 settembre a Los Angeles. Se il servizio è attivo nella regione degli Stati Uniti orientali (Virginia settentrionale) e una persona a Los Angeles ordina un pacco da consegnare «domani» utilizzando il fuso orario predefinito, il pacco verrà consegnato il 17 e non il 16. Se invece imposti l'attributo di richiesta `x-amz-lex:time-zone` su `America/Los_Angeles`, il pacco verrà consegnato il giorno 16.

Puoi impostare l'attributo su uno dei nomi dei fusi orari della IANA (Internet Assigned Number Authority). Per l'elenco dei nomi dei fusi orari, consulta l'[elenco dei fusi orari del database tz](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) su Wikipedia.

## Impostazione di attributi di richiesta definiti dall'utente
<a name="context-mgmt-user"></a>

Un *attributo di richiesta definito dall'utente* è un'informazione che invii al tuo bot con ciascuna richiesta. Invii l'informazione nell'intestazione `amz-lex-request-attributes` di una richiesta `PostContent` o nel campo `requestAttributes` di una richiesta `PostText`. 

Per inviare gli attributi della richiesta ad Amazon Lex, crei una string-to-string mappa degli attributi. Di seguito viene spiegato come mappare gli attributi di richiesta: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Per l'operazione `PostText`, inserisci la mappa nel corpo della richiesta utilizzando il campo `requestAttributes`, come segue:

```
"requestAttributes": {
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Per l'operazione `PostContent`, applica la codifica base64 alla mappa e inviala come l'intestazione `x-amz-lex-request-attributes`.

Per inviare dati binari o strutturati in un attributo di richiesta, devi dapprima trasformarli in una stringa semplice. Per ulteriori informazioni, consulta [Impostazione di attributi complessi](context-mgmt-complex-attributes.md).

# Impostazione del timeout di sessione
<a name="context-mgmt-session-timeout"></a>

Amazon Lex conserva le informazioni di contesto (dati di slot e attributi di sessione) fino al termine di una sessione di conversazione. Per definire la durata di una sessione per un bot, imposta il timeout di sessione. Per impostazione predefinita, la durata di una sessione è di 5 minuti, ma puoi specificarne una diversa compresa tra 0 e 1.440 minuti (24 ore). 

Supponiamo, ad esempio, che tu stia creando un bot `ShoeOrdering` che supporta gli intenti `OrderShoes` e `GetOrderStatus`. Quando Amazon Lex rileva che l'intenzione dell'utente è ordinare scarpe, richiede i dati relativi allo slot. come, ad esempio, numero di scarpa, colore, marchio e così via. Se l'utente fornisce alcuni dati dello slot ma non completa l'acquisto della scarpa, Amazon Lex ricorda tutti i dati dello slot e gli attributi della sessione per l'intera sessione. Se l'utente riprende la sessione prima che scada, può fornire i dati dello slot mancanti e completare l'acquisto.

Nella console Amazon Lex, imposti il timeout della sessione quando crei un bot. Con l'interfaccia a riga di comando AWS (AWS CLI) o l'API, puoi impostare il timeout quando crei o aggiorni un bot con l'[PutBot](API_PutBot.md)operazione impostando il campo [TTLInIdleSession](https://docs.aws.amazon.com/lex/latest/dg/API_PutBot.html#lex-PutBot-request-idleSessionTTLInSeconds) Seconds.

# Condivisione di informazioni tra intenti diversi
<a name="context-mgmt-cross-intent"></a>

Amazon Lex supporta la condivisione di informazioni tra intenti. mediante l'utilizzo degli attributi di sessione. 

Ad esempio, un utente del bot `ShoeOrdering` inizia ordinando delle scarpe. Il bot avvia una conversazione con l'utente, acquisendo i dati dello slot come numero di scarpa, colore e marchio. Quando l'utente effettua un ordine, la funzione Lambda che esegue l'ordine imposta l'attributo `orderNumber` session, che contiene il numero dell'ordine. Per ricevere lo stato dell'ordine, l'utente utilizza l'intento `GetOrderStatus`. Il bot può chiedere all'utente i dati dello slot, come il numero e la data dell'ordine. Quando il bot ottiene le informazioni richieste, restituisce lo stato dell'ordine.

Se pensi che i tuoi utenti possano cambiare intento nel corso della stessa sessione, puoi progettare il tuo bot affinché restituisca lo stato relativo all'ordine più recente. Invece di chiedere le informazioni dell'ordine all'utente, utilizza l'attributo di sessione `orderNumber` per condividere le informazioni tra intenti diversi e realizzare l'intento `GetOrderStatus`. Il bot esegue questa operazione restituendo lo stato dell'ordine più recente effettuato dall'utente.

Per un esempio di condivisione di informazioni tra intenti, consulta [Prenota un viaggio](ex-book-trip.md).

# Impostazione di attributi complessi
<a name="context-mgmt-complex-attributes"></a>

Gli attributi di sessione e richiesta sono string-to-string mappe di attributi e valori. In molti casi puoi utilizzare la mappa stringa per trasferire i valori degli attributi tra l'applicazione client e un bot, mentre in alcuni casi potresti dover trasferire i dati binari o una struttura complessa che non può essere convertita facilmente in una mappa stringa. Ad esempio, il seguente oggetto JSON rappresenta una matrice delle città più popolose degli Stati Uniti:

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

Questa serie di dati non si traduce bene in una string-to-string mappa. In questo caso, puoi trasformare un oggetto in una stringa semplice per poterla inviare al tuo bot con le operazioni [PostContent](API_runtime_PostContent.md) e [PostText](API_runtime_PostText.md). 

Ad esempio, se si utilizza JavaScript, è possibile utilizzare l'`JSON.stringify`operazione per convertire un oggetto in JSON e l'`JSON.parse`operazione per convertire il testo JSON in un JavaScript oggetto:

```
// To convert an object to a string.
var jsonString = JSON.stringify(object, null, 2);
// To convert a string to an object.
var obj = JSON.parse(JSON string);
```

Per inviare gli attributi di sessione con l'`PostContent`operazione, è necessario codificare gli attributi in base64 prima di aggiungerli all'intestazione della richiesta, come illustrato nel codice seguente: JavaScript

```
var encodedAttributes = new Buffer(attributeString).toString("base64");
```

Puoi inviare i dati binari alle operazioni `PostContent` e `PostText` convertendo dapprima i dati in una stringa con codifica base64, quindi inviando la stringa come valore negli attributi di sessione:

```
"sessionAttributes" : {
   "binaryData": "base64 encoded data"
}
```

# Utilizzo dei punteggi di confidenza
<a name="confidence-scores"></a>

Quando un utente pronuncia un'enunciazione, Amazon Lex utilizza la comprensione del linguaggio naturale (NLU) per comprendere la richiesta dell'utente e restituire l'intento corretto. Per impostazione predefinita, Amazon Lex restituisce l'intento più probabile definito dal bot.

In alcuni casi può essere difficile per Amazon Lex determinare l'intento più probabile. Ad esempio, l'utente potrebbe pronunciare un'espressione ambigua o potrebbero esserci due intenti simili. Per determinare l'intento corretto, puoi combinare la tua conoscenza del dominio con i *punteggi di affidabilità* di un elenco di intenti alternativi. Un punteggio di confidenza è una valutazione fornita da Amazon Lex che dimostra quanto sia sicuro che un intento sia l'intento corretto.

Per determinare la differenza tra due intenti alternativi, puoi confrontare i rispettivi punteggi di fiducia. Ad esempio, se un intento ha un punteggio di confidenza di 0,95 e un altro ha un punteggio di 0,65, il primo intento è probabilmente corretto. Tuttavia, se un intento ha un punteggio di 0,75 e un altro ha un punteggio di 0,72, esiste un'ambiguità tra i due intenti che potresti essere in grado di distinguere utilizzando la conoscenza del dominio nella tua applicazione.

Potete anche utilizzare i punteggi di confidenza per creare applicazioni di test che determinano se le modifiche all'enunciazione di un intento fanno la differenza nel comportamento del bot. Ad esempio, potete ottenere i punteggi di confidenza relativi alle intenzioni di un bot utilizzando una serie di enunciati, quindi aggiornare gli intenti con nuovi enunciati. Puoi quindi controllare i punteggi di confidenza per vedere se c'è stato un miglioramento.

I punteggi di fiducia restituiti da Amazon Lex sono valori comparativi. Non dovresti fare affidamento su di essi come punteggio assoluto. I valori possono cambiare in base ai miglioramenti apportati ad Amazon Lex.

Quando utilizzi i punteggi di confidenza, Amazon Lex restituisce l'intento più probabile e fino a 4 intenti alternativi con i punteggi associati in ogni risposta. Se tutti i punteggi di confidenza sono inferiori a una soglia, Amazon Lex include il `AMAZON.FallbackIntent``AMAZON.KendraSearchIntent`, o entrambi, se li hai configurati. Puoi utilizzare la soglia predefinita o impostare una soglia personalizzata.

Il codice JSON seguente mostra il `alternativeIntents` campo nella risposta dell'[PostText](API_runtime_PostText.md)operazione.

```
   "alternativeIntents": [ 
      { 
         "intentName": "string",
         "nluIntentConfidence": { 
            "score": number
         },
         "slots": { 
            "string" : "string" 
         }
      }
   ],
```

Imposta la soglia quando crei o aggiorni un bot. Puoi utilizzare l'API o la console Amazon Lex. Per le regioni elencate di seguito è necessario attivare il consenso per consentire miglioramenti della precisione e dei punteggi di confidenza. Nella console, scegli i punteggi di confidenza nella sezione **Opzioni avanzate**. Utilizzando l'API, imposta il `enableModelImprovements` parametro quando chiami l'[PutBot](API_PutBot.md)operazione. :
+ Stati Uniti orientali (Virginia settentrionale) (us-east-1)
+ Stati Uniti occidentali (Oregon) (us-west-2)
+ Asia Pacifico (Sydney) (ap-southeast-2)
+ Europa (Irlanda) (eu-west-1)

In tutte le altre regioni, i miglioramenti della precisione e il supporto del punteggio di confidenza sono disponibili per impostazione predefinita.

Per modificare la soglia di confidenza, impostala nella console o utilizzando l'[PutBot](API_PutBot.md)operazione. La soglia deve essere un numero compreso tra 1,00 e 0,00.

Per utilizzare la console, imposta la soglia di confidenza quando crei o aggiorni il bot.

**Per impostare la soglia di confidenza durante la creazione di un bot (Console)**
+ In **Crea il tuo bot**, inserisci un valore nel campo **Soglia del punteggio di confidenza**.

**Per aggiornare la soglia di confidenza (Console)**

1. Dall'elenco dei tuoi bot, scegli il bot da aggiornare.

1. Seleziona la scheda **Impostazioni**.

1. Nella barra di navigazione a sinistra, scegli **Generale**.

1. Aggiorna il valore nel campo **Soglia del punteggio di confidenza**.

**Per impostare o aggiornare la soglia di confidenza (SDK)**
+ Imposta il `nluIntentConfidenceThreshold` parametro dell'[PutBot](API_PutBot.md)operazione. Il seguente codice JSON mostra il parametro impostato.

  ```
     "nluIntentConfidenceThreshold": 0.75,
  ```

## Gestione delle sessioni
<a name="confidence-scores-session-management"></a>

Per modificare l'intento utilizzato da Amazon Lex in una conversazione con l'utente, puoi utilizzare la risposta dalla funzione Lambda del tuo dialog code hook oppure puoi utilizzare la APIs gestione delle sessioni nella tua applicazione personalizzata. 

### Utilizzo di una funzione Lambda
<a name="session-management-lambda"></a>

Quando usi una funzione Lambda, Amazon Lex la chiama con una struttura JSON che contiene l'input della funzione. La struttura JSON contiene un campo denominato `currentIntent` che contiene l'intento che Amazon Lex ha identificato come l'intento più probabile per l'enunciato dell'utente. La struttura JSON include anche un `alternativeIntents` campo che contiene fino a quattro intenti aggiuntivi che possono soddisfare l'intento dell'utente. Ogni intento include un campo denominato `nluIntentConfidenceScore` che contiene il punteggio di confidenza assegnato da Amazon Lex all'intento.

Per utilizzare un intento alternativo, lo specifichi nell'azione di `ElicitSlot` dialogo `ConfirmIntent` o nella funzione Lambda.

Per ulteriori informazioni, consulta [Utilizzo delle funzioni Lambda](using-lambda.md).

### Utilizzo dell'API di gestione delle sessioni
<a name="session-management-API"></a>

Per utilizzare un intento diverso da quello corrente, usa l'[PutSession](API_runtime_PutSession.md)operazione. Ad esempio, se decidi che la prima alternativa è preferibile all'intento scelto da Amazon Lex, puoi utilizzare l'`PutSession`operazione per modificare gli intenti in modo che l'intento successivo con cui l'utente interagisce sia quello selezionato.

Per ulteriori informazioni, consulta [Gestione delle sessioni con l'API Amazon Lex](how-session-api.md).

# Log delle conversazioni
<a name="conversation-logs"></a>

È possibile abilitare i *log delle conversazioni* per memorizzare le interazioni bot. Puoi utilizzare questi log per esaminare le prestazioni del bot e risolvere i problemi relativi alle conversazioni. È possibile registrare il testo per l'operazione [PostText](API_runtime_PostText.md). È possibile registrare testo e audio per l'operazione [PostContent](API_runtime_PostContent.md). Abilitando i log delle conversazioni si ottiene una visualizzazione dettagliata delle conversazioni tra gli utenti e il bot.

Ad esempio, una sessione con il bot ha un ID di sessione. È possibile utilizzare questo ID per ottenere la trascrizione della conversazione, incluse le enunciazioni dell'utente e le risposte corrispondenti del bot. Puoi anche ottenere metadati quali il nome dell'intento e i valori di slot per un'enunciazione.

**Nota**  
Non è possibile utilizzare i log delle conversazioni con un bot soggetto al Children's Online Privacy Protection Act (COPPA).

I log delle conversazioni sono configurati per un alias. Ogni alias può avere impostazioni diverse per i log audio e di testo. È possibile abilitare log di testo, log audio o entrambi per ciascun alias. I registri di testo archiviano l'input di testo, le trascrizioni dell'input audio e i metadati associati nei registri. CloudWatch I log audio archiviano l'ingresso audio in Amazon S3. Puoi abilitare la crittografia dei log di testo e audio utilizzando AWS KMS Customer Managed. CMKs

Per configurare la registrazione, utilizzare la console o l'operazione [PutBotAlias](API_PutBotAlias.md). Non puoi registrare le conversazioni per l'`$LATEST`alias del tuo bot o per il bot di test disponibile nella console Amazon Lex. Dopo aver abilitato i registri delle conversazioni per un alias [PostContent](API_runtime_PostContent.md) o un'[PostText](API_runtime_PostText.md)operazione per quell'alias, registra le espressioni di testo o audio nel gruppo di log Logs configurato CloudWatch o nel bucket S3.

**Topics**
+ [Politiche IAM per i registri delle conversazioni](conversation-logs-policies.md)
+ [Configurazione dei log delle conversazioni](conversation-logs-configure.md)
+ [Crittografare i log delle conversazioni](conversation-logs-encrypting.md)
+ [Visualizzazione dei log di testo in Amazon CloudWatch Logs](conversation-logs-cw.md)
+ [Accesso ai log audio in Amazon S3](conversation-logs-s3.md)
+ [Monitoraggio dello stato del registro delle conversazioni con metriche CloudWatch](conversation-logs-monitoring.md)

# Politiche IAM per i registri delle conversazioni
<a name="conversation-logs-policies"></a>

A seconda del tipo di registrazione selezionato, Amazon Lex richiede l'autorizzazione per utilizzare i bucket Amazon CloudWatch Logs e Amazon Simple Storage Service (S3) per archiviare i log. È necessario creare AWS Identity and Access Management ruoli e autorizzazioni per consentire ad Amazon Lex di accedere a queste risorse. 

## Creazione di un ruolo IAM e delle policy per i log delle conversazioni
<a name="conversation-logs-role-and-policy"></a>

Per abilitare i log delle conversazioni, devi concedere l'autorizzazione di scrittura per CloudWatch Logs e Amazon S3. Se abiliti la crittografia degli oggetti per i tuoi oggetti S3, devi concedere l'autorizzazione di accesso alle AWS KMS chiavi utilizzate per crittografare gli oggetti. 

Puoi utilizzare IAM Console di gestione AWS, l'API IAM o AWS Command Line Interface per creare il ruolo e le politiche. Queste istruzioni utilizzano il AWS CLI per creare il ruolo e le politiche. Per informazioni sulla creazione di policy con la console, consulta [Creating policies on the JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) nella *AWS Identity and Access Management User Guide*.

**Nota**  
Il codice seguente è formattato per Linux e MacOS. Per Windows, sostituire il carattere di continuazione della riga di Linux (\$1) con un accento circonflesso (^).



**Per creare un ruolo IAM per i registri delle conversazioni**

1. Creare un documento nella directory corrente chiamato **LexConversationLogsAssumeRolePolicyDocument.json**, aggiungervi il seguente codice e salvarlo. Questo documento di policy aggiunge Amazon Lex come entità attendibile al ruolo. Ciò consente a Lex di assumere il ruolo di distribuire i log alle risorse configurate per i log delle conversazioni.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lex.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. In AWS CLI, esegui il comando seguente per creare il ruolo IAM per i log delle conversazioni.

   ```
   aws iam create-role \
       --role-name role-name \
       --assume-role-policy-document file://LexConversationLogsAssumeRolePolicyDocument.json
   ```

Successivamente, crea e allega una policy al ruolo che consenta ad Amazon Lex di scrivere CloudWatch nei log. 

**Per creare una policy IAM per la registrazione del testo della conversazione in Logs CloudWatch**

1. Crea un documento nella directory corrente denominata**LexConversationLogsCloudWatchLogsPolicy.json**, aggiungi la seguente politica IAM e salvalo.

1. Nel AWS CLI, crea la policy IAM che concede l'autorizzazione di scrittura al gruppo di log CloudWatch Logs.

   ```
   aws iam create-policy \
       --policy-name cloudwatch-policy-name \
       --policy-document file://LexConversationLogsCloudWatchLogsPolicy.json
   ```

1. Allega la policy al ruolo IAM che hai creato per i log delle conversazioni.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/cloudwatch-policy-name \
       --role-name role-name
   ```

Se stai registrando l'audio in un bucket S3, crea una policy che consenta ad Amazon Lex di scrivere nel bucket.

**Per creare una policy IAM per la registrazione audio in un bucket S3**

1. Creare un documento nella directory corrente chiamato **LexConversationLogsS3Policy.json**, aggiungervi la seguente policy e salvarlo.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::bucket-name/*"
         }
     ]
   }
   ```

------

1. In AWS CLI, crea la policy IAM che conceda l'autorizzazione di scrittura al tuo bucket S3.

   ```
   aws iam create-policy \
       --policy-name s3-policy-name \
       --policy-document file://LexConversationLogsS3Policy.json
   ```

1. Collegare la policy al ruolo creato per i log delle conversazioni.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/s3-policy-name \
       --role-name role-name
   ```

## Concessione dell'autorizzazione a passare un ruolo IAM
<a name="conversation-logs-pass-role"></a>

Quando utilizzi la console AWS Command Line Interface, il o un AWS SDK per specificare un ruolo IAM da utilizzare per i log delle conversazioni, l'utente che specifica il ruolo IAM dei log di conversazione deve avere l'autorizzazione per passare il ruolo ad Amazon Lex. Per consentire all'utente di passare il ruolo ad Amazon Lex, devi concedere l'`PassRole`autorizzazione all'utente, al ruolo o al gruppo. 

La policy seguente definisce l'autorizzazione da concedere all'utente, al ruolo o al gruppo. È possibile utilizzare le chiavi di condizione `iam:AssociatedResourceArn` e `iam:PassedToService` per limitare l'ambito dell'autorizzazione. Per ulteriori informazioni, consulta [Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) e [IAM e AWS STS Condition Context Keys nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) per l'*AWS Identity and Access Management utente*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role-name",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "lex.amazonaws.com"
                },
                "StringLike": {
                    "iam:AssociatedResourceARN": "arn:aws:lex:region:123456789012:bot:bot-name:bot-alias"
                }
            }
        }
    ]
}
```

------

# Configurazione dei log delle conversazioni
<a name="conversation-logs-configure"></a>

Si possono abilitare e disabilitare i log delle conversazioni utilizzando la console o il campo `conversationLogs` dell'operazione `PutBotAlias`. È possibile attivare o disattivare i log audio, i log di testo o entrambi. La registrazione inizia nelle nuove sessioni del bot. Le modifiche apportate alle impostazioni dei log non si riflettono nelle sessioni attive.

Per archiviare i log di testo, utilizza un gruppo di log Amazon CloudWatch Logs nel tuo AWS account. È possibile utilizzare qualsiasi gruppo di log valido. Il gruppo di log deve trovarsi nella stessa regione del bot Amazon Lex. Per ulteriori informazioni sulla creazione di un gruppo di log CloudWatch Logs, consulta [Working with Log Groups and Log Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) nella *Amazon CloudWatch Logs* User Guide.

Per archiviare i log audio, usa un bucket Amazon S3 nel tuo account. AWS È possibile utilizzare qualsiasi bucket S3 valido. Il bucket deve trovarsi nella stessa regione del bot Amazon Lex. Per ulteriori informazioni sulla creazione di un bucket S3, consulta [Create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) nella *Amazon Simple Storage Service Getting* Started Guide.

È necessario fornire un ruolo IAM con policy che consentano ad Amazon Lex di scrivere nel gruppo di log o nel bucket configurato. Per ulteriori informazioni, consulta [Creazione di un ruolo IAM e delle policy per i log delle conversazioni](conversation-logs-policies.md#conversation-logs-role-and-policy).

Se crei un ruolo collegato al servizio utilizzando il AWS Command Line Interface, devi aggiungere un suffisso personalizzato al ruolo utilizzando l'`custom-suffix`opzione seguente:

```
aws iam create-service-linked-role \
    --aws-service-name lex.amazon.aws.com \
    --custom-suffix suffix
```

Il ruolo IAM utilizzato per abilitare i registri delle conversazioni deve disporre dell'autorizzazione. `iam:PassRole` Al ruolo deve essere collegata la policy seguente.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

## Abilitare i log delle conversazioni
<a name="conversation-logs-enable"></a>

**Per attivare i log utilizzando la console**

1. Apri la console Amazon Lex [https://console.aws.amazon.com/lex](https://console.aws.amazon.com/lex).

1. Dall'elenco, scegliere un bot.

1. Scegliere la scheda **Settings (Impostazioni)** quindi scegliere **Conversation logs (Log delle conversazioni)** dal menu a sinistra.

1. Nell'elenco degli alias, scegliere l'icona delle impostazioni per l'alias per il quale si desidera configurare i log delle conversazioni.

1. Scegliere se registrare testo, audio o entrambi. 

1. Per la registrazione di testo, inserisci il nome del gruppo di log di Amazon CloudWatch Logs.

1. Per la registrazione dell'audio, inserire le informazioni del bucket S3.

1. Opzionale. Per crittografare i log audio, scegli la AWS KMS chiave da utilizzare per la crittografia.

1. Scegli un ruolo IAM con le autorizzazioni richieste.

1. Scegliere **Save (Salva)** per iniziare a registrare le conversazioni.

**Per attivare i log di testo utilizzando l'API**

1. Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) con una voce nel membro `logSettings` del campo `conversationLogs`
   + Impostare il membro `destination` su `CLOUDWATCH_LOGS`
   + Impostare il membro `logType` su `TEXT`
   + Imposta il `resourceArn` membro sull'Amazon Resource Name (ARN) del gruppo di log CloudWatch Logs che è la destinazione dei log

1. Imposta il `iamRoleArn` membro del `conversationLogs` campo sull'Amazon Resource Name (ARN) di un ruolo IAM che dispone delle autorizzazioni necessarie per abilitare i log delle conversazioni sulle risorse specificate.

**Per attivare i log audio utilizzando l'API**

1. Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) con una voce nel membro `logSettings` del campo `conversationLogs`
   + Impostare il membro `destination` su `S3`
   + Impostare il membro `logType` su `AUDIO`
   + Impostare il membro `resourceArn` sull'ARN del bucket Amazon S3 in cui sono archiviati i log audio
   + Opzionale. Per crittografare i log audio con una AWS KMS chiave specifica, imposta il `kmsKeyArn` membro dell'ARN della chiave utilizzata per la crittografia.

1. Imposta il `iamRoleArn` membro del `conversationLogs` campo sull'Amazon Resource Name (ARN) di un ruolo IAM che dispone delle autorizzazioni necessarie per abilitare i log delle conversazioni sulle risorse specificate.

## Disabilitare i log delle conversazioni
<a name="conversation-logs-disable"></a>

**Per disattivare i log utilizzando la console**

1. Apri la console Amazon Lex [https://console.aws.amazon.com/lex](https://console.aws.amazon.com/lex).

1. Dall'elenco, scegliere un bot.

1. Scegliere la scheda **Settings (Impostazioni)** quindi scegliere **Conversation logs (Log delle conversazioni)** dal menu a sinistra.

1. Nell'elenco degli alias, scegliere l'icona delle impostazioni per l'alias per il quale si desidera configurare i log delle conversazioni.

1. Deselezionare la casella di controllo da testo, audio o entrambi per disattivare la registrazione.

1. Scegliere **Save (Salva)** per interrompere la registrazione delle conversazioni.

**Per disattivare i log utilizzando l'API**
+ Chiamare l'operazione `PutBotAlias` senza il campo `conversationLogs`.

**Per disattivare i log di testo utilizzando l'API**
+ 
  + In caso di registrazione dell'audio
    + Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) con una voce `logSettings` solo per `AUDIO`.
    + La chiamata all'operazione `PutBotAlias` non deve avere una voce `logSettings` per `TEXT`.
  + Se non si sta registrando l'audio
    + Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) senza il campo `conversationLogs`.

**Per disattivare i log audio utilizzando l'API**
+ 
  + In caso di registrazione del testo
    + Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) con una voce `logSettings` solo per `TEXT`.
    + La chiamata all'operazione `PutBotAlias` non deve avere una voce `logSettings` per `AUDIO`.
  + Se non si sta registrando il testo
    + Chiamare l'operazione [PutBotAlias](API_PutBotAlias.md) senza il campo `conversationLogs`.

# Crittografare i log delle conversazioni
<a name="conversation-logs-encrypting"></a>

È possibile utilizzare la crittografia per proteggere il contenuto dei log delle conversazioni. Per i log di testo e audio, puoi utilizzare AWS KMS Customer managed CMKs per crittografare i dati nel gruppo di log CloudWatch Logs e nel bucket S3.

**Nota**  
Amazon Lex supporta solo sistemi simmetrici CMKs. Non utilizzare una CMK asimmetrica per crittografare i dati.

La crittografia viene abilitata utilizzando una AWS KMS chiave nel gruppo di log CloudWatch Logs utilizzato da Amazon Lex per i log di testo. Non puoi fornire una AWS KMS chiave nelle impostazioni di registro per abilitare la AWS KMS crittografia del tuo gruppo di log. Per ulteriori informazioni, [consulta Encrypt Log Data in CloudWatch Logs Using AWS KMS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) nella *Amazon CloudWatch Logs* User Guide.

Per i log audio, utilizzi la crittografia predefinita sul tuo bucket S3 o specifichi una AWS KMS chiave per crittografare i tuoi oggetti audio. Anche se il bucket S3 utilizza la crittografia predefinita, puoi comunque specificare una AWS KMS chiave diversa per crittografare gli oggetti audio. Per ulteriori informazioni, consulta [Amazon S3 Default Encryption for S3 Bucket nella Amazon Simple](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) *Storage* Service Developer Guide.

Amazon Lex richiede AWS KMS autorizzazioni se scegli di crittografare i log audio. È necessario allegare politiche aggiuntive al ruolo IAM utilizzato per i log delle conversazioni. Se utilizzi la crittografia predefinita sul tuo bucket S3, la tua policy deve concedere l'accesso alla AWS KMS chiave configurata per quel bucket. Se specifichi una AWS KMS chiave nelle impostazioni del registro audio, devi concedere l'accesso a quella chiave.

Se non hai creato un ruolo per i log delle conversazioni, consulta [Politiche IAM per i registri delle conversazioni](conversation-logs-policies.md).

**Per creare una policy IAM per l'utilizzo di una AWS KMS chiave per la crittografia dei log audio**

1. Creare un documento nella directory corrente chiamato **LexConversationLogsKMSPolicy.json**, aggiungervi la seguente policy e salvarlo.

1. In AWS CLI, crea la policy IAM che conceda il permesso di utilizzare la AWS KMS chiave per crittografare i log audio.

   ```
   aws iam create-policy \
       --policy-name kms-policy-name \
       --policy-document file://LexConversationLogsKMSPolicy.json
   ```

1. Collegare la policy al ruolo creato per i log delle conversazioni.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/kms-policy-name \
       --role-name role-name
   ```

# Visualizzazione dei log di testo in Amazon CloudWatch Logs
<a name="conversation-logs-cw"></a>

Amazon Lex archivia i log di testo per le tue conversazioni in Amazon CloudWatch Logs. Per visualizzare i log, puoi utilizzare la console o l'API CloudWatch Logs. Per ulteriori informazioni, consulta [Search Log Data Using Filter Patterns](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html) e [CloudWatch Logs Insights Query Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) nella *Amazon CloudWatch Logs* User Guide.

**Per visualizzare i log utilizzando la console Amazon Lex**

1. Apri la console Amazon Lex [https://console.aws.amazon.com/lex](https://console.aws.amazon.com/lex).

1. Dall'elenco, scegliere un bot.

1. Scegliere la scheda **Settings (Impostazioni)**, quindi scegliere **Conversation logs (Log delle conversazioni)** dal menu a sinistra.

1. Scegli il link sotto **Registri di testo** per visualizzare i log dell'alias nella console. CloudWatch 

Puoi anche utilizzare la CloudWatch console o l'API per visualizzare le voci di registro. Per trovare le voci del log, passare al gruppo di log configurato per l'alias. Puoi trovare il prefisso del flusso di log per i tuoi log nella console Amazon Lex o utilizzando l'[GetBotAlias](API_GetBotAlias.md)operazione. 

Le voci del log di un'enunciazione di un utente si trovano in più flussi di log. Un'enunciazione nella conversazione ha una voce in uno dei flussi di log con il prefisso specificato. Una voce nel flusso di log contiene le seguenti informazioni.

```
{
   "messageVersion": "1.0",
   "botName": "bot name",
   "botAlias": "bot alias",
   "botVersion": "bot version",
   "inputTranscript": "text used to process the request",
   "botResponse": "response from the bot",
   "intent": "matched intent",
   "nluIntentConfidence": "number",
   "slots": {
       "slot name": "slot value",
       "slot name": null,
       "slot name": "slot value"
       ...
   },
   "alternativeIntents": [
       {
           "name": "intent name",
           "nluIntentConfidence": "number",
           "slots": {
               "slot name": slot value,
               "slot name": null,
               "slot name": slot value
               ...
           }
       },
       {
           "name": "intent name",
           "nluIntentConfidence": number,
           "slots": {}
       }
   ],
   "developerOverride": "true" | "false",
   "missedUtterance": true | false,
   "inputDialogMode": "Text" | "Speech",
   "requestId": "request ID",
   "s3PathForAudio": "S3 path to audio file",
   "userId": "user ID",
   "sessionId": "session ID",
   "sentimentResponse": {
       "sentimentScore": "{Positive: number, Negative: number, Neutral: number, Mixed: number}",
       "sentimentLabel": "Positive" | "Negative" | "Neutral" | "Mixed"
   },
   "slotToElicit": "slot name",
   "dialogState": "ElicitIntent" | "ConfirmIntent" | "ElicitSlot" | "Fulfilled" | "ReadyForFulfillment" | "Failed",
   "responseCard": {
       "genericAttachments": [
           ...
       ],
       "contentType": "application/vnd.amazonaws.card.generic",
       "version": 1
    },
   "locale": "locale",
   "timestamp": "ISO 8601 UTC timestamp",
   "kendraResponse": {
      "totalNumberOfResults": number,
      "resultItems": [
          {
              "id": "query ID",
              "type": "DOCUMENT" | "QUESTION_ANSWER" | "ANSWER",
              "additionalAttributes": [
                  {
                     ...
                  }
              ],
              "documentId": "document ID",
              "documentTitle": {
                  "text": "title",
                  "highlights": null
              },
              "documentExcerpt": {
                  "text": "text",
                  "highlights": [
                      {
                          "beginOffset": number,
                          "endOffset": number,
                          "topAnswer": true | false
                      }
                  ]
              },
              "documentURI": "URI",
              "documentAttributes": []
          }  
      ],
      "facetResults": [],
      "sdkResponseMetadata": {
          "requestId": "request ID"
      },
      "sdkHttpMetadata": {
          "httpHeaders": {
              "Content-Length": "number",
              "Content-Type": "application/x-amz-json-1.1",
              "Date": "date and time",
              "x-amzn-RequestId": "request ID"
          },
          "httpStatusCode": 200
      },
      "queryId": "query ID"
   },
   "sessionAttributes": {
       "attribute name": "attribute value"
       ...
    },
   "requestAttributes": {
       "attribute name": "attribute value"
       ...
    }
}
```

Il contenuto della voce di log dipende dal risultato di una transazione e dalla configurazione del bot e della richiesta.
+ I campi `intent`, `slots` e `slotToElicit` non vengono visualizzati in una voce se il campo `missedUtterance` è `true`.
+ Il campo `s3PathForAudio` non compare se i log audio sono disabilitati o se il campo `inputDialogMode` è `Text`.
+ Il campo `responseCard` viene visualizzato solo quando è stata definita una scheda di risposta per il bot.
+ La mappa `requestAttributes` viene visualizzata solo se nella richiesta sono stati specificati attributi di richiesta.
+ Il `kendraResponse` campo è presente solo quando `AMAZON.KendraSearchIntent` effettua una richiesta di ricerca in un indice Amazon Kendra.
+ Il `developerOverride` campo è vero quando è stato specificato un intento alternativo nella funzione Lambda del bot.
+ La mappa `sessionAttributes` viene visualizzata solo se nella richiesta sono stati specificati attributi di sessione.
+ La mappa `sentimentResponse` viene visualizzata solo se si configura il bot per restituire i valori di sentiment.

**Nota**  
Il formato di input potrebbe cambiare senza che corrisponda una modifica in `messageVersion`. Il codice non dovrebbe generare errori se sono presenti nuovi campi.

È necessario disporre di un ruolo e di una politica impostati per consentire ad Amazon Lex di scrivere CloudWatch nei registri. Per ulteriori informazioni, consulta [Politiche IAM per i registri delle conversazioni](conversation-logs-policies.md).

# Accesso ai log audio in Amazon S3
<a name="conversation-logs-s3"></a>

Amazon Lex archivia i registri audio delle tue conversazioni in un bucket S3. 

**Per accedere ai log audio tramite la console**

1. Apri la console Amazon Lex [https://console.aws.amazon.com/lex](https://console.aws.amazon.com/lex).

1. Dall'elenco, scegliere un bot.

1. Scegliere la scheda **Settings (Impostazioni)**, quindi scegliere **Conversation logs (Log delle conversazioni)** dal menu a sinistra.

1. Scegli il link in **Audio logs** per accedere ai log per l'alias nella console Amazon S3.

Puoi anche utilizzare la console o l'API di Amazon S3 per accedere ai log audio. Puoi vedere il prefisso della chiave oggetto S3 dei file audio nella console Amazon Lex o nel campo nella `resourcePrefix` `GetBotAlias` risposta dell'operazione.

# Monitoraggio dello stato del registro delle conversazioni con metriche CloudWatch
<a name="conversation-logs-monitoring"></a>

Usa Amazon CloudWatch per monitorare i parametri di consegna dei registri delle conversazioni. È possibile impostare allarmi sui parametri in modo da essere consapevoli dei problemi relativi alla registrazione, se dovessero verificarsi.

Amazon Lex fornisce quattro parametri nello spazio dei `AWS/Lex` nomi per i log delle conversazioni:
+ `ConversationLogsAudioDeliverySuccess`
+ `ConversationLogsAudioDeliveryFailure`
+ `ConversationLogsTextDeliverySuccess`
+ `ConversationLogsTextDeliveryFailure`

Per ulteriori informazioni, consulta [CloudWatch Metriche per i registri delle conversazioni](monitoring-aws-lex-cloudwatch.md#cloudwatch-metrics-for-logging).

Le metriche di successo mostrano che Amazon Lex ha scritto correttamente i tuoi log audio o di testo nelle rispettive destinazioni. 

Le metriche di errore mostrano che Amazon Lex non è in grado di consegnare log audio o di testo alla destinazione specificata. In genere si tratta di un errore di configurazione. Quando i parametri di errore sono superiori a zero, controllare quanto segue:
+ Assicurati che Amazon Lex sia un'entità affidabile per il ruolo IAM.
+ Per la registrazione del testo, assicurati che esista il gruppo di log CloudWatch Logs. Per la registrazione dell'audio, verificare l'esistenza del bucket S3.
+ Assicurati che il ruolo IAM utilizzato da Amazon Lex per accedere al gruppo di log CloudWatch Logs o al bucket S3 disponga dell'autorizzazione di scrittura per il gruppo di log o il bucket.
+ Assicurati che il bucket S3 esista nella stessa regione del bot Amazon Lex e appartenga al tuo account.
+ Se utilizzi una AWS KMS chiave per la crittografia S3, assicurati che non esistano politiche che impediscano ad Amazon Lex di utilizzare la tua chiave e assicurati che il ruolo IAM che fornisci disponga delle AWS KMS autorizzazioni necessarie. Per ulteriori informazioni, consulta [Politiche IAM per i registri delle conversazioni](conversation-logs-policies.md).

# Gestione delle sessioni con l'API Amazon Lex
<a name="how-session-api"></a>

Quando un utente inizia una conversazione con il tuo bot, Amazon Lex crea una *sessione*. Le informazioni scambiate tra l'applicazione e Amazon Lex costituiscono lo stato della sessione per la conversazione. Quando inoltri una richiesta, la sessione viene identificata dalla combinazione del nome del bot e di un identificatore utente specificato da te. Per ulteriori informazioni sull'identificatore utente, consulta il campo `userId` nell’operazione [PostContent](API_runtime_PostContent.md) o [PostText](API_runtime_PostText.md).

La risposta ricevuta da un'operazione di sessione include un identificatore sessione univoco che identifica una sessione specifica con un utente. È possibile utilizzare questo identificatore durante le operazioni di test o di risoluzione dei problemi del bot.

È possibile modificare lo stato della sessione scambiato tra l'applicazione e il bot. Ad esempio, è possibile creare e modificare attributi della sessione personalizzati che contengono informazioni sulla sessione ed è possibile modificare il flusso della conversazione impostando il contesto del dialogo per interpretare l’enunciazione successiva.

È possibile aggiornare lo stato della sessione in due modi. Il primo consiste nell'utilizzare una funzione Lambda con l'`PostText`operazione `PostContent` or che viene chiamata dopo ogni turno della conversazione. Per ulteriori informazioni, consulta [Utilizzo delle funzioni Lambda](using-lambda.md). L'altro consiste nell'utilizzare l'API di runtime Amazon Lex nell'applicazione per apportare modifiche allo stato della sessione. 

L'API di runtime Amazon Lex fornisce operazioni che consentono di gestire le informazioni sulla sessione per una conversazione con il bot. Le operazioni sono le seguenti: [PutSession](API_runtime_PutSession.md) , [GetSession](API_runtime_GetSession.md) e [DeleteSession](API_runtime_DeleteSession.md). È possibile utilizzare queste operazioni per ottenere informazioni sullo stato della sessione dell’utente con il bot e avere il controllo granulare sullo stato.

Utilizza l'operazione `GetSession` quando desideri ottenere lo stato attuale della sessione. L'operazione restituisce lo stato attuale della sessione, incluso lo stato del dialogo con l'utente, gli attributi della sessione impostati e i valori di slot per gli ultimi tre intenti con cui l'utente ha interagito. 

L'operazione `PutSession` consente di manipolare direttamente lo stato attuale della sessione. È possibile impostare il tipo della prossima operazione di dialogo che il bot eseguirà, in modo da avere il controllo sul flusso della conversazione con il bot. Imposta il `type` campo di azione della finestra `Delegate` di dialogo in modo che Amazon Lex determini l'azione successiva per il bot.

Puoi utilizzare l'operazione `PutSession` per creare una nuova sessione con un bot e impostare l'intento iniziale del bot. Puoi inoltre utilizzare l'operazione `PutSession` per passare da un intento a un altro. Quando crei una sessione o modifichi l’intento, puoi anche impostare lo stato della sessione, inclusi valori di slot e attributi della sessione. Quando il nuovo intento è terminato, puoi riavviare l’intento precedente. È possibile utilizzare l'`GetSession`operazione per ottenere lo stato della finestra di dialogo dell'intento precedente da Amazon Lex e utilizzare le informazioni per impostare lo stato della finestra di dialogo dell'intento.

La risposta ricevuta dall’operazione `PutSession` contiene le stesse informazioni dell’operazione `PostContent`. Puoi utilizzare queste informazioni per richiedere all'utente le informazioni successive, esattamente come faresti con la risposta ricevuta dall'operazione `PostContent`.

Utilizza l'operazione `DeleteSession` per rimuovere una sessione esistente e ricominciare con una nuova sessione. Ad esempio, quando esegui il test del bot, puoi utilizzare l'operazione `DeleteSession` per eliminare le sessioni di test dal bot.

Le operazioni di sessione funzionano con le tue funzioni Lambda di adempimento. Ad esempio, se la funzione Lambda ritorna `Failed` come stato di adempimento, puoi utilizzare l'`PutSession`operazione per impostare il tipo di azione della finestra di dialogo su `close` e per `fulfillmentState` `ReadyForFulfillment` riprovare la fase di adempimento.

Di seguito sono elencate alcune azioni che è possibile effettuare con le operazioni di sessione:
+ Impostare il bot in modo che avvii una conversazione invece di attendere l'utente.
+ Cambiare intento durante una conversazione.
+ Tornare a un intento precedente.
+ Avviare o riavviare una conversazione durante un’interazione.
+ Convalidare i valori di slot e impostare il bot in modo che richieda nuovamente i valori non validi.

Ognuna di queste azioni è descritta di seguito.

## Cambiare intento
<a name="session-switch"></a>

Puoi utilizzare l'operazione `PutSession` per passare da un intento a un altro e per tornare a un intento precedente. Puoi utilizzare l'operazione `PutSession` per impostare gli attributi di sessione o i valori di slot per il nuovo intento.
+ Chiama `PutSession`l'operazione. Utilizza come nome dell’intento quello del nuovo intento e imposta l’operazione di dialogo su `Delegate`. Puoi inoltre impostare i valori di slot o gli attributi di sessione necessari per il nuovo intento.
+ Amazon Lex avvierà una conversazione con l'utente utilizzando il nuovo intento.

## Riprendere un intento precedente
<a name="session-return"></a>

Per riprendere un intento precedente puoi utilizzare l'operazione `GetSession` per ottenere il riepilogo dell’intento e l’operazione `PutSession` per impostare l'intento sullo stato di dialogo precedente.
+ Chiama `GetSession`l'operazione. La risposta ricevuta dall’operazione include un riepilogo dello stato del dialogo degli ultimi tre intenti con cui l'utente ha interagito.
+ Utilizza le informazioni del riepilogo dell’intento per richiamare l'operazione `PutSession`. In questo modo, l’utente tornerà all’intento precedente nella stessa posizione della conversazione.

In alcuni casi, può essere necessario riprendere la conversazione dell’utente con il bot. Ad esempio, immagina di aver creato un bot per il servizio clienti e che la tua applicazione stabilisca che l'utente deve parlare con un addetto per ricevere assistenza. Dopo la comunicazione con l'utente, l’addetto può aggiungere le informazioni raccolte alla conversazione con il bot.

Per riprendere una sessione, segui una procedura simile a questa:
+ La tua applicazione stabilisce che l'utente deve parlare con un addetto del servizio clienti.
+ Utilizza l'operazione `GetSession` per ottenere lo stato di dialogo attuale dell’intento. 
+ L’addetto del servizio clienti parla con l'utente e risolve il problema.
+ Utilizza l'operazione `PutSession` per impostare lo stato di dialogo dell’intento. Potresti dover impostare valori di slot e attributi o modificare l’intento.
+ Il bot riprende la conversazione con l'utente.

Puoi utilizzare il parametro `checkpointLabel` dell'operazione `PutSession` per etichettare un intento in modo da poterlo trovare in un secondo momento. Ad esempio, un bot che chiede informazioni a un cliente potrebbe entrare in un intento `Waiting` mentre il cliente raccoglie le informazioni. Il bot crea un'etichetta di checkpoint per l'intento corrente e quindi avvia l'intento `Waiting`. Quando il cliente restituisce il bot può trovare l'intento precedente utilizzando l'etichetta di checkpoint e tornare indietro. 

L'intento deve essere presente nella struttura `recentIntentSummaryView` restituita dall'operazione `GetSession`. Se si specifica un'etichetta di checkpoint nella richiesta di operazione `GetSession`, verrà restituito un massimo di tre intenti con quell'etichetta di checkpoint.
+ Utilizzare l'operazione `GetSession` per ottenere lo stato corrente della sessione.
+ Utilizzare l'operazione `PutSession` per aggiungere un'etichetta di checkpoint all'ultimo intento. Se necessario puoi utilizzare questa chiamata `PutSession` per passare a un intento diverso.
+ Quando è il momento di tornare all'intento etichettato, chiama l'operazione `GetSession` per ottenere un elenco di intenti recenti. Puoi utilizzare il `checkpointLabelFilter` parametro in modo che Amazon Lex restituisca solo gli intenti con l'etichetta del checkpoint specificata.

## Avviare una nuova sessione
<a name="session-start"></a>

Se desideri che il bot avvii la conversazione con l'utente, puoi utilizzare l'operazione `PutSession`. 
+ Crea un intento di benvenuto senza slot e un messaggio conclusivo che richieda all'utente di dichiarare un intento. Ad esempio, "Cosa desideri ordinare? Puoi dire "Ordina una bevanda" oppure "Ordina una pizza"”.
+ Chiama `PutSession`l'operazione. Utilizza come nome dell’intento quello dell’intento di benvenuto e imposta l’operazione di dialogo su `Delegate`. 
+ Amazon Lex risponderà con la richiesta di benvenuto dell'utente di iniziare la conversazione con l'utente.

## Convalidare valori di slot
<a name="session-validation"></a>

Puoi convalidare le risposte inviate al bot utilizzando l’applicazione client. Se la risposta non è valida, puoi utilizzare l'operazione `PutSession` per ricevere una nuova risposta dall'utente. Ad esempio, immagina che il bot per ordinare fiori possa vendere soltanto tulipani, rose e gigli. Se l'utente ordina garofani, la tua applicazione può:
+ Esaminare il valore di slot restituito dalla risposta `PostText` o `PostContent`.
+ Se il valore di slot non è valido, può richiamare l'operazione `PutSession`. L'applicazione deve eliminare il valore di slot, impostare il campo `slotToElicit` e impostare il valore di `dialogAction.type` su `elicitSlot`. Facoltativamente, puoi impostare i `messageFormat` campi `message` and se desideri modificare il messaggio utilizzato da Amazon Lex per ottenere il valore dello slot.

# Opzioni di distribuzione di bot
<a name="chatbot-service"></a>

Attualmente, Amazon Lex offre le seguenti opzioni di distribuzione dei bot:
+ [SDK AWS Mobile](https://aws.amazon.com/mobile/sdk/): puoi creare applicazioni mobili che comunicano con Amazon Lex utilizzando AWS Mobile SDKs.
+ Facebook Messenger: puoi integrare la tua pagina Facebook Messenger con il tuo bot Amazon Lex in modo che gli utenti finali su Facebook possano comunicare con il bot. Nell'implementazione corrente, questa integrazione supporta solo messaggi di input di testo. 
+ Slack: puoi integrare il tuo bot Amazon Lex con un'applicazione di messaggistica Slack.
+ Twilio: puoi integrare il tuo bot Amazon Lex con Twilio Simple Messaging Service (SMS).

Per alcuni esempi, consulta [Implementazione di bot Amazon Lex](examples.md).

# Intenti incorporati e tipi di slot
<a name="howitworks-builtins"></a>

Per semplificare la creazione di bot, Amazon Lex consente di utilizzare intenti e tipi di slot incorporati standard. 

**Topics**
+ [Intenti incorporati](howitworks-builtins-intents.md)
+ [Tipi di slot integrati](howitworks-builtins-slots.md)

# Intenti incorporati
<a name="howitworks-builtins-intents"></a>

Per le azioni più comuni, puoi utilizzare la libreria di intenti standard integrata. Per creare un intento a partire da un intento incorporato, scegli un intento incorporato nella console e assegnagli un nuovo nome. Il nuovo intento ha la configurazione dell'intento di base, ad esempio gli enunciati di esempio. 

Nell'implementazione corrente, non puoi effettuare le seguenti operazioni: 
+ Aggiunge o rimuovi gli enunciati di esempio dall'intento di base
+ Configurazione di slot per intenti incorporati

**Per aggiungere un intento incorporato a un bot**

1. Accedi a Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegli il bot a cui aggiungere l'intento integrato.

1. Nel riquadro di navigazione scegliere il segno più (\$1) accanto a **Intenti**.

1. Per **Aggiungi intento**, scegliere **Cerca intenti esistenti**.

1. Nella casella **Intenti di ricerca**, digita il nome dell'intento integrato da aggiungere al bot.

1. **Per **Copia l'intento integrato**, assegna un nome all'intento, quindi scegli Aggiungi.**

1. Configura l'intento come richiesto per il tuo bot.

**Topics**
+ [AMAZON.CancelIntent](built-in-intent-cancel.md)
+ [AMAZON.FallbackIntent](built-in-intent-fallback.md)
+ [AMAZON.HelpIntent](built-in-intent-help.md)
+ [AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md)
+ [AMAZON.PauseIntent](built-in-intent-pause.md)
+ [AMAZON.RepeatIntent](built-in-intent-repeat.md)
+ [AMAZON.ResumeIntent](built-in-intent-resume.md)
+ [AMAZON.StartOverIntent](built-in-intent-start-over.md)
+ [AMAZON.StopIntent](built-in-intent-stop.md)

**Nota**  
Per le impostazioni locali in inglese (USA) (en-US), Amazon Lex supporta gli intenti degli intenti integrati standard di Alexa. Per un elenco di intenti incorporati, consulta la sezione relativa agli [intenti incorporati standard](https://developer.amazon.com/docs/custom-skills/standard-built-in-intents.html) in *Alexa Skills Kit*.  
Amazon Lex non supporta i seguenti intenti:  
`AMAZON.YesIntent`
`AMAZON.NoIntent` 
Gli intenti nella [libreria di intenti incorporati](https://developer.amazon.com/docs/custom-skills/built-in-intent-library.html) in *Alexa Skills Kit*

# AMAZON.CancelIntent
<a name="built-in-intent-cancel"></a>

Risponde a parole e frasi che indicano che l'utente desidera annullare l'interazione corrente. L'applicazione può utilizzare questo intento per rimuovere i valori dei tipi di slot e altri attributi prima di terminare l'interazione con l'utente.

Enunciati comuni:
+ annullare
+ non importa
+ dimenticalo

# AMAZON.FallbackIntent
<a name="built-in-intent-fallback"></a>

*Quando l'input di un utente a un intento non è quello che un bot si aspetta, puoi configurare Amazon Lex per richiamare un intento di fallback.* Ad esempio, se l'input dell'utente «Vorrei ordinare caramelle» non corrisponde a un intento nel tuo `OrderFlowers` bot, Amazon Lex richiama l'intento di fallback per gestire la risposta.

Puoi aggiungere un intento di fallback aggiungendo il tipo di intento `AMAZON.FallbackIntent` integrato al bot. Puoi specificare l'intento utilizzando l'operazione [PutBot](API_PutBot.md) o scegliendo l'intento dall'elenco di intenti integrati nella console. 

L'invocazione di un intento di fallback utilizza due fasi. Nella prima fase l'intento di fallback viene abbinato in base all'input dell'utente. Quando l'intento di fallback viene abbinato, il modo in cui il bot si comporta dipende dal numero di nuovi tentativi configurati per un prompt. Ad esempio, se il numero massimo di tentativi di determinare un intento è 2, il bot restituisce il prompt di chiarimento del bot due volte prima di richiamare l'intento di fallback.

Amazon Lex corrisponde all'intento di fallback in queste situazioni: 
+ L'input dell'utente a un intento non corrisponde all'input previsto dal bot
+ L'input audio è un rumore o l'input di testo non viene riconosciuto come parole.
+ L'input dell'utente è ambiguo e Amazon Lex non è in grado di determinare quale intento richiamare.

L'intento di fallback viene richiamato quando:
+ Il bot non riconosce l'input utente come intento dopo il numero configurato di tentativi di chiarimento quando la conversazione viene avviata.
+ Un intento non riconosce l'input utente come valore di slot dopo il numero di tentativi configurato.
+ Un intento non riconosce l'input utente come risposta a un prompt di conferma dopo il numero di tentativi configurato.

Puoi utilizzare quanto segue con un intento di fallback:
+ Una funzione Lambda di adempimento
+ Istruzione di conclusione
+ Un prompt di follow-up

Non puoi aggiungere quanto segue a un intento di fallback:
+ Enunciazioni
+ Slot
+ Una funzione Lambda di inizializzazione e convalida 
+ Prompt di conferma

Se hai configurato sia un'istruzione di annullamento che un intento di fallback per un bot, Amazon Lex utilizza l'intento di fallback. Se hai bisogno che il bot disponga di una dichiarazione di annullamento, puoi utilizzare la funzione fulfillment per l'intento di fallback per fornire lo stesso comportamento di una dichiarazione di annullamento. Per ulteriori informazioni, consulta il parametro `abortStatement` dell'operazione [PutBot](API_PutBot.md).

## Utilizzo dei prompt di chiarimento
<a name="fallback-clarification"></a>

Se fornisci al bot una richiesta di chiarimento, il prompt viene utilizzato per richiedere un intento valido all'utente. Il prompt di chiarimento verrà ripetuto per il numero di volte che hai configurato. Dopodiché verrà richiamato l'intento di fallback.

Se non imposti una richiesta di chiarimento quando crei un bot e l'utente non avvia la conversazione con un intento valido, Amazon Lex richiama immediatamente il tuo intento di fallback. 

Quando utilizzi un intento di fallback senza una richiesta di chiarimento, Amazon Lex non richiama il fallback nelle seguenti circostanze:
+ Quando l'utente risponde a un prompt di follow-up ma non fornisce un intento. Ad esempio, in risposta a una richiesta di follow-up che dice «Vuoi qualcos'altro oggi?» , l'utente dice «Sì». Amazon Lex restituisce un'eccezione 400 Bad Request perché non dispone di un messaggio di chiarimento da inviare all'utente per ottenere un intento.
+ Quando si utilizza una AWS Lambda funzione, si restituisce un `ElicitIntent` tipo di dialogo. Poiché Amazon Lex non richiede chiarimenti per ottenere un'intenzione dall'utente, restituisce un'eccezione 400 Bad Request.
+ Quando utilizzi l'operazione `PutSession`, invii un tipo di finestra di dialogo `ElicitIntent`. Poiché Amazon Lex non richiede chiarimenti per ottenere un'intenzione dall'utente, restituisce un'eccezione 400 Bad Request.

## Utilizzo di una funzione Lambda con un intento di fallback
<a name="invoke-fallback"></a>

Quando viene richiamato un intento di fallback, la risposta dipende dall'impostazione del parametro `fulfillmentActivity` per l'operazione [PutIntent](API_PutIntent.md). Il bot esegue una delle seguenti operazioni:
+ Restituisce le informazioni sull'intento all'applicazione client.
+ Richiama la funzione Lambda di adempimento. Chiama la funzione con le variabili di sessione impostate per la sessione.

Per ulteriori informazioni sull'impostazione della risposta quando viene richiamato un intento di fallback, consulta il parametro `fulfillmentActivity` dell'operazione [PutIntent](API_PutIntent.md). 

Se utilizzi la funzione Fulfillment Lambda nel tuo intento di fallback, puoi utilizzare questa funzione per chiamare un altro intento o per eseguire qualche forma di comunicazione con l'utente, ad esempio raccogliere un numero di callback o aprire una sessione con un addetto al servizio clienti.

Puoi eseguire qualsiasi azione in una funzione Lambda con intento di fallback che puoi eseguire nella funzione di adempimento per qualsiasi altro intento. Per ulteriori informazioni sulla creazione di una funzione di adempimento utilizzando, consulta. AWS Lambda[Utilizzo delle funzioni Lambda](using-lambda.md)

Un intento di fallback può essere richiamato più volte nella stessa sessione. Ad esempio, supponiamo che la funzione Lambda utilizzi `ElicitIntent` l'azione di dialogo per richiedere all'utente un intento diverso. Se Amazon Lex non è in grado di dedurre l'intento dell'utente dopo il numero configurato di tentativi, richiama nuovamente l'intento di fallback. Richiama inoltre l'intento di fallback quando l'utente non risponde con un valore di slot valido dopo il numero di tentativi configurato.

È possibile configurare una funzione Lambda per tenere traccia del numero di volte in cui l'intento di fallback viene chiamato utilizzando una variabile di sessione. La funzione Lambda può eseguire un'azione diversa se viene chiamata più volte rispetto alla soglia impostata nella funzione Lambda. Per ulteriori informazioni sulle variabili di sessione, consulta [Impostazione degli attributi di sessione](context-mgmt-session-attribs.md).

# AMAZON.HelpIntent
<a name="built-in-intent-help"></a>

Risponde a parole o frasi che indicano che l'utente ha bisogno di aiuto durante l'interazione con il bot. Quando viene invocato questo intento, puoi configurare la funzione o l'applicazione Lambda per fornire informazioni sulle funzionalità del bot, porre domande di follow-up sulle aree di aiuto o affidare l'interazione a un agente umano. 

Enunciati comuni:
+ aiuto
+ aiutami
+ mi puoi aiutare

# AMAZON.KendraSearchIntent
<a name="built-in-intent-kendra-search"></a>

Per cercare documenti che hai indicizzato con Amazon Kendra, usa l'intento. `AMAZON.KendraSearchIntent` Quando Amazon Lex non è in grado di determinare l'azione successiva in una conversazione con l'utente, attiva l'intento di ricerca.

`AMAZON.KendraSearchIntent`È disponibile solo nelle impostazioni locali in inglese (USA) (en-US) e nelle regioni Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon) ed Europa (Irlanda).

Amazon Kendra è machine-learning-based un servizio di ricerca che indicizza documenti in linguaggio naturale come documenti PDF o file Microsoft Word. Può ricercare documenti indicizzati e restituire i seguenti tipi di risposte a una domanda:
+ Una risposta 
+ Una voce da una domanda frequente che potrebbe rispondere alla domanda
+ Un documento correlato alla domanda

Per un esempio di utilizzo di `AMAZON.KendraSearchIntent`, consulta [Esempio: creazione di un FAQ Bot per un indice Amazon Kendra](faq-bot-kendra-search.md).

Se configuri un `AMAZON.KendraSearchIntent` intento per il tuo bot, Amazon Lex chiama l'intento ogni volta che non riesce a determinare l'espressione dell'utente per uno slot o un intento. Ad esempio, se il bot sta suscitando una risposta per un tipo di slot chiamato «pizza topping» e l'utente dice «Cos'è una pizza? », Amazon Lex li chiama `AMAZON.KendraSearchIntent` per gestire la domanda. Se non viene ricevuta alcuna risposta da Amazon Kendra, la conversazione continua come configurato nel bot.

Quando utilizzi sia la che `AMAZON.KendraSearchIntent` la `AMAZON.FallbackIntent` nello stesso bot, Amazon Lex utilizza gli intenti come segue:

1. Amazon Lex chiama il`AMAZON.KendraSearchIntent`. L'intento chiama l'operazione Amazon Kendra`Query`.

1. Se Amazon Kendra restituisce una risposta, Amazon Lex mostra il risultato all'utente.

1. Se non viene ricevuta alcuna risposta da Amazon Kendra, Amazon Lex richiede nuovamente una richiesta all'utente. L'operazione successiva dipende dalla risposta dell'utente.
   + Se la risposta dell'utente contiene un'espressione riconosciuta da Amazon Lex, ad esempio il riempimento di un valore di slot o la conferma di un intento, la conversazione con l'utente procede come configurato per il bot.
   + Se la risposta dell'utente non contiene un enunciato riconosciuto da Amazon Lex, Amazon Lex effettua un'altra chiamata all'`Query`operazione.

1. Se non viene fornita alcuna risposta dopo il numero di tentativi configurato, Amazon Lex chiama `AMAZON.FallbackIntent` e termina la conversazione con l'utente.

Esistono tre modi per inviare una richiesta `AMAZON.KendraSearchIntent` ad Amazon Kendra:
+ Lascia che sia l'intento di ricerca a fare la richiesta per te. Amazon Lex chiama Amazon Kendra con l'enunciato dell'utente come stringa di ricerca. Quando crei l'intento, puoi definire una stringa di filtro di query che limiti il numero di risposte restituite da Amazon Kendra. Amazon Lex utilizza il filtro nella richiesta di query.
+ Aggiungi parametri di query aggiuntivi alla richiesta per restringere i risultati della ricerca utilizzando la funzione Lambda della finestra di dialogo. Aggiungi un `kendraQueryFilterString` campo che contiene i parametri di interrogazione di Amazon Kendra all'`delegate`azione di dialogo. Quando aggiungi parametri di query alla richiesta con la funzione Lambda, hanno la precedenza sul filtro di query definito al momento della creazione dell'intento.
+ Crea una nuova query utilizzando la funzione Lambda di dialogo. Puoi creare una richiesta di query Amazon Kendra completa inviata da Amazon Lex. È possibile specificare la query nel campo `kendraQueryRequestPayload` dell'operazione di dialogo `delegate`. Il campo `kendraQueryRequestPayload` ha la precedenza sul campo `kendraQueryFilterString`.

Per specificare il `queryFilterString` parametro quando crei un bot o per specificare il `kendraQueryFilterString` campo quando richiami l'`delegate`azione in una funzione Lambda di dialogo, specifichi una stringa che viene utilizzata come filtro degli attributi per la query Amazon Kendra. Se la stringa non è un filtro di attributo valido, si otterrà un'eccezione `InvalidBotConfigException` in fase di runtime. Per ulteriori informazioni sui filtri degli attributi, consulta [Using document attributes to filter query](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) nella *Amazon Kendra* Developer Guide.

Per avere il controllo sulla query che Amazon Lex invia ad Amazon Kendra, puoi specificare una query nel campo `kendraQueryRequestPayload` della funzione Lambda di dialogo. Se la query non è valida, Amazon Lex restituisce un'`InvalidLambdaResponseException`eccezione. Per ulteriori informazioni, consulta l'[operazione di interrogazione](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) nella *Amazon Kendra* Developer Guide.

Per un esempio di come utilizzare `AMAZON.KendraSearchIntent`, consulta [Esempio: creazione di un FAQ Bot per un indice Amazon Kendra](faq-bot-kendra-search.md).

## Politica IAM per Amazon Kendra Search
<a name="kendra-search-iam"></a>

Per utilizzare l'`AMAZON.KendraSearchIntent`intento, devi utilizzare un ruolo che fornisca politiche AWS Identity and Access Management (IAM) che consentano ad Amazon Lex di assumere un ruolo di runtime autorizzato a richiamare l'intento di Amazon Kendra`Query`. Le impostazioni IAM che usi dipendono dal fatto che tu le crei `AMAZON.KendraSearchIntent` utilizzando la console Amazon Lex, un SDK AWS o il AWS Command Line Interface (AWS CLI). Quando usi la console, puoi scegliere se aggiungere l'autorizzazione per chiamare Amazon Kendra al ruolo collegato al servizio Amazon Lex o utilizzare un ruolo specifico per chiamare l'operazione Amazon Kendra. `Query` Quando utilizzi l'SDK AWS CLI o un SDK per creare l'intento, devi utilizzare un ruolo specifico per chiamare l'operazione. `Query`

### Collegamento di autorizzazioni
<a name="kendra-iam-attach"></a>

Puoi utilizzare la console per associare le autorizzazioni per accedere all'operazione `Query` Amazon Kendra al ruolo predefinito collegato al servizio Amazon Lex. Quando associ le autorizzazioni al ruolo collegato al servizio, non devi creare e gestire un ruolo di runtime specifico per connetterti all'indice Amazon Kendra.

L'utente, il ruolo o il gruppo che usi per accedere alla console Amazon Lex deve disporre delle autorizzazioni per gestire le politiche dei ruoli. Allega la seguente policy IAM al ruolo di accesso alla console. Quando si concedono queste autorizzazioni, il ruolo dispone delle autorizzazioni necessarie per modificare la policy del ruolo collegato ai servizi esistente. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "iam:GetRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots"
        },
        {
            "Effect": "Allow",
            "Action": "iam:ListRoles",
            "Resource": "*"
        }
    ]
}
```

------

### Specifica di un ruolo
<a name="kendra-iam-role"></a>

Puoi utilizzare la console AWS CLI, l'o l'API per specificare un ruolo di runtime da utilizzare quando chiami l'operazione Amazon `Query` Kendra. 

L'utente, il ruolo o il gruppo che usi per specificare il ruolo di runtime deve disporre dell'`iam:PassRole`autorizzazione. La policy seguente definisce l'autorizzazione. È possibile utilizzare le chiavi di contesto di condizione `iam:AssociatedResourceArn` e `iam:PassedToService` per limitare ulteriormente l'ambito delle autorizzazioni. Per ulteriori informazioni, consulta [IAM e AWS STS Condition Context Keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) nella *Guida AWS Identity and Access Management per l'utente*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

Il ruolo di runtime che Amazon Lex deve utilizzare per chiamare Amazon Kendra deve disporre delle autorizzazioni. `kendra:Query` Quando utilizzi un ruolo IAM esistente per ottenere l'autorizzazione a chiamare l'operazione Amazon `Query` Kendra, al ruolo deve essere associata la seguente policy.

Puoi utilizzare la console IAM, l'API IAM o AWS CLI creare una policy e collegarla a un ruolo. Queste istruzioni utilizzano l'AWS CLI per creare il ruolo e le policy.

**Nota**  
Il codice seguente è formattato per Linux e MacOS. Per Windows, sostituire il carattere di continuazione della riga di Linux (\$1) con un accento circonflesso (^).

**Per aggiungere l'autorizzazione per l'operazione Query a un ruolo**

1. Creare un documento denominato **KendraQueryPolicy.json** nella directory corrente, aggiungervi il seguente codice e salvarlo

1. In AWS CLI, esegui il comando seguente per creare la policy IAM per l'esecuzione dell'operazione Amazon `Query` Kendra.

   ```
   aws iam create-policy \
       --policy-name query-policy-name \
       --policy-document file://KendraQueryPolicy.json
   ```

1. Allega la policy al ruolo IAM che stai utilizzando per chiamare l'`Query`operazione.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/query-policy-name
       --role-name role-name
   ```

Puoi scegliere di aggiornare il ruolo collegato al servizio Amazon Lex o di utilizzare un ruolo che hai creato quando crei il ruolo `AMAZON.KendraSearchIntent` per il tuo bot. La procedura seguente mostra come scegliere il ruolo IAM da utilizzare.

**Per specificare il ruolo di runtime per AMAZON. KendraSearchIntent**

1. Accedi a Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegliere il bot a cui si desidera aggiungere `AMAZON.KendraSearchIntent`.

1. Scegliete il segno più (\$1) accanto a **Intenti**.

1. In **Aggiungi intento**, scegliere **Cerca intenti esistenti**.

1. In **Intenti di ricerca**, immettere **AMAZON.KendraSearchIntent** e quindi scegliere **Aggiungi**.

1. In **Copia intento integrato**, immettere un nome per l'intento, ad esempio **KendraSearchIntent**, quindi scegliere **Aggiungi**.

1. Aprire la sezione **Query Amazon Kendra**.

1. In **Ruolo IAM**, scegliere una delle seguenti opzioni:
   + **Per aggiornare il ruolo collegato al servizio Amazon Lex per consentire al bot di interrogare gli indici Amazon Kendra, scegli Aggiungi autorizzazioni Amazon Kendra.**
   + Per utilizzare un ruolo autorizzato a chiamare l'operazione Amazon `Query` Kendra, **scegli Usa** un ruolo esistente.

## Utilizzo degli attributi di richiesta e di sessione come filtri
<a name="kendra-search-filter"></a>

Per filtrare la risposta di Amazon Kendra agli elementi relativi alla conversazione corrente, utilizza gli attributi di sessione e richiesta come filtri aggiungendo `queryFilterString` il parametro quando crei il bot. Specifichi un segnaposto per l'attributo quando crei l'intento, quindi Amazon Lex V2 sostituisce un valore prima di chiamare Amazon Kendra. Per ulteriori informazioni sugli attributi di richiesta, consulta [Impostazione degli attributi di richiesta](context-mgmt-request-attribs.md). Per ulteriori informazioni sugli attributi di sessione, consulta [Impostazione degli attributi di sessione](context-mgmt-session-attribs.md).

Di seguito è riportato un esempio di `queryFilterString` parametro che utilizza una stringa per filtrare la query di Amazon Kendra.

```
"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"
```

Di seguito è riportato un esempio di `queryFilterString` parametro che utilizza un attributo di sessione chiamato `"SourceURI"` per filtrare la query di Amazon Kendra.

```
"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"
```

Di seguito è riportato un esempio di `queryFilterString` parametro che utilizza un attributo request chiamato `"DepartmentName"` per filtrare la query di Amazon Kendra.

```
"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"
```

I `AMAZON.KendraSearchInteng` filtri utilizzano lo stesso formato dei filtri di ricerca di Amazon Kendra. Per ulteriori informazioni, consulta [Utilizzo degli attributi del documento per filtrare i risultati di ricerca](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) nella guida per sviluppatori di *Amazon Kendra*.

La stringa del filtro di interrogazione utilizzata con `AMAZON.KendraSearchIntent` deve utilizzare lettere minuscole per la prima lettera di ogni filtro. Ad esempio, quanto segue è un filtro di interrogazione valido per. `AMAZON.KendraSearchIntent`

```
{
    "andAllFilters": [
        {
            "equalsTo": {
                "key": "City",
                "value": {
                    "stringValue": "Seattle"
                }
            }
        },
        {
            "equalsTo": {
                "key": "State",
                "value": {
                    "stringValue": "Washington"
                }
            }
        }
    ]
}
```

## Utilizzo della risposta di ricerca
<a name="kendra-search-response"></a>

Amazon Kendra restituisce la risposta a una ricerca nella dichiarazione di intento. `conclusion` L'intento deve avere una `conclusion` dichiarazione a meno che una funzione Lambda di adempimento non produca un messaggio di conclusione.

Amazon Kendra offre quattro tipi di risposte. 
+ `x-amz-lex:kendra-search-response-question_answer-question-<N>`— La domanda di una FAQ corrispondente alla ricerca.
+ `x-amz-lex:kendra-search-response-question_answer-answer-<N>`— La risposta di una FAQ che corrisponde alla ricerca.
+ `x-amz-lex:kendra-search-response-document-<N>`— Un estratto da un documento dell'indice correlato al testo dell'enunciato.
+ `x-amz-lex:kendra-search-response-document-link-<N>`— L'URL di un documento nell'indice correlato al testo dell'enunciato.
+ `x-amz-lex:kendra-search-response-answer-<N>`— Un estratto da un documento dell'indice che risponde alla domanda.

Le risposte vengono restituite in attributi `request`. Possono esserci fino a cinque risposte per ogni attributo, numerate da 1 a 5. Per ulteriori informazioni sulle risposte, consulta [Tipi di risposta](https://docs.aws.amazon.com/kendra/latest/dg/response-types.html) nella *Amazon Kendra* Developer Guide. 

L'istruzione `conclusion` deve avere uno o più gruppi di messaggi. Ogni gruppo di messaggi contiene uno o più messaggi. Ogni messaggio può contenere una o più variabili segnaposto che vengono sostituite da attributi di richiesta nella risposta di Amazon Kendra. Nel gruppo di messaggi deve essere presente almeno un messaggio in cui tutte le variabili del messaggio vengono sostituite dai valori degli attributi di richiesta nella risposta runtime oppure nel gruppo deve essere presente un messaggio senza variabili segnaposto. Gli attributi della richiesta sono impostati con doppie parentesi ("((" "))"). I seguenti messaggi del gruppo di messaggi corrispondono a qualsiasi risposta di Amazon Kendra:
+ «Ho trovato una domanda FAQ per te: ((x-amz-lex: kendra-search-response-question \$1answer-question-1)), e la risposta è ((: \$1answer-answer-1))» x-amz-lex kendra-search-response-question
+ «Ho trovato un estratto da un documento utile: ((: -1))» x-amz-lex kendra-search-response-document
+ «Penso che la risposta alle tue domande sia ((x-amz-lex: kendra-search-response-answer -1))»

## Utilizzo di una funzione Lambda per gestire la richiesta e la risposta
<a name="kendra-search-lambda"></a>

L'`AMAZON.KendraSearchIntent`intento può utilizzare il tuo hook di codice di dialogo e l'hook del codice di adempimento per gestire la richiesta ad Amazon Kendra e la risposta. Usa la funzione Dialog Code Hook Lambda quando desideri modificare la query che invii ad Amazon Kendra e la funzione Fulfillment code hook Lambda quando desideri modificare la risposta.

### Creazione di una query con l'hook del codice di dialogo
<a name="kendra-search-lambda-dialog"></a>

Puoi utilizzare l'hook di codice di dialogo per creare una query da inviare ad Amazon Kendra. L'utilizzo dell'hook del codice di dialogo è facoltativo. Se non specifichi un hook di codice di dialogo, Amazon Lex crea una query dall'enunciato dell'utente e utilizza `queryFilterString` quello che hai fornito quando hai configurato l'intento, se ne hai fornito uno.

Puoi utilizzare due campi nella risposta del codice hook di dialogo per modificare la richiesta ad Amazon Kendra:
+ `kendraQueryFilterString`— Usa questa stringa per specificare i filtri degli attributi per la richiesta Amazon Kendra. È possibile filtrare la query utilizzando uno qualsiasi dei campi di indice definiti nell'indice. Per la struttura della stringa di filtro, consulta [Using document attributes to filter query](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) nella *Amazon Kendra* Developer Guide. Se la stringa del filtro specificata non è valida, si otterrà un'eccezione `InvalidLambdaResponseException`. La stringa `kendraQueryFilterString` sovrascrive qualsiasi stringa di query specificata in `queryFilterString` configurato per l'intento.
+ `kendraQueryRequestPayload`— Usa questa stringa per specificare una query Amazon Kendra. La tua query può utilizzare una qualsiasi delle funzionalità di Amazon Kendra. Se non si specifica una query valida, si ottiene un'eccezione `InvalidLambdaResponseException`. Per ulteriori informazioni, consulta la sezione [Query](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) nella *Amazon Kendra* Developer Guide.

Dopo aver creato il filtro o la stringa di query, invii la risposta ad Amazon Lex con il `dialogAction` campo della risposta impostato su`delegate`. Amazon Lex invia la query ad Amazon Kendra e quindi restituisce la risposta alla query all'hook del codice di adempimento.

### Utilizzo dell'hook del codice di adempimento per la risposta
<a name="kendra-search-lambda-fulfillment"></a>

Dopo che Amazon Lex invia una query ad Amazon Kendra, la risposta alla query viene restituita alla funzione Lambda di `AMAZON.KendraSearchIntent` adempimento. L'evento di input del code hook contiene la risposta completa di Amazon Kendra. I dati della query hanno la stessa struttura di quelli restituiti dall'operazione Amazon `Query` Kendra. Per ulteriori informazioni, consulta la [sintassi della risposta alle query](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax) nella *Amazon Kendra Developer Guide*.

L'hook del codice di adempimento è facoltativo. Se non ne esiste uno o se il code hook non restituisce un messaggio nella risposta, Amazon Lex utilizza l'`conclusion`istruzione per le risposte.

# Esempio: creazione di un FAQ Bot per un indice Amazon Kendra
<a name="faq-bot-kendra-search"></a>

Questo esempio crea un bot Amazon Lex che utilizza un indice Amazon Kendra per fornire risposte alle domande degli utenti. Il bot di domande frequenti gestisce la finestra di dialogo per l'utente. Esso utilizza l'intento `AMAZON.KendraSearchIntent` per eseguire query nell'indice e presentare la risposta all'utente. Per creare il bot: 

1. Creare un bot con cui i clienti interagiranno per ottenere risposte dal bot.

1. Creare un intento personalizzato. Il bot richiede almeno un intento con almeno una enunciazione. Questo intento consente la c reazione del bot, ma non viene usato altrimenti.

1. Aggiungi l'`KendraSearchIntent`intento al tuo bot e configuralo in modo che funzioni con il tuo indice Amazon Kendra.

1. Testa il bot ponendo domande a cui rispondono i documenti archiviati nel tuo indice Amazon Kendra.

Prima di poter utilizzare questo esempio, devi creare un indice Amazon Kendra. Per ulteriori informazioni, consulta [Guida introduttiva a un bucket S3 (console)](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html) nella *Amazon Kendra* Developer Guide.

**Per creare un bot di domande frequenti**

1. Accedi a Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Nel riquadro di navigazione, scegliere **Bot**. 

1. Scegli **Create** (Crea).

1. Seleziona **Custom bot (Bot personalizzato)**. Configurare il bot come segue:
   + **Nome del bot**: assegna al bot un nome che ne indichi lo scopo, ad esempio**KendraTestBot**.
   + **Emetti voce**: scegli **Nessuno**.
   + **Timeout della sessione**: Invio**5**.
   + **Analisi del sentimento****: scegli No.**
   + **COPPA** **— Scegli No.**
   + **Archiviazione degli enunciati utente**: scegli **Non** archiviare.

1. Scegli **Create** (Crea).

Per creare correttamente un bot, è necessario creare almeno un intento con almeno un enunciazione di esempio. Questo intento è necessario per creare il tuo bot Amazon Lex, ma non viene utilizzato per la risposta alle domande frequenti. L'enunciazione per l'intento non deve essere applicata a nessuna delle domande poste dal cliente.

**Per creare l'intento richiesto**

1. Nella pagina **Nozioni di base sul bot** scegli **Crea intento**.

1. Per **Aggiungi intento**, scegli **Crea intento**.

1. Nella finestra di dialogo **Crea intento** assegna un nome all'intento, ad esempio **RequiredIntent**.

1. Per **Enunciazioni di esempio**, digitare un'enunciazione, ad esempio **Required utterance**.

1. Scegliere **Salva intento**.

Ora, crea l'intento di cercare un indice Amazon Kendra e i messaggi di risposta che dovrebbe restituire.

**Per creare un AMAZON. KendraSearchIntent messaggio di intento e risposta**

1. Nel riquadro di navigazione scegliere il segno più (\$1) accanto a **Intenti**.

1. Per **Aggiungi intento**, scegliere **Cerca intenti esistenti**.

1. Nella casella **Intenti di ricerca**, inserisci**AMAZON.KendraSearchIntent**, quindi selezionalo dall'elenco.

1. Per **Copia intento integrato**, assegnare un nome all'intento, ad esempio **KendraSearchIntent**, quindi scegliere **Aggiungi**. 

1. Nell'editor degli intenti, scegli **Query Amazon Kendra** per aprire le opzioni delle query.

1. Dal menu **Indice Amazon Kendra** scegli l'indice che desideri venga ricercato dall'intento.

1. Nella sezione **Risposta** aggiungere i seguenti tre messaggi:

   ```
   I found a FAQ question for you: ((x-amz-lex:kendra-search-response-question_answer-question-1)) and the answer is ((x-amz-lex:kendra-search-response-question_answer-answer-1)).
   I found an excerpt from a helpful document: ((x-amz-lex:kendra-search-response-document-1)).
   I think the answer to your questions is ((x-amz-lex:kendra-search-response-answer-1)).
   ```

1. Selezionare **Salva intento**, quindi **Crea** per creare il bot.

Infine, usa la finestra di test della console per testare le risposte dal bot. Le domande dovrebbero trovarsi nel dominio supportato dall'indice.

**Per testare il bot di domande frequenti**

1. Nella finestra di test della console, digitare una domanda per l'indice.

1. Verificare la risposta nella sezione delle risposte della finestra di test.

1. Per reimpostare la finestra di test per un'altra domanda, scegli **Cancella cronologia chat**.

# AMAZON.PauseIntent
<a name="built-in-intent-pause"></a>

Risponde a parole e frasi che consentono all'utente di mettere in pausa un'interazione con un bot in modo da poterla riprendere in un secondo momento. La funzione o l'applicazione Lambda deve salvare i dati sugli intenti nelle variabili di sessione oppure è necessario utilizzare l'[GetSession](API_runtime_GetSession.md)operazione per recuperare i dati sugli intenti quando si riprende l'intento corrente.

Enunciati comuni:
+ sospensione
+ mettilo in pausa

# AMAZON.RepeatIntent
<a name="built-in-intent-repeat"></a>

Risponde a parole e frasi che consentono all'utente di ripetere il messaggio precedente. L'applicazione deve utilizzare una funzione Lambda per salvare le informazioni sull'intento precedente nelle variabili di sessione oppure è necessario utilizzare l'[GetSession](API_runtime_GetSession.md)operazione per ottenere le informazioni sull'intento precedente.

Enunciati comuni:
+ ripetere
+ ripetilo
+ ripetilo

# AMAZON.ResumeIntent
<a name="built-in-intent-resume"></a>

Risponde a parole e frasi che consentono all'utente di riprendere un intento precedentemente sospeso. La funzione o l'applicazione Lambda deve gestire le informazioni necessarie per riprendere l'intento precedente.

Enunciati comuni:
+ riprendere
+ continua
+ continua

# AMAZON.StartOverIntent
<a name="built-in-intent-start-over"></a>

Risponde a parole e frasi che consentono all'utente di interrompere l'elaborazione dell'intento corrente e ricominciare da capo. È possibile utilizzare la funzione Lambda o l'`PutSession`operazione per ottenere nuovamente il valore del primo slot.

Enunciati comuni:
+ ricominciare
+ riavviare
+ ricominciare

# AMAZON.StopIntent
<a name="built-in-intent-stop"></a>

Risponde a parole e frasi che indicano che l'utente desidera interrompere l'elaborazione dell'intento corrente e terminare l'interazione con un bot. La funzione o l'applicazione Lambda dovrebbe cancellare tutti gli attributi e i valori del tipo di slot esistenti e quindi terminare l'interazione.

Enunciati comuni:
+ stop
+ off
+ zitto

# Tipi di slot integrati
<a name="howitworks-builtins-slots"></a>

Amazon Lex supporta tipi di slot integrati che definiscono il modo in cui i dati nello slot vengono riconosciuti e gestiti. Puoi creare slot di questi tipi nei tuoi intenti. In questo modo, si elimina la necessità di creare valori di enumerazione per dati di slot utilizzati più frequentemente come data, ora e posizione. I tipi di slot integrati non hanno versioni. 


| Tipo di slot | Breve descrizione | Impostazioni locali supportate | 
| --- | --- | --- | 
| [Amazon.airport](built-in-slot-airport.md) | Riconosce le parole che rappresentano un aeroporto. | Tutte le impostazioni locali | 
| [AMAZON. AlphaNumeric](built-in-slot-alphanumeric.md) | Riconosce parole costituite da lettere e numeri. | Tutte le versioni locali tranne il coreano (ko-KR) | 
| [Amazon.city](built-in-slot-city.md) | Riconosce le parole che rappresentano una città. | Tutte le località | 
| [Amazon.paese](built-in-slot-country.md) | Riconosce le parole che rappresentano un paese. | Tutte le località | 
| [AMAZON.DATE](built-in-slot-date.md) | Riconosce le parole che rappresentano una data e le converte in un formato standard. | Tutte le versioni locali | 
| [AMAZON.DURATION](built-in-slot-duration.md) | Riconosce le parole che rappresentano la durata e le converte in un formato standard. | Tutte le versioni locali | 
| [AMAZZONE. EmailAddress](built-in-slot-email.md) | Riconosce le parole che rappresentano un indirizzo e-mail e le converte in un indirizzo e-mail standard. | Tutte le impostazioni locali | 
| [AMAZON. FirstName](built-in-slot-first-name.md) | Riconosce le parole che rappresentano un nome. | Tutte le impostazioni locali | 
| [AMAZZONE. LastName](built-in-slot-last-name.md) | Riconosce le parole che rappresentano un cognome. | Tutte le impostazioni locali | 
| [AMAZON.NUMBER](built-in-slot-number.md) | Riconosce le parole numeriche e le converte in cifre. | Tutte le impostazioni locali | 
| [AMAZON.Percentage](built-in-slot-percent.md) | Riconosce le parole che rappresentano una percentuale e le converte in un numero e un segno di percentuale (%). | Tutte le impostazioni locali | 
| [AMAZZONE. PhoneNumber](built-in-slot-phone.md) | Riconosce le parole che rappresentano un numero di telefono e le converte in una stringa numerica. | Tutte le impostazioni locali | 
| [AMAZZONE. SpeedUnit](built-in-slot-speed.md) | Riconosce le parole che rappresentano un'unità di velocità e le converte in un'abbreviazione standard. | Inglese (Stati Uniti) (en-US) | 
| [Amazon.state](built-in-slot-state.md) | Riconosce le parole che rappresentano uno stato. | Tutte le impostazioni locali | 
| [AMAZZONE. StreetName](built-in-slot-street-name.md) | Riconosce le parole che rappresentano il nome di una strada. | Tutte le lingue tranne l'inglese (USA) (en-US) | 
| [AMAZON.TIME](built-in-slot-time.md) | Riconosce le parole che indicano l'ora e le converte in un formato orario. | Tutte le impostazioni locali | 
| [AMAZON. WeightUnit](built-in-slot-weight.md) | Riconosce le parole che rappresentano un'unità di peso e le converte in un'abbreviazione standard  | Inglese (Stati Uniti) (en-US) | 

**Nota**  
Per le impostazioni locali in inglese (USA) (en-US), Amazon Lex supporta i tipi di slot dell'Alexa Skill Kit. Per un elenco dei tipi di slot integrati, consultare la sezione di [riferimento ai tipi di slot](https://developer.amazon.com/docs/custom-skills/slot-type-reference.html) nella documentazione dell'Alexa Skills Kit.   
Amazon Lex non supporta `AMAZON.LITERAL` i tipi di slot `AMAZON.SearchQuery` integrati. 

# Amazon.airport
<a name="built-in-slot-airport"></a>

Fornisce un elenco di aeroporti. Gli esempi includono:
+ Aeroporto internazionale John F. Kennedy
+ Aeroporto di Melbourne

# AMAZON. AlphaNumeric
<a name="built-in-slot-alphanumeric"></a>

Riconosce stringhe costituite da lettere e numeri, ad esempio **APQ123**.

Questo tipo di slot non è disponibile nella versione locale coreana (ko-KR).

È possibile utilizzare il tipo di slot `AMAZON.AlphaNumeric` per stringhe che contengono: 
+ Caratteri alfabetici, come **ABC**
+ Caratteri numerici, come **123**
+ Una combinazione di caratteri alfanumerici, come **ABC123**

È possibile aggiungere un'espressione regolare al tipo di slot `AMAZON.AlphaNumeric` per convalidare i valori inseriti per lo slot. Ad esempio, è possibile utilizzare un'espressione regolare per convalidare:
+ Codici postali del Regno Unito o del Canada
+ Numeri della patente di guida
+ Numeri di identificazione del veicolo

Usa un'espressione regolare standard. Amazon Lex supporta i seguenti caratteri nell'espressione regolare:
+ A-Z, a-z
+ 0-9

Amazon Lex supporta anche i caratteri Unicode nelle espressioni regolari. La forma è `\uUnicode`. Utilizzare quattro cifre per rappresentare i caratteri Unicode. Ad esempio, `[\u0041-\u005A]` è uguale a [A-Z].

I seguenti operatori di espressioni regolari non sono supportati:
+ Ripetitori infiniti: \$1, \$1 o \$1x,\$1 senza limite superiore.
+ Wild card (.)

La lunghezza massima dell'espressione regolare è di 300 caratteri. La lunghezza massima di una stringa memorizzata in AMAZON. AlphaNumeric il tipo di slot che utilizza un'espressione regolare è di 30 caratteri.

Di seguito sono riportate alcune espressioni regolari di esempio.
+ Stringhe alfanumeriche, ad esempio **APQ123** o **APQ1**: `[A-Z]{3}[0-9]{1,3}` o un più vincolate `[A-DP-T]{3} [1-5]{1,3}`
+ Formato US Postal Service Priority Mail International, quali **CP123456789US**: `CP[0-9]{9}US`
+ Numeri di routing bancari, quali **123456789**: `[0-9]{9}`

Per impostare l'espressione regolare per un tipo di slot, utilizzare la console o l'operazione [PutSlotType](API_PutSlotType.md). L'espressione regolare viene convalidata quando si salva il tipo di slot. Se l'espressione non è valida, Amazon Lex restituisce un messaggio di errore.

Quando usi un'espressione regolare in un tipo di slot, Amazon Lex verifica l'input degli slot di quel tipo rispetto all'espressione regolare. Se l'input corrisponde all'espressione, il valore viene accettato per lo slot. Se l'input non corrisponde, Amazon Lex richiede all'utente di ripetere l'input. 

# Amazon.city
<a name="built-in-slot-city"></a>

Fornisce un elenco di città locali e mondiali. Il tipo di slot riconosce le varianti più comuni dei nomi delle città. Amazon Lex non converte da una variante a un nome ufficiale.

Esempi:
+ New York
+ Reykjavik
+ Tokyo
+ Versailles

# Amazon.paese
<a name="built-in-slot-country"></a>

I nomi dei paesi di tutto il mondo. Esempi:
+ Australia
+ Germania
+ Giappone
+ Stati Uniti
+ Uruguay

# AMAZON.DATE
<a name="built-in-slot-date"></a>

Converte le parole che rappresentano date in un formato di data.

La data viene fornita secondo le vostre intenzioni nel formato di data ISO-8601. La data di ricezione dell'intento nello slot può variare a seconda della frase specifica pronunciata dall'utente.
+ Gli enunciati che corrispondono a una data specifica, ad esempio «oggi», «ora» o «venticinque novembre», vengono convertiti in una data completa:. `2020-11-25` L'impostazione predefinita è data uguale *o successiva alla data corrente*.
+ Gli enunciati che corrispondono a una settimana specifica, ad esempio «questa settimana» o «settimana prossima», vengono convertiti nella data del primo giorno della settimana. Nel formato ISO-8601, la settimana inizia il lunedì e termina la domenica. Ad esempio, se oggi è il 25-11-2020, «settimana prossima» viene convertito in. `2020-11-30`
+ Gli enunciati che corrispondono a un mese, ma non a un giorno specifico, ad esempio «mese successivo», vengono convertiti nell'ultimo giorno del mese. Ad esempio, se oggi è il 25/11/2020, il termine «mese prossimo» verrà convertito in. `2020-12-31`
+ Gli enunciati che corrispondono a un anno, ma non a un mese o giorno specifico, ad esempio «anno successivo», vengono convertiti nell'ultimo giorno dell'anno successivo. Ad esempio, se oggi è il 25/11/2020, «l'anno prossimo» verrà convertito in. `2021-12-31`

# AMAZON.DURATION
<a name="built-in-slot-duration"></a>

Converte le parole che indicano la durata in una durata numerica.

La durata viene risolta in un formato basato sul formato di durata [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Durations),. `PnYnMnWnDTnHnMnS` `P`indica che si tratta di una durata, che `n` è un valore numerico e la lettera maiuscola che segue `n` è l'elemento specifico di data o ora. Ad esempio, `P3D` significa 3 giorni. A `T` viene utilizzato per indicare che i valori rimanenti rappresentano elementi temporali anziché elementi di data.

Esempi:
+ «dieci minuti»: `PT10M`
+ «cinque ore»: `PT5H`
+ «tre giorni»: `P3D`
+ «quarantacinque secondi»: `PT45S`
+ «otto settimane»: `P8W`
+ «sette anni»: `P7Y`
+ «cinque ore e dieci minuti»: `PT5H10M`
+ «due anni tre ore e dieci minuti»: `P2YT3H10M`

# AMAZZONE. EmailAddress
<a name="built-in-slot-email"></a>

Riconosce parole che rappresentano un indirizzo e-mail fornito come nomeutente@dominio. Gli indirizzi possono includere i seguenti caratteri speciali in un nome utente: sottolineatura (\$1), trattino (-), punto (.) e il segno più (\$1).

# AMAZON. FirstName
<a name="built-in-slot-first-name"></a>

Nomi di battesimo comunemente usati. Questo tipo di slot riconosce sia i nomi formali che i soprannomi informali. Il nome inviato all'intento è il valore inviato dall'utente. Amazon Lex non esegue la conversione dal nickname al nome formale.

Per i nomi che suonano allo stesso modo ma sono scritti in modo diverso, Amazon Lex invia alle tue intenzioni un unico modulo comune.

Nella lingua inglese (USA) (en-US), usa il nome dello slot Amazon.US\$1first\$1name.

Esempi:
+ Emilia
+ John
+ Sofia

# AMAZZONE. LastName
<a name="built-in-slot-last-name"></a>

Cognomi di uso comune. Per i nomi che hanno lo stesso suono e che vengono scritti in modo diverso, Amazon Lex invia al tuo intento un'unica forma comune.

Nella lingua inglese (USA) (en-US), usa il nome dello slot Amazon.US\$1last\$1name.

Esempi:
+ Brosky
+ Dasher
+ Evers
+ Parres
+ Welt

# AMAZON.NUMBER
<a name="built-in-slot-number"></a>

Converte le parole o i numeri che esprimono un numero in cifre, compresi i numeri decimali. La tabella seguente mostra come il tipo di slot `AMAZON.NUMBER` acquisisce parole numeriche.


| Input | Risposta | 
| --- | --- | 
| centoventitre punto quattro cinque | 123.45 | 
| centoventitre punto quattro cinque | 123.45 | 
| punto quattro due | 0.42 | 
| punto quarantadue | 0.42 | 
| 232.998 | 232.998 | 
| 50 | 50 | 

# AMAZON.Percentage
<a name="built-in-slot-percent"></a>

Converte parole e simboli che rappresentano una percentuale in un valore numerico con un segno di percentuale (%).

Se l'utente immette un numero senza un segno di percentuale o le parole "percent", il valore di slot è impostato sul numero. La tabella seguente mostra come il tipo di slot `AMAZON.Percentage` acquisisce le percentuali.


| Input | Risposta | 
| --- | --- | 
| 50 per cento | 50% | 
| 0,4 percento | 0.4% | 
| 23.5% | 23.5% | 
| venticinque percento | 25% | 

# AMAZZONE. PhoneNumber
<a name="built-in-slot-phone"></a>

Converte numeri o parole che rappresentano un numero di telefono in un formato stringa senza punteggiatura come segue.


| Tipo | Description | Input | Risultato | 
| --- | --- | --- | --- | 
| Numero internazionale con un segno più (\$1) all'inizio | Numero di 11 cifre con un segno più all'inizio. | \$161 7 4445 1061 \$11 (509) 555-1212 | `+61744431061` `+15095551212` | 
| Numero internazionale senza un segno più (\$1) all'inizio | Numero a 11 cifre senza un segno più all'inizio | 1 (509) 555-1212 61 7 4445 1061 | `15095551212` `61744451061` | 
| Numero nazionale | Numero a 10 cifre senza prefisso internazionale | (03) 5115 4444 (509) 555-1212 | `0351154444` `5095551212` | 
| Numero locale | Numero di telefono a 7 cifre senza prefisso internazionale o indicativo di località | 555-1212 | 5551212 | 

# AMAZZONE. SpeedUnit
<a name="built-in-slot-speed"></a>

Converte parole che rappresentano unità di velocità in un'abbreviazione corrispondente. Ad esempio, "miles per hour" viene convertito in `mph`.

Questo tipo di slot è disponibile solo nella versione locale inglese (US) (en-US).

I seguenti esempi mostrano come il tipo di slot `AMAZON.SpeedUnit` acquisisce unità di velocità.


| Unità di velocità | Abbreviazione | 
| --- | --- | 
|  miglia orarie, mph, MPH, m/h  | mph | 
|  chilometri orari, km orari, kmph, KMPH, km/h  | kmph | 
|  metri al secondo, mps, MPS, m/s  | mps | 
| miglia nautiche orarie, nodi, nodo | nodo | 

# Amazon.state
<a name="built-in-slot-state"></a>

I nomi delle regioni geografiche e politiche all'interno dei paesi. 

Esempi:
+ Baviera
+ Prefettura di Fukushima
+ Pacifico nord-occidentale
+ Queensland
+ Galles

# AMAZZONE. StreetName
<a name="built-in-slot-street-name"></a>

I nomi delle strade all'interno di un indirizzo tipico. Ciò include solo il nome della via, non il numero civico.

Questo tipo di slot non è disponibile nella versione locale inglese (USA) (en-US).

Esempi:
+ Viale Canberra
+ Strada anteriore
+ Strada del mercato

# AMAZON.TIME
<a name="built-in-slot-time"></a>

Converte parole che rappresentano ore in valori orari. Include risoluzioni per tempi ambigui. Quando un utente inserisce un orario ambiguo, Amazon Lex utilizza l'`slotDetails`attributo di un evento Lambda per passare le risoluzioni per i tempi ambigui alla funzione Lambda. Ad esempio, se il tuo bot richiede all'utente un'ora di consegna, l'utente può rispondere dicendo "10 o'clock". Questo orario è ambiguo, in quanto può intendere le 10 di mattina o le 10 di sera. In questo caso, il valore nella `slots` mappa è `null` e l'`slotDetails`entità contiene le due possibili risoluzioni dell'ora. Amazon Lex inserisce quanto segue nella funzione Lambda:

```
"slots": {
   "deliveryTime": null
},
"slotDetails": {
   "deliveryTime": {
      "resolutions": [
         {
            "value": "10:00"
         },
         {
            "value": "22:00"
         }
      ]
   }
}
```

Quando l'utente risponde con un orario inequivocabile, Amazon Lex invia l'ora alla funzione Lambda nell'attributo `slots` dell'evento Lambda e l'attributo è vuoto. `slotDetails` Ad esempio, se l'utente risponde alla richiesta di un orario di consegna con "22:00», Amazon Lex inserisce quanto segue nella funzione Lambda:

```
"slots": {
   "deliveryTime": "22:00"
}
```

Per ulteriori informazioni sui dati inviati da Amazon Lex a una funzione Lambda, consulta. [Formato dell'evento di input](lambda-input-response-format.md#using-lambda-input-event-format)

# AMAZON. WeightUnit
<a name="built-in-slot-weight"></a>

Converte parole che rappresentano un'unità di peso nell'abbreviazione corrispondente. Ad esempio, "kilogram" viene convertito in `kg`. 

Questo tipo di slot è disponibile solo nella versione locale inglese (US) (en-US).

Gli esempi seguenti mostrano come il tipo di slot `AMAZON.WeightUnit` acquisisce unità di peso:


| Unità di peso | Abbreviazione | 
| --- | --- | 
| chilogrammi, chili, kgs, KGS | kg | 
| grammi, gms, gm, GMS, g | g | 
| milligrammi, mg, mgs | mg | 
| libbre, lbs, LBS | lbs | 
| once, oz, OZ | oz | 
| tonnellata, t | t | 
| chilotonnellata, kt | kt | 

# Tipi di slot personalizzati
<a name="howitworks-custom-slots"></a>

Per ogni intento, puoi specificare i parametri che indicano le informazioni necessarie all'intento per adempiere alla richiesta dell'utente. Questi parametri o slot sono di diversi tipi. Un *tipo di slot* è un elenco di valori che Amazon Lex utilizza per addestrare il modello di apprendimento automatico a riconoscere i valori di uno slot. Ad esempio, puoi definire un tipo di slot denominato "`Genres.`" Ogni valore nel tipo di slot è il nome di un genere, "commedia", "avventura", "documentario", ecc. Puoi definire un sinonimo per un valore del tipo di slot. Ad esempio, puoi definire i sinonimi "divertente" e "spiritoso" per il valore "commedia". 

Puoi configurare il tipo di slot per limitare la risoluzione ai valori di slot. I valori di slot saranno utilizzati come un'enumerazione e il valore immesso dall'utente determinerà il valore di slot solo se è uguale a uno dei valori di slot o un sinonimo. Un sinonimo determina il valore di slot corrispondente. Ad esempio, se l'utente immette "divertente" determinerà il valore di slot "commedia".

In alternativa, puoi configurare il tipo di slot per espandere i valori. I valori di slot saranno utilizzati come dati di addestramento e lo slot determina il valore fornito dall'utente se è simile ai valori e sinonimi dello slot. Questo è il comportamento che segue di default.

Amazon Lex mantiene un elenco di possibili risoluzioni per uno slot. Ogni voce dell'elenco fornisce un *valore di risoluzione* che Amazon Lex ha riconosciuto come possibilità aggiuntive per lo slot. Un valore di risoluzione è un best effort per la corrispondenza del valore di slot. L'elenco contiene fino a cinque valori.

Quando un valore immesso dall'utente è un sinonimo, la prima voce nell'elenco dei valori di risoluzione è il valore del tipo di slot. Ad esempio, se l'utente immette "divertente" il campo `slots` contiene "divertente" e la prima voce nel campo `slotDetails` è "commedia". Puoi configurare il `valueSelectionStrategy` quando crei o aggiorni un tipo di slot con l'operazione [PutSlotType](API_PutSlotType.md) in modo che il valore di slot venga compilato con il primo valore dell'elenco di risoluzione.

 Se si utilizza una funzione Lambda, l'evento di input della funzione include un elenco di risoluzioni chiamato. `slotDetails` L'esempio seguente mostra la sezione relativa allo slot e ai dettagli dello slot dell'input di una funzione Lambda:

```
   "slots": {
      "MovieGenre": "funny";
   },
   "slotDetails": {
      "Movie": {
         "resolutions": [
            "value": "comedy"
         ]
      }
   }
```

Per ogni tipo di slot, si possono definire un massimo di 10.000 valori e sinonimi. Ogni bot può includere un numero totale di 50.000 sinonimi e valori di tipi di slot. Ad esempio, è possibile avere 5 tipi di slot, ognuno con 5.000 valori e 5.000 sinonimi, oppure 10 slot, ognuno con 2.500 valori e 2.500 sinonimi. Se si superano questi limiti, si riceverà un `LimitExceededException` richiamando l'operazione [PutBot](API_PutBot.md).

# Offuscamento degli slot
<a name="how-obfuscate"></a>

Amazon Lex ti consente di offuscare o nascondere il contenuto degli slot in modo che il contenuto non sia visibile. Per proteggere i dati sensibili acquisiti come valori degli slot, puoi abilitare l'offuscamento degli slot per mascherare tali valori nei registri delle conversazioni.

Quando scegli di offuscare i valori degli slot, Amazon Lex sostituisce il valore dello slot con il nome dello slot nei log delle conversazioni. Per uno slot chiamato `full_name`, il valore dello slot verrebbe offuscato nel seguente modo:

```
Before obfuscation:
    My name is John Stiles
After obfuscation:
    My name is {full_name}
```

Se un enunciato contiene caratteri tra parentesi quadre (\$1\$1) Amazon Lex elimina i caratteri tra parentesi con due barre rovesciate (\$1\$1). Ad esempio, il testo `{John Stiles}` viene offuscato come segue:

```
Before obfuscation:
    My name is {John Stiles}
After obfuscation:
    My name is \\{{full_name}\\}
```

I valori degli slot vengono offuscati nei log delle conversazioni. I valori degli slot sono ancora disponibili nella risposta delle `PostText` operazioni `PostContent` e i valori degli slot sono disponibili per le funzioni Lambda di convalida e adempimento. Se si utilizzano valori di slot nei prompt o nelle risposte, tali valori non vengono offuscati nei log delle conversazioni.

Nel primo turno di una conversazione, Amazon Lex offusca i valori degli slot se riconosce uno slot e un valore di slot nell'enunciato. Se non viene riconosciuto alcun valore di slot, Amazon Lex non offusca l'enunciato.

Nel secondo turno e nelle fasi successive, Amazon Lex conosce lo slot da attivare e se il valore dello slot deve essere offuscato. Se Amazon Lex riconosce il valore dello slot, il valore viene offuscato. Se Amazon Lex non riconosce un valore, l'intera espressione viene offuscata. Qualsiasi valore di slot in enunciazioni perse non verrà offuscato.

Amazon Lex, inoltre, non offusca i valori degli slot archiviati negli attributi di richiesta o di sessione. Se si archiviano valori di slot che devono essere offuscati come attributo, è necessario crittografare o nascondere in altro modo il valore.

Amazon Lex non offusca il valore dello slot nell'audio. Offusca il valore dello slot nella trascrizione audio.

Non è necessario offuscare tutti gli slot in un bot. Puoi scegliere quali slot offuscare utilizzando la console o utilizzando l'API Amazon Lex. Nella console, selezionare **Slot obfuscation (Offuscamento dello slot)** nelle impostazioni di uno slot. Se si utilizza l'API, impostare il campo `obfuscationSetting` dello slot su `DEFAULT_OBFUSCATION` quando si invoca l'operazione [PutIntent](API_PutIntent.md).

# Analisi delle emozioni
<a name="sentiment-analysis"></a>

È possibile utilizzare l'analisi del sentiment per determinare i sentimenti espressi in un enunciato utente. Con le informazioni sulle emozioni è possibile gestire il flusso di conversazione o eseguire l'analisi post-chiamata. Ad esempio, se l'emozione dell’utente è negativa, è possibile creare un flusso per passare una conversazione a un agente umano.

Amazon Lex si integra con Amazon Comprehend per rilevare le opinioni degli utenti. La risposta di Amazon Comprehend indica se il sentimento generale del testo è positivo, neutro, negativo o misto. La risposta contiene l'emozione più probabile per l'enunciato utente e i punteggi per ciascuna delle categorie di emozioni. Il punteggio rappresenta la probabilità che l'emozione sia stata rilevata correttamente.

 Puoi abilitare l'analisi del sentiment per un bot utilizzando la console o l'API Amazon Lex. Sulla console Amazon Lex, scegli la scheda **Impostazioni** per il tuo bot, quindi imposta l'opzione **Sentiment Analysis su** **Sì**. Se si utilizza l'API, chiamare l'operazione [PutBot](API_PutBot.md) con il campo `detectSentiment` impostato su `true`. 

Quando l'analisi del sentiment è abilitata, la risposta delle operazioni [PostContent](API_runtime_PostContent.md) e [PostText](API_runtime_PostText.md) restituisce un campo chiamato `sentimentResponse` nella risposta bot con altri metadati. Il campo `sentimentResponse` ha due campi, `SentimentLabel` e `SentimentScore`, che contengono il risultato dell'analisi dell'emozione. Se si utilizza una funzione Lambda, il `sentimentResponse` campo viene incluso nei dati dell'evento inviati alla funzione.

Di seguito è riportato un esempio del campo `sentimentResponse` restituito come parte della risposta `PostText` o `PostContent`. Il campo `SentimentScore` è una stringa che contiene i punteggi per la risposta.

```
{
    "SentimentScore": 
        "{
        Mixed: 0.030585512690246105,
        Positive: 0.94992071056365967,
        Neutral: 0.0141543131828308,
        Negative: 0.00893945890665054
        }",
    "SentimentLabel": "POSITIVE"
}
```

Amazon Lex chiama Amazon Comprehend per tuo conto per determinare il sentimento in ogni enunciato elaborato dal bot. Abilitando l'analisi del sentiment, accetti i termini e gli accordi di servizio per Amazon Comprehend. Per ulteriori informazioni sui prezzi di Amazon Comprehend, consulta la pagina dei prezzi di [Amazon Comprehend](https://aws.amazon.com/comprehend/pricing/).

*Per ulteriori informazioni su come funziona l'analisi del sentiment di Amazon Comprehend, consulta [Determinate the Sentiment](https://docs.aws.amazon.com/comprehend/latest/dg/how-sentiment.html) nella Amazon Comprehend Developer Guide.*

# Etichettatura delle risorse Amazon Lex
<a name="how-it-works-tags"></a>

*Per aiutarti a gestire i bot, gli alias dei bot e i canali bot di Amazon Lex, puoi assegnare metadati a ciascuna risorsa sotto forma di tag.* Un tag è un'etichetta che assegni a una risorsa. AWS Ciascun tag è formato da una chiave e da un valore,

I tag ti consentono di categorizzare le tue risorse AWS in modi diversi, ad esempio, per scopo, proprietario o applicazione. I tag ti aiutano a:
+ Identifica e organizza le tue AWS risorse. Molte AWS risorse supportano l'etichettatura, quindi puoi assegnare lo stesso tag a risorse di servizi diversi per indicare che le risorse sono correlate. Ad esempio, puoi taggare un bot e le funzioni Lambda che utilizza con lo stesso tag.
+ Assegnare i costi. Puoi attivare i tag nella Gestione dei costi e fatturazione AWS dashboard. AWS utilizza i tag per classificare i costi e fornirti un rapporto mensile sull'allocazione dei costi. Per Amazon Lex, puoi allocare i costi per ogni alias utilizzando tag specifici per l'alias, ad eccezione dell'alias. `$LATEST` Allochi i costi per l'`$LATEST`alias utilizzando i tag per il tuo bot Amazon Lex. Per ulteriori informazioni, consulta la pagina sull'[utilizzo dei tag per l'allocazione dei costi](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) nella *Guida per l'utente di Gestione dei costi e fatturazione AWS *.
+ Controllare l'accesso alle risorse. Puoi utilizzare i tag per Amazon Lex per creare policy per controllare l'accesso alle risorse Amazon Lex. Queste policy possono essere collegate a un ruolo IAM o a un utente per abilitare il controllo dell'accesso basato su tag. Per ulteriori informazioni, consulta [ABAC con Amazon Lex](security_iam_service-with-iam.md#security_iam_service-with-iam-tags). Per visualizzare una policy basata sulle identità di esempio per limitare l'accesso a una risorsa basata su tag su tale risorsa, consulta [Usa un tag per accedere a una risorsa](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-tag). 

Puoi lavorare con i tag utilizzando l' Console di gestione AWS AWS Command Line Interface, la o l'API Amazon Lex.



## Tagging delle risorse
<a name="tagging-resources"></a>

Se utilizzi la console Amazon Lex, puoi etichettare le risorse quando le crei oppure puoi aggiungere i tag in un secondo momento. È inoltre possibile utilizzare la console per aggiornare o rimuovere i tag esistenti. 

Se utilizzi l'API Amazon Lex AWS CLI o l'API Amazon Lex, utilizzi le seguenti operazioni per gestire i tag per le tue risorse:
+  [ListTagsForResource](API_ListTagsForResource.md)— visualizza i tag associati a una risorsa.
+ [PutBot](API_PutBot.md)e [PutBotAlias](API_PutBotAlias.md) — applica i tag quando crei un bot o un alias di bot.
+  [TagResource](API_TagResource.md)— aggiungere e modificare tag su una risorsa esistente.
+  [UntagResource](API_UntagResource.md)— rimuovere i tag da una risorsa. 

Le seguenti risorse in Amazon Lex supportano l'etichettatura:
+ Bots: usa un Amazon Resource Name (ARN) simile al seguente:
  + `arn:${partition}:lex:${region}:${account}:bot:${bot-name}`
+ Alias bot: usa un ARN come il seguente:
  + `arn:${partition}:lex:${region}:${account}:bot:${bot-name}:${bot-alias}`
+ Canali bot: usa un ARN come il seguente:
  + `arn:${partition}:lex:${region}:${account}:bot-channel:${bot-name}:${bot-alias}:${channel-name}`

## Limitazioni applicate ai tag
<a name="tags-restrictions"></a>

Le seguenti restrizioni di base si applicano ai tag sulle risorse Amazon Lex:
+ Numero massimo di tag - 50
+ Lunghezza massima della chiave - 128 caratteri
+ Lunghezza massima del valore - 256 caratteri
+ Caratteri validi per chiave e valore: a—z, A—Z, 0—9, spazio e i seguenti caratteri: \$1.:/= \$1 - e @
+ Per chiavi e valori viene fatta distinzione tra maiuscole e minuscole.
+ Non utilizzare `aws:` come prefisso per le chiavi; l'utilizzo di questo prefisso è esclusivo di AWS.

# Tagging delle risorse (console)
<a name="tags-console"></a>

Puoi utilizzare la console per gestire i tag per una risorsa bot, alias bot o canale bot. Puoi aggiungere i tag quando crei una risorsa oppure puoi aggiungere, modificare o rimuovere tag dalle risorse esistenti.

**Per aggiungere un tag quando si crea un bot**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegliere **Create (Crea)** per creare un nuovo bot.

1. Nella parte inferiore della pagina **Create your bot (Crea il tuo bot)** scegliere **Tags (Tag)**.

1. Scegliere **Add tag (Aggiungi tag)** e aggiungere uno o più tag al bot. Puoi aggiungere fino a 50 tag.

**Per aggiungere un tag quando si crea un alias bot**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegliere il bot a cui si desidera aggiungere l'alias bot.

1. Seleziona **Impostazioni**.

1. Aggiungere il nome alias, scegliere la versione bot, quindi scegliere **Add tags (Aggiungi tag)**.

1. Scegliere **Add tag (Aggiungi tag)** e aggiungere uno o più tag all'alias bot. Puoi aggiungere fino a 50 tag.

**Per aggiungere un tag quando si crea un canale bot**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegliere il bot a cui si desidera aggiungere il canale bot.

1. Scegliere **Channels (Canali)** quindi scegliere il canale che si desidera aggiungere.

1. Aggiungere i dettagli per il canale bot, quindi scegliere **Tags (Tag)**.

1. Scegliere **Add tag (Aggiungi tag)** e aggiungere uno o più tag al canale bot. Puoi aggiungere fino a 50 tag.

**Per aggiungere un tag quando si importa un bot**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Scegliere **Actions (Operazioni)**, quindi **Import (Importa)**.

1. Scegliere il file zip per importare il bot.

1. Scegliere **Tags (Tag)**, quindi scegliere **Add tag (Aggiungi tag)** per aggiungere uno o più tag al bot. Puoi aggiungere fino a 50 tag.

**Per aggiungere, rimuovere o modificare un tag per un bot esistente**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dal menu a sinistra, scegliere **Bot** e selezionare il bot che si desidera modificare.

1. Scegliere **Settings (Impostazioni)** quindi dal menu a sinistra scegliere **General (Generale)**.

1. Scegliere **Tags (Tag)** e quindi aggiungere, modificare o rimuovere i tag per il bot.

**Per aggiungere, rimuovere o modificare un tag per un alias bot**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dal menu a sinistra, scegliere **Bot** e selezionare il bot che si desidera modificare.

1. Scegliere **Settings (Impostazioni)** quindi dal menu a sinistra scegliere **Aliases (Alias)**.

1. Scegliere **Manage tags (Gestisci tag)** per l'alias che si desidera modificare, quindi aggiungere, modificare o rimuovere i tag per l'alias bot.

**Per aggiungere, rimuovere o modificare un tag per un canale bot esistente**

1. Accedi Console di gestione AWS e apri la console Amazon Lex all'indirizzo [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dal menu a sinistra, scegliere **Bot** e selezionare il bot che si desidera modificare.

1. Seleziona **Channels** (Canali).

1. Scegliere **Tags (Tag)** e quindi aggiungere, modificare o rimuovere i tag per il canale bot.

# Tagging delle risorse (AWS CLI)
<a name="tags-cli"></a>

Puoi utilizzarlo AWS CLI per gestire i tag su un bot, un alias di bot o una risorsa del canale bot. Puoi aggiungere i tag quando crei un bot o un alias bot oppure puoi aggiungere, modificare o rimuovere i tag da un bot, un alias bot o un canale bot.

Tutti gli esempi sono formattati per Linux e macOS. Per utilizzare il comando in Windows, sostituisci il carattere di continuazione Linux (\$1) con un accento circonflesso (^).

**Per aggiungere un tag quando si crea un bot**
+ Il seguente `put-bot` AWS CLI comando abbreviato mostra i parametri da utilizzare per aggiungere un tag quando si crea un bot. Per creare effettivamente un bot, devi fornire altri parametri. Per ulteriori informazioni, consulta [Fase 4. Nozioni di base (AWS CLI)](gs-cli.md).

  ```
  aws lex-models put-bot \
      --tags '[{"key": "key1", "value": "value1"}, \
               {"key": "key2", "value": "value2"}]'
  ```

**Per aggiungere un tag quando si crea un alias bot**
+ Il seguente `put-bot-alias` AWS CLI comando abbreviato mostra i parametri che è necessario utilizzare per aggiungere un tag quando si crea un alias bot. Per creare effettivamente un alias bot, devi fornire altri parametri. Per ulteriori informazioni, consulta [Esercizio 5. Creazione di un alias (AWS CLI)](gs-cli-create-alias.md).

  ```
  aws lex-models put-bot \
      --tags '[{"key": "key1", "value": "value1"}, \
               {"key": "key2", "value": "value2"}]"
  ```

**Per elencare i tag per una risorsa**
+ Utilizzate il `list-tags-for-resource` AWS CLI comando per mostrare le risorse associate a un bot, un alias bot, un canale bot. 

  ```
  aws lex-models list-tags-for-resource \
      --resource-arn bot, bot alias, or bot channel ARN
  ```

**Per aggiungere o modificare i tag in una risorsa**
+ Utilizzate il `tag-resource` AWS CLI comando per aggiungere o modificare un bot, un alias bot o un canale bot.

  ```
  aws lex-models tag-resource \
      --resource-arn bot, bot alias, or bot channel ARN \
      --tags '[{"key": "key1", "value": "value1"}, \
               {"key": "key2", "value": "value2"}]'
  ```

**Per rimuovere i tag da una risorsa**
+ Utilizzate il `untag-resource` AWS CLI comando per rimuovere i tag da un bot, da un alias di bot o da un canale bot.

  ```
  aws lex-models untag-resource \
      --resource-arn bot, bot alias, or bot channel ARN \
      --tag-keys '["key1", "key2"]'
  ```