

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

# Collega una AWS Lambda funzione a un bot Amazon Lex V2 utilizzando le operazioni API
<a name="lambda-attach-api"></a>

Devi prima collegare una funzione Lambda al tuo alias bot di Amazon Lex V2 prima di poterla richiamare. È possibile associare solo una funzione Lambda a ciascun alias bot. Esegui questi passaggi per collegare la funzione Lambda utilizzando le operazioni API. 

Se stai creando un nuovo alias bot, usa l'[CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html)operazione per allegare una funzione Lambda. Per collegare una funzione Lambda a un alias bot esistente, usa l'operazione. [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) Modifica il `botAliasLocaleSettings` campo in modo che contenga le impostazioni corrette:

```
{
    "botAliasLocaleSettings" : {
        locale: {
            "codeHookSpecification": {
                "lambdaCodeHook": {
                    "codeHookInterfaceVersion": "1.0",
                    "lambdaARN": "arn:aws:lambda:region:account-id:function:function-name"
                }
            },
            "enabled": true
        },
        ...
    }
}
```

1. Il `botAliasLocaleSettings` campo è mappato su un oggetto le cui chiavi sono le impostazioni locali in cui si desidera collegare la funzione Lambda. Consultate [Lingue e impostazioni locali supportate](how-languages.md#supported-languages) per un elenco delle impostazioni locali supportate e dei codici che costituiscono chiavi valide.

1. Per trovare la funzione `lambdaARN` for a Lambda, apri la AWS Lambda console nella [https://console.aws.amazon.com/lambda/home page](https://console.aws.amazon.com/lambda/home), seleziona **Funzioni** nella barra laterale sinistra e seleziona la funzione da associare all'alias bot. Sul lato destro della **panoramica delle funzioni**, trova la `lambdaARN` sezione **Funzione ARN**. Dovrebbe contenere una regione, un ID account e il nome della funzione.

1. Per consentire ad Amazon Lex V2 di richiamare la funzione Lambda per l'alias, imposta il campo su. `enabled` `true`

**Impostazione di un intento di Amazon Lex V2 per richiamare una funzione Lambda utilizzando operazioni API**

Per impostare la chiamata della funzione Lambda durante un intento, usa l'[CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operazione se stai creando un nuovo intento o l'[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operazione se stai invocando la funzione in un intento esistente. I campi che controllano l'invocazione della funzione Lambda nelle operazioni intent sono`dialogCodeHook`,, e. `initialResponseSetting` `intentConfirmationSetting` `fulfillmentCodeHook`

Se richiamate la funzione durante l'elicitazione di uno slot, utilizzate l'[CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)operazione se state creando un nuovo slot o l'[UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operazione per richiamare la funzione in uno slot esistente. Il campo che controlla l'invocazione della funzione Lambda nelle operazioni dello slot è l'`slotCaptureSetting`oggetto. `valueElicitationSetting`

1. Per impostare l'hook del codice di dialogo Lambda in modo che venga eseguito dopo ogni turno della conversazione, imposta il `enabled` campo del seguente [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html)oggetto nel `dialogCodeHook` campo su: `true`

   ```
   "dialogCodeHook": {
       "enabled": boolean
   }
   ```

1. In alternativa, puoi impostare l'hook di dialogo Lambda in modo che venga eseguito solo in punti specifici delle conversazioni modificando il `codeHook` and/or `elicitationCodeHook` campo all'interno delle strutture che corrispondono alle fasi della conversazione in cui desideri richiamare la funzione. Per utilizzare l'hook di codici di dialogo Lambda per l'adempimento degli intenti, usa il `fulfillmentCodeHook` campo nell'operazione or. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) Le strutture e gli usi di questi tre tipi di code hook sono i seguenti:

## CodeHook
<a name="lambda-code-hook"></a>

Il `codeHook` campo definisce le impostazioni per l'esecuzione del code hook in una determinata fase della conversazione. È un [DialogCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html)oggetto con la seguente struttura:

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ Cambia il `active` campo in modo `true` che Amazon Lex V2 richiami il code hook in quel momento della conversazione.
+ Cambia il `enableCodeHookInvocation` campo in `true` Amazon Lex V2 per consentire al code hook di funzionare normalmente. Se lo contrassegni`false`, Amazon Lex V2 si comporta come se il code hook fosse stato restituito correttamente.
+ `invocationLabel`Indica la fase di dialogo da cui viene richiamato l'hook di codice.
+ Utilizzate il `postCodeHookSpecification` campo per specificare le azioni e i messaggi che si verificano dopo il successo, l'errore o il timeout del code hook.

## elicitationCodeHook
<a name="lambda-elicitation-code-hook"></a>

Il `elicitationCodeHook` campo definisce le impostazioni per l'esecuzione del code hook nel caso in cui sia necessario richiamare nuovamente uno slot o più slot. Questo scenario può verificarsi se l'elicitazione degli slot fallisce o la conferma dell'intento viene negata. Il `elicitationCodeHook` campo è un [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html)oggetto con la seguente struttura:

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ Cambia il `enableCodeHookInvocation` campo in `true` Amazon Lex V2 per consentire al code hook di funzionare normalmente. Se lo contrassegni`false`, Amazon Lex V2 si comporta come se il code hook fosse stato restituito correttamente.
+ `invocationLabel`Indica la fase di dialogo da cui viene richiamato l'hook di codice.

## fulfillmentCodeHook
<a name="lambda-fulfillment-code-hook"></a>

Il `fulfillmentCodeHook` campo definisce le impostazioni per l'esecuzione del code hook per soddisfare l'intento. È mappato al seguente [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)oggetto:

```
"fulfillmentCodeHook": {
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```
+ Cambia il `active` campo in modo `true` che Amazon Lex V2 richiami il code hook in quel momento della conversazione.
+ Cambia il `enabled` campo in `true` Amazon Lex V2 per consentire al code hook di funzionare normalmente. Se lo contrassegni`false`, Amazon Lex V2 si comporta come se il code hook fosse stato restituito correttamente.
+ Utilizza il `fulfillmentUpdatesSpecification` campo per specificare i messaggi che appaiono per aggiornare l'utente durante l'adempimento dell'intento e la tempistica ad essi associata.
+ Utilizzate il `postFulfillmentStatusSpecification` campo per specificare i messaggi e le azioni che si verificano dopo il successo, l'errore o il timeout del codehook.

Puoi richiamare il code hook Lambda nei seguenti punti di una conversazione impostando `active` i campi `enableCodeHookInvocation` e`enabled`/su: `true`

## Durante la risposta iniziale
<a name="lambda-hook-initial-response"></a>

Per richiamare la funzione Lambda nella risposta iniziale dopo il riconoscimento dell'intento, utilizzate `codeHook` la struttura nel campo `initialResponse` dell'[CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operazione or. [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) Il `initialResponse` campo è mappato al seguente oggetto: [InitialResponseSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_InitialResponseSetting.html)

```
"initialResponse": {
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "initialResponse": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "nextStep": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "conditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html)
}
```

## Dopo l'elicitazione dello slot o durante la rielicitazione dello slot
<a name="lambda-hook-elicit-slot"></a>

Per richiamare la funzione Lambda dopo aver ottenuto un valore di slot, utilizzate `slotCaptureSetting` il campo all'interno del campo `valueElicitation` dell'[CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)operazione or. [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) Il `slotCaptureSetting` campo è mappato al seguente oggetto: [SlotCaptureSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SlotCaptureSetting.html)

```
"slotCaptureSetting": {
    "captureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "captureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "captureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "codeHook": {
        "active": true,
        "enableCodeHookInvocation": true,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html)
}
```
+ Per richiamare la funzione Lambda dopo che l'elicitazione dello slot ha avuto esito positivo, utilizzate il campo. `codeHook`
+ Per richiamare la funzione Lambda dopo che l'elicitazione dello slot fallisce e Amazon Lex V2 tenta di riprovare l'elicitazione dello slot, usa il campo. `elicitationCodeHook`

## Dopo la conferma o il rifiuto dell'intenzione
<a name="lambda-hook-confirm-intent"></a>

Per richiamare la funzione Lambda quando si conferma un intento, utilizzare `intentConfirmationSetting` il campo dell'operazione or. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) Il `intentConfirmation` campo è mappato al seguente oggetto: [IntentConfirmationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_IntentConfirmationSetting.html)

```
"intentConfirmationSetting": {
    "active": boolean,
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "confirmationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "confirmationNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "confirmationResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialResponseSpecificationogState.html),
    "declinationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "declinationNextStep": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "declinationResponse": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "promptSpecification": [PromptSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PromptSpecification.html)
}
```
+ Per richiamare la funzione Lambda dopo che l'utente ha confermato l'intento e i relativi slot, usa il campo. `codeHook`
+ Per richiamare la funzione Lambda dopo che l'utente ha negato la conferma dell'intento e Amazon Lex V2 ha tentato di ripetere l'elicitazione dello slot, usa il campo. `elicitationCodeHook`

## Durante l'adempimento dell'intento
<a name="lambda-hook-fulfill-intent"></a>

Per richiamare la funzione Lambda per soddisfare un intento, usa `fulfillmentCodeHook` il campo nell'[CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operazione or. [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) Il `fulfillmentCodeHook` campo è mappato al seguente oggetto: [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)

```
{
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```

3. Una volta impostate le fasi della conversazione in cui richiamare la funzione Lambda, utilizzate `BuildBotLocale` l'operazione per ricostruire il bot per testare la funzione.