

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

# Esercizio 2: Creare un bot Amazon Lex personalizzato
<a name="getting-started-ex2"></a>

In questo esercizio, usi la console Amazon Lex per creare un bot personalizzato che ordina pizza (`OrderPizzaBot`). Il bot verrà configurato con l'aggiunta di un intento personalizzato (`OrderPizza`), la definizione di tipi di slot personalizzati e degli slot necessari per la realizzazione dell'ordine di una pizza (bordo della pizza, dimensioni e così via). Per ulteriori informazioni sui tipi di slot e sugli slot, consultare [Amazon Lex: come funziona](how-it-works.md).

**Topics**
+ [Fase 1: creare una funzione Lambda](gs2-prepare.md)
+ [Fase 2: creazione di un bot](gs2-create-bot.md)
+ [Fase 3: creazione e test del bot](gs2-build-and-test.md)
+ [Fase 4 (facoltativo): pulizia](gs2-clean-up.md)

# Fase 1: creare una funzione Lambda
<a name="gs2-prepare"></a>

Innanzitutto, crea una funzione Lambda che soddisfi un ordine di pizza. Specifichi questa funzione nel tuo bot Amazon Lex, che creerai nella sezione successiva.

**Come creare una funzione Lambda**



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

1. Scegli **Crea funzione**.

1. Nella pagina **Create function (Crea funzione)**, scegliere **Author from scratch (Crea da zero)**. 

   Per creare una funzione Lambda si utilizzerà il codice personalizzato fornito in questo esercizio, pertanto è necessario selezionare la funzione di creazione da zero.

   Esegui questa operazione:

   1. Digita il nome (`PizzaOrderProcessor`).

   1. Per il **Runtime (Runtime)**, scegliere la versione più recente di Node.js.

   1. Seleziona **Create new role from template(s)** (Crea nuovo ruolo da modello/i) come **Role** (Ruolo).

   1. Immetti un nuovo nome ruolo (`PizzaOrderProcessorRole`).

   1. Scegli **Crea funzione**.

1. Nella pagina function (Configura funzione) segui la procedura riportata di seguito. 

   Nella sezione **Function code** (Codice funzione) seleziona **Edit code inline** (Modifica codice in linea) e quindi copia e incolla il seguente codice funzione Node.js nella finestra. 

   ```
   'use strict';
        
   // Close dialog with the customer, reporting fulfillmentState of Failed or Fulfilled ("Thanks, your pizza will arrive in 20 minutes")
   function close(sessionAttributes, fulfillmentState, message) {
       return {
           sessionAttributes,
           dialogAction: {
               type: 'Close',
               fulfillmentState,
               message,
           },
       };
   }
    
   // --------------- Events -----------------------
    
   function dispatch(intentRequest, callback) {
       console.log(`request received for userId=${intentRequest.userId}, intentName=${intentRequest.currentIntent.name}`);
       const sessionAttributes = intentRequest.sessionAttributes;
       const slots = intentRequest.currentIntent.slots;
       const crust = slots.crust;
       const size = slots.size;
       const pizzaKind = slots.pizzaKind;
       
       callback(close(sessionAttributes, 'Fulfilled',
       {'contentType': 'PlainText', 'content': `Okay, I have ordered your ${size} ${pizzaKind} pizza on ${crust} crust`}));
       
   }
    
   // --------------- Main handler -----------------------
    
   // Route the incoming request based on intent.
   // The JSON body of the request is provided in the event slot.
   export const handler = (event, context, callback) => {
       try {
           dispatch(event,
               (response) => {
                   callback(null, response);
               });
       } catch (err) {
           callback(err);
       }
   };
   ```

1. Scegli **Save** (Salva).

## Testare la funzione Lambda utilizzando dati di evento di esempio
<a name="gs2-lambdafunction-test"></a>

Nella console, prova la funzione Lambda utilizzando dati di evento di esempio per richiamarla manualmente. 

**Per testare la funzione Lambda:**

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

