

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Aufrufen von Lambda-Funktionen
<a name="lambda-invoke-functions"></a>

## Schritt 1: Erstellen einer Lambda-Funktion
<a name="lambda-create-function"></a>

Während der Kampagnenausführung rufen ausgehende Kampagnen Ihre Lambda-Funktion mit einer Reihe von Profilen auf und erwarten für jedes eine Antwort mit Ergebnissen.

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

Wenn Ihre Lambda-Funktion aufgerufen wird, erhält sie eine JSON-Nutzlast mit der folgenden Struktur:

#### Struktur der Nutzlast
<a name="lambda-payload-structure"></a>

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

#### Beschreibungen der Felder
<a name="lambda-field-descriptions"></a>

##### InvocationMetadata
<a name="lambda-invocation-metadata"></a>
+ **CampaignContext**: Enthält Metadaten zur Kampagnenausführung
+ **CampaignId**: Eindeutiger Bezeichner für die Kampagne
+ **RunId**: Eindeutige Kennung für diesen speziellen Kampagnenlauf
+ **ActionId**: Die Kennung der Flow-Aktion, die von ausgehenden Kampagnen ausgeführt wird
+ **CampaignName**: Für Menschen lesbarer Name der Kampagne

##### Items
<a name="lambda-items"></a>
+ **CustomerProfiles**: Reihe von zu verarbeitenden Kundenprofilen (aus Effizienzgründen gebündelt)
+ **ProfileId**: Eindeutige Kennung für das Kundenprofil
+ **CustomerData**: JSON-Zeichenfolge des Kundenprofils
+ **IdempotencyToken**: Einzigartiges Token für diesen speziellen Aufruf, um eine idempotente Verarbeitung sicherzustellen

#### Beispiel für eine Payload für eine Anfrage
<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"
      }
    ]
  }
}
```

### Erwartete Antwort-Payload
<a name="lambda-response-payload"></a>

Ihre Lambda-Funktion muss eine JSON-Antwort mit der folgenden Struktur zurückgeben:

#### Struktur der Antwort
<a name="lambda-response-structure"></a>

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

#### Beschreibungen der Felder
<a name="lambda-response-field-descriptions"></a>

##### Items
<a name="lambda-response-items"></a>
+ **CustomerProfiles**: Reihe von Ergebnissen, die jedem Kundenprofil in der Anfrage entsprechen
+ **ID**: Muss mit der `ProfileId` aus der Anfrage übereinstimmen
+ **ResultData**: Benutzerdefiniertes JSON-Objekt, das Ihre Verarbeitungsergebnisse enthält (optional)

#### Beispiel für eine Antwort-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"
        }
      }
    ]
  }
}
```

## Wichtige Einschränkungen
<a name="lambda-constraints"></a>

### Größenbeschränkungen für Nutzlasten
<a name="lambda-payload-size-limits"></a>
+ **Maximale Größe der Antwort-Nutzlast**: 32 KB pro Kundenprofil
+ Wenn Sie dieses Limit `ResultData` überschreiten, wird der Aufruf als ungültig markiert

### Anforderungen an die Antwort
<a name="lambda-response-requirements"></a>
+ Sie müssen für alle in der Anfrage `ProfileId` enthaltenen Informationen eine Antwort geben
+ Fehlende Antworten werden als Fehler behandelt
+ Das `Id` Feld in der Antwort muss genau mit dem `ProfileId` aus der Anfrage übereinstimmen

### Fehlerbehandlung
<a name="lambda-error-handling"></a>
+ Wenn Ihre Lambda-Funktion eine Ausnahme auslöst, werden alle Profile im Batch als fehlgeschlagen markiert
+ Fügen Sie zu Debugging-Zwecken Fehlerdetails `ResultData` hinzu

### Art des Aufrufs
<a name="lambda-invocation-type"></a>
+ **Aufruftyp: `REQUEST_RESPONSE` (synchron**)
+ Ihre Funktion sollte Ergebnisse innerhalb von 30 Sekunden zurückgeben, anstatt sie asynchron zu verarbeiten. Antworten, die länger als 30 Sekunden dauern, führen zu einem Fehlschlagen der Aktion

## Schritt 2: Gewähren Sie ausgehenden Kampagnen Zugriff auf Ihre Lambda-Funktion
<a name="lambda-grant-access"></a>

1. Öffnen Sie die Amazon Connect Connect-Konsole unter [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Wählen Sie auf der Instance-Seite Ihren Instance-Namen in der Spalte **Instance Alias** aus. Dieser Instancename erscheint in der URL, die Sie für den Zugriff auf Amazon Connect verwenden.

1. Wählen Sie im Navigationsbereich unter **Kanäle und Kommunikation die** Option **Ausgehende Kampagnen** aus.

1. Verwenden Sie im Abschnitt **Benutzerdefinierte Aktionen einrichten** das Dropdown-Feld **Lambda-Funktionen**, um die Funktion auszuwählen, die zu Ihrer Instanz für ausgehende Kampagnen hinzugefügt werden soll.

1. Wählen Sie **Add Lambda Function**. Überprüfen Sie, ob der ARN der Funktion in **Lambda Functions (Lambda-Funktionen)** hinzugefügt wurde.

## Schritt 3: Ein Lambda aus einer Kampagne aufrufen
<a name="lambda-invoke-from-journey"></a>

1. Öffnen oder erstellen Sie einen **Journey-Flow**.

1. Fügen Sie dem Raster einen **benutzerdefinierten Aktionsblock** (in der Gruppe **Integrieren**) hinzu. Verbinden Sie die Verzweigungen, die zum Block und vom Block wegführen.

1. Wählen Sie den Titel des **benutzerdefinierten Aktionsblocks**, um die zugehörige Eigenschaftenseite zu öffnen.

1. Wählen Sie unter **Function ARN** aus der Liste der Funktionen aus, die Sie zu Ihrer Instanz für ausgehende Kampagnen hinzugefügt haben.

## Schritt 4: Verbrauchen Sie die Lambda-Funktionsantwort
<a name="lambda-consume-response"></a>

### Direktes Zugreifen auf Variablen
<a name="lambda-access-variables"></a>

Um direkt in einem Flow-Block auf diese Variablen zuzugreifen, fügen Sie den Block nach dem **benutzerdefinierten Aktionsblock** hinzu und referenzieren Sie dann die Attribute, wie im folgenden Beispiel gezeigt:

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

Stellen Sie sicher, dass der für das Quellattribut angegebene Name mit dem Schlüsselnamen in der vom Lambda `ResultData` zurückgegebenen Datei übereinstimmt.