View a markdown version of this page

Aufrufen von Lambda-Funktionen - Amazon Connect-Kunde

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

Schritt 1: Erstellen einer Lambda-Funktion

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

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

Struktur der Nutzlast

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

Beschreibungen der Felder

InvocationMetadata
  • 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
  • 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

{ "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

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

Struktur der Antwort

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

Beschreibungen der Felder

Items
  • 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

{ "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

Größenbeschränkungen für Nutzdaten

  • 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

  • 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

  • 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

  • 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

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

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

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

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

  5. 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 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 Lambda Developer Guide.

Schritt 3: Rufen Sie ein Lambda aus einer Kampagne auf

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

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

  3. Wählen Sie den Titel des benutzerdefinierten Aktionsblocks, um dessen Eigenschaftenseite zu öffnen.

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

Direktes Zugreifen auf Variablen

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.