

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.

# Conceda a Amazon Connect acceso a sus AWS Lambda funciones
<a name="connect-lambda-functions"></a>

Amazon Connect puede interactuar con sus propios sistemas y tomar diferentes rutas en flujos de forma dinámica. Para lograrlo, invoque AWS Lambda las funciones de un flujo, busque los resultados y llame a sus propios servicios o interactúe con otros almacenes de AWS datos o servicios. Para obtener más información, consulte la [Guía para desarrolladores de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

Para invocar una función de Lambda de un flujo, realice las siguientes tareas.

**Topics**
+ [Crear una función de Lambda](#create-lambda-function)
+ [Agregar una función de Lambda a la instancia de Amazon Connect](#add-lambda-function)
+ [Invocación de una función de Lambda desde un flujo](#function-contact-flow)
+ [Práctica recomendada para invocar varias funciones de Lambda](#invoke-multiple-functions)
+ [Configuración de la función de Lambda para analizar el evento](#function-parsing)
+ [Verificar la respuesta de la función](#verify-function)
+ [Consumo de la respuesta de la función de Lambda](#process-function-response)
+ [Tutorial: crear una función de Lambda e invocarla en un flujo](#tutorial-invokelambda)

## Crear una función de Lambda
<a name="create-lambda-function"></a>

Cree una función de Lambda con cualquier tiempo de ejecución y configúrela. Para obtener más información, consulte [Introducción a Lambda](https://docs.aws.amazon.com/lambda/latest/dg/get-started.html) en la *Guía para desarrolladores de AWS Lambda *.

Si crea la función de Lambda en la misma región que el centro de contacto, puede utilizar la consola de Amazon Connect para añadir la función de Lambda a la instancia como se describe en la siguiente tarea, [Agregar una función de Lambda a la instancia de Amazon Connect](#add-lambda-function). Esto agrega automáticamente permisos de recursos que permiten a Amazon Connect invocar la función de Lambda. De lo contrario, si la función de Lambda se encuentra en una región diferente, puede agregarla al flujo con el diseñador de flujos y agregar los permisos de recursos con el comando [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html), con la entidad principal de `connect.amazonaws.com` y el ARN de la instancia de Amazon Connect. Para obtener más información, consulte [Uso de políticas basadas en recursos para AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) en la *Guía para desarrolladores de AWS Lambda *.

## Agregar una función de Lambda a la instancia de Amazon Connect
<a name="add-lambda-function"></a>

Para poder utilizar una función de Lambda en un flujo, debe agregarla a su instancia de Amazon Connect.

**Agregar una función de Lambda a la instancia**

1. Abra la consola Amazon Connect en [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. En la página de instancias, el nombre de la instancia que hay en la columna **Alias de instancia**. Este nombre de instancia aparece en la URL que utiliza para acceder a Amazon Connect.   
![\[Página de instancias del centro de contacto virtual de Amazon Connect, alias de instancia.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/instance.png)

1. En el panel de navegación, elija **Flujos**.

1. En la sección **AWS Lambda**, utilice el cuadro desplegable **Function (Función)** para seleccionar la función que desea agregar a su instancia.
**sugerencia**  
El menú desplegable muestra solo aquellas funciones que están en la misma región que la instancia. Si no aparece ninguna función en la lista, seleccione **Crear una nueva función Lambda**, que abrirá la AWS Lambda consola.  
Para utilizar una Lambda en una región o cuenta diferente, en el [Función de AWS Lambda ](invoke-lambda-function-block.md), en **Seleccionar una función**, puede introducir el ARN de una Lambda. A continuación, configure la política basada en recursos correspondiente en esa Lambda para permitir que el flujo la llame.   
Para llamar a `lambda:AddPermission`, debe:  
Establecer la entidad principal a **connect.amazonaws.com**
Establecer la cuenta de origen para que sea la cuenta en la que se encuentra su instancia
Establecer el ARN de origen al ARN de su instancia
Para obtener más información, consulte [Concesión de acceso a la función a otras cuentas](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-xaccountinvoke).

1. Elija **Agregar función Lambda**. Confirme que el ARN de la función se añade en **Funciones de Lambda**.

Ahora puede hacer referencia a esta función de Lambda en los flujos del contacto.

## Invocación de una función de Lambda desde un flujo
<a name="function-contact-flow"></a>

1. Abra o cree un flujo.

1. Agregue un bloque [Función de AWS Lambda ](invoke-lambda-function-block.md) (en el grupo **Integrate (Integrar)**) a la cuadrícula. Conecte las ramas hacia y desde el bloque.

1. Elija el título del bloque [Función de AWS Lambda ](invoke-lambda-function-block.md) para abrir la página de propiedades.

1. En **Select a function (Seleccionar una función)**, elija de la lista de funciones que ha agregado a su instancia.

1. (Opcional) En **Function input parameters (Parámetros de entrada de función)**, elija **Add a parameter (Agregar un parámetro)**. Puede especificar pares de clave-valor que se envían a la función de Lambda cuando se invoca. También puede especificar un valor de **Tiempo de espera** para la función.

1. En **Tiempo de espera (máx. 8 segundos)**, especifique cuánto tiempo debe esperar Lambda a que se agote el tiempo de espera. Transcurrido este tiempo, el contacto se encamina hacia la ramificación Error.

Para cada invocación de función de Lambda desde un flujo, se transfiere un conjunto predeterminado de información relacionada con el contacto en curso, así como cualquier atributo adicional definido en la sección **Parámetros de entrada de función** del bloque **Invocar función de AWS Lambda ** agregado.

A continuación, se muestra un ejemplo de solicitud JSON a una función de Lambda:

```
{
    "Details": {
        "ContactData": {
            "Attributes": {
               "exampleAttributeKey1": "exampleAttributeValue1"
              },
            "Channel": "VOICE",
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "CustomerEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            },
            "CustomerId": "someCustomerId",
            "Description": "someDescription",
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
            "LanguageCode": "en-US",
            "MediaStreams": {
                "Customer": {
                    "Audio": {
                        "StreamARN": "arn:aws:kinesisvideo::eu-west-2:111111111111:stream/instance-alias-contact-ddddddd-bbbb-dddd-eeee-ffffffffffff/9999999999999",
                        "StartTimestamp": "1571360125131", // Epoch time value
                        "StopTimestamp": "1571360126131",
                        "StartFragmentNumber": "100" // Numberic value for fragment number 
                    }
                }
            },
            "Name": "ContactFlowEvent",
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "Queue": {
                   "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                 "Name": "PasswordReset"
                "OutboundCallerId": {
                    "Address": "+12345678903",
                    "Type": "TELEPHONE_NUMBER"
                }
            },
            "References": {
                "key1": {
                    "Type": "url",
                    "Value": "urlvalue"
                }
            },
            "SystemEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            }
        },
        "Parameters": {"exampleParameterKey1": "exampleParameterValue1",
               "exampleParameterKey2": "exampleParameterValue2"
        }
    },
    "Name": "ContactFlowEvent"
}
```

La solicitud se divide en dos partes:
+ Datos de contacto: Amazon Connect siempre los transfiere para cada contacto. Algunos parámetros son opcionales.

  Esta sección puede incluir atributos que se hayan asociado previamente a un contacto, por ejemplo, cuando se utiliza un bloque **Establecer atributos de contacto** en un flujo. Este mapa puede estar vacío si no hay ningún atributo guardado.

  En la siguiente imagen se muestra dónde aparecerían estos atributos en la página de propiedades de **Establecer atributos de contacto**.  
![\[La página de propiedades del bloque Establecer atributos de contacto.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-setAttribute.png)
+ Parámetros: son parámetros específicos de esta llamada que se han definido al crear la función de Lambda. En la siguiente imagen se muestra dónde aparecerían estos parámetros en la página de propiedades del bloque **Invocar función de AWS Lambda **.   
![\[Los parámetros de entrada de la función en el bloque de funciones Invoke AWS Lambda.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-setParameter.png)

El bloque [Función de AWS Lambda ](invoke-lambda-function-block.md) puede recibir parámetros de entrada en formato JSON y admite tanto los tipos de datos primitivos como el JSON anidado. A continuación, se muestra un ejemplo de una entrada JSON que puede utilizarse en el bloque [Función de AWS Lambda ](invoke-lambda-function-block.md).

```
{ 
  "Name": "Jane", 
  "Age":10, 
  "isEnrolledInSchool": true, 
  "hobbies": {
    "books":["book1", "book2"], 
    "art":["art1", "art2"]
  } 
}
```

### Política de reintentos de invocación
<a name="retry"></a>

Si su invocación de Lambda en un flujo está limitada, se reintentará la solicitud. También se reintentará si se produce un error de servicio general (500). 

Cuando una invocación sincrónica devuelve un error, Amazon Connect lo reintenta hasta tres veces, durante un máximo de ocho segundos. En ese momento, el flujo avanzará por la ramificación de error. 

Para obtener más información sobre cómo Lambda lo reintenta, consulte [Gestión de errores y reintentos automáticos](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html) en Lambda. AWS 

## Práctica recomendada para invocar varias funciones de Lambda
<a name="invoke-multiple-functions"></a>

Amazon Connect limita la duración de una secuencia de funciones de Lambda a 20 segundos. Agota el tiempo de espera y muestra un mensaje de error cuando el tiempo total de ejecución excede ese umbral. Como los clientes no oyen nada mientras se ejecuta una función de Lambda, es recomendable que agregue un bloque **Reproducir mensaje** entre las funciones para mantener al cliente conectado durante una interacción larga. 

Al dividir una cadena de funciones de Lambda con el bloque **Reproducir mensaje**, podrá invocar varias funciones que duren más del umbral de 20 segundos.

## Configuración de la función de Lambda para analizar el evento
<a name="function-parsing"></a>

Para transferir correctamente los atributos y parámetros entre la función Lambda y Amazon Connect, configure la función para que analice correctamente la solicitud JSON enviada desde el bloque de ** AWS Lambda funciones Invoke** o **establezca los atributos de contacto** y defina cualquier lógica empresarial que deba aplicarse. El análisis de JSON depende del tiempo de ejecución que utilice para su función. 

Por ejemplo, el código siguiente muestra cómo acceder `exampleParameterKey1` desde el bloque de ** AWS Lambda funciones Invoke** y `exampleAttributeKey1` desde el bloque **Set contact attributes mediante Node.JS**:

```
exports.handler = function(event, context, callback) {
// Example: access value from parameter (Invoke AWS Lambda function)
let parameter1 = event['Details']['Parameters']['exampleParameterKey1'];
  		  
// Example: access value from attribute (Set contact attributes block)
let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1'];
  		  
// Example: access customer's phone number from default data
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];
  		  
// Apply your business logic with the values
// ...
}
```

## Verificar la respuesta de la función
<a name="verify-function"></a>

**sugerencia**  
No se puede hacer referencia a una matriz en un flujo. Las matrices solo se pueden usar en otra función de Lambda.

La respuesta de la función Lambda puede ser STRING\$1MAP o JSON y debe configurarse al configurar el bloque de funciones Invoke ** AWS Lambda** en el flujo. Si la validación de la respuesta se establece en STRING\$1MAP, la función Lambda debería devolver un objeto plano de key/value pares del tipo cadena. De lo contrario, si la validación de la respuesta se establece en JSON, la función de Lambda puede devolver cualquier JSON válido, incluido un JSON anidado.

![\[El bloque de flujo de invocación de la función AWS Lambda que destaca el uso de string map o json.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/verify-function-lambda-response-validation.png)


La respuesta de Lambda puede ser de hasta 32 kb. Si no puede alcanzar Lambda, la función genera una excepción, la respuesta no se entiende o la función de Lambda tarda más tiempo que el límite, el flujo salta a la etiqueta `Error`.

Pruebe la salida devuelta por su función de Lambda para confirmar que se consumirá correctamente cuando se devuelva a Amazon Connect. El siguiente ejemplo muestra una respuesta de muestra en Node.JS:

```
exports.handler = function(event, context, callback) {
// Extract data from the event object	     
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];    
	   
// Get information from your APIs

let customerAccountId = getAccountIdByPhone(phone);
let customerBalance = getBalanceByAccountId(customerAccountId);
  		  
    let resultMap = {
        AccountId: customerAccountId,
        Balance: '$' + customerBalance,
}

callback(null, resultMap);
}
```

En este ejemplo se muestra una respuesta de ejemplo mediante Python:

```
def lambda_handler(event, context):
// Extract data from the event object
  phone = event['Details']['ContactData']['CustomerEndpoint']['Address']
  		  
// Get information from your APIs
  customerAccountId = getAccountIdByPhone(phone)
  customerBalance = getBalanceByAccountId(customerAccountId)
  		  
  	resultMap = {
  		"AccountId": customerAccountId,
  		"Balance": '$%s' % customerBalance
  		}
        
 return resultMap
```

El resultado devuelto por la función debe ser un objeto plano de key/value pares, con valores que incluyan únicamente caracteres alfanuméricos, guiones y guiones bajos. El tamaño de los datos devueltos debe ser inferior a 32 KB de datos UTF-8.

En el siguiente ejemplo se muestra la salida JSON de estas funciones de Lambda:

```
{
"AccountId": "a12345689",
"Balance": "$1000"
}
```

Si la validación de la respuesta se establece en JSON, la función de Lambda puede devolver incluso un JSON anidado, por ejemplo:

```
{
  "Name": {
      "First": "John",
      "Last": "Doe"
  },
  "AccountId": "a12345689",
  "OrderIds": ["x123", "y123"]
}
```

Puede devolver cualquier resultado siempre que sean pares clave-valor simples.

## Consumo de la respuesta de la función de Lambda
<a name="process-function-response"></a>

Existen dos formas de utilizar la respuesta de la función en su flujo. Puede o bien hacer referencia directamente a las variables devueltas por Lambda o almacenar los valores devueltos por la función como atributos de contacto y, a continuación, hacer referencia a los atributos almacenados. Si utiliza una referencia externa a una respuesta de una función de Lambda, la referencia siempre recibirá la respuesta de la función que se ha invocado más recientemente. Para utilizar la respuesta de una función antes de invocar a la función subsiguiente, debe guardarse la respuesta como atributo de contacto o pasarse como un parámetros a la siguiente función.

### 1. Acceder directamente a las variables
<a name="access-variables"></a>

 Si accede directamente a las variables, puede utilizarlas en los bloques de flujo, pero no se incluyen en los registros de contacto. Para acceder a estas variables directamente en un bloque de flujo, añada el bloque después del bloque de ** AWS Lambda función Invoke** y, a continuación, haga referencia a los atributos, como se muestra en el siguiente ejemplo: 

```
Name - $.External.Name
Address - $.External.Address
CallerType - $.External.CallerType
```

La siguiente imagen muestra la página de propiedades del bloque **Reproducir mensaje**. Las variables se especifican en el text-to-speech bloque.

![\[La página de propiedades del bloque Reproducir mensaje.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-useExternal.png)


Asegúrese de que el nombre especificado para el atributo de origen coincide con el nombre de clave devuelto por Lambda.

### 2. Almacenar variables como atributos de contacto
<a name="store-variables"></a>

Si almacena las variables como atributos de contacto, puede utilizarlas a lo largo del flujo y se incluyen en los registros de contacto.

Para almacenar los valores devueltos como atributos de contacto y, a continuación, hacer referencia a ellos, utilice un bloque **Set contact attributes** en su flujo después del bloque de ** AWS Lambda funciones Invoke**. Elija **Usar atributo**, **Externo** para **Tipo**. Siguiendo el ejemplo que estamos utilizando, establezca **Atributo de destino** a `MyAccountId` y establezca el **atributo** a `AccountId`. Haga lo mismo para `MyBalance` y **Saldo**. En la siguiente imagen se muestra esta configuración.

![\[La página de propiedades del bloque Establecer atributos de contacto.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


Añada dirección como **Atributo de origen** y utilice `returnedContactAddress` como la **Clave de destino**. A continuación, agregue `CallerType` como **Atributo de origen** y utilice `returnedContactType` para la **Clave de destino**, como se muestra en la siguiente imagen.

![\[La página de propiedades del bloque Reproducir mensaje.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-useAttributeInPlayPrompt.png)


Asegúrese de que el nombre especificado para el atributo de origen externo coincide con el nombre de clave devuelto por Lambda.

## Tutorial: crear una función de Lambda e invocarla en un flujo
<a name="tutorial-invokelambda"></a>

### Paso 1: crear el ejemplo de Lambda
<a name="tutorial-invokelambda-step1"></a>

1. Inicie sesión en 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. En AWS Lambda, selecciona **Crear función**.

1. Elija **Crear desde cero**, si aún no está seleccionado. En **Basic information (Información básica)**, para **Function name (Nombre de función)**, escriba **MyFirstConnectLambda**. Para el resto de las opciones, acepte los valores predeterminados. Estas opciones se muestran en la siguiente imagen de la consola de AWS Lambda.  
![\[La AWS consola Lambda.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. Seleccione **Creación de función**.

1. En el cuadro **Código fuente**, en la pestaña **index.js**, elimine el código de la plantilla del editor de código.

1. Copie y pegue el siguiente código en el editor de código como se muestra en la siguiente imagen:  
![\[La sección Código fuente, el botón de implementación.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source.png)

   ```
   exports.handler = async (event, context, callback) => {
   // Extract information
           const customerNumber = event.Details.ContactData.CustomerEndpoint.Address;
           const companyName = event.Details.Parameters.companyName;
   // Fetch data
           const balance = await fetchBalance(customerNumber, companyName);
           const support = await fetchSupportUrl(companyName);
   // Prepare result
           const resultMap = {
           customerBalance: balance,
           websiteUrl: support
           }
           callback(null, resultMap);
           }
           
           async function fetchBalance(customerPhoneNumber, companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return Math.floor(Math.random() * 1000);
           }
           
           async function fetchSupportUrl(companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return 'www.GGG.com/support';
           }
   ```

   Este código va a generar un resultado aleatorio para customerBalance.

1. Elija **Implementar**.

1. Después de elegir **Implementar**, elija **Probar** para iniciar el editor de pruebas.

1. En el cuadro de diálogo **Configurar evento de prueba**, seleccione **Crear nuevo evento**. **En Nombre del evento**, introdúzcalo **ConnectMock**como nombre de la prueba.

1. En el cuadro **Evento JSON**, elimine el código de ejemplo e introduzca el siguiente código en su lugar. 

   ```
   {
   "Details": {
   "ContactData": {
       "Attributes": {},
       "Channel": "VOICE",
       "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
       "CustomerEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       },
   "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
   "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
   "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "Queue": {
       "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
       "Name": "PasswordReset"
     },
   "SystemEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       } 
   },
   "Parameters": {
       "companyName": "GGG"
       }
   },
   "Name": "ContactFlowEvent"
   }
   ```

1. Seleccione **Save**.

1. Seleccione **Probar** Debería ver algo similar a la siguiente imagen:  
![\[La sección Código fuente, el botón de prueba.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source-response.png)

   Su equilibrio será diferente. El código genera un número aleatorio.

### Paso 2: agregar su Lambda a Amazon Connect
<a name="tutorial-invokelambda-step2"></a>

1. Diríjase a la consola de Amazon Connect, en [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/). 

1. Elija su alias de instancia de Amazon Connect.  
![\[Página de instancias del centro de contacto virtual de Amazon Connect, alias de instancia.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/instance.png)

1. En el menú de navegación, elija **Flujos**.

1. En la AWS Lambda sección, utilice el cuadro desplegable **Funciones Lambda** para seleccionar. **MyFirstConnectLambda**  
![\[La página de flujos, la AWS sección Lambda.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-add-myfirstconnectlambda.png)

1. Elija **Agregar función Lambda**.

### Paso 3: crear el flujo de contacto
<a name="tutorial-invokelambda-step3"></a>

La siguiente imagen es un ejemplo del flujo que va a crear mediante los pasos de este procedimiento. Contiene los siguientes bloques: **Establecer atributos de contacto**, **Reproducir mensaje**, **Invocar función de AWS Lambda**, otro bloque **Establecer atributos de contacto**, otro bloque **Reproducir mensaje** y, por último, un bloque **Desconectar**.

![\[Un flujo que llama al bloque de funciones Invoke AWS Lambda.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow.png)


1. Inicie sesión en el sitio web de Amazon Connect administración en https://*instance name*.my.connect.aws/.

1. En el menú de navegación, vaya a **Enrutamiento**, **Flujos**, **Crear un flujo de contacto**.

1. Arrastre un bloque [Establecer atributos de contacto](set-contact-attributes.md) a la cuadrícula y configure la página de propiedades que se muestra en la siguiente imagen:   
![\[Un bloque Establecer atributos de contacto.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-1.png)

   1. **Espacio de nombres** = **Definido por el usuario**.

   1. **Atributo** = **companyName**.

   1. Elija **Establecer manualmente**. **Valor** = **GGG**.

   1. Seleccione **Save**.

1. Arrastre un bloque [Reproducir pregunta](play.md) a la cuadrícula y configure su página de propiedades como se muestra en la siguiente imagen:   
![\[Un bloque de reproducción de mensaje.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. ****Elija el **Text-to-speech texto del chat**, configúrelo **manualmente y configure Interpretar** como SSML.**** Introduzca el siguiente texto en el cuadro para el texto que se pronunciará:

      `Hello, thank you for calling $.Attributes.companyName inc.`

   1. Seleccione **Save**.

1. Arrastre otro bloque [Reproducir pregunta](play.md) a la cuadrícula y configure su página de propiedades como se muestra en la siguiente imagen:   
![\[Un bloque de reproducción de mensaje.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. **Elige **Text-to-speech o chatea el texto**, **configura manualmente** y configura **Interpretar como** texto.** Introduzca el siguiente texto en el cuadro para el texto que se pronunciará:

      `Please try again later.`

   1. Seleccione **Save**.

1. Arrastre un bloque [Función de AWS Lambda ](invoke-lambda-function-block.md) a la cuadrícula y configure su página de propiedades como se muestra en la siguiente imagen:   
![\[Un bloque de funciones de Invoke AWS Lambda.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-invoke-lambda.png)

   1. Elija **Seleccionar manualmente** y, a continuación, elija una opción en el **MyFirstConnectLambda**menú desplegable.

   1. En la casilla **Clave de destino**, introduzca **companyName**. (Esto se envía a Lambda).

   1. Elija la casilla **Establecer dinámicamente**.

   1. En **Espacio de nombres**, seleccione **Definido por el usuario**.

   1. En **Atributo**, introduzca **companyName**.

   1. Seleccione **Save**.

1. Arrastre un bloque [Establecer atributos de contacto](set-contact-attributes.md) a la cuadrícula, elija **Agregar otro atributo** y configure su página de propiedades como se muestra en la siguiente imagen:   
![\[Un bloque Establecer atributos de contacto.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **Espacio de nombres** = **Definido por el usuario**. **Atributo** = **MyBalance**.

   1. Elija **Establecer dinámicamente**. 

   1. **Espacio de nombres** = **Externo**.

   1. **Atributo** = **customerBalance**. Este es el resultado de Lambda.

   1. Elija **Add another attribute** (Añadir otro atributo).

   1. **Espacio de nombres** = **Definido por el usuario**.

   1. **Atributo** = **MyURL**.

   1. Seleccione **Establecer dinámicamente**. **Espacio de nombres** = **Externo**. 

   1. **Atributo** = **websiteUrl**. Este es el resultado de Lambda.

   1. Seleccione **Save**.

1. Arrastre un bloque [Reproducir pregunta](play.md) a la cuadrícula y configure su página de propiedades como se muestra en la siguiente imagen:   
![\[Un bloque de reproducción de mensaje.\]](http://docs.aws.amazon.com/es_es/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-3.png)

   1. Elija Text-to-speech el **texto del chat** y defina **Interpret como** **SSML**. Introduzca el siguiente texto en el cuadro:

      `Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.`

      `Thank you for calling $.Attributes.companyName.`

      `Visit $.Attributes.MyURL for more information.`

   1. Seleccione **Save**.

1. Arrastre un bloque [Desconectar/colgar](disconnect-hang-up.md) a la cuadrícula. 

1. Conecte todos los bloques para que su flujo se parezca a la imagen mostrada al principio de este procedimiento.

1. **Introduce **MyFirstConnectFlow**el nombre y, a continuación, selecciona Publicar.**

1. En el menú de navegación, vaya a **Canales**, **Números de teléfono**. 

1. Seleccione su número de teléfono.

1. Seleccione **MyFirstConnectFlow**y elija **Guardar**.

Ahora pruébelo. Llame al número. Debería escuchar un mensaje de bienvenida, su saldo y la página web que debe visitar.