

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 einem Stapel von Profilen auf und erwarten für jedes Profil 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**: Eindeutige Kennung für die Kampagne
+ **RunId**: Eindeutige Kennung für diesen bestimmten Kampagnenlauf
+ **ActionId**: Die Kennung der Flow-Aktion, die von ausgehenden Kampagnen ausgeführt wird
+ **CampaignName**: Human-readable Name der Kampagne

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

#### Beispiel für eine Payload einer Anforderung
<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 Nutzlast für die Antwort
<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-Nutzlast
<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 Nutzdaten
<a name="lambda-payload-size-limits"></a>
+ **Maximale Nutzlastgröße für Antworten**: 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 Feld `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

### Typ des Aufrufs
<a name="lambda-invocation-type"></a>
+ **Aufruftyp**: `REQUEST_RESPONSE` (synchron)
+ Ihre Funktion sollte innerhalb von 30 Sekunden Ergebnisse zurückgeben und nicht asynchron verarbeitet werden. Antworten, die länger als 30 Sekunden dauern, führen zum 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-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 ** Dropdownfeld „**Lambda-Funktionen“, um die Funktion auszuwählen, die Sie Ihrer Instanz für ausgehende Kampagnen hinzufügen möchten.

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

**Wichtig**  
Das vorangegangene Konsolenverfahren fügt der Lambda-Funktion automatisch die erforderliche ressourcenbasierte Richtlinie hinzu. Wenn Sie die AWS CLI oder das SDK verwenden, können Sie die [ PutConnectInstanceIntegration ](https://docs.aws.amazon.com/connect/latest/APIReference/API_connect-outbound-campaigns-v2_PutConnectInstanceIntegration.html) API mit der Integrationskonfiguration aufrufen. `lambda` Diese API fügt Ihrer Lambda-Funktion automatisch die erforderliche ressourcenbasierte Richtlinie hinzu, genau wie die Konsole.  
Wenn Sie die ressourcenbasierte Richtlinie manuell hinzufügen müssen (z. B. für kontoübergreifende Aufrufe), fügen Sie eine Richtlinienanweisung hinzu, die dem Dienstprinzipal die Erlaubnis erteilt, Ihre Funktion aufzurufen. `connect-campaigns.amazonaws.com` Sie können optional ein `Condition` Element mit `AWS:SourceAccount` und hinzufügen, um den Zugriff auf Ihr Konto und `AWS:SourceArn` die Connect Customer-Instanz einzuschränken. Wir empfehlen, beide Bedingungen anzugeben. Das folgende Beispiel zeigt die erforderliche Grundsatzerklärung.  

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "connect-campaigns.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:{{region}}:{{account-id}}:function:{{function-name}}",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "{{account-id}}"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:connect:{{region}}:{{account-id}}:instance/{{instance-id}}"
        }
      }
    }
  ]
}
```
Weitere Informationen zu ressourcenbasierten Richtlinien finden Sie unter [ Verwenden ressourcenbasierter Richtlinien für Lambda im ](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) Lambda Developer Guide. * *

## Schritt 3: Rufen Sie ein Lambda aus einer Kampagne auf
<a name="lambda-invoke-from-journey"></a>

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

1. Fügen Sie dem Grid 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 dessen Eigenschaftenseite zu öffnen.

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

## Schritt 4: Nutzen Sie die Antwort der Lambda-Funktion
<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 verweisen Sie dann auf 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.