

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Richiamo delle funzioni Lambda
<a name="lambda-invoke-functions"></a>

## Fase 1: creare una funzione Lambda
<a name="lambda-create-function"></a>

Durante l'esecuzione della campagna, le campagne in uscita richiameranno la funzione Lambda con un batch di profili e si aspettano una risposta contenente i risultati per ciascuno.

### Richiedi Payload
<a name="lambda-request-payload"></a>

Quando la funzione Lambda viene richiamata, riceverà un payload JSON con la seguente struttura:

#### Struttura del payload
<a name="lambda-payload-structure"></a>

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

#### Descrizioni dei campi
<a name="lambda-field-descriptions"></a>

##### InvocationMetadata
<a name="lambda-invocation-metadata"></a>
+ **CampaignContext**: contiene metadati sull'esecuzione della campagna
+ **CampaignId**: identificatore univoco per la campagna
+ **RunId**: identificatore univoco per questa campagna specifica
+ **ActionId**: L'identificatore dell'azione di flusso eseguita dalle campagne in uscita
+ **CampaignName**: nome della campagna leggibile dall'uomo

##### Item
<a name="lambda-items"></a>
+ **CustomerProfiles**: Gamma di profili dei clienti da elaborare (raggruppati per garantire l'efficienza)
+ **ProfileId**: identificatore univoco per il profilo del cliente
+ **CustomerData**: stringa JSON del profilo del cliente
+ **IdempotencyToken**: Token unico per questa chiamata specifica per garantire un'elaborazione idempotente

#### Esempio: Request Payload
<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"
      }
    ]
  }
}
```

### Payload di risposta previsto
<a name="lambda-response-payload"></a>

La tua funzione Lambda deve restituire una risposta JSON con la seguente struttura:

#### Struttura della risposta
<a name="lambda-response-structure"></a>

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

#### Descrizioni dei campi
<a name="lambda-response-field-descriptions"></a>

##### Item
<a name="lambda-response-items"></a>
+ **CustomerProfiles**: serie di risultati corrispondenti a ciascun profilo cliente nella richiesta
+ **Id**: deve corrispondere `ProfileId` al modulo della richiesta
+ **ResultData**: oggetto JSON personalizzato contenente i risultati dell'elaborazione (opzionale)

#### Esempio: Response Payload
<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"
        }
      }
    ]
  }
}
```

## Vincoli importanti
<a name="lambda-constraints"></a>

### Limiti di dimensione del carico utile
<a name="lambda-payload-size-limits"></a>
+ **Dimensione massima del payload di risposta**: 32 KB per profilo cliente
+ Se si `ResultData` supera questo limite, la chiamata verrà contrassegnata come non valida

### Requisiti di risposta
<a name="lambda-response-requirements"></a>
+ È necessario fornire una risposta per ogni `ProfileId` elemento incluso nella richiesta
+ Le risposte mancanti verranno trattate come errori
+ Il `Id` campo nella risposta deve corrispondere esattamente `ProfileId` a quello della richiesta

### Gestione errori
<a name="lambda-error-handling"></a>
+ Se la funzione Lambda genera un'eccezione, tutti i profili del batch verranno contrassegnati come falliti
+ Includi i dettagli dell'errore `ResultData` per scopi di debug

### Tipo di chiamata
<a name="lambda-invocation-type"></a>
+ **Tipo di invocazione**: (sincrono) `REQUEST_RESPONSE`
+ La funzione dovrebbe restituire i risultati entro 30 secondi anziché essere elaborata in modo asincrono. Le risposte che richiedono più di 30 secondi comporteranno il fallimento dell'azione

## Fase 2: concedere alle campagne in uscita l'accesso alla funzione Lambda
<a name="lambda-grant-access"></a>

1. Apri la console Amazon Connect all'indirizzo [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Nella pagina delle istanze, scegli il nome dell'istanza nella colonna **Alias istanza**. Questo nome di istanza appare nell'URL che usi per accedere ad Amazon Connect.

1. Nel riquadro di navigazione sotto **Canali e comunicazioni**, scegli **Campagne in uscita**.

1. Nella sezione **Configura azioni personalizzate**, utilizza la casella a discesa **Funzioni Lambda** per selezionare la funzione da aggiungere all'istanza delle campagne in uscita.

1. Scegli **Aggiungi funzione Lambda**. Verifica che l'ARN della funzione sia aggiunto sotto la voce **Lambda Functions (Funzioni Lambda)**.

## Passaggio 3: richiamare una Lambda da una campagna
<a name="lambda-invoke-from-journey"></a>

1. Apri o crea un flusso di **Journey**.

1. Aggiungi un blocco di **azioni personalizzato** (nel gruppo **Integrate**) alla griglia. Collega i rami da e al blocco.

1. Scegli il titolo del blocco di **azioni personalizzate** per aprire la pagina delle proprietà.

1. In **Funzione ARN**, scegli dall'elenco delle funzioni che hai aggiunto all'istanza delle tue campagne in uscita.

## Fase 4: Consuma la risposta della funzione Lambda
<a name="lambda-consume-response"></a>

### Accesso diretto alle variabili
<a name="lambda-access-variables"></a>

Per accedere a queste variabili direttamente in un blocco di flusso, aggiungi il blocco dopo il blocco di **azioni personalizzate**, quindi fai riferimento agli attributi come mostrato nell'esempio seguente:

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

Assicurati che il nome specificato per l'attributo source corrisponda al nome della chiave `ResultData` restituito da Lambda.