

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Adjunte una AWS Lambda función a un bot de Amazon Lex V2 mediante operaciones de API
<a name="lambda-attach-api"></a>

Primero debe adjuntar una función Lambda a su alias de bot de Amazon Lex V2 antes de poder invocarla. Recuerde que puede asociar cada alias de bot como máximo a una función de Lambda. Realice estos pasos para asociar la función de Lambda mediante operaciones de API. 

Si va a crear un nuevo alias de bot, utilice la [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html)operación para adjuntar una función Lambda. Para adjuntar una función Lambda a un alias de bot existente, utilice la [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html)operación. Modifique el campo `botAliasLocaleSettings` para que contenga la configuración correcta:

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

1. El campo `botAliasLocaleSettings` se asigna a un objeto cuyas claves son las configuraciones regionales en las que desea adjuntar la función de Lambda. Consulte [Idiomas y configuraciones regionales compatibles](how-languages.md#supported-languages) para obtener una lista de las configuraciones regionales compatibles y los códigos que son claves válidas.

1. `lambdaARN`Para buscar la función Lambda, abre la AWS Lambda consola en [https://console.aws.amazon.com/lambda/casa](https://console.aws.amazon.com/lambda/home), selecciona **Funciones** en la barra lateral izquierda y selecciona la función que deseas asociar al alias del bot. En el lado derecho de la **Descripción de la función**, busque el `lambdaARN` de la **Función de ARN**. Debe contener una región, un ID de cuenta y el nombre de la función.

1. Para permitir que Amazon Lex V2 invoque la función de Lambda para el alias, defina el campo `enabled` en `true`.

**Establecer la intención de Amazon Lex V2 de invocar una función Lambda mediante operaciones de API**

Para configurar la invocación de la función Lambda durante una intención, utilice la [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operación si está creando una nueva intención o la [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operación si está invocando la función en una intención existente. Los campos que controlan la invocación de la función de Lambda en las operaciones de intención son `dialogCodeHook`, `initialResponseSetting`, `intentConfirmationSetting` y `fulfillmentCodeHook`.

Si invoca la función durante la generación de una ranura, utilice la [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)operación si va a crear una nueva ranura o utilice la [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operación para invocar la función en una ranura existente. El campo que controla la invocación de la función de Lambda en las operaciones de slot es la `slotCaptureSetting` del objeto `valueElicitationSetting`.

1. Para configurar el enlace de código del cuadro de diálogo de Lambda para que se ejecute después de cada turno de la conversación, defina el `enabled` campo del siguiente [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html)objeto del `dialogCodeHook` campo en: `true`

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

1. Como alternativa, puede configurar el enlace de código del diálogo Lambda para que se ejecute solo en puntos específicos de las conversaciones modificando el `codeHook` and/or `elicitationCodeHook` campo dentro de las estructuras que corresponden a las etapas de la conversación en las que desea invocar la función. Para utilizar el enlace de códigos del cuadro de diálogo Lambda para el cumplimiento de la intención, utilice el `fulfillmentCodeHook` campo de la operación [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)o [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html). Las estructuras y los usos de estos tres tipos de enlaces de código son los siguientes:

## enlace de código
<a name="lambda-code-hook"></a>

El campo `codeHook` define los ajustes para que el enlace de código se ejecute en una etapa determinada de la conversación. Es un [DialogCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html)objeto con la siguiente estructura:

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ Cambie el campo `active` a `true` para que Amazon Lex V2 llame al enlace de código en ese momento de la conversación.
+ Cambie el campo `enableCodeHookInvocation` a `true` para que Amazon Lex V2 permita que el enlace de código se ejecute con normalidad. Si lo marca como `false`, Amazon Lex V2 actúa como si el enlace de código se hubiera devuelto correctamente.
+ La `invocationLabel` indica el paso de diálogo desde el que se invoca el enlace de código.
+ Utilice el campo `postCodeHookSpecification` para especificar las acciones y los mensajes que se producen después de que el enlace de código se ejecute correctamente, falle o se agote el tiempo de espera.

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

El campo `elicitationCodeHook` define la configuración del enlace de código que se ejecutará en caso de que sea necesario volver a activar una o varios slots. Este escenario puede ocurrir si la no se logra la obtención de slots o si se deniega la confirmación de intención. El `elicitationCodeHook` campo es un [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html)objeto con la siguiente estructura:

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ Cambie el campo `enableCodeHookInvocation` a `true` para que Amazon Lex V2 permita que el enlace de código se ejecute con normalidad. Si lo marca como `false`, Amazon Lex V2 actúa como si el enlace de código se hubiera devuelto correctamente.
+ La `invocationLabel` indica el paso de diálogo desde el que se invoca el enlace de código.

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

El campo `fulfillmentCodeHook` define la configuración para que el enlace de código se ejecute para cumplir la intención. Se asigna al siguiente [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)
}
```
+ Cambie el campo `active` a `true` para que Amazon Lex V2 llame al enlace de código en ese momento de la conversación.
+ Cambie el campo `enabled` a `true` para que Amazon Lex V2 permita que el enlace de código se ejecute con normalidad. Si lo marca como `false`, Amazon Lex V2 actúa como si el enlace de código se hubiera devuelto correctamente.
+ Utilice el campo `fulfillmentUpdatesSpecification` para especificar los mensajes que parecen para actualizar al usuario durante el cumplimiento de la intención y tiempo asociado a ellos.
+ Utilice el campo `postFulfillmentStatusSpecification` para especificar los mensajes y las acciones que se producen después de que el enlace de código se ejecute correctamente, falle o se agote el tiempo de espera.

Puede invocar el enlace de código Lambda en los siguientes puntos de una conversación configurando los campos `active` y `enableCodeHookInvocation`/`enabled` en `true`:

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

Para invocar la función Lambda en la respuesta inicial después de reconocer la intención, utilice `codeHook` la estructura del campo de `initialResponse` [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)la [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operación o. El `initialResponse` campo se asigna al siguiente objeto: [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)
}
```

## Después de la obtención de slots o durante la reactivación de slots
<a name="lambda-hook-elicit-slot"></a>

Para invocar la función Lambda después de obtener un valor de ranura, utilice `slotCaptureSetting` el campo dentro del campo de `valueElicitation` [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)la operación o. [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) El `slotCaptureSetting` campo se asigna al siguiente objeto: [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)
}
```
+ Para invocar la función de Lambda después de que la obtención de slots se haya realizado correctamente, utilice el campo `codeHook`.
+ Para invocar la función de Lambda después de que se produzca un error en la obtención de slots y Amazon Lex V2 intente volver a intentar la obtención de slots, utilice el campo `elicitationCodeHook`.

## Tras la confirmación o denegación de la intención
<a name="lambda-hook-confirm-intent"></a>

Para invocar la función Lambda al confirmar una intención, utilice `intentConfirmationSetting` el campo de [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)la [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operación o. El `intentConfirmation` campo se asigna al siguiente objeto: [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)
}
```
+ Para invocar la función de Lambda después de que el usuario confirme la intención y sus slots, utilice el campo `codeHook`.
+ Para invocar la función de Lambda después de que el usuario rechace la confirmación de la intención y Amazon Lex V2 intente volver a intentar la obtención de slots, utilice el campo `elicitationCodeHook`.

## Durante el cumplimiento de la intención
<a name="lambda-hook-fulfill-intent"></a>

Para invocar la función Lambda para cumplir una intención, utilice `fulfillmentCodeHook` el campo de la operación o. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) El `fulfillmentCodeHook` campo se asigna al siguiente objeto: [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 vez que haya establecido las etapas de conversación en las que se invocará la función de Lambda, utilice la operación `BuildBotLocale` para volver a compilar el bot para probar la función.