1. Nella pagina della funzione **Lambda, scegli la funzione** Lambda (`PizzaOrderProcessor).`

1. Nella pagina delle funzioni, nell'elenco degli eventi di test, seleziona **Configure test events** (Configura eventi di test).

1. Nella pagina **Configure test event** (Configura evento di test) segui la procedura riportata di seguito. 

   1. Scegliere **Create new test event** (Creare nuovo evento di test).

   1. Nel campo **Event name** (Nome evento) immetti il nome per l'evento (`PizzaOrderProcessorTest`).

   1. Copia il seguente evento Amazon Lex nella finestra. 

      ```
      {
        "messageVersion": "1.0",
        "invocationSource": "FulfillmentCodeHook",
        "userId": "user-1",
        "sessionAttributes": {},
        "bot": {
          "name": "PizzaOrderingApp",
          "alias": "$LATEST",
          "version": "$LATEST"
        },
        "outputDialogMode": "Text",
        "currentIntent": {
          "name": "OrderPizza",
          "slots": {
            "size": "large",
            "pizzaKind": "meat",
            "crust": "thin"
          },
          "confirmationStatus": "None"
        }
      }
      ```

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

AWS Lambda crea il test e torni alla pagina della funzione. Scegli **Test** e Lambda eseguirà la tua funzione Lambda.

Nella casella dei risultati, seleziona **Details** (Dettagli). Il seguente output verrà visualizzato nel riquadro **Execution result** (Risultato esecuzione) della console. 

```
{
  "sessionAttributes": {},
  "dialogAction": {
    "type": "Close",
    "fulfillmentState": "Fulfilled",
    "message": {
      "contentType": "PlainText",
      "content": "Okay, I have ordered your large meat pizza on thin crust."
    }
}
```

## Fase succcessiva
<a name="gs2-next-step-create-bot"></a>

[Fase 2: creazione di un bot](gs2-create-bot.md)

# Fase 2: creazione di un bot
<a name="gs2-create-bot"></a>

In questa fase verrà creato un bot per la gestione degli ordini di pizza. 

**Topics**
+ [Creazione del bot](gs2-create-bot-create.md)
+ [Creazione di un intento](gs2-create-bot-intent.md)
+ [Creazione dei tipi di slot](gs2-create-bot-slot-types.md)
+ [Configurazione dell'intento](gs2-create-bot-configure-intent.md)
+ [Configurazione del bot](gs2-create-bot-configure-bot.md)

# Creazione del bot
<a name="gs2-create-bot-create"></a>

Crea il bot `PizzaOrderingBot` con le informazioni minime necessarie. In seguito, verrà aggiunto un intento, ovvero l'operazione che l'utente desidera eseguire.

**Per creare il 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. Crea un bot.

   1. Se si tratta della tua prima creazione di un bot, seleziona **Get Started** (Inizia). In caso contrario, seleziona **Bots**, quindi **Create** (Crea). 

   1. Nella pagina **Create your Lex bot** (Crea bot di Lex), seleziona **Custom bot** (Bot personalizzato) e fornisci le seguenti informazioni:
      + **Nome del bot**: PizzaOrderingBot 
      + **Lingua**: scegli la lingua e le impostazioni locali per il tuo bot.
      + **Output vocale**: Salli 
      + **Timeout di sessione**: 5 minuti
      + **COPPA**: scegli la risposta appropriata.
      + **Memorizzazione degli enunciati utente: scegli la risposta appropriata.**

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

      La console invia ad Amazon Lex una richiesta per creare un nuovo bot. Amazon Lex imposta la versione bot su`$LATEST`. Dopo aver creato il bot, Amazon Lex mostra la scheda Bot **Editor**, come nell'immagine seguente:  
![\[\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-20.png)
      + La versione **Latest** (Più recente) del bot appare accanto al nome del bot nella console. Le nuove risorse Amazon Lex hanno `$LATEST` come versione. Per ulteriori informazioni, consulta [Funzione Versioni multiple e alias](versioning-aliases.md).
      + Poiché non è stato creato alcun tipo di intento o di slot, nell'elenco non è visualizzato alcun tipo. 
      + **Build** (Crea) e **Publish** (Pubblica) sono attività a livello di bot. Dopo aver configurato l'intero bot, potrai scoprire ulteriori informazioni su queste attività.

## Fase succcessiva
<a name="gs2-next-step-intent"></a>

[Creazione di un intento](gs2-create-bot-intent.md)

# Creazione di un intento
<a name="gs2-create-bot-intent"></a>

A questo punto, con le informazioni minime necessarie, verrà creato l'intento `OrderPizza`, ovvero l'operazione che l'utente desidera eseguire. Verranno aggiunti i tipi di slot per l'intento e quindi configurato l'intento in un momento successivo.

**Per creare un intento**

1. Nella console Amazon Lex, scegli il segno più (\$1) accanto a **Intents**, quindi scegli **Crea nuovo intento**.

1. Nella finestra di dialogo **Create intent** (Crea intento) digita il nome dell'intento (`OrderPizza`) e quindi seleziona **Add** (Aggiungi).

La console invia una richiesta ad Amazon Lex per creare l'`OrderPizza`intento. In questo esempio si creano slot per l'intento dopo aver creato i tipi di slot.

## Fase succcessiva
<a name="gs2-next-step-slot-types"></a>

[Creazione dei tipi di slot](gs2-create-bot-slot-types.md)

# Creazione dei tipi di slot
<a name="gs2-create-bot-slot-types"></a>

A questo punto è necessario creare i tipi di slot o i valori dei parametri utilizzati dall'intento `OrderPizza`.

**Per creare i tipi di slot**

1. <a name="slotTypeStart"></a>Nel menu a sinistra, seleziona il segno più (\$1) accanto a **Slot types** (Tipi di slot).

1. Nella finestra di dialogo **Add slot type** (Aggiungi tipo di slot) aggiungi i seguenti elementi: 
   + **Slot type name** (Nome tipo di slot): Bordi
   + **Description** (Descrizione): Bordi disponibili
   + Seleziona l'opzione **Restrict to Slot values and Synonyms** (Limita a valori slot e sinonimi).
   + **Valore**: tipo**thick**. Premi il tasto tab e nel campo **Sinonimo** digita**stuffed**. Seleziona il segno più (\$1). Digita **thin** e quindi scegli di nuovo il segno più (\$1).

   La finestra di dialogo dovrebbe apparire come nell'immagine seguente:  
![\[Finestra di dialogo per la modifica del tipo di slot.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-25a.png)

1. Seleziona **Add slot to intent** (Aggiungi slot a intento).

1. <a name="slotTypeFinish"></a>Nella pagina **Intent** (Intento) seleziona **Required** (Obbligatorio). Modifica il nome dello slot da **slotOne** a **crust**. Cambia il messaggio di richiesta in **What kind of crust would you like?**

1. Ripeti [Step 1](#slotTypeStart) a [Step 4](#slotTypeFinish) utilizzando i valori della seguente tabella:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/gs2-create-bot-slot-types.html)

## Fase succcessiva
<a name="gs2-next-step-configure-intent"></a>

[Configurazione dell'intento](gs2-create-bot-configure-intent.md)

# Configurazione dell'intento
<a name="gs2-create-bot-configure-intent"></a>

Configura l'intento `OrderPizza` per soddisfare la richiesta di un utente che desidera ordinare una pizza.

**Per configurare un intento**
+ Nella pagina **OrderPizza**di configurazione, configura l'intento come segue:
  + **Esempi di enunciati**: digitate le seguenti stringhe. I nomi degli slot sono racchiusi tra parentesi graffe \$1\$1.
    + Vorrei ordinare una pizza 
    + Voglio ordinare una pizza
    + Voglio ordinare una pizza \$1pizzaKind\$1
    + Voglio ordinare una pizza \$1size\$1 \$1pizzaKind\$1 
    + Voglio ordinare una pizza \$1size\$1 con bordo 
    + È possibile ordinare una pizza?
    + È possibile ordinare una pizza \$1pizzaKind\$1?
    + È possibile ordinare una pizza \$1size\$1 \$1pizzaKind\$1?
  + **Lambda initialization and validation** (Inizializzazione e convalida Lambada): mantieni le impostazioni predefinite.
  + **Confirmation prompt** (Prompt di conferma): mantieni le impostazioni predefinite.
  + **Adempimento**: esegui le seguenti attività:
    + Scegli **AWS Lambda function (Funzione **).
    + Scegli **PizzaOrderProcessor**. 
    + Se viene visualizzata la finestra di dialogo **Aggiungi autorizzazione alla funzione Lambda**, scegliete **OK** per concedere l'autorizzazione all'`OrderPizza`intenzione di chiamare la funzione `PizzaOrderProcessor` Lambda.
    +  Lascia selezionato il valore **None** (Nessuno).

  L'intento sarà simile al seguente:  
![\[Editor degli intenti.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-70c.png)

## Fase succcessiva
<a name="gs2-next-step-configure-bot"></a>

[Configurazione del bot](gs2-create-bot-configure-bot.md)

# Configurazione del bot
<a name="gs2-create-bot-configure-bot"></a>

Configura la gestione degli errori per il bot `PizzaOrderingBot`.

1. Passa al bot `PizzaOrderingBot`. Scegliete **Editor**, quindi scegliete **Gestione degli errori**, come nell'immagine seguente:  
![\[\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-80.png)

1. Utilizza la scheda **Editor** per configurare la gestione degli errori del bot.
   + Le informazioni fornite in **Clarification Prompts(Prompt di chiarimento)** eseguono la mappatura alla configurazione del [clarificationPrompt](https://docs.aws.amazon.com/lex/latest/dg/API_PutBot.html#lex-PutBot-request-clarificationPrompt) del bot. 

     Quando Amazon Lex non è in grado di determinare l'intenzione dell'utente, il servizio restituisce una risposta con questo messaggio. 
   + Le informazioni fornite nella frase di **Hang-up (Sospensione)** eseguono la mappatura alla configurazione di [abortStatement](https://docs.aws.amazon.com/lex/latest/dg/API_PutBot.html#lex-PutBot-request-abortStatement) del bot. 

     Se il servizio non è in grado di determinare l'intenzione dell'utente dopo un determinato numero di richieste consecutive, Amazon Lex restituisce una risposta con questo messaggio.

   Mantieni le impostazioni predefinite.

## Fase succcessiva
<a name="gs2-next-step-build-and-test"></a>

[Fase 3: creazione e test del bot](gs2-build-and-test.md)

# Fase 3: creazione e test del bot
<a name="gs2-build-and-test"></a>

Assicurati che il bot funzioni creandolo ed eseguendo il test. 

**Per creare ed eseguire il test del bot**

1. Per creare il bot `PizzaOrderingBot` seleziona **Build** (Crea). 

   Amazon Lex crea un modello di apprendimento automatico per il bot. Quando esegui il test del bot, la console utilizza l'API di runtime per inviare l'input dell'utente ad Amazon Lex. Amazon Lex utilizza quindi il modello di apprendimento automatico per interpretare l'input dell'utente. 

   La creazione potrebbe richiedere un po' di tempo. 

1. Per testare il bot, nella finestra **Test Bot**, inizia a comunicare con il tuo bot Amazon Lex. 
   + Ad esempio, puoi dire o digitare quanto segue:  
![\[\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-110.png)
   + Per eseguire il test del bot, utilizza le enunciazioni di esempio configurate nell'intento `OrderPizza`. Ad esempio, quanto segue è una delle enunciazioni di esempio configurata per l'intento `PizzaOrder`: 

     ```
     I want a {size} {crust} crust {pizzaKind} pizza
     ```

     Per eseguire il test, digita quanto segue:

     ```
     I want a large thin crust cheese pizza
     ```

   Quando digiti «Voglio ordinare una pizza», Amazon Lex rileva l'intento ()`OrderPizza`. Quindi, Amazon Lex richiede informazioni sugli slot.

   Dopo aver fornito tutte le informazioni sullo slot, Amazon Lex richiama la funzione Lambda configurata per l'intento.

   La funzione Lambda restituisce un messaggio («Ok, ho ordinato il tuo...») ad Amazon Lex, che Amazon Lex ti restituisce.

## Esame della risposta
<a name="gs2-inspect-pane"></a>

Sotto la finestra della chat c'è un riquadro che consente di controllare la risposta di Amazon Lex. Il riquadro fornisce informazioni complete sullo stato del bot con modifiche dinamiche che riflettono l'interazione in corso tra l'utente il bot. Il contenuto dei riquadri mostra lo stato attuale dell'operazione.
+ **Stato della finestra di dialogo**: lo stato attuale della conversazione con l'utente. Può essere `ElicitIntent`, `ElicitSlot`, `ConfirmIntent` o `Fulfilled`. 

   
+ **Riepilogo**: mostra una visualizzazione semplificata della finestra di dialogo che mostra i valori degli slot relativi all'intento da soddisfare, in modo da poter tenere traccia del flusso di informazioni. Vengono mostrati il nome dell'intento, il numero di slot, il numero di slot popolati e un elenco di tutti gli slot e dei relativi valori associati. Guardate l'immagine seguente:  
![\[Il riquadro di ispezione del riepilogo delle risposte della console Amazon Lex.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-115.png)
+ **Dettagli**: mostra la risposta JSON non elaborata del chatbot per offrirti una visione più approfondita dell'interazione con il bot e dello stato attuale della finestra di dialogo durante il test e il debug del chatbot. Se si digita nella finestra della chat, il riquadro di ispezione mostra la risposta JSON dell'operazione [PostText](API_runtime_PostText.md). Se si utilizza la comunicazione vocale nella finestra della chat, il riquadro di ispezione mostra le intestazioni della risposta dall'operazione [PostContent](API_runtime_PostContent.md). Guarda l'immagine seguente:  
![\[Riquadro di ispezione risposta della console.\]](http://docs.aws.amazon.com/it_it/lex/latest/dg/images/gs1-116.png)

## Fase succcessiva
<a name="gs2-next-step-clean-up"></a>

[Fase 4 (facoltativo): pulizia](gs2-clean-up.md)

# Fase 4 (facoltativo): pulizia
<a name="gs2-clean-up"></a>

È possibile eliminare le risorse create ed effettuare la pulizia dell'account per evitare di incorrere in ulteriori costi per le risorse create.

Puoi eliminare solo le risorse che non sono in uso. Ad esempio, non è possibile eliminare un tipo di slot a cui fa riferimento un intento. Non è possibile eliminare un intento a cui fa riferimento un bot.

Per eliminare le risorse, procedere in questo ordine:
+ Elimina i bot per liberare risorse di intenti.
+ Elimina gli intenti per liberare risorse di tipo di slot.
+ Elimina i tipi di slot come ultima cosa.



**Per effettuare la pulizia dell'account:**

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. Dall'elenco dei bot, scegli **PizzaOrderingBot**.

1. Per eliminare il bot, seleziona **Delete** (Elimina) e quindi **Continue** (Continua).

1. Nel riquadro a sinistra seleziona **Intents** (Intenti).

1. Nell'elenco degli intenti, scegli. **OrderPizza**

1. Per eliminare l'intento, seleziona **Delete** (Elimina) e quindi **Continue** (Continua).

1. Nel menu a sinistra seleziona **Slot types** (Tipi di slot).

1. <a name="chooseSlots"></a>Nell'elenco di tipi di slot, seleziona **Crusts** (Bordi).

1. <a name="deleteSlots"></a>Per eliminare il tipo di bot seleziona **Delete** (Elimina) e quindi **Continue** (Continua).

1. Ripeti [Step 8](#chooseSlots) e [Step 9](#deleteSlots) per i tipi di slot `Sizes` e `PizzaKind`.

Hai rimosso tutte le risorse che hai creato e pulito il tuo account.

## Fasi successive
<a name="gs-ex2-more-info"></a>
+ [Pubblicazione di una versione e creazione di un alias](https://docs.aws.amazon.com/lex/latest/dg/gettingstarted-ex3.html)
+ [Crea un bot Amazon Lex con AWS Command Line Interface](https://docs.aws.amazon.com/lex/latest/dg/gs-cli.html)