

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

# Invocar funções do Lambda
<a name="lambda-invoke-functions"></a>

## Etapa 1: criar uma função do Lambda
<a name="lambda-create-function"></a>

Durante a execução da campanha, as campanhas externas invocarão sua função Lambda com um lote de perfis e esperam uma resposta contendo resultados para cada um.

### Solicitar carga
<a name="lambda-request-payload"></a>

Quando sua função Lambda for invocada, ela receberá uma carga JSON com a seguinte estrutura:

#### Estrutura da carga útil
<a name="lambda-payload-structure"></a>

```
{
  "InvocationMetadata": {
    "CampaignContext": {
      "CampaignId": "string",
      "RunId": "string",
      "ActionId": "string",
      "CampaignName": "string"
    }
  },
  "Items": {
    "CustomerProfiles": [
      {
        "ProfileId": "string",
        "CustomerData": "string",
        "IdempotencyToken": "string"
      }
    ]
  }
}
```

#### Descrições de campo
<a name="lambda-field-descriptions"></a>

##### InvocationMetadata
<a name="lambda-invocation-metadata"></a>
+ **CampaignContext**: contém metadados sobre a execução da campanha
+ **CampaignId**: Identificador exclusivo para a campanha
+ **RunId**: Identificador exclusivo para essa campanha específica veiculada
+ **ActionId**: O identificador da ação de fluxo que está sendo executada por campanhas externas
+ **CampaignName**: Nome legível por humanos da campanha

##### Itens
<a name="lambda-items"></a>
+ **CustomerProfiles**: Conjunto de perfis de clientes para processar (agrupados para maior eficiência)
+ **ProfileId**: Identificador exclusivo para o perfil do cliente
+ **CustomerData**: string JSON do perfil do cliente
+ **IdempotencyToken**: token exclusivo para essa invocação específica para garantir um processamento idempotente

#### Exemplo de carga útil de solicitação
<a name="lambda-example-request"></a>

```
{
  "InvocationMetadata": {
    "CampaignContext": {
      "CampaignId": "campaign-12345",
      "RunId": "run-67890",
      "ActionId": "activity-abc123",
      "CampaignName": "Welcome Campaign"
    }
  },
  "Items": {
    "CustomerProfiles": [
      {
        "ProfileId": "customer-001",
        "CustomerData": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"email\":\"john.doe@example.com\"}",
        "IdempotencyToken": "token-xyz789"
      },
      {
        "ProfileId": "customer-002",
        "CustomerData": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"email\":\"jane.smith@example.com\"}",
        "IdempotencyToken": "token-abc456"
      }
    ]
  }
}
```

### Carga útil de resposta esperada
<a name="lambda-response-payload"></a>

Sua função Lambda deve retornar uma resposta JSON com a seguinte estrutura:

#### Estrutura de respostas
<a name="lambda-response-structure"></a>

```
{
  "Items": {
    "CustomerProfiles": [
      {
        "Id": "string",
        "ResultData": {}
      }
    ]
  }
}
```

#### Descrições de campo
<a name="lambda-response-field-descriptions"></a>

##### Itens
<a name="lambda-response-items"></a>
+ **CustomerProfiles**: matriz de resultados correspondente a cada perfil de cliente na solicitação
+ **ID**: deve corresponder ao `ProfileId` da solicitação
+ **ResultData**: objeto JSON personalizado contendo seus resultados de processamento (opcional)

#### Exemplo de carga útil de resposta
<a name="lambda-example-response"></a>

```
{
  "Items": {
    "CustomerProfiles": [
      {
        "Id": "customer-001",
        "ResultData": {
          "recommendedProduct": "Premium Plan",
          "score": 85,
          "nextAction": "send_email"
        }
      },
      {
        "Id": "customer-002",
        "ResultData": {
          "error": "Invalid customer data",
          "errorCode": "VALIDATION_ERROR"
        }
      }
    ]
  }
}
```

## Restrições importantes
<a name="lambda-constraints"></a>

### Limites de tamanho da carga
<a name="lambda-payload-size-limits"></a>
+ **Tamanho máximo da carga útil de resposta**: 32 KB por perfil de cliente
+ Se você `ResultData` exceder esse limite, a invocação será marcada como inválida

### Requisitos de resposta
<a name="lambda-response-requirements"></a>
+ Você deve fornecer uma resposta para cada item `ProfileId` incluído na solicitação
+ As respostas ausentes serão tratadas como erros
+ O `Id` campo na resposta deve corresponder exatamente ao `ProfileId` da solicitação

### Tratamento de erros
<a name="lambda-error-handling"></a>
+ Se sua função Lambda gerar uma exceção, todos os perfis no lote serão marcados como falhados
+ Inclua detalhes do erro `ResultData` para fins de depuração

### Tipo de invocação
<a name="lambda-invocation-type"></a>
+ **Tipo de invocação**: `REQUEST_RESPONSE` (síncrono)
+ Sua função deve retornar os resultados em 30 segundos, em vez de ser processada de forma assíncrona. Respostas que demoram mais de 30 segundos resultarão em falha na ação

## Etapa 2: conceder às campanhas externas acesso à sua função Lambda
<a name="lambda-grant-access"></a>

1. Abra o console do Amazon Connect em [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Na página Instâncias, escolha o nome da instância na coluna **Alias da instância**. Esse nome da instância aparece no URL que você usa para acessar o Amazon Connect.

1. No painel de navegação, em **Canais e comunicações**, escolha Campanhas **externas**.

1. Na seção **Configurar ações personalizadas**, use a caixa suspensa **Funções do Lambda** para selecionar a função a ser adicionada à sua instância de campanhas externas.

1. Escolha **Adicionar função do Lambda**. Confirme se o ARN da função é adicionado em **Lambda Functions (Funções Lambda)**.

## Etapa 3: invocar um Lambda a partir de uma campanha
<a name="lambda-invoke-from-journey"></a>

1. Abra ou crie um fluxo do **Journey**.

1. Adicione um bloco de **ação personalizado** (no grupo **Integrar**) à grade. Conecte as ramificações ao bloco e vice-versa.

1. Escolha o título do bloco de **ação personalizada** para abrir sua página de propriedades.

1. Em **ARN da função**, escolha na lista de funções que você adicionou à sua instância de campanhas externas.

## Etapa 4: Consumir a resposta da função Lambda
<a name="lambda-consume-response"></a>

### Acessar variáveis diretamente
<a name="lambda-access-variables"></a>

Para acessar essas variáveis diretamente em um bloco de fluxo, adicione o bloco após o bloco de **ação personalizada** e, em seguida, faça referência aos atributos conforme mostrado no exemplo a seguir:

```
RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct
Score - $.LambdaInvocation.ResultData.score
```

Certifique-se de que o nome especificado para o atributo de origem corresponda ao nome da chave `ResultData` retornada do Lambda.