Avis de fin de support : le 30 octobre 2026, le support d'Amazon Pinpoint AWS prendra fin. Après le 30 octobre 2026, vous ne pourrez plus accéder à la console Amazon Pinpoint ni aux ressources Amazon Pinpoint (points de terminaison, segments, campagnes, parcours et analytique). Pour plus d’informations, consultez Fin de la prise en charge d’Amazon Pinpoint. Remarque : en ce qui APIs concerne les SMS, la voix, le push mobile, l'OTP et la validation des numéros de téléphone ne sont pas concernés par cette modification et sont pris en charge par AWS la messagerie utilisateur final.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'une fonction Lambda qu'Amazon Pinpoint appellera pour un modèle de recommandation
Pour savoir comment créer une fonction Lambda, consultez Démarrage dans le Guide du développeur AWS Lambda . Lorsque vous concevez et développez votre fonction, gardez à l'esprit les exigences et consignes suivantes.
Données d'événement en entrée
Lorsqu'Amazon Pinpoint invoque une fonction Lambda pour un modèle de recommandation, il envoie une charge utile qui contient la configuration et d'autres paramètres pour la campagne ou le parcours qui envoie le message. La charge utile inclut un Endpoints objet, qui est une carte qui associe le point de terminaison aux définitions de point de IDs terminaison pour les destinataires des messages.
Les définitions de point de terminaison utilisent la structure définie par la ressource Endpoint de l'API Amazon Pinpoint. Cependant, elles incluent également un champ pour un attribut recommandé dynamique nommé RecommendationItems. Le champ RecommendationItems contient un ou plusieurs éléments recommandés pour le point de terminaison, tels que renvoyés par la campagne Amazon Personalize. La valeur de ce champ est un tableau ordonné de 1 à 5 éléments recommandés (sous forme de chaînes). Le nombre d'éléments dans le tableau dépend du nombre d'éléments recommandés que vous avez configuré dans Amazon Pinpoint afin qu'ils soient récupérés pour chaque point de terminaison ou utilisateur.
Par exemple :
"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" } }
Dans l'exemple précédent, les paramètres Amazon Pinpoint pertinents sont :
-
Le modèle de recommandation est configuré pour récupérer trois éléments recommandés pour chaque point de terminaison ou utilisateur. (La valeur de la propriété
RecommendationsPerMessageest définie sur3.) Avec ce paramètre, Amazon Pinpoint récupère et ajoute uniquement les trois premiers éléments recommandés pour chaque point de terminaison ou utilisateur. -
Le projet est configuré pour utiliser des attributs utilisateur personnalisés qui stockent le prénom, le nom de famille et le quartier de chaque utilisateur. (L'objet
UserAttributescontient les valeurs de ces attributs.) -
Le projet est configuré pour utiliser un attribut de point de terminaison personnalisé (
AddressType) qui indique si le point de terminaison est l'adresse préférée (canal) de l'utilisateur pour recevoir des messages du projet. (L'objetAttributescontient la valeur de cet attribut.)
Lorsqu'Amazon Pinpoint appelle la fonction Lambda et envoie cette charge utile en tant que données d'événement, AWS Lambda transmet les données à la fonction Lambda afin qu'elles soient traitées.
Chaque charge utile peut contenir des données pour un maximum de 50 points de terminaison. Si un segment contient plus de 50 points de terminaison, Amazon Pinpoint appelle la fonction à plusieurs reprises, pour un maximum de 50 points de terminaison à la fois, jusqu'à ce que la fonction traite toutes les données.
Données et exigences de réponse
Lorsque vous concevez et développez votre fonction Lambda, gardez à l'esprit les quotas pour les modèles de machine learning. Si la fonction ne répond pas aux conditions définies par ces quotas, Amazon Pinpoint ne sera pas en mesure de traiter et d'envoyer le message.
Gardez également à l'esprit les exigences suivantes :
-
La fonction doit renvoyer les définitions de point de terminaison mises à jour dans le même format que celui fourni par les données d'événement en entrée.
-
Chaque définition de point de terminaison mise à jour peut contenir 1 à 10 attributs personnalisés recommandés pour le point de terminaison ou l'utilisateur. Les noms de ces attributs doivent correspondre aux noms d'attributs que vous spécifiez lorsque vous configurez le modèle de recommandation dans Amazon Pinpoint.
-
Tous les attributs recommandés personnalisés doivent être renvoyés dans un seul objet
Recommendationspour chaque point de terminaison ou utilisateur. Cette exigence permet de s'assurer qu'aucun conflit de dénomination ne survient. Vous pouvez ajouter l'objetRecommendationsà n'importe quel emplacement dans une définition de point de terminaison. -
La valeur de chaque attribut recommandé personnalisé doit être une chaîne (valeur unique) ou un tableau de chaînes (valeurs multiples). Si la valeur est un tableau de chaînes, nous vous recommandons de préserver l'ordre des éléments recommandés renvoyés par Amazon Personalize, comme indiqué dans le champ
RecommendationItems. Sinon, votre contenu risque de ne pas refléter les prédictions du modèle pour un point de terminaison ou un utilisateur. -
La fonction ne doit pas modifier d'autres éléments dans les données d'événement, y compris d'autres valeurs d'attribut pour un point de terminaison ou un utilisateur. Il ne doit ajouter et renvoyer des valeurs que pour les attributs recommandés personnalisés. Amazon Pinpoint n'acceptera aucune mise à jour d'autres valeurs dans la réponse de la fonction.
-
La fonction doit être hébergée dans la même AWS région que le projet Amazon Pinpoint qui appelle la fonction. Si la fonction et le projet ne se trouvent pas dans la même région, Amazon Pinpoint ne peut pas envoyer de données d'événement à la fonction.
Si l'une des exigences précédentes n'est pas satisfaite, Amazon Pinpoint ne sera pas en mesure de traiter et d'envoyer le message à un ou plusieurs points de terminaison. Cela peut entraîner l'échec d'une activité de campagne ou de parcours.
Enfin, nous vous recommandons de réserver 256 exécutions simultanées pour la fonction.
Dans l'ensemble, votre fonction Lambda doit traiter les données d'événement envoyées par Amazon Pinpoint et renvoyer les définitions de point de terminaison modifiées. Pour cela, elle peut itérer chaque point de terminaison de l'objet Endpoints et, pour chaque point de terminaison, créer et définir des valeurs pour les attributs personnalisés recommandés que vous souhaitez utiliser. L'exemple de gestionnaire suivant, écrit en Python et qui poursuit l'exemple précédent de données d'événement d'entrée, montre ceci :
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
Dans l'exemple précédent, AWS Lambda transmet les données de l'événement au gestionnaire en tant que event paramètre. Le gestionnaire itère chaque point de terminaison de l'objet Endpoints et définit les valeurs des attributs recommandés personnalisés nommés Recommendations.Title et Recommendations.Genre. L'instruction return renvoie chaque définition de point de terminaison mise à jour à Amazon Pinpoint.
Pour poursuivre l'exemple précédent de données d'événement en entrée, les définitions de point de terminaison mises à jour sont les suivantes :
"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" ] } } }
Dans l'exemple précédent, la fonction a modifié l'objet Endpoints reçu et a renvoyé les résultats. L'objet Endpoint de chaque point de terminaison contient désormais un nouvel objet Recommendations, qui contient des champs Title et Genre. Chacun de ces champs stocke un tableau ordonné de trois valeurs (sous forme de chaînes), où chaque valeur fournit un contenu amélioré pour un élément recommandé correspondant dans le champ RecommendationItems.