Aviso de fin de soporte: el 30 de octubre de 2026, AWS finalizará el soporte para Amazon Pinpoint. Después del 30 de octubre de 2026, ya no podrá acceder a la consola de Amazon Pinpoint ni a los recursos de Amazon Pinpoint (puntos de conexión, segmentos, campañas, recorridos y análisis). Para obtener más información, consulte Fin de soporte de Amazon Pinpoint. Nota: en lo APIs que respecta a los SMS, este cambio no afecta a los mensajes de voz, a las notificaciones push móviles, a las OTP y a la validación de números de teléfono, y son compatibles con la mensajería para el usuario AWS final.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Crear una función de Lambda para que Amazon Pinpoint la invoque para un modelo de recomendaciones
Para obtener información sobre cómo crear una función de Lambda, consulte Introducción en la Guía para desarrolladores de AWS Lambda. Cuando diseñe y desarrolle la función, tenga en cuenta los siguientes requisitos y directrices.
Datos de eventos de entrada
Cuando Amazon Pinpoint invoca una función de Lambda para un modelo de recomendación, envía una carga que contiene la configuración y otros ajustes para la campaña o recorrido que envía el mensaje. La carga incluye un objeto Endpoints, que es un mapa que asocia los ID de puntos de enlace con las definiciones de punto de enlace para los destinatarios de los mensajes.
Las definiciones de punto de conexión utilizan la estructura definida por el recurso de punto de conexión de la API de Amazon Pinpoint. Sin embargo, también incluyen un campo para un atributo dinámico recomendado denominado RecommendationItems. El campo RecommendationItems contiene uno o varios elementos recomendados para el punto de conexión, tal como se devuelve de la campaña de Amazon Personalize. El valor de este campo es una matriz ordenada de 1 a 5 elementos recomendados (como cadenas). El número de elementos de la matriz depende del número de elementos recomendados que haya configurado Amazon Pinpoint para recuperar para cada punto de conexión o usuario.
Por ejemplo:
"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" } }
En el ejemplo anterior, la configuración de Amazon Pinpoint relevante es:
-
El modelo de recomendación está configurado para recuperar tres elementos recomendados para cada punto de enlace o usuario. (El valor de la propiedad
RecommendationsPerMessagese establece en3). Con esta configuración, Amazon Pinpoint recupera y agrega solo los elementos recomendados primero, segundo y tercero para cada punto de conexión o usuario. -
El proyecto está configurado para utilizar atributos de usuario personalizados que almacenan el nombre, el apellido y el vecindario de cada usuario. (El objeto
UserAttributescontiene los valores de estos atributos). -
El proyecto está configurado para utilizar un atributo de punto de enlace personalizado (
AddressType) que indica si el punto de enlace es la dirección preferida del usuario (canal) para recibir mensajes del proyecto. (El objetoAttributescontiene el valor de este atributo).
Cuando Amazon Pinpoint invoca la función de Lambda y envía esta carga como datos de evento, AWS Lambda transfiere los datos a la función de Lambda para su procesamiento.
Cada carga útil puede contener datos de hasta 50 puntos de enlace. Si un segmento contiene más de 50 puntos de conexión, Amazon Pinpoint invoca la función repetidamente, para un máximo de 50 puntos de conexión a la vez, hasta que la función procesa todos los datos.
Datos y requisitos de respuesta
A medida que diseñe y desarrolle la función de Lambda, tenga en cuenta las cuotas para los modelos de machine learning. Si la función no cumple las condiciones definidas por estas cuotas, Amazon Pinpoint no podrá procesar y enviar el mensaje.
Tenga en cuenta también los siguientes requisitos:
-
La función debe devolver definiciones actualizadas de punto de enlace en el mismo formato que proporcionaron los datos de evento de entrada.
-
Cada definición de punto de conexión actualizada puede contener 1-10 atributos recomendados personalizados para el punto de conexión o el usuario. Los nombres de estos atributos deben coincidir con los nombres de atributo que especifique al configurar el modelo de recomendación en Amazon Pinpoint.
-
Todos los atributos personalizados recomendados deben devolverse en un solo objeto
Recommendationspara cada punto de enlace o usuario. Este requisito ayuda a garantizar que no se produzcan conflictos de nombres. Puede agregar el objetoRecommendationsa cualquier ubicación en una definición de punto de enlace. -
El valor de cada atributo recomendado personalizado tiene que ser una cadena (valor único) o una matriz de cadenas (valores múltiples). Si el valor es una matriz de cadenas, le recomendamos que mantenga el orden de los elementos recomendados que devolvió Amazon Personalize, como se indica en el campo
RecommendationItems. De lo contrario, es posible que el contenido no refleje las predicciones del modelo para un punto de enlace o usuario. -
La función no debe modificar otros elementos en los datos del evento, incluidos otros valores de atributo para un punto de enlace o usuario. Solo debe agregar y devolver valores para los atributos personalizados recomendados. Amazon Pinpoint no aceptará actualizaciones de ningún otro valor de la respuesta de la función.
-
La función tiene que estar alojada en la misma región de AWS que el proyecto de Amazon Pinpoint que está invocando la función. Si la función y el proyecto no están en la misma región, Amazon Pinpoint no puede enviar datos de eventos a la función.
Si no se cumple ninguno de los requisitos anteriores, Amazon Pinpoint no será capaz de procesar y enviar el mensaje a uno o más puntos de conexión. Esto puede provocar un error en la actividad de la campaña o recorrido.
Por último, se recomienda reservar 256 ejecuciones simultáneas para la función.
En general, la función de Lambda debe procesar los datos de evento que envía Amazon Pinpoint y devolver definiciones de punto de conexión modificadas. Puede hacerlo iterando a través de cada punto de enlace en el objeto Endpoints y, para cada punto de enlace, creando y estableciendo valores para los atributos recomendados personalizados que desee usar. El controlador de ejemplo siguiente, escrito en Python y siguiendo con el ejemplo anterior de datos de eventos de entrada, muestra esto:
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
En el ejemplo anterior, AWS Lambda transfiere los datos de evento al controlador como parámetro event. El controlador itera a través de cada punto de enlace del objeto Endpoints y establece valores para los atributos recomendados personalizados denominados Recommendations.Title y Recommendations.Genre. La instrucción return devuelve cada definición de punto de conexión actualizada a Amazon Pinpoint.
Siguiendo con el ejemplo anterior de datos de eventos de entrada, las definiciones de punto de enlace actualizadas son:
"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" ] } } }
En el ejemplo anterior, la función modificó el objeto Endpoints que recibió y devolvió los resultados. El objeto Endpoint de cada punto de enlace contiene ahora un nuevo objeto Recommendations, que contiene los campos Title y Genre. Cada uno de estos campos almacena una matriz ordenada de tres valores (como cadenas), donde cada valor proporciona contenido mejorado para un elemento recomendado correspondiente en el campo RecommendationItems.