

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.

# Creación de una AWS Lambda función para su bot Amazon Lex V2
<a name="lambda-attach"></a>

Para crear una función Lambda para su bot de Amazon Lex V2, acceda AWS Lambda desde la consola de administración de AWS y cree una función nueva. Puede consultar la [guía para AWS Lambda desarrolladores](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) para obtener más información al respectoAWS Lambda.

1. Inicie sesión en la consola de administración de AWS y abra la AWS Lambda consola en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Seleccione **Funciones** en la barra lateral izquierda.

1. Seleccione **Crear función**.

1. Puede seleccionar **Autor desde cero** para empezar con un código mínimo, **Usar un esquema** para seleccionar de una lista código de muestra para casos de uso comunes, o **Imagen de contenedor** para seleccionar una imagen de contenedor para implementarla en su función. Si selecciona **Autor desde cero**, continúe con los siguientes pasos:

   1. Dele a la función un **Nombre de función** significativo para describir lo que hace.

   1. Seleccione un idioma en el menú desplegable de **Tiempo de ejecución** para escribir la función.

   1. Seleccione una **Arquitectura** de un conjunto de instrucciones para la función.

   1. Por defecto, Lambda crea un rol con permisos básicos. Para usar un rol existente o crear un rol mediante plantillas de políticas de AWS, expanda el menú **Cambiar el rol de ejecución predeterminado** y seleccione una opción.

   1. Amplíe el menú de **Configuración avanzada** para configurar más opciones.

1. Seleccione **Crear función**.

La siguiente imagen muestra lo que se ve al crear una nueva función desde cero:

![Una nueva función de Lambda.](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/lambda/lambda-new-function.png)


La función del controlador de Lambda varía según el idioma que utilice. Como mínimo, toma un objeto `event` JSON como argumento. Puede ver los campos del `event` que Amazon Lex V2 proporciona en [AWS Lambdaformato de evento de entrada para Lex V2](lambda-input-format.md). Modifique la función del controlador para, en última instancia, devolver un objeto `response` JSON que coincida con el formato descrito en [AWS Lambdaformato de respuesta para Lex V2](lambda-response-format.md).
+ Cuando termine de escribir la función, seleccione **Implementar** para permitir que se use la función.

Recuerde que puede asociar cada alias de bot como máximo a una función de Lambda. Sin embargo, puede definir tantas funciones como necesite para su bot en el código Lambda y llamar a estas funciones en la función de controlador de Lambda. Por ejemplo, si bien todas las intenciones del mismo alias de bot deben llamar a la misma función de Lambda, puede crear una función de router que active una función independiente para cada intención. A continuación, se muestra un ejemplo de función de router que puede utilizar o modificar para su aplicación:

```
import os
import json
import boto3

# reuse client connection as global
client = boto3.client('lambda')

def router(event):
    intent_name = event['sessionState']['intent']['name']
    fn_name = os.environ.get(intent_name)
    print(f"Intent: {intent_name} -> Lambda: {fn_name}")
    if (fn_name):
        # invoke lambda and return result
        invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event))
        print(invoke_response)
        payload = json.load(invoke_response['Payload'])
        return payload
    raise Exception('No environment variable for intent: ' + intent_name)

def lambda_handler(event, context):
    print(event)
    response = router(event)
    return response
```

**Cuándo utilizar las AWS Lambda funciones en las conversaciones de los bots de Amazon Lex V2**

Puede utilizar funciones de Lambda en los siguientes momentos de una conversación con un usuario:
+ En la respuesta inicial después de reconocer la intención. Por ejemplo, después de que el usuario diga que quiere pedir una pizza.
+ Después de obtener un valor de slot del usuario. Por ejemplo, después de que el usuario le diga al bot el tamaño de pizza que quiere pedir.
+ Entre cada reintento para obtener un slot. Por ejemplo, si el cliente no usa un tamaño de pizza reconocido.
+ Al confirmar una intención. Por ejemplo, al confirmar un pedido de pizza.
+ Para cumplir una intención. Por ejemplo, para hacer un pedido de pizza.
+ Una vez cumplida la intención y antes de que su bot cierre la conversación. Por ejemplo, para cambiar a una intención de pedir una bebida.

**Topics**
+ [Adjunte una AWS Lambda función a un bot de Amazon Lex V2 mediante la consola](lambda-attach-console.md)
+ [Adjunte una AWS Lambda función a un bot de Amazon Lex V2 mediante operaciones de API](lambda-attach-api.md)