

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Anexe uma AWS Lambda função a um bot do Amazon Lex V2 usando operações de API
<a name="lambda-attach-api"></a>

Você deve primeiro anexar uma função Lambda ao seu alias de bot do Amazon Lex V2 antes de poder invocá-la. Você só pode associar uma função do Lambda a cada alias do bot. Execute estas etapas para anexar a função do Lambda usando operações de API. 

Se você estiver criando um novo alias de bot, use a [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html)operação para anexar uma função Lambda. Para anexar uma função Lambda a um alias de bot existente, use a operação. [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) Modifique o campo `botAliasLocaleSettings` para conter as configurações corretas:

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

1. O campo `botAliasLocaleSettings` é mapeado para um objeto cujas chaves são as localidades nas quais você deseja anexar a função do Lambda. Consulte [Idiomas e locais compatíveis](how-languages.md#supported-languages) para obter uma lista das localidades com suporte e os códigos que são chaves válidas.

1. Para encontrar uma função Lambda, abra o AWS Lambda console em [https://console.aws.amazon.com/lambda/casa](https://console.aws.amazon.com/lambda/home), selecione **Funções** na barra lateral esquerda e selecione a função a ser associada ao alias do bot. `lambdaARN` No lado direito da **Visão geral da função**, encontre o `lambdaARN` em **ARN da função**. Ele deve conter uma região, o ID da conta e o nome da função.

1. Para permitir que o Amazon Lex V2 invoque a função do Lambda para o alias, defina o campo `enabled` como `true`.

**Definindo uma intenção do Amazon Lex V2 para invocar uma função Lambda usando operações de API**

Para configurar a invocação da função Lambda durante uma intenção, use a [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operação se estiver criando uma nova intenção ou a [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operação se estiver invocando a função em uma intenção existente. Os campos que controlam a invocação da função do Lambda nas operações de intenção são `dialogCodeHook`, `initialResponseSetting`, `intentConfirmationSetting` e `fulfillmentCodeHook`.

Se você invocar a função durante a elicitação de um slot, use a [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)operação se estiver criando um novo slot ou a [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operação para invocar a função em um slot existente. O campo que controla a invocação da função do Lambda nas operações do slot é o `slotCaptureSetting` do objeto `valueElicitationSetting`.

1. Para configurar o gancho de código de diálogo do Lambda para ser executado após cada turno da conversa, defina o `enabled` campo do seguinte [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html)objeto no `dialogCodeHook` campo como: `true`

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

1. Como alternativa, você pode definir o gancho de código de diálogo do Lambda para ser executado somente em pontos específicos das conversas, modificando o `codeHook` and/or `elicitationCodeHook` campo nas estruturas que correspondem aos estágios da conversa nos quais você deseja invocar a função. Para usar o gancho de código de diálogo Lambda para cumprimento da intenção, use o `fulfillmentCodeHook` campo na operação ou. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) As estruturas e os usos desses três tipos de hooks de código são os seguintes:

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

O campo `codeHook` define as configurações para que o hook de código seja executado em um determinado estágio da conversa. É um [DialogCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html)objeto com a seguinte estrutura:

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ Altere o campo `active` para `true` para que o Amazon Lex V2 chame o hook de código nesse ponto da conversa.
+ Altere o campo `enableCodeHookInvocation` para `true` para o Amazon Lex V2 permitir que o hook de código seja executado normalmente. Se você marcá-lo como `false`, o Amazon Lex V2 age como se o hook de código tivesse sido retornado com sucesso.
+ O `invocationLabel` indica a etapa da caixa de diálogo a partir da qual o hook de código é invocado.
+ Use o campo `postCodeHookSpecification` para especificar as ações e mensagens que ocorrem após o hook de código ser bem-sucedido, falhar ou atingir o tempo limite.

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

O campo `elicitationCodeHook` define as configurações para que o hook de código seja executado no caso de um slot ou slots precisarem ser reutilizados. Esse cenário pode ocorrer se a elicitação do slot falhar ou a confirmação da intenção for negada. O `elicitationCodeHook` campo é um [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html)objeto com a seguinte estrutura:

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ Altere o campo `enableCodeHookInvocation` para `true` para o Amazon Lex V2 permitir que o hook de código seja executado normalmente. Se você marcá-lo como `false`, o Amazon Lex V2 age como se o hook de código tivesse sido retornado com sucesso.
+ O `invocationLabel` indica a etapa da caixa de diálogo a partir da qual o hook de código é invocado.

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

O campo `fulfillmentCodeHook` define as configurações do hook de código a ser executado para cumprir a intenção. Ele mapeia para o seguinte [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)objeto:

```
"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)
}
```
+ Altere o campo `active` para `true` para que o Amazon Lex V2 chame o hook de código nesse ponto da conversa.
+ Altere o campo `enabled` para `true` para o Amazon Lex V2 permitir que o hook de código seja executado normalmente. Se você marcá-lo como `false`, o Amazon Lex V2 age como se o hook de código tivesse sido retornado com sucesso.
+ Use o campo `fulfillmentUpdatesSpecification` para especificar as mensagens que aparecem para atualizar o usuário durante o cumprimento da intenção e o tempo associado a elas.
+ Use o campo `postFulfillmentStatusSpecification` para especificar as mensagens e ações que ocorrem após o hook de código ser bem-sucedido, falhar ou atingir o tempo limite.

Você pode invocar o hook de código do Lambda nos seguintes pontos de uma conversa definindo os campos `active` e `enableCodeHookInvocation`/`enabled` como `true`:

## Durante a resposta inicial
<a name="lambda-hook-initial-response"></a>

Para invocar a função Lambda na resposta inicial após o reconhecimento da intenção, use `codeHook` a estrutura no campo `initialResponse` da [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operação or. [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) O `initialResponse` campo mapeia para o seguinte [InitialResponseSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_InitialResponseSetting.html)objeto:

```
"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)
}
```

## Após a elicitação do slot ou durante a nova elicitação do slot
<a name="lambda-hook-elicit-slot"></a>

Para invocar a função Lambda depois de obter um valor de slot, use `slotCaptureSetting` o campo dentro do campo `valueElicitation` da operação ou. [CreateSlot[UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) O `slotCaptureSetting` campo mapeia para o seguinte [SlotCaptureSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SlotCaptureSetting.html)objeto:

```
"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)
}
```
+ Para invocar a função do Lambda depois que a elicitação do slot for bem-sucedida, use o campo `codeHook`.
+ Para invocar a função do Lambda depois que a elicitação de slots falhar e o Amazon Lex V2 tentar novamente a elicitação de slots, use o campo `elicitationCodeHook`.

## Após confirmação ou negação da intenção
<a name="lambda-hook-confirm-intent"></a>

Para invocar a função Lambda ao confirmar uma intenção, use `intentConfirmationSetting` o campo da operação ou. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) O `intentConfirmation` campo mapeia para o seguinte [IntentConfirmationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_IntentConfirmationSetting.html)objeto:

```
"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)
}
```
+ Para invocar a função do Lambda após o usuário confirmar a intenção e seus slots, use o campo `codeHook`.
+ Para invocar a função do Lambda depois que o usuário negar a confirmação da intenção e o Amazon Lex V2 tentar novamente a elicitação de slots, use o campo `elicitationCodeHook`.

## Durante o cumprimento da intenção
<a name="lambda-hook-fulfill-intent"></a>

Para invocar a função Lambda para cumprir uma intenção, use `fulfillmentCodeHook` o campo na [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operação ou. [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) O `fulfillmentCodeHook` campo mapeia para o seguinte [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)objeto:

```
{
    "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. Depois de definir os estágios da conversa nos quais invocar a função do Lambda, use a operação `BuildBotLocale` para reconstruir o bot a fim de testar a função.