Hinweis zum Ende des Supports: Am 30. Oktober 2026 AWS wird der Support für Amazon Pinpoint eingestellt. Nach dem 30. Oktober 2026 können Sie nicht mehr auf die Amazon-Pinpoint-Konsole oder die Amazon-Pinpoint-Ressourcen (Endpunkte, Segmente, Kampagnen, Journeys und Analytik) zugreifen. Weitere Informationen finden Sie unter Ende des Amazon-Pinpoint-Supports. Hinweis: APIs In Bezug auf SMS sind Sprach-, mobile Push-, OTP- und Telefonnummernvalidierung von dieser Änderung nicht betroffen und werden von AWS End User Messaging unterstützt.
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.
Erstellen Sie eine Lambda-Funktion für Amazon Pinpoint, die für ein Empfehlungsmodell aufgerufen werden soll
Informationen zum Erstellen einer Lambda-Funktion finden Sie unter Erste Schritte im AWS Lambda -Entwicklerhandbuch. Beachten Sie beim Entwerfen und Entwickeln der Funktion die folgenden Anforderungen und Richtlinien.
Eingabeereignisdaten
Wenn Amazon Pinpoint eine Lambda-Funktion für ein Empfehlungsmodell aufruft, sendet es eine Nutzlast, die die Konfiguration und andere Einstellungen für die Kampagne oder Journey enthält, von der die Nachricht gesendet wird. Die Nutzlast umfasst ein Endpoints Objekt, bei dem es sich um eine Map handelt, die Endpunktdefinitionen für IDs Nachrichtenempfänger zuordnet.
Die Endpunktdefinitionen verwenden die Struktur, die von der Endpunkt-Ressource der Amazon-Pinpoint-API definiert wird. Sie enthalten jedoch auch ein Feld für ein dynamisches empfohlenes Attribut namens RecommendationItems. Das Feld RecommendationItems enthält mindestens ein empfohlenes Element für den Endpunkt, das von der Amazon-Personalize-Kampagne zurückgegeben wird. Der Wert für dieses Feld ist ein geordnetes Array von 1–5 empfohlenen Elementen (als Zeichenfolgen). Die Anzahl der Elemente in dem Array hängt davon ab, wie viele Elemente Amazon Pinpoint laut Ihrer Konfiguration für jeden Endpunkt oder Benutzer abrufen soll.
Zum Beispiel:
"Endpoints": { "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z" }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z" } }
Im vorherigen Beispiel lauten die relevanten Amazon-Pinpoint-Einstellungen wie folgt:
-
Das Empfehlungsmodell ist so konfiguriert, dass drei empfohlene Elemente für jeden Endpunkt oder Benutzer abgerufen werden. (Der Wert für die Eigenschaft
RecommendationsPerMessageist auf3festgelegt.) Mit dieser Einstellung werden nur die ersten, zweiten und dritten empfohlenen Elemente für jeden Endpunkt oder Benutzer von Amazon Pinpoint abgerufen und hinzugefügt. -
Das Projekt ist für die Verwendung von benutzerdefinierten Benutzerattributen konfiguriert, in denen der Vorname, Nachname und das Umfeld der Benutzer gespeichert werden. (Im Objekt
UserAttributessind die Werte für diese Attribute enthalten.) -
Das Projekt ist für die Verwendung eines benutzerdefinierten Endpunktattributs (
AddressType) konfiguriert, das angibt, ob der Endpunkt die bevorzugte Adresse (Kanal) des Benutzers für den Empfang von Nachrichten aus dem Projekt ist. (Im ObjektAttributesist der Wert für dieses Attribut enthalten.)
Wenn Amazon Pinpoint die Lambda-Funktion aufruft und diese Nutzlast als Ereignisdaten sendet, übergibt AWS Lambda die Daten zur Verarbeitung an die Lambda-Funktion.
Jede Nutzlast kann Daten für bis zu 50 Endpunkte enthalten. Wenn ein Segment mehr als 50 Endpunkte enthält, ruft Amazon Pinpoint die Funktion wiederholt für bis zu 50 Endpunkte gleichzeitig auf, bis die Funktion alle Daten verarbeitet.
Antwortdaten und Anforderungen
Berücksichtigen Sie beim Entwerfen und Entwickeln Ihrer Lambda-Funktion die Kontingente für Machine-Learning-Modelle. Wenn die Funktion die durch diese Kontingente definierten Bedingungen nicht erfüllt, kann Amazon Pinpoint die Nachricht nicht verarbeiten und senden.
Beachten Sie auch die folgenden Anforderungen:
-
Die Funktion muss aktualisierte Endpunktdefinitionen in dem Format zurückgeben, das von den Eingabeereignisdaten bereitgestellt wurde.
-
Jede aktualisierte Endpunktdefinition kann 1–10 benutzerdefinierte empfohlene Attribute für den Endpunkt oder Benutzer enthalten. Die Namen dieser Attribute müssen mit den Attributnamen übereinstimmen, die Sie beim Konfigurieren des Empfehlungsmodells in Amazon Pinpoint angeben.
-
Alle benutzerdefinierten empfohlenen Attribute müssen in einem einzelnen
Recommendations-Objekt für jeden Endpunkt oder Benutzer zurückgegeben werden. Mithilfe dieser Anforderung wird sichergestellt, dass keine Namenskonflikte auftreten. Sie können dasRecommendations-Objekt einem beliebigen Speicherort in einer Endpunktdefinition hinzufügen. -
Der Wert für jedes benutzerdefinierte empfohlene Attribut muss eine Zeichenfolge (Einzelwert) oder ein Array von Zeichenfolgen (mehrere Werte) sein. Wenn es sich bei dem Wert um ein Array von Zeichenfolgen handelt, empfehlen wir, die Reihenfolge der empfohlenen Elemente beizubehalten, die von Amazon Personalize zurückgegeben wurden, wie im Feld
RecommendationItemsangegeben. Andernfalls könnte es sein, dass Ihre Inhalte die Vorhersagen des Modells für einen Endpunkt oder Benutzer nicht widerspiegeln. -
Die Funktion sollte keine anderen Elemente in den Ereignisdaten ändern. Dies gilt auch für andere Attributwerte für einen Endpunkt oder Benutzer. Es sollten nur Werte für benutzerdefinierte empfohlene Attribute hinzugefügt und zurückgegeben werden. Amazon Pinpoint akzeptiert keine Aktualisierungen anderer Werte in der Antwort der Funktion.
-
Die Funktion muss in derselben AWS Region gehostet werden wie das Amazon Pinpoint Pinpoint-Projekt, das die Funktion aufruft. Wenn sich die Funktion und das Projekt nicht in derselben Region befinden, kann Amazon Pinpoint keine Ereignisdaten an die Funktion senden.
Wenn eine der oben genannten Anforderungen nicht erfüllt ist, kann Amazon Pinpoint die Nachricht nicht verarbeiten und an einen oder mehrere Endpunkte senden. Dies kann zum Fehlschlagen einer Kampagnen- oder Journey-Aktivität führen.
Schließlich empfehlen wir, 256 gleichzeitige Ausführungen für die Funktion zu reservieren.
Insgesamt sollte Ihre Lambda-Funktion die Ereignisdaten verarbeiten, die von Amazon Pinpoint gesendet werden, und geänderte Endpunktdefinitionen zurückgeben. Zu diesem Zweck kann die Funktion jeden Endpunkt im Endpoints-Objekt durchlaufen und für jeden Endpunkt Werte für die zu verwendenden benutzerdefinierten empfohlenen Attribute erstellen und festlegen. Der folgende in Python geschriebene Beispiel-Handler, der mit dem vorherigen Beispiel für Eingabeereignisdaten fortfährt, zeigt folgende Ausgabe:
import json import string def lambda_handler(event, context): print("Received event: " + json.dumps(event)) print("Received context: " + str(context)) segment_endpoints = event["Endpoints"] new_segment = dict() for endpoint_id in segment_endpoints.keys(): endpoint = segment_endpoints[endpoint_id] if supported_endpoint(endpoint): new_segment[endpoint_id] = add_recommendation(endpoint) print("Returning endpoints: " + json.dumps(new_segment)) return new_segment def supported_endpoint(endpoint): return True def add_recommendation(endpoint): endpoint["Recommendations"] = dict() customTitleList = list() customGenreList = list() for i,item in enumerate(endpoint["RecommendationItems"]): item = int(item) if item == 1210: customTitleList.insert(i, "Hanna") customGenreList.insert(i, "Action") elif item == 1527: customTitleList.insert(i, "Catastrophe") customGenreList.insert(i, "Comedy") elif item == 1815: customTitleList.insert(i, "Fleabag") customGenreList.insert(i, "Comedy") elif item == 2009: customTitleList.insert(i, "Late Night") customGenreList.insert(i, "Drama") elif item == 4582: customTitleList.insert(i, "Agatha Christie\'s The ABC Murders") customGenreList.insert(i, "Crime") elif item == 6542: customTitleList.insert(i, "Hunters") customGenreList.insert(i, "Drama") endpoint["Recommendations"]["Title"] = customTitleList endpoint["Recommendations"]["Genre"] = customGenreList return endpoint
Im vorherigen Beispiel werden die Ereignisdaten als Parameter an den Handler übergeben. AWS Lambda event Der Handler durchläuft jeden Endpunkt im Endpoints-Objekt und legt Werte für benutzerdefinierte empfohlene Attribute mit den Namen Recommendations.Title und Recommendations.Genre fest. Die return-Anweisung gibt jede aktualisierte Endpunktdefinition an Amazon Pinpoint zurück.
Bei Fortführung des früheren Beispiels für Eingabeereignisdaten lauten die aktualisierten Endpunktdefinitionen wie folgt:
"Endpoints":{ "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"sofiam@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.875Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"SofiaMartínez", "UserAttributes":{ "LastName":[ "Martínez" ], "FirstName":[ "Sofia" ], "Neighborhood":[ "East Bay" ] } }, "RecommendationItems":[ "1815", "2009", "1527" ], "CreationDate":"2020-02-26T18:56:24.875Z", "Recommendations":{ "Title":[ "Fleabag", "Late Night", "Catastrophe" ], "Genre":[ "Comedy", "Comedy", "Comedy" ] } }, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"alejandror@example.com", "EndpointStatus":"ACTIVE", "OptOut":"NONE", "EffectiveDate":"2020-02-26T18:56:24.897Z", "Attributes":{ "AddressType":[ "primary" ] }, "User":{ "UserId":"AlejandroRosalez", "UserAttributes":{ "LastName ":[ "Rosalez" ], "FirstName":[ "Alejandro" ], "Neighborhood":[ "West Bay" ] } }, "RecommendationItems":[ "1210", "6542", "4582" ], "CreationDate":"2020-02-26T18:56:24.897Z", "Recommendations":{ "Title":[ "Hanna", "Hunters", "Agatha Christie\'s The ABC Murders" ], "Genre":[ "Action", "Drama", "Crime" ] } } }
Im vorherigen Beispiel hat die Funktion das erhaltene Endpoints-Objekt geändert und die Ergebnisse zurückgegeben. Das Endpoint-Objekt für jeden Endpunkt enthält nun ein neues Recommendations-Objekt mit den Feldern Genre und Title. In jedem dieser Felder wird ein geordnetes Array von drei Werten (als Zeichenfolgen) gespeichert, wobei jeder Wert erweiterte Inhalte für ein entsprechendes empfohlenes Element im Feld RecommendationItems bereitstellt.