Avviso di fine del supporto: il 30 ottobre 2026 AWS terminerà il supporto per Amazon Pinpoint. Dopo il 30 ottobre 2026, non potrai più accedere alla console Amazon Pinpoint o alle risorse Amazon Pinpoint (endpoint, segmenti, campagne, percorsi e analisi). Per ulteriori informazioni, consulta Fine del supporto di Amazon Pinpoint. Nota: per quanto APIs riguarda gli SMS, i comandi vocali, i messaggi push su dispositivi mobili, l'OTP e la convalida del numero di telefono non sono interessati da questa modifica e sono supportati da End User Messaging. AWS
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea una funzione Lambda per Amazon Pinpoint da richiamare per un modello di raccomandazione
Per informazioni su come creare una funzione Lambda, consulta Guida introduttiva nella Guida per gli sviluppatori di AWS Lambda . Quando progetti e sviluppi la tua funzione, tiene a mente i requisiti e le linee guida seguenti.
Dati dell’evento di input
Quando Amazon Pinpoint richiama una funzione Lambda per un modello di raccomandazione, invia un payload contenente la configurazione e altre impostazioni per la campagna o il percorso di invio del messaggio. Il payload include un Endpoints oggetto, che è una mappa che associa l'endpoint alle definizioni degli endpoint IDs per i destinatari dei messaggi.
Le definizioni di endpoint utilizzano la struttura definita dalla risorsa Endpoint dell'API Amazon Pinpoint. Tuttavia, includono anche un campo per un attributo dinamico suggerito denominato RecommendationItems. Il campo RecommendationItems contiene uno o più elementi suggeriti per l'endpoint, come restituiti dalla campagna Amazon Personalize. Il valore di questo campo è un array ordinato contenente da 1 a 5 elementi suggeriti (come stringhe). Il numero di elementi nell'array dipende dal numero di elementi suggeriti configurati per il recupero da parte di Amazon Pinpoint per ciascun endpoint o utente.
Per esempio:
"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" } }
Nell'esempio precedente, le impostazioni Amazon Pinpoint pertinenti sono:
-
Il modello della funzione di suggerimento è configurato per recuperare tre elementi suggeriti per ogni endpoint o utente. (Il valore della proprietà
RecommendationsPerMessageè impostato su3.) Con questa impostazione, Amazon Pinpoint recupera e aggiunge solo i primi, secondi e terzi elementi suggeriti per ogni endpoint o utente. -
Il progetto è configurato per utilizzare attributi utente personalizzati che memorizzano il nome, il cognome e il quartiere in cui vive ogni utente. (L'oggetto
UserAttributescontiene i valori per questi attributi.) -
Il progetto è configurato per utilizzare un attributo endpoint personalizzato (
AddressType) che indica se l'endpoint è l'indirizzo (canale) preferito dall'utente per ricevere messaggi dal progetto. (L'oggettoAttributescontiene il valore per questo attributo.)
Quando Amazon Pinpoint richiama la funzione Lambda e invia il payload come dati dell'evento, AWS Lambda passa i dati alla funzione Lambda per l'elaborazione.
Ogni payload può contenere dati per un massimo di 50 endpoint. Se un segmento contiene più di 50 endpoint, Amazon Pinpoint richiama la funzione ripetutamente, per un massimo di 50 endpoint alla volta, finché non vengono elaborati tutti i dati.
Dati e requisiti di risposta
Quando progetti e sviluppi la funzione Lambda, considera le quote per i modelli di machine learning. Se la funzione non soddisfa le condizioni definite da queste quote, Amazon Pinpoint non sarà in grado di elaborare e inviare il messaggio.
Tieni a mente anche i seguenti requisiti:
-
La funzione deve restituire le definizioni degli endpoint aggiornate nello stesso formato fornito dai dati degli eventi di input.
-
Ogni definizione di endpoint aggiornata può contenere da 1 a 10 attributi consigliati personalizzati per l'endpoint o l'utente. I nomi di questi attributi devono corrispondere ai nomi degli attributi specificati quando configuri il modello di raccomandazione in Amazon Pinpoint.
-
Tutti gli attributi suggeriti personalizzati devono essere restituiti in un singolo oggetto
Recommendationsper ogni endpoint o utente. Questo requisito consente di garantire che i conflitti di denominazione non si verifichino. Puoi aggiungere l'oggettoRecommendationsin qualsiasi posizione in una definizione di endpoint. -
Il valore per ogni attributo suggerito personalizzato deve essere una stringa (valore singolo) o una matrice di stringhe (valori multipli). Se il valore è un array di stringhe, è consigliabile mantenere l'ordine degli elementi suggeriti restituiti da Amazon Personalize, come indicato nel campo
RecommendationItems. In caso contrario, il contenuto potrebbe non riflettere le previsioni del modello per un endpoint o un utente. -
La funzione non deve modificare altri elementi nei dati dell'evento, inclusi altri valori di attributo per un endpoint o un utente. Deve aggiungere e restituire solo valori per gli attributi consigliati personalizzati. Amazon Pinpoint non accetterà aggiornamenti a nessun altro valore nella risposta della funzione.
-
La funzione deve essere ospitata nella stessa AWS regione del progetto Amazon Pinpoint che richiama la funzione. Se la funzione e il progetto non si trovano nella stessa regione, Amazon Pinpoint non è in grado di inviare i dati degli eventi alla funzione.
Se uno dei requisiti precedenti non viene soddisfatto, Amazon Pinpoint non sarà in grado di elaborare e inviare il messaggio a uno o più endpoint. Ciò potrebbe causare un fallimento di una campagna o di un'attività di viaggio.
Infine, si consiglia di riservare 256 esecuzioni simultanee per la funzione.
Nel complesso, la funzione Lambda deve elaborare i dati degli eventi inviati da Amazon Pinpoint e restituire le definizioni di endpoint modificate. È possibile eseguire questa operazione mediante l'iterazione di ciascun endpoint nell'oggetto Endpoints e, per ogni endpoint, creando e impostando valori per gli attributi suggeriti personalizzati che si desidera utilizzare. Il seguente handler di esempio, scritto in Python e che prosegue l'esempio precedente di dati degli eventi di input, mostra quanto segue:
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
Nell'esempio precedente, AWS Lambda passa i dati dell'evento al gestore come parametro. event L’handler esegue l'iterazione di ciascun endpoint nell'oggetto Endpoints e imposta i valori per gli attributi suggeriti personalizzati denominati Recommendations.Title e Recommendations.Genre. L'istruzione return restituisce ogni definizione di endpoint aggiornata ad Amazon Pinpoint.
Continuando con l'esempio precedente di dati degli eventi di input, le definizioni degli endpoint aggiornati sono:
"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" ] } } }
Nell'esempio precedente, la funzione ha modificato l'oggetto Endpoints ricevuto e restituito i risultati. L'oggetto Endpoint per ogni endpoint ora contiene un nuovo oggetto Recommendations, che contiene i campi Title e Genre. Ciascuno di questi campi memorizza una matrice ordinata di tre valori (come stringhe), in cui ogni valore fornisce contenuto migliorato per un elemento suggerito corrispondente nel campo RecommendationItems.