Amazon Pinpoint - Guía para desarrolladores · En esta sección se describen las principales...

434
Amazon Pinpoint Guía para desarrolladores

Transcript of Amazon Pinpoint - Guía para desarrolladores · En esta sección se describen las principales...

Amazon PinpointGuía para desarrolladores

Amazon Pinpoint Guía para desarrolladores

Amazon Pinpoint: Guía para desarrolladoresCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Amazon Pinpoint Guía para desarrolladores

Table of Contents¿Qué es Amazon Pinpoint? ................................................................................................................. 1

Características de Amazon Pinpoint .............................................................................................. 1Definición de los segmentos de público ................................................................................. 1Conexión con el público mediante campañas de mensajería ..................................................... 1Envío de mensajes de transacciones ..................................................................................... 1Análisis del comportamiento de los usuarios ........................................................................... 2

Disponibilidad regional ................................................................................................................. 2Tutoriales .......................................................................................................................................... 3

Uso de Postman con Amazon Pinpoint .......................................................................................... 3Acerca de este tutorial ........................................................................................................ 3Requisitos previos .............................................................................................................. 4Paso 1: Crear políticas y roles de IAM .................................................................................. 4Paso 2: Configurar Postman ................................................................................................ 6Paso 3: Enviar solicitudes adicionales .................................................................................. 14

Importación de datos de orígenes externos ................................................................................... 20Requisitos previos ............................................................................................................. 23Paso 1: Creación de un bucket de Amazon S3 ..................................................................... 23Paso 2: Crear roles de IAM ................................................................................................ 26Paso 3: Empaquetar las bibliotecas ..................................................................................... 30Paso 4: Crear la función de Lambda que divide datos de entrada ............................................. 31Paso 5: Crear la función de Lambda que procesa los registros entrantes ................................... 35Paso 6: Crear la función de Lambda que importa registros en Amazon Pinpoint .......................... 44Paso 7: Configurar eventos de Amazon S3 ........................................................................... 47Pasos siguientes ............................................................................................................... 51

Configuración de un sistema de administración de preferencias de correo electrónico .......................... 52Arquitectura ...................................................................................................................... 52Acerca de esta solución ..................................................................................................... 53Requisitos previos ............................................................................................................. 54Paso 1: Configurar Amazon Pinpoint ................................................................................... 55Paso 2: Añadir o configurar puntos de enlace ....................................................................... 60Paso 3: Crear políticas y roles de IAM ................................................................................. 63Paso 4: Crear la función de Lambda ................................................................................... 65Paso 5: Configurar Amazon API Gateway ............................................................................ 71Paso 6: Crear e implementar el formulario web ..................................................................... 79Paso 7: Crear y enviar campañas de Amazon Pinpoint ........................................................... 93Pasos siguientes ............................................................................................................... 95

Configuración de un sistema de registro mediante SMS .................................................................. 97Acerca de la confirmación doble ......................................................................................... 98Acerca de esta solución ..................................................................................................... 98Requisitos previos ............................................................................................................. 99Paso 1: Configurar Amazon Pinpoint .................................................................................. 100Paso 2: Crear políticas y roles de IAM ............................................................................... 104Paso 3: Crear funciones de Lambda .................................................................................. 106Paso 4: Configurar Amazon API Gateway ........................................................................... 117Paso 5: Crear e implementar el formulario web ................................................................... 124Pasos siguientes ............................................................................................................. 132

Integración en una aplicación ............................................................................................................ 135SDK Support .......................................................................................................................... 135Integración de los SDK para móviles o la biblioteca de JS ............................................................. 136

Integración de los Mobile SDK .......................................................................................... 136Integración de AWS Amplify ............................................................................................. 136Paso siguiente ................................................................................................................ 137

Registro de puntos de enlace ................................................................................................... 137Antes de empezar ........................................................................................................... 137

iii

Amazon Pinpoint Guía para desarrolladores

AWS Mobile SDK ............................................................................................................ 137AWS Amplify .................................................................................................................. 138Pasos siguientes ............................................................................................................. 138

Notificación de eventos ............................................................................................................ 138Antes de empezar ........................................................................................................... 139AWS Mobile SDK ............................................................................................................ 139Web y React Native ........................................................................................................ 138API de eventos de Amazon Pinpoint .................................................................................. 139Paso siguiente ................................................................................................................ 139

Gestión de notificaciones push .................................................................................................. 140Configuración de las notificaciones de inserción ................................................................... 140Gestión de notificaciones push .......................................................................................... 141

Definir el público ............................................................................................................................. 142Adición de puntos de enlace ..................................................................................................... 142

Ejemplos ........................................................................................................................ 143Información relacionada ................................................................................................... 147

Asociación de usuarios a puntos de enlace ................................................................................. 147Ejemplos ........................................................................................................................ 148Información relacionada ................................................................................................... 151

Añadir un lote de puntos de enlace ........................................................................................... 151Ejemplos ........................................................................................................................ 151Información relacionada ................................................................................................... 156

Importación de puntos de enlace ............................................................................................... 156Antes de empezar ........................................................................................................... 157Ejemplos ........................................................................................................................ 157Información relacionada ................................................................................................... 165

Eliminación de puntos de enlace ............................................................................................... 165Ejemplos ........................................................................................................................ 165

Acceso a los datos de público .......................................................................................................... 168Búsqueda de puntos de enlace ................................................................................................. 168

Ejemplos ........................................................................................................................ 169Información relacionada ................................................................................................... 172

Exportación de puntos de enlace ............................................................................................... 172Antes de empezar ........................................................................................................... 173Ejemplos ........................................................................................................................ 173Información relacionada ................................................................................................... 180

Listado de ID de puntos de enlace ............................................................................................ 180Creación de segmentos ................................................................................................................... 184

Creación de segmentos ........................................................................................................... 184Creación de segmentos con AWS SDK for Java .................................................................. 184

Importación de segmentos ........................................................................................................ 185Importación de un segmento ............................................................................................. 186

Personalización de segmentos con AWS Lambda ........................................................................ 188Datos del evento ............................................................................................................. 189Creación de una función de Lambda .................................................................................. 190Asignación de una política de función de Lambda ................................................................ 191Asignación de una función de Lambda a una campaña ......................................................... 193

Creación de campañas .................................................................................................................... 194Creación de campañas estándar ............................................................................................... 194

Creación de campañas con AWS SDK for Java ................................................................... 194Creación de campañas de prueba A/B ....................................................................................... 195

Creación de campañas de prueba A/B con AWS SDK for Java .............................................. 195Validación de números de teléfono .................................................................................................... 197

Casos de uso de validación de números de teléfono .................................................................... 197Uso del servicio de validación de números de teléfono ................................................................. 197Respuestas de validación de números de teléfono ....................................................................... 198

Envío de mensajes .......................................................................................................................... 201

iv

Amazon Pinpoint Guía para desarrolladores

Enviar correos electrónicos ....................................................................................................... 201Selección de un método de envío de correo electrónico ........................................................ 202Uso de la API ................................................................................................................. 202Uso de la interfaz de SMTP ............................................................................................. 209

Envío de mensajes SMS .......................................................................................................... 217Enviar mensajes de voz ........................................................................................................... 223Envío de notificaciones push .................................................................................................... 227

Transmisión de eventos en streaming ................................................................................................ 234Configuración de la transmisión de eventos en streaming ............................................................. 234

Requisitos previos ........................................................................................................... 235AWS CLI ....................................................................................................................... 235AWS SDK for Java ......................................................................................................... 235Deshabilitación de la transmisión de eventos en streaming .................................................... 236

Eventos de aplicaciones ........................................................................................................... 236Ejemplo ......................................................................................................................... 236Atributos de los eventos de aplicación ................................................................................ 237

Eventos de campaña ............................................................................................................... 240Ejemplo de evento .......................................................................................................... 241Atributos de los eventos de campaña ................................................................................. 241

Eventos de recorrido ............................................................................................................... 244Ejemplo de evento .......................................................................................................... 244Atributos de evento de recorrido ........................................................................................ 244

Eventos de correo electrónico ................................................................................................... 246Ejemplos de eventos ....................................................................................................... 247Atributos de los eventos de correo electrónico ..................................................................... 251

Eventos de SMS ..................................................................................................................... 255Ejemplo ......................................................................................................................... 255Atributos de los eventos de SMS ....................................................................................... 256

Consulta de datos de análisis ........................................................................................................... 261Métricas admitidas .................................................................................................................. 261Conceptos básicos de consulta ................................................................................................. 262Políticas de IAM ...................................................................................................................... 263Métricas estándar .................................................................................................................... 265

Métricas de aplicaciones para campañas ............................................................................ 266Métricas de aplicaciones para mensajes de correo electrónico de transacciones ........................ 269Métricas de aplicaciones para mensajes SMS de transacciones ............................................. 276Métricas de campaña ...................................................................................................... 278Métricas de interacción del recorrido .................................................................................. 284Métricas de ejecución de recorrido .................................................................................... 289Métricas de ejecución de actividades de recorrido ................................................................ 290

Consulta de datos de campañas ............................................................................................... 292Requisitos previos ........................................................................................................... 292Consulta de datos de una campaña ................................................................................... 293Consulta de datos de varias campañas .............................................................................. 297

Consulta de datos de mensajes transaccionales .......................................................................... 301Requisitos previos ........................................................................................................... 301Consulta de datos de mensajes de correo electrónico transaccionales ..................................... 302Consulta de datos para mensajes SMS transaccionales ........................................................ 305

Uso de los resultados de las consultas ...................................................................................... 309Estructura JSON ............................................................................................................. 310Objetos y campos JSON .................................................................................................. 313

Registro de llamadas a API .............................................................................................................. 315Información de Amazon Pinpoint en CloudTrail ............................................................................ 315Acciones de las API de Amazon Pinpoint que pueden registrarse en CloudTrail ................................ 316Acciones de la API de correo electrónico de Amazon Pinpoint que pueden registrarse en CloudTrail ..... 318Acciones de la API de SMS y voz de Amazon Pinpoint que pueden registrarse en CloudTrail ............... 319Ejemplos: entradas de archivos de registro de Amazon Pinpoint ..................................................... 320

v

Amazon Pinpoint Guía para desarrolladores

Etiquetado de recursos .................................................................................................................... 324Administración de etiquetas ...................................................................................................... 324Uso de etiquetas en directivas de IAM ....................................................................................... 325Adición de etiquetas a los recursos ........................................................................................... 325Visualización de etiquetas para recursos .................................................................................... 327Actualización de etiquetas para recursos .................................................................................... 328Eliminación de etiquetas de recursos ......................................................................................... 330Información relacionada ........................................................................................................... 331

Personalización de recomendaciones con AWS Lambda ....................................................................... 332Uso de recomendaciones en mensajes ...................................................................................... 332Creación de la función de Lambda ............................................................................................ 334

Datos de eventos de entrada ............................................................................................ 334Datos y requisitos de respuesta ........................................................................................ 335

Asignación de una política de función de Lambda ........................................................................ 339Autorización de Amazon Pinpoint para invocar la función .............................................................. 340Configuración del modelo de recomendación ............................................................................... 341

Creación de canales personalizados con AWS Lambda ........................................................................ 342Datos del evento ..................................................................................................................... 343Creación de una función de Lambda .......................................................................................... 343

Función de Lambda de ejemplo ........................................................................................ 343Asignación de una política de función de Lambda ........................................................................ 191

Política de función de ejemplo .......................................................................................... 191Concesión de permiso de invocación a Amazon Pinpoint ...................................................... 346

Asignación de una función de Lambda a una campaña ................................................................. 347Eliminación de datos ....................................................................................................................... 348

Eliminación de puntos de enlace ............................................................................................... 348Eliminación de datos de segmentos y puntos de enlace en Amazon S3 ........................................... 348Eliminación de todos los datos del proyecto ................................................................................ 349Eliminación de todos los datos de AWS ..................................................................................... 349

Seguridad ...................................................................................................................................... 351Protección de los datos ............................................................................................................ 351

Cifrado de datos ............................................................................................................. 353Privacidad del tráfico entre redes ...................................................................................... 353

Identity and Access Management .............................................................................................. 354Público .......................................................................................................................... 354Autenticación con identidades ........................................................................................... 355Administración de acceso mediante políticas ....................................................................... 357Funcionamiento de Amazon Pinpoint con IAM ..................................................................... 358Acciones de política de Amazon Pinpoint ............................................................................ 363Ejemplos de políticas basadas en identidad ........................................................................ 382Ejemplo de política basada en recursos ............................................................................. 389Roles de IAM para tareas comunes ................................................................................... 390Solución de problemas ..................................................................................................... 404

Registro y monitorización ......................................................................................................... 406Validación de la conformidad .................................................................................................... 407Resiliencia .............................................................................................................................. 408Seguridad de la infraestructura .................................................................................................. 408Configuración y análisis de vulnerabilidades ................................................................................ 409

Cuotas ........................................................................................................................................... 410Cuotas generales .................................................................................................................... 410Cuotas de campaña ................................................................................................................ 410Cuotas de correo electrónico .................................................................................................... 411

Cuotas de mensajes de correo electrónico .......................................................................... 411Cuotas de los remitentes y destinatarios de correo electrónico ............................................... 411Cuotas de envío de correo electrónico ............................................................................... 413

Cuotas de punto de enlace ...................................................................................................... 413Cuotas de importación de puntos de enlace ................................................................................ 414

vi

Amazon Pinpoint Guía para desarrolladores

Cuotas de consumo de eventos ................................................................................................ 414Cuotas de recorrido ................................................................................................................. 415Cuotas de aprendizaje automático ............................................................................................. 415Cuotas de plantillas de mensajes .............................................................................................. 416Cuotas de notificación push ...................................................................................................... 417Cuotas de segmentos .............................................................................................................. 418Cuotas de SMS ...................................................................................................................... 418Cuotas de voz ........................................................................................................................ 418Solicitud de aumento de cuota .................................................................................................. 420

Historial de revisión ......................................................................................................................... 422Actualizaciones anteriores ........................................................................................................ 423

AWS Glossary ................................................................................................................................ 427

vii

Amazon Pinpoint Guía para desarrolladoresCaracterísticas de Amazon Pinpoint

¿Qué es Amazon Pinpoint?Amazon Pinpoint es un servicio de AWS que puede utilizar para interactuar con sus clientes a través devarios canales de mensajería. Puede utilizar Amazon Pinpoint para enviar notificaciones push, mensajesde correo electrónico, mensajes de texto SMS o mensajes de voz.

La información de esta guía para desarrolladores está dirigida a los desarrolladores de aplicaciones. Estaguía contiene información sobre el uso de las características de Amazon Pinpoint mediante programación.También contiene información de especial interés para los desarrolladores de aplicaciones móviles, comoprocedimientos para integrar características de análisis y mensajería en la aplicación (p. 135).

Existen varios documentos más que acompañan a este. Los siguientes documentos proporcionaninformación de referencia sobre las API de Amazon Pinpoint:

• Referencia de la API de Amazon Pinpoint• API de correo electrónico de Amazon Pinpoint• API de SMS y voz de Amazon Pinpoint

Si es la primera vez que utiliza Amazon Pinpoint, puede que le resulte útil revisar la Guía del usuario deAmazon Pinpoint antes de continuar con este documento.

Características de Amazon PinpointEn esta sección se describen las principales características de Amazon Pinpoint y las tareas que puederealizar con ellas.

Definición de los segmentos de públicoDiríjase al público adecuado para sus mensajes definiendo segmentos de público (p. 184). Un segmentodesigna qué usuarios reciben los mensajes que se envían desde una campaña. Puede definir segmentosdinámicos en función de los datos notificados por la aplicación, como, por ejemplo, el sistema operativo oel tipo de dispositivo móvil. También puede importar segmentos estáticos que defina mediante otro servicioo aplicación.

Conexión con el público mediante campañas demensajeríaConecte con su segmento de público creando una campaña de mensajería (p. 194). Una campañaenvía mensajes personalizados según la programación que defina. Puede crear campañas que envíennotificaciones push en móviles, correo electrónico o mensajes SMS.

Para experimentar con estrategias de campaña alternativas, configure su campaña como una prueba A/B yanalice le resultado con los análisis de Amazon Pinpoint.

Envío de mensajes de transaccionesMantenga informados a sus clientes enviando notificaciones push en móviles y mensajes SMSde transacciones, como mensajes de activación de cuentas nuevas, confirmaciones de pedidos y

1

Amazon Pinpoint Guía para desarrolladoresAnálisis del comportamiento de los usuarios

notificaciones de restablecimiento de contraseñas, directamente a usuarios concretos. Puede enviarmensajes de transacciones utilizando la API de REST de Amazon Pinpoint.

Análisis del comportamiento de los usuariosObtenga información acerca del público y la eficacia de sus campañas mediante los análisis que ofreceAmazon Pinpoint. Puede ver las tendencias del nivel de interacción, la actividad de compra y los datosdemográficos de sus usuarios, entre otros datos. También puede monitorizar el tráfico de mensajes através de métricas como el número total de mensajes que se han enviado o abierto para una campañao aplicación. Mediante la API de Amazon Pinpoint, la aplicación puede registrar datos personalizadosque Amazon Pinpoint pone a su disposición para su análisis y puede consultar los datos de análisis paradeterminadas métricas estándar.

Para analizar o almacenar los datos de los análisis fuera de Amazon Pinpoint, puede configurar AmazonPinpoint de tal forma que transmita en streaming los datos a Amazon Kinesis (p. 234).

Disponibilidad regionalAmazon Pinpoint está disponible en varias regiones de AWS en América del Norte, Europa, Asiay Oceanía. Dentro de cada región, AWS mantiene varias zonas de disponibilidad. Estas zonas dedisponibilidad están físicamente aisladas entre sí, pero están unidas mediante conexiones de red privadascon un alto nivel de rendimiento y redundancia y con baja latencia. Estas zonas de disponibilidad nospermiten ofrecer unos niveles muy altos de disponibilidad y redundancia y minimizar la latencia.

Para obtener más información sobre las regiones de AWS, consulte Administración de las regiones deAWS en la Referencia general de Amazon Web Services. Para obtener una lista de todas las regiones enlas que Amazon Pinpoint se encuentra actualmente disponible, consulte Puntos de enlace de serviciosde AWS en la Referencia general de Amazon Web Services. Para obtener más información acerca delnúmero de zonas de disponibilidad de cada región, consulte Infraestructura global de AWS.

2

Amazon Pinpoint Guía para desarrolladoresUso de Postman con Amazon Pinpoint

TutorialesLos tutoriales de esta sección están diseñados para mostrar a los nuevos usuarios de Amazon Pinpointcómo llevar a cabo varias tareas importantes. Si es la primera vez que utiliza Amazon Pinpoint, o si no estáfamiliarizado con determinadas características, estos tutoriales son el mejor lugar para empezar.

Los tutoriales de esta guía incluyen tareas que están orientadas a los administradores de sistemas odesarrolladores. Estos tutoriales muestran cómo realizar tareas mediante la API de Amazon Pinpoint, AWSSDK y la AWS CLI. Si interactúa principalmente con Amazon Pinpoint mediante la consola basada en web,consulte la sección Tutoriales de la Guía del usuario de Amazon Pinpoint.

Tutorial: Uso de Postman con la API de AmazonPinpoint

Postman es una popular herramienta para probar API en un entorno gráfico fácil de usar. Puede utilizarPostman para enviar solicitudes de la API a cualquier API de REST, y para recibir respuestas a sussolicitudes. El uso de Postman es una forma cómoda de probar las llamadas que se realizan a la API deAmazon Pinpoint y solucionar sus problemas. Este tutorial incluye procedimientos para la configuración y eluso de Postman Amazon Pinpoint.

Note

Postman se ha desarrollado por un tercero. No se ha desarrollado por Amazon Web Services(AWS) ni es compatible con AWS. Para obtener más información sobre Postman, o para obtenerayuda en relación con problemas relacionados con Postman, consulte el centro de soporte en elsitio web de Postman.

Acerca de este tutorialEsta sección contiene información general sobre este tutorial.

Destinatarios previstos

Este tutorial está dirigido a los desarrolladores e implementadores de sistemas. No tiene que estarfamiliarizado con Amazon Pinpoint o Postman para completar los pasos de este tutorial. De estarfamiliarizado con la gestión de políticas de IAM y la modificación de ejemplos de código JSON.

Los procedimientos de este tutorial se han diseñado para evitar que los nuevos usuarios utilicenoperaciones de la API que eliminen de forma permanente los recursos de Amazon Pinpoint. Los usuariosavanzados pueden eliminar esta restricción modificando la política asociada a los usuarios de IAM.

Características utilizadas

Este tutorial incluye ejemplos de uso para la siguiente característica de Amazon Pinpoint:

• Interacción con la API de Amazon Pinpoint mediante Postman

Tiempo necesario

Debe tardar aproximadamente 15 minutos en completar este tutorial.

Restricciones regionales

No hay restricciones regionales asociadas al uso de esta solución.

Costos de uso de recursos

3

Amazon Pinpoint Guía para desarrolladoresRequisitos previos

La creación de una cuenta de AWS no supone ningún costo. Sin embargo, mediante la implementación deesta solución, es posible que incurra en costos de uso de AWS si utiliza Postman para cualquiera de lassiguientes acciones:

• Enviar mensajes de voz, de inserción de móvil, SMS o correo electrónico• Crear y enviar campañas• Utilizar la característica de validación de número de teléfono

Para obtener más información sobre los gastos asociados con el uso de Amazon Pinpoint, consultePrecios de Amazon Pinpoint.

Requisitos previosAntes de comenzar este tutorial, tiene que completar los siguientes requisitos previos:

• Tiene que disponer de una cuenta de AWS. Para crear una cuenta de AWS, diríjase a https://console.aws.amazon.com/ y elija Create a new AWS account (Crear una nueva cuenta de AWS).

• La cuenta que utiliza para iniciar sesión en la Consola de administración de AWS tiene que poder crearnuevas políticas y roles de IAM.

• Tiene para descargar e instalar Postman en su equipo. Puede descargar Postman desde el sitio web dePostman.

• Después de instalar Postman en su equipo, tiene que crear una cuenta de Postman. La primera vez queinicie la aplicación Postman, se le solicitará que inicie sesión o cree una cuenta nueva. Complete lasinstrucciones que se muestran en la pantalla para iniciar sesión en su cuenta (si ya dispone de una) opara crear una cuenta (si aún no tiene una).

Paso 1: Crear políticas y roles de IAMEl primer paso para usar Postman para probar la API de Amazon Pinpoint es crear un usuario de IAM. Enesta sección, creará una política que proporciona a los usuarios la capacidad de interactuar con todos losrecursos de Amazon Pinpoint. A continuación, cree una cuenta de usuario y asocie la política directamentea la cuenta de usuario.

Paso 1.1: Crear una política de IAMEn esta sección se muestra cómo crear una política de IAM. Los usuarios y roles que utilizan esta políticapueden interactuar con todos los recursos de la API de Amazon Pinpoint. También proporciona el accesoa los recursos que están asociados a la Amazon Pinpoint Email API, así como a la API de SMS y voz deAmazon Pinpoint.

Para crear la política, realice el siguiente procedimiento:

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy(Crear política).

3. En la pestaña JSON, pegue el siguiente código.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0",

4

Amazon Pinpoint Guía para desarrolladoresPaso 1: Crear políticas y roles de IAM

"Effect": "Allow", "Action": [ "mobiletargeting:Update*", "mobiletargeting:Get*", "mobiletargeting:Send*", "mobiletargeting:Put*", "mobiletargeting:Create*" ], "Resource": [ "arn:aws:mobiletargeting:*:123456789012:apps/*", "arn:aws:mobiletargeting:*:123456789012:apps/*/campaigns/*", "arn:aws:mobiletargeting:*:123456789012:apps/*/segments/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "mobiletargeting:TagResource", "mobiletargeting:PhoneNumberValidate", "mobiletargeting:ListTagsForResource", "mobiletargeting:CreateApp" ], "Resource": "arn:aws:mobiletargeting:*:123456789012:*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "ses:TagResource", "ses:Send*", "ses:Create*", "ses:Get*", "ses:List*", "ses:Put*", "ses:Update*", "sms-voice:SendVoiceMessage", "sms-voice:List*", "sms-voice:Create*", "sms-voice:Get*", "sms-voice:Update*" ], "Resource": "*" } ]}

En el ejemplo anterior, reemplace 123456789012 por el ID exclusivo de su cuenta de AWS.

Note

Para proteger los datos de su cuenta de Amazon Pinpoint, esta política únicamenteincluye permisos que le permiten leer, crear y modificar recursos. No se incluyen permisosque permitan eliminar recursos. Puede modificar esta política mediante el editor visualen la consola de IAM. Para obtener más información, consulte Managing IAM Policies(Administración de políticas de IAM) en la Guía del usuario de IAM. También puede utilizar laoperación CreatePolicyVersion en la API de IAM para actualizar esta política.Además, tenga en cuenta que esta política incluye los permisos que le permiten interactuarcon los servicios de ses y sms-voice, además del servicio de mobiletargeting.Los permisos de ses y sms-voice le permiten interactuar con la Amazon PinpointEmail API y API de SMS y voz de Amazon Pinpoint respectivamente. Los permisos demobiletargeting le permiten interactuar con la API de Amazon Pinpoint.

4. Elija Review policy (Revisar política).

5

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

5. En Name (Nombre), especifique un nombre para la política, como PostmanAccessPolicy. ElijaCreate Policy.

Paso 1.2: Crear un usuario de IAMDespués de crear la política, puede crear un usuario de IAM y asociar la política a él. Cuando cree elusuario, IAM le proporcionará un conjunto de credenciales que puede utilizar para permitir a Postmanejecutar las operaciones de la API de Amazon Pinpoint.

Para crear el usuario

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En el panel de navegación de la consola de IAM, elija Users (Usuarios) y, a continuación, seleccione

Add user (Añadir usuario).3. En Set user details (Establecer detalles de usuario), en User name (Nombre de usuario), escriba un

nombre que identifique a la cuenta de usuario, como PostmanUser.4. En Select AWS access type (Seleccionar tipo de acceso de AWS), en Access type (TIpo de acceso),

elija Programmatic access (Acceso mediante programación).5. En Attach permissions policies (Asociar políticas de permisos), elija la política que creó en la sección

anterior y, a continuación, elija Siguiente: Etiquetas.

Elija Next: Permissions.6. En Set permissions (Establecer permisos), elija Attach existing policies directly (Asociar directamente

las políticas existentes). En la lista de políticas, elija la política PostmanAccessPolicy que ha creado enel paso 1.1 (p. 4).

Elija Next: Tags (Siguiente: Etiquetas).7. En la página Add tags (Añadir etiquetas), puede agregar opcionalmente etiquetas que le ayuden a

identificar al usuario. Para obtener más información sobre el uso de etiquetas, consulte Etiquetado deentidades de IAM en la Guía del usuario de IAM.

Elija Next: Review.8. En la página Review (Revisar), confirme la configuración para el usuario. Cuando esté listo para crear

el usuario, elija Create user (Crear usuario).9. En la página Success (Correcto), copie las credenciales que aparecen en las columnas Access key ID

(ID de clave de acceso) y Secret access key (Clave de acceso secreta).

Note

Tendrá que proporcionar el ID de clave de acceso y la clave de acceso secreta en un pasoposterior de este tutorial. Esta es la única vez que podrá ver la clave de acceso secreta, porlo que debe copiarla y guardarla en un lugar seguro.

Paso 2: Configurar PostmanAhora que ha creado una cuenta de usuario de IAM que permite el acceso a la API de Amazon Pinpoint,podrá configurar Postman. En esta sección, cree uno o más entornos en Postman. A continuación, importeuna colección que contenga una plantilla de solicitud para cada una de las operaciones en la API deAmazon Pinpoint.

6

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Paso 2.1: Crear entornos en PostmanEn Postman, un entorno es un conjunto de variables que se almacenan como pares clave-valor. Puedeutilizar entornos para cambiar rápidamente la configuración de las solicitudes que realice a través dePostman sin tener que cambiar las propias solicitudes de la API.

En esta sección, debe crear al menos un entorno que utilizar con Amazon Pinpoint. Cada entorno quecree contendrá un conjunto de variables específicas de su cuenta a través de una única región de AWS. Siutiliza los procedimientos de esta sección para crear más de un entorno, puede cambiar fácilmente entreregiones eligiendo un entorno distinto al menú Environment (Entorno) en Postman.

Para crear una de entorno

1. En Postman, en el menú File (Archivo), elija New (Nuevo).2. En la ventana Create New (Crear nuevo), elija Environment (Entorno).3. En la ventana MANAGE ENVIRONMENTS (GESTIONAR ENTORNOS) para Environment Name

(Nombre de entorno), especifique Amazon Pinpoint - Region Name. Sustituya Region Name(Nombre de región) por uno de los siguientes valores:

• US East (N. Virginia)• EE.UU. Oeste (Oregón)• Asia Pacífico (Mumbai)• Asia Pacífico (Sídney)• Europa (Fráncfort)• Europa (Irlanda)

4. Cree seis nuevas variables: endpoint, region, serviceName, accountId, accessKey ysecretAccessKey. Utilice la siguiente tabla para determinar qué valor especificar en la columnaInitial Value (Valor inicial) para cada variable.

Región Variable Valor inicial

endpoint pinpoint.us-east-1.amazonaws.com

region us-east-1

serviceName mobiletargeting

accountId (su ID de cuenta de AWS)

accessKey (su ID de clave de acceso deIAM)

US East (N. Virginia)

secretAccessKey (su clave de acceso secreta deIAM)

 

endpoint pinpoint.us-west-2.amazonaws.com

region us-west-2

serviceName mobiletargetingEE.UU. Oeste (Oregón)

accountId (su ID de cuenta de AWS)

7

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Región Variable Valor inicial

accessKey (su ID de clave de acceso deIAM)

secretAccessKey (su clave de acceso secreta deIAM)

 

endpoint pinpoint.ap-south-1.amazonaws.com

region ap-south-1

serviceName mobiletargeting

accountId (su ID de cuenta de AWS)

accessKey (su ID de clave de acceso deIAM)

Asia Pacífico (Mumbai)

secretAccessKey (su clave de acceso secreta deIAM)

 

endpoint pinpoint.ap-southeast-2.amazonaws.com

region ap-southeast-2

serviceName mobiletargeting

accountId (su ID de cuenta de AWS)

accessKey (su ID de clave de acceso deIAM)

Asia Pacífico (Sídney)

secretAccessKey (su clave de acceso secreta deIAM)

 

endpoint pinpoint.eu-central-1.amazonaws.com

region eu-central-1

serviceName mobiletargeting

accountId (su ID de cuenta de AWS)

accessKey (su ID de clave de acceso deIAM)

Europa (Fráncfort)

secretAccessKey (su clave de acceso secreta deIAM)

 

8

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Región Variable Valor inicial

endpoint pinpoint.eu-west-1.amazonaws.com

region eu-west-1

serviceName mobiletargeting

accountId (su ID de cuenta de AWS)

accessKey (su ID de clave de acceso deIAM)

Europa (Irlanda)

secretAccessKey (su clave de acceso secreta deIAM)

Después de crear estas variables, la ventana MANAGE ENVIRONMENTS (GESTIONARENTORNOS) será similar al ejemplo que se muestra en la siguiente imagen.

9

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Cuando haya terminado, seleccione Add (Añadir).

Important

Las claves de acceso que se muestran en la imagen anterior son ficticias. Nunca compartasus claves de acceso de IAM con los demás.

10

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Postman incluye características que le permiten compartir y exportar los entornos. Si utilizaestas características, asegúrese de no compartir su ID de clave de acceso y la clave deacceso secreta con cualquier persona que no deba tener acceso a estas credenciales.Para obtener más información, consulte Prácticas recomendadas de IAM de la Guía delusuario de IAM.

5. (Opcional) Repita los pasos del 1 al 4 para cada entorno adicional que desee crear.

Tip

En Postman, puede crear todos los entornos que necesite. Puede utilizar entornos de variasmaneras. Por ejemplo, puede realizar los siguientes pasos:

• Cree un entorno independiente para cada región en la que necesite probar la API deAmazon Pinpoint.

• Cree entornos asociados a diferentes cuentas de AWS.• Cree entornos que utilicen credenciales asociadas con otros usuarios de IAM.

6. Cuando termine de crear entornos, vaya a la siguiente sección.

Paso 2.2: Crear una recopilación de Amazon Pinpoint enPostmanEn Postman, una recopilación es un grupo de solicitudes de la API. Las solicitudes de una colección suelenestar unidas por un objetivo común. En esta sección, debe crear una nueva colección que contenga unaplantilla de solicitud para cada operación en la API de Amazon Pinpoint.

Para crear la recopilación de Amazon Pinpoint, realice el siguiente procedimiento:

1. En Postman, en el menú File (Archivo), elija Import (Importar).2. En la ventana Import (Importar), elija Import From Link (Importar desde enlace) y, a continuación,

especifique la siguiente URL: https://raw.githubusercontent.com/awsdocs/amazon-pinpoint-developer-guide/master/Amazon%20Pinpoint.postman_collection.json.

Elija Import. Postman importa la recopilación de Amazon Pinpoint, que contiene solicitudes de ejemplode 120.

Paso 2.3: Comprobar la configuración de PostmanDespués de importar la recopilación de Amazon Pinpoint, debe realizar una prueba rápida para asegurarsede que todos los componentes se han configurado correctamente. Puede probar la configuración medianteel envío de una solicitud de GetApps. Esta solicitud devuelve una lista de todos los proyectos existentesen su cuenta de Amazon Pinpoint en la región de AWS actual. Esta solicitud no requiere ningunaconfiguración adicional, por lo que es una buena forma de probar rápidamente la configuración.

Para probar la configuración de la colección de Amazon Pinpoint, realice el siguienteprocedimiento:

1. En el panel de navegación, amplíe la colección de Amazon Pinpoint y, a continuación, expanda lacarpeta Apps (Aplicaciones).

2. En la lista de solicitudes, elija GetApps.

11

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

3. Utilice el selector de entorno para elegir el entorno que creó en el paso 2.1 (p. 7), como semuestra en la siguiente imagen.

4. Seleccione Send. Si la solicitud se envía correctamente, el panel de respuesta muestra un estado de200 OK. Puede ver una respuesta similar al ejemplo en la siguiente imagen.

12

Amazon Pinpoint Guía para desarrolladoresPaso 2: Configurar Postman

Esta respuesta muestra una lista de todos los proyectos de Amazon Pinpoint que existen en su cuentaen la región que eligió en el paso 3.

Solución de problemas

Cuando envíe la solicitud, es posible que vea un error. Consulte la siguiente lista para ver los distintoserrores comunes que podría detectar y los pasos que podría seguir para resolverlos.

Mensaje de error Problema Resolución

Could not get any response

There was an error connectingto https://%7B%7Bendpoint%7D%7D/v1/apps. (No se ha podidoobtener ninguna respuesta. Huboun error al conectar con https://%7B%7Bendpoint%7D%7D/v1/apps).

No se aplica ningún valor actualpara la variable {{endpoint}},que se establece cuando elige unentorno.

Utilice el selector de entorno paraelegir un entorno.

El token de seguridad incluido enla solicitud no es válido.

Postman no ha podido encontrarel valor actual de su ID de clave

Elija el icono del engranajecerca del selector de entornoy, a continuación, seleccione el

13

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

Mensaje de error Problema Resoluciónde acceso o la clave de accesosecreta.

entorno actual. Asegúrese deque los valores accessKey ysecretAccessKey aparezcanen las columnas INITIAL VALUE(Valor inicial) y CURRENTVALUE (Valor actual), y de queha especificado las credencialescorrectamente.

"Message": "User:arn:aws:iam::123456789012:user/PinpointPostmanUser isnot authorized to perform:mobiletargeting:GetAppson resource:arn:aws:mobiletargeting:us-west-2:123456789012:*" ("Message":"Usuario:arn:aws:iam::123456789012:user/PinpointPostmanUser noestá autorizado para realizar:mobiletargeting:GetAppsen el recurso:arn:aws:mobiletargeting:us-west-2:123456789012:*").

La política de IAM asociada a suusuario no incluye los permisospertinentes.

Asegúrese de que el usuariode IAM tenga los permisosque se describen en el paso1.1 (p. 4), y que haproporcionado las credencialescorrectas al crear el entorno en elpaso 2.1 (p. 7).

Paso 3: Enviar solicitudes adicionalesCuando termine de configurar y probar Postman, podrá empezar a enviar solicitudes adicionales a la APIde Amazon Pinpoint. En esta sección se incluye información que debe conocer antes de empezar a enviarsolicitudes. También incluye dos solicitudes de ejemplo que le enseñarán cómo usar la recopilación deAmazon Pinpoint.

Important

Cuando haya completado los procedimientos de esta sección, enviará solicitudes a la API deAmazon Pinpoint. Estas solicitudes son capaces de crear nuevos recursos en su cuenta deAmazon Pinpoint, modificar los recursos existentes, enviar mensajes, cambiar la configuraciónde sus proyectos de Amazon Pinpoint y usar otras características de Amazon Pinpoint. Actúe conprecaución al ejecutar estas solicitudes.

Acerca de los ejemplos de la recopilación de Postman deAmazon PinpointTiene que configurar la mayoría de las operaciones en la recopilación de Postman de Amazon Pinpointantes de poder usarlas. Para las operaciones GET y DELETE, normalmente solo debe modificar lasvariables que se establecen en la pestaña Pre-request Script (Script previo a la solicitud).

Note

Al usar la política de IAM que se muestra en Paso 1.1 (p. 4), no puede ejecutar ninguna delas solicitudes DELETE incluidas en esta recopilación.

Por ejemplo, la operación GetCampaign requiere que especifique un projectId y un campaignId. Enla pestaña Pre-request Script (Script previo a la solicitud), ambas variables están presentes y se rellenan

14

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

con valores de ejemplo. Estos valores de ejemplo se destacan en la siguiente imagen. Elimine los valoresde ejemplo y reemplácelos por los valores adecuados para su campaña y proyecto de Amazon Pinpoint.

Para las operaciones POST y PUT, también debe modificar el cuerpo de la solicitud para incluir los valoresque desea enviar a la API. Por ejemplo, al enviar una solicitud CreateApp (que es una solicitud POST),debe especificar un nombre para el proyecto que cree (en Amazon Pinpoint, un "proyecto" es lo mismo queuna "aplicación"). Puede modificar la solicitud en la pestaña Body (Cuerpo). En este ejemplo, reemplaceel valor situado junto a "Name" por el nombre del proyecto. Si desea añadir etiquetas al proyecto, puedeespecificarlas en el objeto tags. O bien, si no desea añadir etiquetas, puede eliminar todo el objeto tags.

Note

La operación UntagResource también requiere que especifique los parámetros de la URL.Puede especificar estos parámetros en la pestaña Params (Parámetros). Reemplace los valoresde la columna VALUE (VALOR) por las etiquetas que desea quitar para el recurso especificado.

Solicitud de ejemplo: creación de un proyecto mediante laoperación CreateAppAntes de crear segmentos y campañas en Amazon Pinpoint, primero debe crear un proyecto. En AmazonPinpoint, un proyecto consta de segmentos, campañas, configuraciones y datos unidos por un objetivocomún. Por ejemplo, podría usar un proyecto para incluir todo el contenido relacionado con una aplicaciónconcreta o con una iniciativa de marketing o una marca específica. Al añadir información del cliente aAmazon Pinpoint, dicha información se asocia a un proyecto.

Para crear un proyecto enviando una solicitud de API CreateApp

1. En el menú Environments (Entornos), elija la región de AWS en la que desea crear el proyecto, comose muestra en la siguiente imagen.

2. En la carpeta Apps (Aplicaciones), elija la operación CreateApp, como se muestra en la siguienteimagen.

15

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

3. En la pestaña Body (Cuerpo), situada junto a "Name", reemplace el valor de marcador de posición("string") por un nombre para la campaña, como "MySampleProject".

4. Elimine la coma que aparece después del nombre de la campaña y, a continuación, elimine todo elobjeto tags entre las líneas 3 y 5. Cuando haya terminado, su solicitud debe tener un aspecto similaral del ejemplo que se muestra en la siguiente imagen.

5. Seleccione Send (Enviar). Si la campaña se crea correctamente, el panel de respuesta muestra unestado 201 Created. Verá una respuesta con un aspecto similar al del ejemplo en la siguienteimagen.

16

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

Ejemplo: envío de un email mediante la operaciónSendMessages

Es muy habitual usar la API Amazon Pinpoint SendMessages para enviar mensajes de transacciones.Una ventaja de enviar mensajes mediante la API SendMessages (en oposición a la creación decampañas), es que puede usar la API SendMessages para enviar mensajes a cualquier dirección (comouna dirección de email, un número de teléfono o un token de dispositivo). La dirección a la que envíamensajes no debe existir aún en su cuenta de Amazon Pinpoint. Compare esto con el envío de mensajesmediante la creación de campañas. Antes de enviar una campaña en Amazon Pinpoint, debe añadirpuntos de enlace a su cuenta de Amazon Pinpoint, crear segmentos y crear y ejecutar la campaña.

En el ejemplo de esta sección se le muestra cómo enviar un mensaje de correo electrónico detransacciones directamente a una dirección de correo electrónico específica. Puede modificar esta solicitudpara enviar mensajes a través de otros canales, como SMS, inserción en móvil o voz.

Para enviar un mensaje de correo electrónico mediante el envío de una solicitud SendMessages

1. Compruebe la dirección de email o el dominio que desea usar para enviar el mensaje. Para obtenermás información, consulte la sección sobre cómo verificar identidades de email en la Guía del usuariode Amazon Pinpoint.

Note

En Amazon Pinpoint, solo puede enviar emails desde direcciones o dominios que hayaverificado. No podrá realizar el procedimiento de esta sección hasta que verifique unadirección de email.

2. En el menú Environments (Entornos), elija la región de AWS desde la que desea enviar el mensaje,como se muestra en la siguiente imagen.

17

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

3. En la carpeta Messages (Mensajes), elija la operación SendMessages.

18

Amazon Pinpoint Guía para desarrolladoresPaso 3: Enviar solicitudes adicionales

4. En la pestaña Pre-request Script (Script previo a la solicitud), reemplace el valor de la variableprojectId por el ID de un proyecto que ya exista en la región que seleccionó en el paso 2 de estasección.

5. En la pestaña Body (Cuerpo), elimine la solicitud de ejemplo que se muestra en el editor desolicitudes. Pegue el siguiente código:

{ "MessageConfiguration":{ "EmailMessage":{ "FromAddress":"[email protected]", "SimpleEmail":{ "Subject":{ "Data":"Sample Amazon Pinpoint message" }, "HtmlPart":{ "Data":"<h1>Test message</h1><p>This is a sample message sent from <a href=\"https://aws.amazon.com/pinpoint\">Amazon Pinpoint</a> using the SendMessages API.</p>" }, "TextPart":{ "Data":"This is a sample message sent from Amazon Pinpoint using the SendMessages API." } } } }, "Addresses":{ "[email protected]": { "ChannelType": "EMAIL" } }}

6. En el código anterior, reemplace [email protected] por su dirección de email verificada.Reemplace [email protected] por la dirección a la que desea enviar el mensaje.

Note

Si su cuenta sigue en el entorno de prueba de email de Amazon Pinpoint, solo podrá enviaremails a direcciones o dominios que se verifiquen en su cuenta de Amazon Pinpoint. Paraobtener más información acerca de cómo quitar su cuenta del entorno de prueba, consulteSolicitud de acceso de producción para el correo electrónico en la Guía del usuario deAmazon Pinpoint.

7. Seleccione Send (Enviar). Si el mensaje se envía correctamente, el panel de respuesta mostrará unestado 200 OK. Verá una respuesta con un aspecto similar al del ejemplo en la siguiente imagen.

19

Amazon Pinpoint Guía para desarrolladoresImportación de datos de orígenes externos

Tutorial Importación de datos en Amazon Pinpointdesde orígenes externos

Para crear segmentos y enviar mensajes de campaña tiene que crear puntos de enlace. En AmazonPinpoint, los puntos de enlace son destinos a los que se envían mensajes; por ejemplo, direcciones decorreo electrónico, identificadores de dispositivos móviles o números de teléfonos móviles. Existen variasmaneras de añadir puntos de enlace a Amazon Pinpoint. Por ejemplo, sus aplicaciones web o móvilespueden usar AWS Mobile SDK para escribir automáticamente datos de punto de enlace en AmazonPinpoint.

Si lo prefiere, puede importar listas de los clientes existentes en Amazon Pinpoint mediante la consola, oa través de la operación de la API CreateImportJob. Sin embargo, cuando cree un trabajo de importación,los archivos que importe tendrán que tener un formato que Amazon Pinpoint pueda interpretar. Además,si los datos que desea importar incluyen varios métodos de contacto (como, por ejemplo, las direccionesde correo electrónico y los números de teléfono) para cada cliente, tendrá que crear puntos de enlaceindependientes para cada método de contacto. A continuación, puede unir esos puntos de enlaceaplicando un atributo de ID de usuario común en cada uno de ellos.

La solución que se describe en este tutorial está diseñada para simplificar el proceso de proporcionarinformación sobre el cliente en Amazon Pinpoint desde un sistema externo, como Salesforce, Segment,Braze o Adobe Marketing Cloud. Este tutorial incluye un pequeño archivo de ejemplo basado en datosexportados originalmente desde Salesforce.

Note

AWS y Amazon Pinpoint no están asociados a los productos o servicios mencionados en elpárrafo anterior. Para obtener más información sobre la exportación de datos desde estossistemas, consulte su documentación oficial.:

20

Amazon Pinpoint Guía para desarrolladoresImportación de datos de orígenes externos

• Salesforce: consulte Creating a Custom Report (Creación de un informe personalizado) en elsitio web de Salesforce.

• Segment: consulte What are my data export options? (¿Cuáles son mis opciones deexportación de datos?) en el sitio web de Segment.

• Braze: consulte Exporting to CSV (Exportación a CSV) en la guía de usuario en el sitio web deBraze.

• Adobe Marketing Cloud: consulte Exporting Data Using Segment Export (Exportación de datosmediante la exportación de segmentos) en el sitio web de ayuda de Adobe Experience Cloud.

Después de implementar esta solución, podrá enviar fácilmente datos de clientes en Amazon Pinpointmediante la carga del archivo de origen en un bucket de Amazon S3 específico. Cuando añada un nuevoarchivo de origen en el bucket de Amazon S3, Amazon S3 activa una función de AWS Lambda. Estafunción divide el archivo de origen en varios archivos más pequeños y, a continuación, traslada esosarchivos a un segundo bucket de Amazon S3. Cuando los archivos se añaden a un segundo bucket deAmazon S3, activa otra función de Lambda.

La segunda función procesa los archivos de entrada más pequeños mediante la realización de lossiguientes procedimientos:

• Crea un registro independiente para cada punto de enlace (dirección de correo electrónico y número deteléfono) que detecta en el archivo.

• Cambia los encabezados de la hoja de cálculo entrante según los nombres de registro que esperaAmazon Pinpoint.

• Utiliza la característica de validación de número de teléfono de Amazon Pinpoint para dar un formatoadecuado a los números de teléfono que detecta. Si el servicio de validación de número de teléfonodetecta que un número de teléfono puede recibir mensajes SMS, crea el punto de enlace como un puntode enlace de SMS. De lo contrario, crea el punto de enlace como punto de enlace de voz.

• Cambia algunos datos para utilizar el formato que Amazon Pinpoint espera. Por ejemplo, AmazonPinpoint espera que especifique nombres de país en formato ISO 3166 alfa-2. Si su entrada incluyenombres de país, esta función los convierte automáticamente al formato correcto. Además, AmazonPinpoint espera que especifique números de teléfono en formato E.164. Obtiene este valor a partir delpaso de validación de número de teléfono.

• Almacena los archivos procesados en un bucket de Amazon S3 terceros.

Puesto que esta función solo procesa una pequeña sección de sus datos, se puede ejecutar rápidamentecada vez que se invoca. Además, cada instancia de la función se ejecuta de forma simultánea, lo quepermite procesar grandes cantidades de datos en un período relativamente corto.

Cuando los archivos se añaden al tercer y último bucket de Amazon S3, se activa una función de Lambdaadicional. Esta función selecciona los archivos procesados y los utiliza para crear trabajos de importaciónen Amazon Pinpoint. Cuando estos trabajos de importación se hayan completado, podrá comenzar aenviar campañas a los puntos de enlace importados.

En el siguiente diagrama se muestra el flujo de datos de esta solución.

Destinatarios previstos

Este tutorial está dirigido a los desarrolladores e implementadores de sistemas. No tiene que estarfamiliarizado con Amazon Pinpoint para completar los pasos de este tutorial.

Para implementar la solución que se describe en este tutorial, tiene que instalar el administrador depaquetes de PIP y Python en su equipo. De este modo, puede descargar algunos de los paquetesnecesarios. Este tutorial incluye todo el código que necesita para completarlo. Sin embargo, para que

21

Amazon Pinpoint Guía para desarrolladoresImportación de datos de orígenes externos

esta solución funcione para su caso de uso específico, es posible que tenga que modificar algunos de loscódigos de Python que se incluyen en el tutorial. Por último, tiene que poder crear nuevas políticas de IAMy usuarios.

Características utilizadas

En este tutorial se muestra cómo importar datos de clientes mediante el uso de funciones de Lambdapersonalizadas para procesar sus datos. Además de modificar el formato de algunos de los datos de susarchivos de origen, la solución que se describe este tutorial también utiliza el servicio de validación denúmero de teléfono integrado en Amazon Pinpoint.

Una vez que se procesan los datos, una función de Lambda importa los datos de cliente en AmazonPinpointmediante la operación de la API CreateImportJob.

Tiempo necesario

Completar los procedimientos de este tutorial debe llevarle entre 60 y 90 minutos. Sin embargo, deberíaplanificar dedicar tiempo adicional a personalizar esta solución para adaptarla a su caso de uso exclusivo.

Restricciones regionales

No hay restricciones regionales asociadas al uso de esta solución.

Costos de uso de recursos

La creación de una cuenta de AWS no supone ningún costo. Sin embargo, mediante la implementación deesta solución, es posible que incurra en algunos o todos los costos que se enumeran en la siguiente tabla.

Descripción Costo (dólares estadounidenses)

Uso de Lambda Esta solución usa tres funciones de Lambdaque interactúan con la API de Amazon Pinpoint.Cuando llame a una función de Lambda, se lecobrará según el número de solicitudes de susfunciones, el tiempo que tardará en ejecutarse elcódigo y la cantidad de memoria que utilice susfunciones. El número de solicitudes, cantidad detiempo de computación y la cantidad de memorianecesaria depende del número de registros queimporta.

El uso que realice de Lambda en laimplementación de esta solución puede incluirseen la capa gratuita de AWS. Para obtener másinformación, consulte Precios de AWS Lambda.

Uso de Amazon S3 Pague entre 0,023 y 0,025 USD por GB de datosque almacene en Amazon S3, según la regiónde AWS que utilice. Pague también entre 0,005y 0,0055 USD, según la región, para cada 1000solicitudes de PUT que realice en Amazon S3.

El uso que realice de Amazon S3 en laimplementación de esta solución puede incluirseen la capa gratuita de AWS. Para obtener másinformación, consulte Precios de Amazon SimpleStorage Service.

22

Amazon Pinpoint Guía para desarrolladoresRequisitos previos

Descripción Costo (dólares estadounidenses)

Uso de validación del número de teléfono La solución de este tutorial utiliza la característicade validación de número de teléfono en AmazonPinpoint para comprobar que cada número deteléfono en sus datos entrantes es válido y cuentacon el formato adecuado.

El costo de cada solicitud de validación de númerode teléfono es de 0,006 USD. Este tutorial incluyeun archivo de ejemplo que contiene 10 puntosde enlace. Cada vez que ejecute la solución quese muestra en este tutorial, pagará 0,06 USD porel uso del servicio de validación de número deteléfono.

Requisitos previosAntes de comenzar este tutorial, complete los siguientes requisitos previos:

• Cree una cuenta de AWS si no dispone todavía de una. Para crear una cuenta de AWS, diríjase ahttps://console.aws.amazon.com/ y elija Create a new AWS account (Crear una nueva cuenta de AWS).

• Asegúrese de que la cuenta que utiliza para iniciar sesión en la Consola de administración de AWSpuede crear nuevas políticas y roles de IAM. Si no está seguro, consulte a su administrador del sistema.

• Descargue e instale Python y el administrador de paquetes de PIP en su equipo. Esta solución se haprobado utilizando la versión 3.7.3 de Python y la versión 19.0.3 de PIP. Para obtener más informaciónsobre la descarga y la instalación de Python y PIP, consulte Beginner's Guide to Python (Guía paraprincipiantes de Python) en el sitio web de Python.

• Cree un nuevo proyecto en su cuenta de Amazon Pinpoint o identifique un proyecto existente en el quedesee importar segmentos. Para obtener más información sobre la creación de proyectos, consulteIntroducción a Amazon Pinpoint en la Guía del usuario de Amazon Pinpoint.

Paso 1: Creación de un bucket de Amazon S3En esta solución, debe cargar los archivos que desee importar en una carpeta de input en un bucket deAmazon S3. Cuando cargue un archivo en esta carpeta, Amazon S3 activará una función de Lambda. Estafunción moverá el archivo de entrada de una carpeta de archive. También creará varios archivos máspequeños en una carpeta de to_process. El primer paso en la implementación de esta solución es crearun bucket de Amazon S3. A continuación, cree una carpeta de input en ese bucket.

Paso 1.1: Crear un bucket de Amazon S3 y una carpeta deentradaComplete el siguiente procedimiento para crear un nuevo bucket de Amazon S3 que contenga una carpetacon el nombre input.

Para crear un bucket de Amazon S3

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.2. Elija Create bucket (Crear bucket).3. En Bucket name (Nombre de bucket), escriba un nombre exclusivo para el bucket, tal y como se

muestra en la siguiente imagen.

23

Amazon Pinpoint Guía para desarrolladoresPaso 1: Creación de un bucket de Amazon S3

24

Amazon Pinpoint Guía para desarrolladoresPaso 1: Creación de un bucket de Amazon S3

Tip

El nombre que especifique tiene que cumplir los siguientes requisitos:

• Tiene que ser exclusivo en todo AWS.• Debe contener al menos 3 caracteres y no más de 63.• Solo puede contener letras ASCII minúsculas (a-–z), números (0–9), puntos (.) y guiones

(-).• El primer carácter del nombre del bucket tiene que ser una letra o un número.• El nombre del bucket no se puede formatear como una dirección IP (como 192.0.2.0).

4. Seleccione Create.5. En la lista de buckets, elija el bucket que acaba de crear.6. Elija Create folder.7. Para el nombre de carpeta, escriba input, tal y como se muestra en la siguiente imagen. Seleccione

Save.

25

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear roles de IAM

Paso 2: Crear roles de IAMEl siguiente paso en la implementación de esta solución es configurar políticas y roles en AWS Identity andAccess Management (IAM). Para esta solución, debe crear los siguientes roles y políticas:

• Un rol que puede realizar las tareas de lectura y escritura desde un conjunto específico de buckets deAmazon S3.

• Un rol que se puede pasar a Amazon Pinpoint que permite a Amazon Pinpoint importar datos desegmento desde su bucket de Amazon S3 al crear un trabajo de importación.

• Una política que puede realizar determinadas acciones en su cuenta de Amazon Pinpoint.

Las políticas que se crean en esta sección utilizan la entidad principal de concesión de privilegios mínimos.Es decir, solo conceden los permisos específicos necesarios para llevar a cabo una tarea determinada, nomás.

Paso 2.1: Crear una política y un rol para tareas de lectura yescritura desde Amazon S3La primera política que debe crear es una que permita a Lambda ver el contenido de una carpeta en unbucket de Amazon S3. También permite a Lambda leer archivos en ese bucket y mover esos archivos aotras carpetas en el mismo bucket.

Para crear la política, realice el siguiente procedimiento:

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy

(Crear política).3. En la pestaña JSON, pegue el siguiente código:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "logs:CreateLogStream", "s3:ListBucket", "s3:DeleteObject", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*", "arn:aws:s3:::bucket-name/*", "arn:aws:s3:::bucket-name" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:*:*:*" }, { "Sid": "VisualEditor2", "Effect": "Allow",

26

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear roles de IAM

"Action": [ "s3:GetAccountPublicAccessBlock", "s3:ListAllMyBuckets", "s3:HeadBucket" ], "Resource": "*" } ] }

En el ejemplo anterior, reemplace bucket-name por el nombre del bucket que creó en el paso1 (p. 23) de este tutorial.

4. Elija Review policy (Revisar política).5. En Name (Nombre), escriba ImporterS3Policy. Elija Create Policy.

Cuando termine de crear la política, podrá crear un rol que la utilice.

Para crear el rol, realice el siguiente procedimiento:

1. En el panel de navegación, seleccione Roles y luego seleccione Create role.2. En Choose the service that will use this role (Elegir el servicio que utilizará ese rol), seleccione

Lambda y, a continuación, elija Siguiente: Permisos.3. En Attach permissions policies (Asociar políticas de permisos), elija ImporterS3Policy y, a

continuación, seleccione Siguiente: Etiquetas.4. Elija Next: Review.5. En la página Review (Revisar), en Name (Nombre), escriba ImporterS3Role. Elija Create role

(Crear rol).

Paso 2.2: Crear una política y un rol para la importación desdeAmazon S3Para utilizar la operación de la API de CreateImportJob, debe proporcionar un rol de IAM que permitaa Amazon Pinpoint realizar operaciones de lectura y escritura desde su bucket de Amazon S3. Este rolse tiene que pasar del rol de usuario a Amazon Pinpoint. Para habilitar el rol que se va a pasar a AmazonPinpoint, tiene que añadir una política de confianza al rol.

Para crear la política, realice el siguiente procedimiento:

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy

(Crear política).3. En la pestaña JSON, pegue el siguiente código:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutAccountPublicAccessBlock", "s3:GetAccountPublicAccessBlock", "s3:ListAllMyBuckets", "s3:HeadBucket" ],

27

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear roles de IAM

"Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name/*", "arn:aws:s3:::bucket-name" ] } ]}

En el ejemplo anterior, reemplace bucket-name por el nombre del bucket que creó en el paso1 (p. 23) de este tutorial.

4. Elija Review policy (Revisar política).5. En Name (Nombre), escriba ImporterS3PassthroughPolicy. Elija Create Policy.

A continuación, cree un rol que utilice esta política y, a continuación, asocie una política de confianza al rol.

Para crear el rol y la política de confianza, realice el siguiente procedimiento:

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En el panel de navegación, seleccione Roles y luego seleccione Create role.3. En Choose the service that will use this role (Elegir el servicio que utilizará ese rol), seleccione

Lambda y, a continuación, elija Siguiente: Permisos.4. En Attach permissions policies (Asociar políticas de permisos), elija ImporterS3PassthroughPolicy, y, a

continuación, seleccione Siguiente: Etiquetas.5. Elija Next: Review.6. En la página Review (Revisar), en Name (Nombre), escriba PinpointSegmentImport. Elija Create

role (Crear rol).7. En la lista de roles, elija el rol PinpointSegmentImport que acaba de crear.8. En la pestaña Trust relationships (Relaciones de confianza), elija Edit trust relationship (Editar relación

de confianza).9. Quite el código del editor de políticas y, a continuación, pegue el siguiente código:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

10. Elija Update trust policy (Actualizar política de confianza).

28

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear roles de IAM

Paso 2.3: Crear una política y un rol para utilizar recursos deAmazon PinpointLa siguiente política que tiene que crear es una que permita a Lambda interactuar con Amazon Pinpoint.En concreto, esta política permite a Lambda llamar al número de teléfono de Amazon Pinpoint del serviciode validación y crear trabajos de importación en Amazon Pinpoint. También permite a Amazon Pinpointleer desde el bucket de Amazon S3 cuando crea un trabajo de importación.

Para crear la política, realice el siguiente procedimiento:

1. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy(Crear política).

2. En la pestaña JSON, pegue el siguiente código:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "mobiletargeting:CreateImportJob", "mobiletargeting:GetImportJobs", "iam:GetRole", "iam:PassRole" ], "Resource": [ "arn:aws:mobiletargeting:us-east-1:123456789012:apps/01234567890123456789012345678901", "arn:aws:mobiletargeting:us-east-1:123456789012:apps/01234567890123456789012345678901/*", "arn:aws:iam::123456789012:role/PinpointSegmentImport" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "mobiletargeting:PhoneNumberValidate", "Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:phone/number/validate" } ]}

En el ejemplo anterior, realice el siguiente procedimiento:

• Reemplace us-east-1 por la región AWS en la que utiliza Amazon Pinpoint.• Sustituya 123456789012 por su ID de cuenta de AWS.• Reemplace 01234567890123456789012345678901 por el ID de proyecto de Amazon Pinpoint

al que desea importar los contactos. El ID de aplicación que especifique tiene que encontrarse en lacuenta de Amazon Pinpoint en la región especificada.

Note

Puede utilizar comodines para cualquiera de estos valores. El uso de comodines no solo haceque esta política sea más flexible, sino que también reduce la seguridad de la política porqueno cumple estrictamente el principio de privilegios mínimos.

3. Elija Review policy (Revisar política).

29

Amazon Pinpoint Guía para desarrolladoresPaso 3: Empaquetar las bibliotecas

4. En Name (Nombre), escriba ImporterPinpointPolicy. Elija Create Policy.

Cuando termine de crear la política, podrá crear un rol que la utilice. Añada también ImporterS3Policyal rol.

Para crear el rol, realice el siguiente procedimiento:

1. En el panel de navegación, seleccione Roles y luego seleccione Create role.2. En Choose the service that will use this role (Elegir el servicio que utilizará ese rol), seleccione

Lambda y, a continuación, elija Siguiente: Permisos.3. En Attach permissions policies (Asociar políticas de permisos), elija ImporterS3Policy y

ImporterPinpointPolicy. A continuación, seleccione Siguiente: Etiquetas.4. Elija Next: Review.5. En la página Review (Revisar), en Name (Nombre), escriba ImporterPinpointRole. Elija Create

role (Crear rol).

Paso 3: Crear un paquete que contiene bibliotecasPython obligatoriasLa solución que se documenta en este tutorial utiliza varias bibliotecas que no están incluidas con elpaquete Python estándar que Lambda utiliza. Para utilizar estas bibliotecas, primero debe descargarlas ensu equipo. A continuación, cree un archivo .zip que contenga todas las bibliotecas. Por último, cargueeste archivo en Lambdade forma que pueda llamar a las bibliotecas desde las funciones.

Note

En este procedimiento se presupone que ya ha instalado Python. Python se incluye de formapredeterminada con las distribuciones Linux, macOS, or Unix más recientes. Si utiliza Windows,puede descargar Python desde la página Versiones de Python para Windows en el sitio webde Python. Esta solución se probó mediante la versión 3.7.3 de Python en macOS High Sierra,Ubuntu 18.04 LTS y Windows Server 2019.

Para descargar las bibliotecas necesarias para este tutorial, realice el siguiente procedimiento:

1. En la línea de comandos, especifique el comando siguiente para instalar el paquete virtualenv:

python -m pip install virtualenv

2. Especifique el siguiente comando para crear un nuevo directorio para el entorno virtual:

Linux, macOS, or Unix

mkdir ~/pinpoint-importer

Windows PowerShell

new-item pinpoint-import -itemtype directory

3. Especifique el siguiente comando para cambiar al directorio de pinpoint-importer.

cd pinpoint-importer

4. Especifique el siguiente comando para crear e inicializar un entorno virtual denominado venv:

30

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

que divide datos de entrada

python -m virtualenv venv

5. Especifique el siguiente comando para activar el entorno virtual:

Linux, macOS, or Unix

source venv/bin/activate

Windows PowerShell

.\venv\Scripts\activate

El símbolo del sistema cambia para mostrar que el entorno virtual está activo.6. Especifique el siguiente comando para instalar los paquetes necesarios para este tutorial:

pip install s3fs jmespath s3transfer six python-dateutil docutils

7. Especifique el siguiente comando para desactivar el entorno virtual:

deactivate

8. Especifique el siguiente comando para crear un archivo que contenga las bibliotecas necesarias:

Linux, macOS, or Unix

cd venv/lib/python3.7/site-packages && \zip -r ~/pinpoint-importer/pinpoint-importer.zip dateutil docutils jmespath \s3fs s3transfer six.py && cd -

En el comando anterior, reemplace 3.7 por la versión de Python instalada en su equipo.Windows PowerShell

cd .\venv\Lib\site-packages\Compress-Archive -Path dateutil, docutils, jmespath, s3fs, s3transfer, six.py `-DestinationPath ..\..\..\pinpoint-importer.zip ; cd ..\..\..

Paso 4: Crear la función de Lambda que divide datosde entradaLa solución que se describe en este tutorial utiliza tres funciones de Lambda. La primera función deLambda se activa al cargar un archivo en un bucket de Amazon S3 específico. Esta función lee elcontenido del archivo de entrada y, a continuación, se divide en partes más pequeñas. Otras funciones(que creará más adelante en este tutorial) procesan estos archivos entrantes de forma simultánea. Elprocesamiento de archivos de forma simultánea reduce la cantidad de tiempo que se tarda en importartodos los puntos de enlace en Amazon Pinpoint.

Paso 4.1: Crear la funciónPara crear la primera función de Lambda para este tutorial, primero debe cargar el archivo .zip que creó enel paso 3 (p. 30). A continuación, debe configurar la propia función.

31

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

que divide datos de entrada

Para crear la función de Lambda

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. Elija Author from scratch. Bajo Basic information (Información básica), haga lo siguiente:

• En Function name (Nombre de función), especifique CustomerImport_ReadIncomingAndSplit.• En Runtime (Tiempo de ejecución), elija Python 3.7.• En Execution role (Rol de ejecución), elija Use an existing role (Usar un rol existente).• En Existing role (Rol existente), elija ImporterS3Role.• Elija Create function (Crear función).

4. En Function code (Código de función), en Code entry type (Tipo de entrada de código), elija Uploada .ZIP file (Cargar un archivo .ZIP). En Function package (Paquete de función), elija Upload (Cargar).Elija el archivo pinpoint-importer.zip que ha creado en el paso 3 (p. 30). Después deseleccionar el archivo, elija Save (Guardar).

Note

Una vez que elija Save (Guardar), recibirá un mensaje de error que indicará que Lambdano pudo abrir el archivo lambda_function.py. Omita este error: creará este archivo en elpaso siguiente.

5. En el editor de funciones, en el menú File (Archivo), elija New File (Nuevo archivo). El editor creará unnuevo archivo denominado Untitled1.

6. Pegue el siguiente código en el editor:

import osimport boto3import s3fsfrom botocore.exceptions import ClientError

input_archive_folder = "input_archive"to_process_folder = "to_process"file_row_limit = 50file_delimiter = ','

# S3 bucket infos3 = s3fs.S3FileSystem(anon=False) def lambda_handler(event, context): print("Received event: \n" + str(event)) for record in event['Records']: # Assign some variables that make it easier to work with the data in the # event record. bucket = record['s3']['bucket']['name'] key = record['s3']['object']['key'] input_file = os.path.join(bucket,key) archive_path = os.path.join(bucket,input_archive_folder,os.path.basename(key)) folder = os.path.split(key)[0] s3_url = os.path.join(bucket,folder) output_file_template = os.path.splitext(os.path.basename(key))[0] + "__part" output_path = os.path.join(bucket,to_process_folder) # Set a variable that contains the number of files that this Lambda # function creates after it runs. num_files = file_count(s3.open(input_file, 'r'), file_delimiter, file_row_limit) # Split the input file into several files, each with 50 rows. split(s3.open(input_file, 'r'), file_delimiter, file_row_limit, output_file_template, output_path, True, num_files)

32

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

que divide datos de entrada

# Send the unchanged input file to an archive folder. archive(input_file,archive_path) # Determine the number of files that this Lambda function will create.def file_count(file_handler, delimiter, row_limit): import csv reader = csv.reader(file_handler, delimiter=delimiter) # Figure out the number of files this function will generate. row_count = sum(1 for row in reader) - 1 # If there's a remainder, always round up. file_count = int(row_count // row_limit) + (row_count % row_limit > 0) return file_count

# Split the input into several smaller files.def split(filehandler, delimiter, row_limit, output_name_template, output_path, keep_headers, num_files): import csv reader = csv.reader(filehandler, delimiter=delimiter) current_piece = 1 current_out_path = os.path.join( output_path, output_name_template + str(current_piece) + "__of" + str(num_files) + ".csv" ) current_out_writer = csv.writer(s3.open(current_out_path, 'w'), delimiter=delimiter) current_limit = row_limit if keep_headers: headers = next(reader) current_out_writer.writerow(headers) for i, row in enumerate(reader): if i + 1 > current_limit: current_piece += 1 current_limit = row_limit * current_piece current_out_path = os.path.join( output_path, output_name_template + str(current_piece) + "__of" + str(num_files) + ".csv" ) current_out_writer = csv.writer(s3.open(current_out_path, 'w'), delimiter=delimiter) if keep_headers: current_out_writer.writerow(headers) current_out_writer.writerow(row)

# Move the original input file into an archive folder.def archive(input_file, archive_path): s3.copy_basic(input_file,archive_path) print("Moved " + input_file + " to " + archive_path) s3.rm(input_file)

7. En el editor de funciones, en el menú File (Archivo), elija Save As (Guardar como). Guarde el archivocomo lambda_function.py en el directorio raíz de la función.

8. En la parte superior de la página, elija Save.

Paso 4.2: Comprobar la funciónDespués de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.

Para probar la función de Lambda

1. En un editor de texto, cree un nuevo archivo. En el archivo, pegue el siguiente texto:

33

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

que divide datos de entrada

Salutation,First Name,Last Name,Title,Mailing Street,Mailing City,Mailing State/Province,Mailing Zip/Postal Code,Mailing Country,Phone,Email,Contact Record Type,Account Name,Account Owner,Lead SourceMr.,Alejandro,Rosales,Operations Manager,414 Main Street,Anytown,AL,95762,United States,+18705550156,[email protected],Customer,Example Corp.,Richard Roe,WebsiteMs.,Ana Carolina,Silvia,Customer Service Representative,300 First Avenue,Any Town,AK,65141,United States,(727) 555-0128,[email protected],Qualified Lead,AnyCompany,Jane Doe,SeminarMrs.,Juan,Li,Auditor,717 Kings Street,Anytown,AZ,18162,United States,768.555.0122,[email protected],Unqualified Lead,Example Corp.,Richard Roe,PhoneDr.,Arnav,Desai,Senior Analyst,782 Park Court,Anytown,AR,27084,United States,+17685550162,[email protected],Customer,Example Corp.,Richard Roe,WebsiteMr.,Mateo,Jackson,Sales Representative,372 Front Street,Any Town,CA,83884,United States,(781) 555-0169,[email protected],Customer,AnyCompany,Jane Doe,SeminarMr.,Nikhil,Jayashankar,Executive Assistant,468 Fifth Avenue,Anytown,CO,75376,United States,384.555.0178,[email protected],Qualified Lead,Example Corp.,Jane Doe,WebsiteMrs.,Shirley,Rodriguez,Account Manager,287 Park Avenue,Any Town,CT,26715,United States,+12455550188,[email protected],Qualified Lead,Example Corp.,Richard Roe,SeminarMs.,Xiulan,Wang,Information Architect,107 Queens Place,Anytown,DE,70710,United States,(213) 555-0192,[email protected],Unqualified Lead,Example Corp.,Richard Roe,PhoneMiss,Saanvi,Sarkar,Director of Finance,273 Sample Boulevard,Any Town,FL,85431,United States,237.555.0121,[email protected],Customer,AnyCompany,Richard Roe,ReferralMr.,Wei,Zhang,Legal Counsel,15 Third Avenue,Any Town,GA,82387,United States,+18065550179,[email protected],Customer,AnyCompany,Jane Doe,Website

Guarde el archivo como testfile.csv.

Note

Este archivo contiene registros de contacto ficticios. Utilícelo solo para probar la funciónde Lambda que creará en este tutorial. Posteriormente, podrá eliminar los segmentos quecontienen estos datos ficticios.Por ahora, no añada ni quite columnas en el archivo. Después de implementar la soluciónque se muestra en este tutorial, podrá modificarla para satisfacer sus necesidades.

2. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.3. En la lista de buckets, elija el bucket que creó en el paso 1 (p. 23) y, a continuación, elija la carpeta

de input.4. Seleccione Upload. Cargue el archivo de testfile.csv que acaba de crear.5. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.6. En la lista de funciones, elija la función CustomerImport_ReadIncomingAndSplit que creó

anteriormente.7. Elija Test. En la ventana Configure test event (Configurar evento de prueba), en Event name (Nombre

de evento), especifique TestEvent. A continuación, en el editor, pegue el código siguiente:

{ "Records": [ { "s3": { "bucket": { "name": "bucket-name", "arn": "arn:aws:s3:::bucket-name" }, "object": { "key": "input/testfile.csv" } } } ]

34

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

}

En el ejemplo anterior, reemplace bucket-name por el nombre del bucket de Amazon S3 que creó enel paso 1 (p. 23). Cuando haya terminado, elija Create.

8. Elija Test (Probar) de nuevo. La función se ejecuta con el evento de prueba que ha proporcionado.

Si la función se ejecuta según lo previsto, vaya al siguiente paso.

Si se produce un error al completar la función, haga lo siguiente:

• Asegúrese de que ha especificado el nombre de bucket correcto en la política de IAM que ha creadoen Paso 2: Crear roles de IAM (p. 26).

• Asegúrese de que el evento de prueba de Lambda que ha creado en el paso 7 de esta secciónhaga referencia al bucket y el nombre del archivo correctos.

• Si asignó un nombre para el archivo de entrada distinto de testfile.csv, asegúrese de que elnombre de archivo no contenga espacios.

9. Vuelva a la consola de Amazon S3. Elija el bucket que ha creado en the section called “Paso 1:Creación de un bucket de Amazon S3” (p. 23).

Abra las carpetas del bucket y anote el contenido de cada uno de ellas. Si se cumple lo siguiente,significa que la función de Lambda ha funcionado según lo previsto:

• La carpeta input no contiene ningún archivo.• La carpeta input_archive contiene el archivo que ha cargado en el paso 4 de esta sección.• La carpeta to_process contiene un archivo denominado testfile__part1__of1.csv.

No elimine ninguno de los archivos recién generados. La función de Lambda que cree en el siguientepaso utilizará los archivos de la carpeta to_process.

Paso 5: Crear la función de Lambda que procesa losregistros entrantesLa siguiente función de Lambda que crea procesa los registros en los archivos entrantes que se crearonmediante la función que creó en el paso 4 (p. 31). En concreto, realiza los siguientes procedimientos:

• Cambia los encabezados en el archivo entrante a los valores que Amazon Pinpoint espera ver.• Convierte alguna de la información de contacto en la hoja de cálculo de entrada en un formato que

Amazon Pinpoint espera. Por ejemplo, el valor "United States" (Estados Unidos) de la columna MailingCountry se convierte a "US" (EE. UU.) en la columna Location.Country del archivo de salida. Estose debe a que Amazon Pinpoint espera que los países aparezcan en formato ISO-3166-1.

• Envía todos los números de teléfono que encuentra en el servicio de validación de número de teléfono.Este paso garantiza que todos los números de teléfono se convierten al formato E.164. Tambiéndetermina el tipo de número de teléfono. Los números de teléfono móvil se crean como puntos de enlacede SMS, mientras que los demás números de teléfono se crean como puntos de enlace de voz.

• Escribe líneas separadas para cada punto de enlace que detecta. Por ejemplo, si una fila en el archivode entrada contiene un número de teléfono y una dirección de correo electrónico, el archivo de salidacontiene una fila distinta para cada uno de estos puntos de enlace. Sin embargo, los dos registros seunen mediante un ID de usuario común.

• Comprueba para ver si los ID de punto de enlace en el archivo entrante ya existen en el proyecto deAmazon Pinpoint. En caso de ser así, la función de Lambda actualiza los registros existentes en lugar decrear otros nuevos.

35

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

Cuando la función termina de procesar los archivos de entrada, los envía a una carpeta en el directorio deprocessed.

Paso 5.1: Crear la funciónEl proceso de creación de esta función es similar al proceso que ha completó en el paso 4 (p. 31)de este tutorial. En primer lugar, debe cargar el archivo .zip que contiene las bibliotecas necesarias. Acontinuación, se crea dos archivos de Python.

Para crear la función de Lambda

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. Elija Author from scratch. Bajo Basic information (Información básica), haga lo siguiente:

• Para Function name (Nombre de función), escriba CustomerImport_ProcessInput.• En Runtime (Tiempo de ejecución), elija Python 3.7.• En Execution role (Rol de ejecución), elija Use an existing role (Usar un rol existente).• En Existing role (Rol existente), elija ImporterPinpointRole.• Elija Create function (Crear función).

4. En Function code (Código de función), en Code entry type (Tipo de entrada de código), elija Uploada .ZIP file (Cargar un archivo .ZIP). En Function package (Paquete de función), elija Upload (Cargar).Elija el archivo pinpoint-importer.zip que ha creado en el paso 3 (p. 30). Después deseleccionar el archivo, elija Save (Guardar).

Note

Una vez que elija Save (Guardar), recibirá un mensaje de error que indicará que Lambdano pudo abrir el archivo lambda_function.py. Omita este error: creará este archivo en elpaso siguiente.

5. En el editor de funciones, en el menú File (Archivo), elija New File (Nuevo archivo). El editor creará unnuevo archivo denominado Untitled1.

6. Pegue el siguiente código en el editor:

import ioimport osimport csvimport timeimport uuidimport boto3import s3fsimport input_internationalization as i18nfrom datetime import datetimefrom botocore.exceptions import ClientError

# You might need to change some things to fit your specific needs.

# If incoming data doesn't specify a country, you have to pass a default value.# Specify a default country code in ISO 3166-1 alpha-2 format.defaultCountry = "US"

# The column header names that are applied to the output file. You might need to # change the order of the items in this list to suit the data that's in the file# that you want to import. Column numbers are included as comments here to make it# easier to align the columns.# If you add columns here, you also need to add them in the process_incoming_file# function below. Specifically, you need to add them to the lists that the# Filewriter object uses to write the processed files. See the sections that

36

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

# begin at lines 137 and 175 below.header = [ #Col num in input 'ChannelType', #not in input 'Address', #9 (phone), 10 (email) 'Id', #9 (phone), 10 (email) 'User.UserAttributes.City', #5 'User.UserAttributes.Region', #6 'User.UserAttributes.PostalCode', #7 'Location.Country', #8 'User.UserAttributes.Salutation', #0 'User.UserAttributes.FirstName', #1 'User.UserAttributes.LastName', #2 'User.UserAttributes.Title', #3 'User.UserAttributes.StreetAddress', #4 'User.UserAttributes.ContactRecordType', #11 'User.UserAttributes.AccountName', #12 'User.UserAttributes.AccountOwner', #13 'User.UserAttributes.LeadSource', #14 'User.UserId' #not in input ]

# You probably don't need to change any variables below this point.AWS_REGION = os.environ['region']projectId = os.environ['projectId']processed_folder = "processed"startTime = datetime.now()s3 = s3fs.S3FileSystem(anon=False)

def lambda_handler(event, context): print("Received event: " + str(event)) for record in event['Records']: # Create some variables that make it easier to work with the data in the # event record. bucket = record['s3']['bucket']['name'] key = record['s3']['object']['key'] input_file = os.path.join(bucket,key) output_file_name = os.path.splitext(os.path.basename(input_file))[0] + "_processed.csv" processed_subfolder = os.path.basename(input_file).split("__part",1)[0] output_fullpath = os.path.join(bucket,processed_folder,processed_subfolder,output_file_name) # Start the function that processes the incoming data. process_incoming_file(input_file, output_fullpath)

# Check the current project to see if an endpoint ID already exists.def check_endpoint_exists(endpointId): client = boto3.client('pinpoint',region_name=AWS_REGION)

try: response = client.get_endpoint( ApplicationId=projectId, EndpointId=endpointId ) except ClientError as e: endpointInfo = [ False, "" ] else: userId = response['EndpointResponse']['User']['UserId'] endpointInfo = [ True, userId ]

return endpointInfo

# Change the column names, validate and reformat some of the input, and then # write to output files.def process_incoming_file(input_file, output_file): # Counters for tracking the number of records and endpoints processed.

37

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

line_count = 0 create_count = 0 update_count = 0 folder = os.path.split(output_file)[0] with s3.open(output_file, 'w', newline='', encoding='utf-8-sig') as outFile: fileWriter = csv.writer(outFile) with s3.open(input_file, 'r', newline='', encoding='utf-8-sig') as inFile: fileReader = csv.reader(inFile) for row in fileReader: # Sleep to prevent throttling errors. time.sleep(.025) # Write the header row. if (line_count == 0): fileWriter.writerow(header) line_count += 1 # Write the rest of the data. else: # Generate a new UUID. userId = str(uuid.uuid4()) # Varibles that make things easier to read. inputEmail = row[10] inputPhone = row[9] inputCountry = row[8] # If a country is included in the incoming record, create a # variable that contains the ISO 3166-1 alpha-2 country code. if inputCountry: country = i18n.get_country_code(inputCountry, defaultCountry) # If no country code is provided, create a variable that contains a # default country code. Change this if you want to use a different # default value. elif not inputCountry: country = defaultCountry if inputEmail: emailEndpointInfo = check_endpoint_exists(inputEmail) if emailEndpointInfo[0]: userId = emailEndpointInfo[1] update_count += 1 else: create_count += 1 fileWriter.writerow([ "EMAIL", row[10], row[10], row[5], #City row[6], #Region row[7], #Postal code country, #Country row[0], #Salutation row[1], #First name row[2], #Last name row[3], #Title row[4], #Street address row[11], #Contact record type row[12], #Account name row[13], #Account owner row[14], #Lead source userId

38

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

]) if inputPhone: phoneInfo = i18n.check_phone_number(country, inputPhone, AWS_REGION) cleansedPhone = phoneInfo[0] phoneType = phoneInfo[1] if (phoneType == "MOBILE") or (phoneType == "PREPAID"): phoneType = "SMS" else: phoneType = "VOICE" phoneEndpointInfo = check_endpoint_exists(cleansedPhone) if phoneEndpointInfo[0]: userId = phoneEndpointInfo[1] update_count += 1 else: create_count += 1 fileWriter.writerow([ phoneType, cleansedPhone, cleansedPhone, row[5], #City row[6], #Region row[7], #Postal code country, #Country row[0], #Salutation row[1], #First name row[2], #Last name row[3], #Title row[4], #Street address row[11], #Contact record type row[12], #Account name row[13], #Account owner row[14], #Lead source userId ]) line_count += 1 # Calculate the amount of time the script ran. duration = datetime.now() - startTime # Print the number of records processed. Subtract 1 to account for the header. print("Processed " + str(line_count - 1) + " records in " + str(duration) + ". ", end="") # Print the numbers of endpoints created and updated. print("Found " + str(create_count) + " new endpoints and " + str(update_count) + " existing endpoints.")

s3.rm(input_file)

7. En el editor de funciones, en el menú File (Archivo), elija Save As (Guardar como). Guarde el archivocomo lambda_function.py en el directorio raíz de la función.

8. En el editor de funciones, en el menú File (Archivo), elija New File (Nuevo archivo). El editor creará unnuevo archivo denominado Untitled1.

9. Pegue el siguiente código en el editor:

import reimport boto3from botocore.exceptions import ClientError

39

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

def get_country_code(country, default): # The Location.Country attribute expects an ISO 3166-1 Alpha 2 formatted # country name. This function attempts to identify several possible # variations of each country name and convert them to the required format. # This function exists so that the program doesn't need to rely on non- # standard libraries. Update this section to suit the data in your existing # content management system. # This section includes common aliases for the 10 most populous countries # in the world, and some additional countries where Amazon Pinpoint is often used to # send SMS messages. If necessary, expand this section to include # additional countries, or additional aliases for the countries that are # already listed. country = country.strip().lower()

bangladeshAliases = [ "bd", "bgd", "bangladesh", "########" ] brazilAliases = [ "br", "bra", "brazil", "brasil", "república federativa do brasil" ] canadaAliases = [ "ca", "can", "canada" ] chinaAliases = [ "cn", "chn", "prc", "proc", "china", "people's republic of china", "#######", "##" ] indiaAliases = [ "in", "ind", "india", "republic of india" ] indonesiaAliases = [ "id", "idn", "indonesia", "republic of indonesia", "republik indonesia" ] irelandAliases = [ "ie", "irl", "ireland", "éire" ] japanAliases = [ "jp", "jpn", "japan", "##" ] mexicoAliases = [ "mx", "mex", "mexico", "méxico", "estados unidos mexicanos" ] nigeriaAliases = [ "ng", "nga", "nigeria" ] pakistanAliases = [ "pk", "pak", "pakistan", "#######" ] russiaAliases = [ "ru", "rus", "russian federation", "#######", "########### ##########" ] ukAliases = [ "uk", "gb", "gbr", "united kingdom", "britain", "england", "wales", "scotland", "northern ireland" ] usAliases = [ "us", "usa", "united states", "united states of america" ]

if country in bangladeshAliases: countryISO3166 = "BD" elif country in brazilAliases: countryISO3166 = "BR" elif country in canadaAliases: countryISO3166 = "CA" elif country in chinaAliases: countryISO3166 = "CN" elif country in indiaAliases: countryISO3166 = "IN" elif country in indonesiaAliases: countryISO3166 = "ID" elif country in irelandAliases: countryISO3166 = "IE" elif country in japanAliases: countryISO3166 = "JP" elif country in mexicoAliases: countryISO3166 = "MX" elif country in nigeriaAliases: countryISO3166 = "NG" elif country in pakistanAliases: countryISO3166 = "PK" elif country in russiaAliases: countryISO3166 = "RU" elif country in ukAliases: countryISO3166 = "GB" elif country in usAliases: countryISO3166 = "US"

40

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

else: countryISO3166 = default

return countryISO3166

def check_phone_number(country, phone, region):

client = boto3.client('pinpoint',region_name=region)

# Phone number validation can generate an E.164-compliant phone number as # long as you provide it with the correct country code. This function looks # for the appropriate country code at the beginning of the phone number. If # the country code isn't present, it adds it to the beginning of the phone # number that was provided to the function, and then sends it to the phone # number validation service. The phone number validation service performs # additional cleansing of the phone number, removing things like # unnecessary leading digits. It also provides metadata, such as the phone # number type (mobile, landline, etc.). # Add more countries and regions to this function if necessary. phone = re.sub("[^0-9]", "", phone)

if (country == 'BD') and not phone.startswith('880'): phone = "+880" + phone elif (country == 'BR') and not phone.startswith('55'): phone = "+55" + phone elif (country == 'CA' or country == 'US') and not phone.startswith('1'): # US and Canada (country code 1) area codes and phone numbers can't use # 1 as their first digit, so it's fine to search for a 1 at the # beginning of the phone number to determine whether or not the number # contains a country code. phone = "+1" + phone elif (country == 'CN') and not phone.startswith('86'): phone = "+86" + phone elif (country == 'IN') and not phone.startswith('91'): phone = "+91" + phone elif (country == 'ID') and not phone.startswith('62'): phone = "+62" + phone elif (country == 'IE') and not phone.startswith('353'): phone = "+353" + phone elif (country == 'JP') and not phone.startswith('81'): phone = "+81" + phone elif (country == 'MX') and not phone.startswith('52'): phone = "+52" + phone elif (country == 'NG') and not phone.startswith('234'): phone = "+234" + phone elif (country == 'PK') and not phone.startswith('92'): phone = "+92" + phone elif (country == 'RU') and not phone.startswith('7'): # No area codes in Russia begin with 7. However, Kazakhstan also uses # country code 7, and Kazakh area codes can begin with 7. If your # contact database contains Kazakh phone numbers, you might have to # use some additional logic to identify them. phone = "+7" + phone elif (country == 'GB') and not phone.startswith('44'): phone = "+44" + phone

try: response = client.phone_number_validate( NumberValidateRequest={ 'IsoCountryCode': country, 'PhoneNumber': phone } ) except ClientError as e: print(e.response) else:

41

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

returnValues = [ response['NumberValidateResponse']['CleansedPhoneNumberE164'], response['NumberValidateResponse']['PhoneType'] ] return returnValues

10. En el editor de funciones, en el menú File (Archivo), elija Save As (Guardar como). Guarde el archivocomo input_internationalization.py en el directorio raíz de la función.

11. En Environment variables (Variables de entorno), realice el siguiente procedimiento:

• En la primera fila, cree una variable con una clave de projectId. A continuación, establezca elvalor en el ID único del proyecto que ha especificado en la política de IAM en el paso 2.2 (p. 29).

• En la segunda fila, crear una variable con una clave de region. A continuación, establezca el valoren la región de AWS que especificó en la política de IAM en el paso 2.2 (p. 29).

Cuando termine, la sección Environment Variables (Variables de entorno) debe tener el aspecto delejemplo que se muestra en la siguiente imagen.

12. En Basic settings (Configuración básica), establezca el valor Timeout (Tiempo de espera) en 6segundos.

Note

Cada llamada al servicio de validación de número de teléfono tarda normalmenteaproximadamente 0,5 segundos en completarse, pero a veces puede tardar más. Si noaumenta el valor Timeout (Tiempo de espera), la función puede agotar el tiempo de esperaantes de que acabe de procesar los registros de entrada. Esta configuración le proporcionauna función de Lambda con mucho tiempo para finalizar la ejecución.

13. En Concurrency (Concurrencia), elija Reserve concurrency (Reservar concurrencia) y, a continuación,establezca el valor en 20.

42

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear la función de Lambdaque procesa los registros entrantes

Note

Un valor de concurrencia alto puede provocar que los archivos se procesen más rápido. Sinembargo, si el valor de concurrencia es demasiado alto, comenzará a generar un número deeventos PUT que supera las cuotas de Amazon S3. Por lo tanto, el proceso de importaciónno captura todos los datos en la hoja de cálculo de entrada. Esto se debe a que muchas delas solicitudes que genera esta función acaban siendo erróneas.

14. En la parte superior de la página, elija Save.

Paso 5.2: Probar la funciónDespués de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.

Para probar la función de Lambda

1. Elija Test. En la ventana Configure test event (Configurar evento de prueba), en Event name (Nombrede evento), especifique TestEvent. A continuación, en el editor, pegue el código siguiente:

{ "Records": [ { "s3": { "bucket": { "name": "bucket-name", "arn": "arn:aws:s3:::bucket-name" }, "object": { "key": "to_process/testfile__part1__of1.csv" } } } ]}

En el ejemplo anterior, reemplace bucket-name por el nombre del bucket de Amazon S3 que creó enel paso 1 (p. 26). Cuando haya terminado, elija Create.

2. Elija Test (Probar) de nuevo. La función se ejecuta con el evento de prueba que ha proporcionado.

Si la función se ejecuta según lo previsto, vaya al siguiente paso.

Si se produce un error al completar la función, haga lo siguiente:

• Asegúrese de que ha especificado el nombre de bucket correcto en la política de IAM que ha creadoen Paso 1: Creación de un bucket de Amazon S3 (p. 23).

• Asegúrese de que el evento de prueba de Lambda que ha creado en el paso 1 de esta secciónhaga referencia al bucket y el nombre del archivo correctos.

3. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

Elija el bucket que ha creado en the section called “Paso 1: Creación de un bucket de AmazonS3” (p. 23).

Abra las carpetas del bucket y anote el contenido de cada uno de ellas. Si se cumple lo siguiente,significa que la función de Lambda ha funcionado según lo previsto:

• La carpeta to_process no contiene ningún archivo.• La carpeta procesada contiene una subcarpeta denominada testfile. En la carpeta testfile

hay un archivo denominado testfile__part1__of1_processed.csv.

43

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear la función de Lambda que

importa registros en Amazon Pinpoint

No elimine ninguno de los archivos recién generados. La función de Lambda que cree en el siguientepaso utilizará los archivos de la carpeta to_process.

Paso 6: Crear la función de Lambda que importaregistros en Amazon PinpointLa función de Lambda final que crea para este tutorial genera un trabajo de importación en AmazonPinpoint. Dicho trabajo importa los archivos en la carpeta processed de su bucket de Amazon S3.Aunque la carpeta processed puede contener varios archivos, el trabajo de importación crea un únicosegmento que contiene todos los puntos de enlace dentro de los archivos.

Esta función utiliza una prueba para asegurarse de que todos los archivos generados por las funciones deLambda anteriores están presentes antes de iniciar el trabajo de importación. También comprueba si hacreado trabajos de importación que hacen referencia a la misma carpeta con el fin de evitar la creación desegmentos duplicados.

Paso 6.1: Crear la funciónEl proceso de creación de la función de Lambda final es mucho más fácil que el proceso para las últimasdos funciones. Esto se debe a que no es necesario para importar las bibliotecas externas.

Para crear la función

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. Elija Author from scratch. Bajo Basic information (Información básica), haga lo siguiente:

• Para Function name (Nombre de función), escriba CustomerImport_CreateJob.• En Runtime (Tiempo de ejecución), elija Python 3.7.• En Execution role (Rol de ejecución), elija Use an existing role (Usar un rol existente).• En Existing role (Rol existente), elija ImporterPinpointRole.• Elija Create function (Crear función).

4. Borre el ejemplo del editor de código y, a continuación, pegue el siguiente código en el editor:

import os import timeimport boto3from botocore.exceptions import ClientError

AWS_REGION = os.environ['region']projectId = os.environ['projectId']importRoleArn = os.environ['importRoleArn']

def lambda_handler(event, context): print("Received event: " + str(event)) for record in event['Records']: # Assign some variables to make it easier to work with the data in the # event recordi bucket = record['s3']['bucket']['name'] key = record['s3']['object']['key'] folder = os.path.split(key)[0] folder_path = os.path.join(bucket, folder) full_path = os.path.join(bucket, key) s3_url = "s3://" + folder_path

44

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear la función de Lambda que

importa registros en Amazon Pinpoint

# Check to see if all file parts have been processed. if all_files_processed(bucket, folder, full_path): # If you haven't recently run an import job that uses a file stored in # the specified S3 bucket, then create a new import job. This prevents # the creation of duplicate segments. if not (check_import_jobs(bucket, folder, s3_url)): create_import_job(s3_url) else: print("Import job found with URL s3://" + os.path.join(bucket,folder) + ". Aborting.") else: print("Parts haven't finished processing yet.")

# Determine if all of the file parts have been processed.def all_files_processed(bucket, folder, full_path): # Use the "__ofN" part of the file name to determine how many files there # should be. number_of_parts = int((full_path.split("__of")[1]).split("_processed")[0]) # Figure out how many keys contain the prefix for the current batch of # folders (basically, how many files are in the appropriate "folder"). client = boto3.client('s3') objs = client.list_objects_v2(Bucket=bucket,Prefix=folder) file_count = objs['KeyCount']

ready_for_import = False if file_count == number_of_parts: ready_for_import = True return ready_for_import

# Check Amazon Pinpoint to see if any import jobs have been created by using # the same S3 folder. def check_import_jobs(bucket, folder, s3_url): url_list = [] # Retrieve a list of import jobs for the current project ID. client = boto3.client('pinpoint') try: client_response = client.get_import_jobs( ApplicationId=projectId ) except ClientError as e: print(e.response['Error']['Message']) else: segment_response = client_response['ImportJobsResponse']['Item'] # Parse responses. Add all S3Url values to a list. for item in segment_response: s3_url_existing = item['Definition']['S3Url'] url_list.append(s3_url_existing) # Search for the current S3 URL in the list. if s3_url in url_list: found = True else: found = False return found

# Create the import job in Amazon Pinpoint.def create_import_job(s3_url): client = boto3.client('pinpoint') segment_name = s3_url.split('/')[4]

45

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear la función de Lambda que

importa registros en Amazon Pinpoint

try: response = client.create_import_job( ApplicationId=projectId, ImportJobRequest={ 'DefineSegment': True, 'Format': 'CSV', 'RegisterEndpoints': True, 'RoleArn': importRoleArn, 'S3Url': s3_url, 'SegmentName': segment_name } ) except ClientError as e: print(e.response['Error']['Message']) else: print("Import job " + response['ImportJobResponse']['Id'] + " " + response['ImportJobResponse']['JobStatus'] + ".") print("Segment ID: " + response['ImportJobResponse']['Definition']['SegmentId']) print("Application ID: " + projectId)

5. En Environment variables (Variables de entorno), realice el siguiente procedimiento:

• En la primera fila, cree una variable con una clave de projectId. A continuación, establezca elvalor en el ID único del proyecto que ha especificado en la política de IAM en el paso 2.2 (p. 29).

• En la segunda fila, crear una variable con una clave de region. A continuación, establezca el valoren la región de AWS que especificó en la política de IAM en el paso 2.2 (p. 29).

• En la tercera fila, cree una variable con una clave de importRoleArn. A continuación,establezca el valor en el nombre de recurso de Amazon (ARN) del rol de IAM que creó en el paso2.2 (p. 27).

6. En Basic settings (Configuración básica), establezca el valor Timeout (Tiempo de espera) en 7segundos.

Note

Es posible que pueda utilizar el valor de tiempo de espera predeterminado de 3 segundos.Sin embargo, es posible que se precise algo de más tiempo para crear trabajos más grandes.

7. En la parte superior de la página, elija Save.

Paso 6.2: Probar la funciónDespués de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.

Para probar la función de Lambda

1. Elija Test. En la página Configure test event (Configurar evento de prueba), en Event name (Nombrede evento), especifique TestEvent. A continuación, en el editor, pegue el código siguiente:

{ "Records": [ { "s3": { "bucket": { "name": "bucket-name", "arn": "arn:aws:s3:::bucket-name" }, "object": {

46

Amazon Pinpoint Guía para desarrolladoresPaso 7: Configurar eventos de Amazon S3

"key": "processed/testfile/testfile__part1_processed.csv" } } } ]}

En el ejemplo anterior, reemplace bucket-name por el nombre del bucket de Amazon S3 que creó enel paso 1 (p. 26). Cuando haya terminado, elija Create.

2. Elija Test (Probar) de nuevo. La función se ejecuta con el evento de prueba que ha proporcionado.3. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

Elija el bucket que ha creado en the section called “Paso 1: Creación de un bucket de AmazonS3” (p. 23).

Abra las carpetas del bucket y anote el contenido de cada uno de ellas. Si se cumple lo siguiente,significa que la función de Lambda ha funcionado según lo previsto:

• La carpeta to_process no contiene ningún archivo.• La carpeta procesada contiene una subcarpeta denominada testfile. En la carpeta testfile

hay un archivo denominado testfile__part1__of1_processed.csv.

No elimine ninguno de los archivos recién generados. La función de Lambda que cree en el siguientepaso utilizará los archivos de la carpeta to_process.

Paso 7: Configurar eventos de Amazon S3En esta sección, configurará el bucket de Amazon S3 de manera que active sus funciones de Lambdacuando añada archivos a las carpetas en el bucket. También deberá probar toda la función paraasegurarse de que los desencadenadores funcionan según lo esperado.

Mediante el uso de desencadenadores en Amazon S3, el proceso de ejecución de las funcionesde Lambda será automático. Cuando cargue un archivo en la carpeta input, Amazon S3 enviaráautomáticamente una notificación a la función de CustomerImport_ReadIncomingAndSplit. Cuandose ejecute esa función, enviará los archivos a la carpeta to_process. Cuando los archivos se añadana la carpeta to_process, Amazon S3 activará la función de CustomerImport_ProcessInput.Cuando se ejecute esa función, añadirá archivos a la carpeta processed, que activa la función deCustomerImport_CreateJob.

Paso 7.1: Configurar notificaciones de eventosEn esta sección, configurará tres notificaciones de eventos para su bucket de Amazon S3. Estasnotificaciones activan automáticamente las funciones de Lambda cuando se añaden los archivos acarpetas específicas en su bucket.

Para configurar los desencadenadores de eventos, realice el siguiente procedimiento:

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.2. En la lista de buckets, elija el bucket que creó en el paso 1 (p. 23).3. En la pestaña Properties (Propiedades), elija Events (Eventos). Después, haga lo siguiente:

• Seleccione Add notification (Añadir notificación), como se muestra en la siguiente imagen.• En Name (Nombre), escriba SplitInput.• En Events (Eventos), elija PUT.• En Prefix (Prefijo), escriba input/.

47

Amazon Pinpoint Guía para desarrolladoresPaso 7: Configurar eventos de Amazon S3

• En Suffix (Sufijo), escriba .csv.• En Send to (Enviar a), elija Lambda Function (Función Lambda).• En Lambda, elija CustomerImport_ReadIncomingAndSplit.

Cuando haya terminado, la sección Events (Eventos) tendrá un aspecto similar al del ejemplo quese muestra en la siguiente imagen.

48

Amazon Pinpoint Guía para desarrolladoresPaso 7: Configurar eventos de Amazon S3

49

Amazon Pinpoint Guía para desarrolladoresPaso 7: Configurar eventos de Amazon S3

• Seleccione Save.4. Elija Events (Eventos) y, a continuación, seleccione Add notification (Añadir notificación) de nuevo.

Haga lo siguiente:

• Seleccione Add notification (Añadir notificación), como se muestra en la siguiente imagen.• En Name (Nombre), escriba ProcessInput.• En Events (Eventos), elija PUT.• En Prefix (Prefijo), escriba to_process/.• En Suffix (Sufijo), escriba .csv.• En Send to (Enviar a), elija Lambda Function (Función Lambda).• En Lambda, elija CustomerImport_ProcessInput.• Seleccione Save.

5. Elija Events (Eventos) y, a continuación, seleccione Add notification (Añadir notificación) de nuevo.Haga lo siguiente:

• Seleccione Add notification (Añadir notificación), como se muestra en la siguiente imagen.• En Name (Nombre), escriba CreateImportJob.• En Events (Eventos), elija PUT.• En Prefix (Prefijo), escriba processed/.• En Suffix (Sufijo), escriba .csv.• En Send to (Enviar a), elija Lambda Function (Función Lambda).• En Lambda, elija CustomerImport_CreateJob.• Seleccione Save.

Paso 7.2: Probar los desencadenadoresEl último paso de la configuración de la solución que se trata en este tutorial es el de carga de un archivoen una carpeta input en el bucket de Amazon S3. Si se carga un archivo, se activa la función de Lambdaque creó en el paso 4 (p. 31). Cuando esta función termina de ejecutarse, crea archivos en otrascarpetas para las que configuró notificaciones de eventos en la sección anterior. Después de unosminutos, la secuencia completa de funciones Lambda terminará de ejecutarse y su proyecto de AmazonPinpoint contendrá un nuevo segmento.

Para probar los desencadenadores de eventos, realice el siguiente procedimiento:

1. En su equipo, localice el archivo testfile.csv que creó en el paso 4.2 (p. 33). Cambie elnombre del archivo a testfile1.csv.

2. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.3. En la lista de buckets, elija el bucket que creó en el paso 1 (p. 23) y, a continuación, elija la carpeta

de input.4. Cargue testfile1.csv en la carpeta input. Una vez que el archivo termine de cargarse, espere

unos minutos.5. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.6. En la lista de proyectos, elija el proyecto en los que está importando segmentos.7. En el panel de navegación, seleccione Segments (Segmentos). En la pestaña Segments (Segmentos),

busque un segmento denominado testfile1. Si el segmento no aparece en la lista, active la pestañaScheduled imports (Importaciones programadas) para ver si el trabajo de importación sigue en curso.

Si no ve un nuevo segmento en cada pestaña, espere unos minutos más y, a continuación, actualicela página Segments (Segmentos). Si sigue sin ver el segmento, realice el siguiente procedimiento:

50

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

• Asegúrese de que los eventos de notificación de Amazon S3 se configuren exactamente como sedescribe en la sección anterior.

• Compruebe los registros de las tres funciones de Lambda en CloudWatch Logs. Si alguna de lasfunciones es errónea, soluciones los problemas que hayan provocado el error.

Pasos siguientesAl completar este tutorial, ha realizado lo siguiente:

• Ha creado un bucket de Amazon S3 para que contenga los archivos que importe en Amazon Pinpoint.• Ha creado varios roles y políticas de IAM que siguen el principio de privilegios mínimos.• Ha creado funciones de Lambda que dividen su archivo de entrada en partes más pequeñas, procesan

esos archivos y, a continuación, las utilizan para crear un trabajo de importación en Amazon Pinpoint.• Ha configurado su bucket de Amazon S3 para iniciar funciones de Lambda cuando detecte archivos en

determinadas carpetas.

En esta sección se explican algunas de las formas en que puede personalizar esta solución paraadaptarse a su caso de uso único.

Realizar tareas de limpiezaUna vez que haya completado este tutorial, tiene la opción de eliminar las carpetas input_archive,to_process y processed al completo. Las funciones de este tutorial crean automáticamente esascarpetas de nuevo cuando es necesario.

Esta solución no elimina automáticamente los archivos en la carpeta processed. Si se produce un erroren un trabajo de importación, puede intentar importar de nuevo los archivos creando un nuevo trabajo deimportación mediante la consola o la API.

Con el paso del tiempo, esta carpeta puede acumular una gran cantidad de archivos que ya no necesite.Cree un script que elimine periódicamente contenido antiguo desde esta carpeta. Si lo hace, debe incluir lalógica que comprueba si hay trabajos de importación en curso antes de eliminar los archivos.

Si lo desea, también puede eliminar los segmentos que se crearon al llevar a cabo este tutorial. Silo prefiere, puede eliminar todos los puntos de enlace de ejemplo, así como el segmento a los quepertenecen eliminando todo el proyecto en el que importó los puntos de enlace.

Modificar la función de internacionalización para adaptar su basede datos de clientesUna de las funciones de Lambda que creó en el paso 5 realiza algunas pruebas sencillas para normalizarlos datos del país y el número de teléfono que se procesan. Esta función incluye pruebas para los paísesmás populares del mundo, así como algunos otros países a los que los clientes de Amazon Pinpointenvían normalmente mensajes. Puede ampliar estas pruebas para incluir países y regiones adicionales.

Modificar la función de procesamiento de entrada para adaptarlaa sus sistemas externosLa otra función de Lambda que se creó en el paso 5 origina los nombres de columna que Amazon Pinpointespera ver. Estos se asignan a los nombres que están en su hoja de cálculo de entrada. Puede cambiar

51

Amazon Pinpoint Guía para desarrolladoresConfiguración de un sistema de administración

de preferencias de correo electrónico

esta asignación realizando algunos pequeños cambios en la función. Los comentarios del código incluidole indican específicamente lo que necesita cambiar.

Sincronizar datos automáticamente con sistemas externosSi suele usar datos de sistemas externos para enviar las campañas en Amazon Pinpoint, es posible quepueda configurar el sistema externo para exportar datos regularmente a la carpeta de entrada en el bucketde Amazon S3. Si lo hace, asegúrese de que cada archivo que exporte disponga de un nombre exclusivo.Si no proporciona nombres exclusivos, se producirá un error en la función de Lambda que crea los trabajosde importación. Esto se debe a que la función dispone de una lógica sencilla para evitar la creación detrabajos de importación duplicados.

Tutorial: Configuración de un sistema deadministración de preferencias de correoelectrónico

En muchas jurisdicciones de todo el mundo, es necesario que los remitentes de correo electrónico incluyanun mecanismo para la desactivación de comunicaciones por correo electrónico en todos los correoselectrónicos que envían.

Una forma habitual de permitirles a los clientes especificar sus preferencias es ofrecerles una página quepuedan utilizar para elegir los tipos concretos de mensajes que desean recibir. Normalmente, los clientestambién pueden utilizar esta misma página para cancelar por completo todas las comunicaciones decorreo electrónico que se envían.

Este tutorial le enseña cómo configurar un formulario web que puede utilizar para capturar las preferenciasde correo electrónico de sus clientes. El formulario web envía esta información a Amazon Pinpoint.Amazon Pinpoint crea o modifica después atributos en el punto de enlace del cliente registro que indicanlos temas de los que desean recibir información. Puede utilizar estos atributos cuando cree segmentos enAmazon Pinpoint.

El formulario web también incluye una opción para que los clientes puedan optar por la cancelaciónde todas las comunicaciones de correo electrónico. Cuando los clientes eligen esa opción, se cancelaautomáticamente la suscripción a todos los temas. Además, la solución de este tutorial modifica susregistros de punto de enlace para que no aparezcan en los segmentos futuros en su proyecto de AmazonPinpoint.

ArquitecturaCuando utilice la solución que se describe en este tutorial, se envía un correo electrónico de campaña asus clientes. Este correo electrónico contiene un enlace a una página de administración de preferencias. Elenlace contiene varias etiquetas de atributo que identifican a cada destinatario.

Cuando los clientes reciben el correo electrónico que ha enviado, pueden seleccionar el enlace. Si lohacen, se les dirige a un formulario web que pueden utilizar para suscribirse o cancelar la suscripción adistintos temas. El formulario envía esos datos a una API alojada mediante API Gateway. Esta API activauna función de Lambda, que realiza cambios en el registro de punto de enlace del cliente.

En el siguiente diagrama se muestra el flujo de información de esta solución.

52

Amazon Pinpoint Guía para desarrolladoresAcerca de esta solución

Acerca de esta soluciónEsta sección contiene información sobre la solución que va a crear en este tutorial.

Destinatarios previstos

Este tutorial está dirigido a los desarrolladores e implementadores de sistemas. No tiene que estarfamiliarizado con Amazon Pinpoint para completar los pasos de este tutorial. Debe sentirse cómo contareas de gestión de políticas de IAM, creación de funciones de Lambda en Node.js e implementación decontenido web. Sin embargo, que no necesita escribir ningún código: este tutorial incluye un código deejemplo completo que puede implementar sin tener que realizar ningún cambio.

Características utilizadas

Este tutorial incluye ejemplos de uso para las siguientes características de Amazon Pinpoint:

• Creación de segmentos dinámicos• Envío de campañas de correo electrónico que contienen contenido personalizado• Interacción con la API de Amazon Pinpoint mediante AWS Lambda

Tiempo necesario

Debe tardar aproximadamente entre 30 y 45 en completar este tutorial. Después de implementar estasolución, existen pasos adicionales que puede realizar para ajustar la solución y adaptarla mejor a su casode uso exclusivo.

53

Amazon Pinpoint Guía para desarrolladoresRequisitos previos

Restricciones regionales

No hay restricciones regionales asociadas al uso de esta solución. Sin embargo, debe asegurarse de quelas campañas de correo electrónico que envíe incluyan toda la información necesaria en la jurisdicción decada destinatario.

Costos de uso de recursos

La creación de una cuenta de AWS no supone ningún costo. Sin embargo, mediante la implementación deesta solución, es posible que incurra en algunos o todos los costos que se enumeran en la siguiente tabla.

Descripción Costo (dólares estadounidenses)

Costos de envío de mensajes Pagará 0,0001 USD por cada correo electrónicoenviado a través de Amazon Pinpoint.

Público objetivo mensual Pagará 0 USD para los primeros 5000 puntosde enlace objetivo en Amazon Pinpoint al mes.Después de eso, pagará 0,0012 USD por punto deenlace objetivo.

Uso de Lambda La función de Lambda de este tutorial utilizaaproximadamente entre 80 y 90 MB de memoria yaproximadamente entre 100 y 300 milisegundos detiempo de computación cada vez que se ejecuta.

El uso que realice de AWS Lambda en laimplementación de esta solución puede incluirseen la capa gratuita. Para obtener más información,consulte Precios de AWS Lambda.

Uso de gateway de la API Pagará entre 0,0000035 y 0,0000037 USD porsolicitud de la API según la región de AWS queutilice. Para obtener más información, consultePrecios de Amazon API Gateway.

Costos de alojamiento web El precio que paga varía en función de suproveedor de servicios de alojamiento web.

Siguiente: Requisitos previos (p. 54)

Requisitos previosAntes de comenzar este tutorial, tiene que completar los siguientes requisitos previos:

• Tiene que disponer de una cuenta de AWS. Para crear una cuenta de AWS, diríjase a https://console.aws.amazon.com/ y elija Create a new AWS account (Crear una nueva cuenta de AWS).

• La cuenta que utiliza para iniciar sesión en la cuenta de Consola de administración de AWS tiene quepoder realizar las tareas siguientes:• Crear nuevas políticas y roles de IAM• Crear nuevos proyectos de Amazon Pinpoint• Crear nuevas funciones de Lambda• Crear nuevas API en API Gateway

• Debe disponer de un método para alojar páginas web y debe saber cómo publicarlas. Aunque puedeusar servicios de AWS para alojar sus sitios web, no es necesario.

54

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

Tip

Para obtener más información sobre el alojamiento de páginas web mediante servicios de AWS,consulte Alojar una página web estática.

Siguiente: Configurar Amazon Pinpoint (p. 55)

Paso 1: Configurar Amazon PinpointEl primer paso en la implementación de esta solución es configurar Amazon Pinpoint. En esta sección,hará lo siguiente:

• Crear un proyecto de Amazon Pinpoint• Habilitar el canal de correo electrónico y verificar una identidad• Configurar los atributos del punto de enlace

Antes de comenzar este tutorial, debe revisar los requisitos previos (p. 54).

Paso 1.1: Crear un proyecto de Amazon PinpointPara comenzar, tiene que crear un proyecto de Amazon Pinpoint. En Amazon Pinpoint, un proyecto constade segmentos, campañas, configuraciones y datos unidos por un objetivo común. Por ejemplo, podría usarun proyecto para incluir todo el contenido relacionado con una aplicación concreta o con una iniciativa demarketing o una marca específica. Al añadir información del cliente a Amazon Pinpoint, dicha informaciónse asocia a un proyecto.

Los pasos para crear un nuevo proyecto varía en función de si ha creado un proyecto en Amazon Pinpointanteriormente.

Creación de un proyecto (nuevos usuarios de Amazon Pinpoint)

Estos pasos describen el proceso de creación de un nuevo proyecto de Amazon Pinpoint si nunca hacreado un proyecto en la región de AWS actual.

Para crear un proyecto

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Pinpoint enhttps://console.aws.amazon.com/pinpoint/.

2. Utilice el selector de regiones para elegir la región de AWS que desee utilizar, tal y como se muestraen la imagen siguiente. Si no está seguro, elija la región más próxima a usted.

55

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

3. En Get started (Introducción), en Name (Nombre), especifique un nombre para la campaña y, acontinuación, elija Create project (Crear proyecto).

4. En la página Configure features (Configurar características), elija Skip this step (Omitir este paso).5. En el panel de navegación, elija All projects (Todos los proyectos).6. En la página All projects (Todos los proyectos), junto al proyecto que acaba de crear, copie el valor

que aparece en la columna Project ID (ID de proyecto).

Tip

Debe utilizar este ID en distintos lugares de este tutorial. Mantenga el ID de proyecto en unlugar que le resulta práctico para poder copiarlo después.

Creación de un proyecto (usuarios de Amazon Pinpoint existentes)

Estos pasos describen el proceso de creación de un nuevo proyecto de Amazon Pinpoint si nunca hacreado proyectos en la región de AWS actual.

Para crear un proyecto

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Pinpoint enhttps://console.aws.amazon.com/pinpoint/.

2. Utilice el selector de regiones para elegir la región de AWS que desee utilizar, tal y como se muestraen la imagen siguiente. Si no está seguro, elija la región más próxima a usted.

56

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

3. En la página All projects (Todos los proyectos), elija Create a project (Crear un proyecto).4. En la ventana Create a project (Crear un proyecto), en Project name (Nombre del proyecto), escriba

un nombre para el proyecto. Seleccione Create.5. En la página Configure features (Configurar características), elija Skip this step (Omitir este paso).6. En el panel de navegación, elija All projects (Todos los proyectos).7. En la página All projects (Todos los proyectos), junto al proyecto que acaba de crear, copie el valor

que aparece en la columna Project ID (ID de proyecto).

Tip

Debe utilizar este ID en distintos lugares de este tutorial. Mantenga el ID de proyecto en unlugar que le resulta práctico para poder copiarlo después.

Paso 1.2.: Habilitar el canal de correo electrónicoUna vez que cree un proyecto, podrá comenzar a configurar características dentro de ese proyecto. Enesta sección, habilite el canal de correo electrónico.

1. En el panel de navegación, en Settings (Configuración), seleccione Email (Correo electrónico).2. Junto a Identity details (Detalles de identidad), elija Edit (Editar).3. En la página Edit email (Editar correo electrónico), en Identity details (Detalles de identidad), elija

Enable the email channel for this project (Habilitar el canal de correo electrónico para este proyecto).4. Realice los pasos que se indican en la siguiente sección para verificar una identidad.

Paso 1.3: Verificar una identidadEn esta sección, verifique una identidad. En Amazon Pinpoint, una identidad es una dirección de correoelectrónico o un dominio que se utiliza para enviar correos electrónicos. Al verificar una dirección de correoelectrónico, puede enviar correos electrónicos desde esa dirección. Si verifica un dominio, podrá enviarcorreo electrónico desde cualquier dirección de dicho dominio.

Esta sección incluye procedimientos para la verificación de una dirección de correo electrónico, asícomo procedimientos de verificación de una identidad. Solo tiene que verificar un tipo de identidad. Enla mayoría de los casos, el proceso de verificación de una dirección de correo electrónico es más fácily rápido. Sin embargo, la verificación de un dominio le ofrece más flexibilidad, ya que le permite enviarcorreos electrónicos a través de cualquier dirección desde dicho dominio. Por ejemplo, si desea utilizar una

57

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

dirección de respuesta (Reply-To) diferente de la dirección de remitente (From), puede que le resulte másfácil verificar todo el dominio.

Verificación de una dirección de correo electrónico

Esta sección incluye procedimientos para verificar una dirección de correo electrónico en Amazon Pinpoint.No es necesario completar estos pasos si ya ha verificado el dominio (p. 59) que desea utilizar para elenvío de correo electrónico.

1. En Identity Type (Tipo de identidad), elija Email address (Dirección de correo electrónico) y, acontinuación, seleccione Verify a new email address (Verificar nueva dirección de correo electrónico).

2. En Email address (Dirección de correo electrónico), introduzca la dirección de correo electrónico quedesea verificar. La dirección de correo electrónico debe ser una dirección a la que pueda acceder yque pueda recibir correo electrónico.

3. Elija Verify email address (Verificar dirección de correo electrónico).4. Seleccione Save.5. Compruebe si existe un correo electrónico de [email protected] en la bandeja de entrada

de la dirección que ha especificado. Abra el correo electrónico y haga clic en el enlace del mensaje decorreo electrónico para completar el proceso de verificación de la dirección de correo electrónico.

Note

Debería recibir el mensaje de correo electrónico de verificación en el plazo de cinco minutos.Si no recibe el mensaje correo electrónico, siga este procedimiento:

• Asegúrese de que especificó la dirección que desee verificar correctamente.• Asegúrese de que la dirección de correo electrónico que ha intentado verificar es capaz

de recibir correo electrónico. Puede probarlo mediante otra dirección de correo electrónicopara enviar un correo electrónico de prueba a la dirección que desea verificar.

• Consulte su carpeta de correo no deseado.

El enlace del mensaje de correo electrónico de verificación caduca transcurridas 24 horas.Para volver a enviar el mensaje de correo electrónico de verificación, seleccione Sendverification email again (Enviar mensaje de correo electrónico de verificación de nuevo).

Al verificar una dirección de correo electrónico, tenga en cuenta lo siguiente:

• Amazon Pinpoint tiene puntos de enlace en varias regiones de AWS. El estado de verificación de unadirección de correo electrónico es diferente para cada región. Si desea enviar correo electrónico desdela misma identidad en más de una región, debe verificar esa identidad en cada una de ellas. En cadaregión de AWS, puede verificar hasta 10 000 identidades (dominios y direcciones de correo electrónicoen cualquier combinación).

• La parte local de la dirección de correo electrónico que es la parte que figura antes del signo arroba (@)y distingue entre mayúsculas y minúsculas. Por ejemplo, si verifica [email protected], no puede enviarcorreo electrónico desde [email protected] a menos que verifique también esa dirección.

• Los nombres de dominio no distinguen entre mayúsculas y minúsculas. Por ejemplo, si [email protected], también puede enviar correo electrónico desde [email protected].

• Puede aplicar etiquetas a direcciones de correo electrónico verificadas añadiendo un signo más (+)seguido de una cadena de texto tras la parte local de la dirección y antes del signo de arroba (@). Porejemplo, para aplicar label1 a la dirección [email protected], use [email protected]. Puedeutilizar tantas etiquetas como desee en cada dirección verificada. También puede utilizar etiquetas en loscampos "From" (De) y "Return-Path" (Ruta de retorno) para implementar la ruta variable de retorno desobres (VERP).

58

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

Note

Al verificar una dirección sin etiqueta, está verificando todas las direcciones que se podríanformar añadiendo una etiqueta a la dirección. No obstante, si verifica una dirección etiquetada,no puede utilizar otras etiquetas con esa dirección.

Verificación de un dominio

Esta sección incluye procedimientos para la verificación de un dominio en Amazon Pinpoint. No esnecesario completar estos pasos si ya ha verificado la dirección de correo electrónico (p. 58) que deseautilizar para el envío de correo electrónico.

Note

Para completar los pasos de esta sección, tiene que poder modificar la configuración de DNS desu dominio. Los pasos exactos necesarios para la modificación de la configuración de DNS veríanen función del proveedor de DNS que utilice. Si no puede cambiar la configuración de DNS de sudominio, o no está cómodo realizando estos cambios, póngase en contacto con el administradordel sistema.

1. Complete los pasos de la sección anterior para habilitar el canal de correo electrónico.2. En Identity type (Tipo de identidad), elija Domain (Dominio).3. Elija Verify a New Domain (Verificar un nuevo dominio). A continuación, en Domain (Dominio), escriba

el nombre del dominio que desee verificar.4. En Default sender address (Dirección predeterminada del remitente), escriba la dirección

predeterminada que desee utilizar al enviar correo electrónico desde este dominio.

Si envía correo electrónico desde este dominio, podrá enviarlo desde cualquier dirección de dichodominio. Sin embargo, si no especifica una dirección de remitente, Amazon Pinpoint envía el correoelectrónico desde la dirección que especifique en esta sección.

5. Elija Verify domain (Verificar dominio). Copie los tres valores de registro y nombre de DNS que semuestran en Record set (Conjunto de registro). Como alternativa, puede elegir Download record set(Descargar conjunto de registro) para descargar una hoja de cálculo que contenga estos registros.

Cuando termine, elija Save.6. Inicie sesión en la consola de administración de su proveedor de DNS o de alojamiento web y, a

continuación, cree tres registros de CNAME nuevos que contengan los valores que guardó en el pasoanterior. Consulte la siguiente sección para ver enlaces a la documentación de diversos proveedoreshabituales.

Por lo general, la configuración de DNS tarda entre 24 y 48 en aplicarse. Tan pronto como AmazonPinpoint detecta estos tres registros CNAME en la configuración de DNS de su dominio, el proceso deverificación queda completado.

Note

No se puede enviar correo electrónico desde un dominio hasta que el proceso de verificaciónse ha completado.

Instrucciones para configurar registros de DNS para diversos proveedores

Los procedimientos para actualizar los registros de DNS de un dominio varían en función del proveedorde DNS o alojamiento web que utilice. La tabla siguiente muestra enlaces a la documentación de diversosproveedores habituales. La lista no es exhaustiva y la inclusión en esta lista no supone ningún tipo derespaldo o recomendación de los productos o servicios de ninguna empresa. Si el proveedor no semuestra en la tabla, probablemente puede utilizar el dominio con Amazon Pinpoint.

59

Amazon Pinpoint Guía para desarrolladoresPaso 2: Añadir o configurar puntos de enlace

Proveedor de alojamiento/DNS Enlace a la documentación

Amazon Route 53 Creación de registros mediante la consola deAmazon Route 53

GoDaddy Add a CNAME record (enlace externo)

Dreamhost How do I add custom DNS records? (enlaceexterno)

Cloudflare Managing DNS records in CloudFlare (enlaceexterno)

HostGator Manage DNS Records with HostGator/eNom(enlace externo)

Namecheap How do I add TXT/SPF/DKIM/DMARC records formy domain? (enlace externo)

Names.co.uk Changing your domains DNS Settings (enlaceexterno)

Wix Adding or Updating CNAME Records in Your WixAccount (enlace externo)

Sugerencias y solución de problemas de verificación de dominios

Si ha realizado los pasos anteriores, pero su dominio no se ha verificado después de 72 horas, compruebelo siguiente:

• Asegúrese de que ha introducido los valores de los registros de DNS en los campos correctos. Algunosproveedores utilizan nombres distintos para el campo Name/host (Nombre/host), como Host y Hostname(Nombre de host). Además, algunos proveedores hacen referencia al campo Record value (Valor deregistro) como Points to (Apunta a) o Result (Resultado).

• Asegúrese de que su proveedor no haya adjuntado automáticamente su nombre de dominio en el valorName/host (Nombre/host) que introdujo en el registro de DNS. Algunos proveedores adjuntan el nombrede dominio sin indicar que lo han hecho. Si el proveedor adjuntó el nombre de dominio al valor Name/host (Nombre/host), elimine el nombre de dominio del final del valor. También puede probar a añadir unpunto al final del valor en el registro DNS. Este punto indica al proveedor que el nombre de dominio esun nombre completo.

• El carácter de guion bajo (_) es obligatorio en el valor Name/host (Nombre/host) de cada registro deDNS. Si su proveedor de DNS no permite guiones bajos en los nombres de los registros de DNS,póngase en contacto con el departamento de atención al cliente del proveedor para obtener asistenciaadicional.

• Los registros de validación que es preciso agregar al final de la configuración de DNS del dominio sondistintos en cada región de AWS. Si desea utilizar un dominio para enviar correo electrónico desdevarias regiones de AWS, deberá verificar el dominio en cada una de esas regiones.

Paso 2: Añadir o configurar puntos de enlaceCuando envía campañas en Amazon Pinpoint, las envía a puntos de enlace. Un punto de enlacerepresenta un único método de ponerse en contacto con un cliente. Por ejemplo, un número de teléfonodel cliente, su dirección de correo electrónico, y su token de Apple Push Notification Service (APN)exclusivo son tres puntos de enlace independientes. En este ejemplo, estos tres puntos de enlace

60

Amazon Pinpoint Guía para desarrolladoresPaso 2: Añadir o configurar puntos de enlace

representan tres formas diferentes de comunicarse con un cliente, en este caso, enviando mensajes SMS,correos electrónicos o notificaciones de inserción.

Si es la primera vez que utiliza Amazon Pinpoint, el proyecto de Amazon Pinpoint no contiene puntos deenlace. Existen varias maneras de añadir puntos de enlace a Amazon Pinpoint:

• Importar desde un archivo JSON o CSV.• Utilizar la operación de API UpdateEndpoint en la API de Amazon Pinpoint.• Exportar datos de eventos desde una aplicación que utiliza AWS Mobile SDK o la biblioteca de AWS

Amplify JavaScript para enviar datos de análisis a Amazon Pinpoint.

Para completar este tutorial, el proyecto de Amazon Pinpoint tiene que contener al menos un punto deenlace de correo electrónico. Si su proyecto de Amazon Pinpoint ya contiene los puntos de enlace decorreo electrónico, puede utilizar estos últimos. También puede utilizar el archivo CSV de muestra de estasección para importar una lista de puntos de enlace de prueba.

Importar puntos de enlace de pruebaEsta sección incluye un archivo que puede utilizar como archivo de origen para la importación de un puntode enlace de prueba en Amazon Pinpoint. Este método de añadir puntos de enlace es útil si no tiene unaaplicación que envíe información del punto de enlace a Amazon Pinpoint, si no desea utilizar la API deAmazon Pinpoint para crear puntos de enlace, o si no desea modificar los puntos de enlace que ya existenen su proyecto de Amazon Pinpoint.

Crear archivo de origen

En primer lugar, cree el archivo CSV que contiene información sobre los puntos de enlace.

Para crear el archivo CSV, realice el siguiente procedimiento:

1. En un editor de texto, cree un nuevo archivo.2. Pegue el código siguiente en el archivo.

ChannelType,Address,EndpointStatus,OptOut,Id,Attributes.Email,Attributes.EndpointId,User.UserAttributes.FirstName,User.UserAttributes.LastNameEMAIL,[email protected],ACTIVE,NONE,12345,recipient%40example.com,12345,Carlos,Salazar

3. En el texto del paso anterior, realice los cambios siguientes:

• Reemplace [email protected] por dirección de correo electrónico.• Sustituya recipient%40example.com por su dirección de correo electrónico, pero utilice %40 en

lugar del signo de arroba (@).• Reemplace Carlos y Salazar por su nombre y apellidos, respectivamente.• (Opcional) Sustituya ambas coincidencias de 12345 por un valor de ID del punto de enlace. El valor

que utilice tiene que ser exactamente el mismo en las dos ubicaciones.4. Guarde el archivo como testImports.csv.

Cargar el archivo

Amazon Pinpoint requiere que almacene archivos de origen en Amazon S3. Complete el procedimientodescrito a continuación para cargar su archivo CSV en una carpeta en un bucket de Amazon S3.

Para cargar el archivo en un bucket de Amazon S3, realice el siguiente procedimiento:

1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

61

Amazon Pinpoint Guía para desarrolladoresPaso 2: Añadir o configurar puntos de enlace

2. Elija Create bucket (Crear bucket).3. En la ventana Create bucket (Crear bucket) para Bucket name (Nombre de bucket), especifique un

nombre para el bucket en el que desee almacenar el archivo. El nombre que especifique tiene que serexclusivo. Además, hay varias restricciones relacionadas con el nombre del bucket. Para obtener másinformación sobre estas restricciones, consulte Restricciones y limitaciones de los buckets en la Guíapara desarrolladores de Amazon Simple Storage Service. Seleccione Create.

4. En la lista de buckets, elija el bucket que acaba de crear.5. Elija Create folder. Asigne el nombre a la carpeta Imports (Importaciones). Seleccione Save.6. Elija la carpeta Imports (Importaciones) que acaba de crear.7. Seleccione Upload.8. Elija Add files. Localice el archivo testImports.csv que creó en la sección anterior (p. 61).

Seleccione Upload.

Importar el archivo en Amazon PinpointDespués de cargar el archivo CSV en un bucket de Amazon S3, podrá importarlo en su proyecto deAmazon Pinpoint.

Para importar el archivo en Amazon Pinpoint, realice el siguiente procedimiento:

1. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.2. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).3. En el panel de navegación, seleccione Segments (Segmentos).4. Seleccione Create a segment (Crear segmento).5. En la página Create a segment (Crear un segmento), seleccione Import a segment (Importar un

segmento).6. En Specifications (Especificaciones), realice el siguiente procedimiento:

• En Name (Nombre), escriba EmailRegistrationTestRecipients.• En Amazon Simple Storage Service URL, especifique la dirección del bucket de Amazon S3 y la

carpeta que creó en la sección anterior. Por ejemplo, si su bucket se denomina email-registration-tutorial, especifique la siguiente URL: s3://email-registration-tutorial/Imports.

• En IAM role (Rol de IAM), elija Automatically create a role. (Crear un rol automáticamente). Acontinuación, especifique un nombre para el rol de IAM, por ejemplo, SegmentImportRole.

• En What type of file are you importing (Qué tipo de archivo está importando), elija Comma-Separated Values (Valores separados por comas). Seleccione Create segment (Crear segmento).

7. Después de enviar el segmento, verá la pestaña Scheduled imports (Importaciones programadas)en el página Segments (Segmentos). Espere 30 segundos después de enviar el segmento y, acontinuación, actualice la página. La columna Import status (Importar estado) debe indicar que laimportación del segmento se ha completado. Si se indica que la importación sigue pendiente, espereotros 30 segundos y, a continuación, actualice la página de nuevo. Repita este proceso hasta que elestado de la importación sea Completed (Completado).

8. En la pestaña Segments (Segmentos), elija el segmento EmailRegistrationTestRecipients. En lasección Import details (Importar detalles), confirme que el valor de Number of records (Número deregistros) sea correcto. Si ha utilizado el archivo CSV de ejemplo en esta sección, el valor correctoserá 1.

Usar puntos de enlace existentes (para usuarios avanzados)Si su proyecto de Amazon Pinpoint ya contiene puntos de enlace de correo electrónico, tendrá quemodificar ligeramente esos puntos de enlace para poder usarlos en este tutorial. En primer lugar, los

62

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear políticas y roles de IAM

puntos de enlace tendrán que incluir dos valores de atributo de punto de enlace. Estos valores se muestranen la siguiente tabla.

Nombre del atributo Valor

Attributes.Email Una versión con codificación URL del atributoAddress existente para el punto de enlace.

Attributes.EndpointId Equivalente al atributo Id existente para el puntode enlace. Si el valor del ID del punto de enlacecontiene caracteres no alfanuméricos, debe aplicarla codificación URL a este valor.

Note

Para obtener más información sobre lacodificación URL, consulte Referencia decodificación URL de HTML en el sitio webde W3Schools.

Los puntos de enlace también deben contener dos atributos de usuario. Estos valores no son estrictamentenecesarios para que la solución funcione. Estos valores se muestran en la siguiente tabla.

Nombre del atributo Valor

User.UserAttributes.FirstName El nombre del destinatario.

User.UserAttributes.LastName Los apellidos del destinatario.

Si su proyecto de Amazon Pinpoint contiene un gran número de puntos de enlace existentes, puedeutilizar la operación de la API CreateExportJob para exportar una lista de todos los puntos de enlace de unsegmento o proyecto a un bucket de Amazon S3. Una vez realizado ese proceso, puede escribir un scriptque utilice la operación UpdateEndpoint para actualizar mediante programación los puntos de enlace paraque incluyan esos atributos.

Paso 3: Crear políticas y roles de IAMEl siguiente paso en la implementación de la solución de administración de preferencia de correoelectrónico es configurar una política y un rol en AWS Identity and Access Management (IAM). Para estasolución, debe crear una política que proporcione acceso a determinados recursos relacionados conAmazon Pinpoint. A continuación, cree un rol y asóciele la política. Posteriormente, en este tutorial, crearáuna función de AWS Lambda que utilizará este rol para llamar a determinadas operaciones en la API deAmazon Pinpoint.

Paso 3.1: Crear una política de IAMEn esta sección se muestra cómo crear una política de IAM. Los usuarios y roles que utilizan esta políticapueden ver, crear y actualizar puntos de enlace de Amazon Pinpoint.

En este tutorial, desea proporcionar a Lambda la capacidad de realizar estas tareas. Sin embargo, paramayor seguridad, esta política utiliza la entidad principal de concesión de privilegios mínimos. Es decir,solo concede permisos necesarios para completar esta solución, no más. Solo puede utilizar esta políticapara ver, crear o actualizar los puntos de enlace que están asociados con un proyecto de Amazon Pinpointespecífico.

63

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear políticas y roles de IAM

Para crear la política, realice el siguiente procedimiento:

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy(Crear política).

3. En la pestaña JSON, pegue el siguiente código.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "mobiletargeting:UpdateEndpoint", "mobiletargeting:GetEndpoint" ], "Resource": "arn:aws:mobiletargeting:region:accountId:apps/projectId/endpoints/*" } ]}

En el ejemplo anterior, realice el siguiente procedimiento:

• Sustituya la región por la región de AWS que utiliza en Amazon Pinpoint, como us-east-1 o eu-central-1.

Tip

Para ver una lista completa de regiones de AWS en las que Amazon Pinpoint estádisponible, consulte Regiones y puntos de enlace de AWS en la AWS General Reference.

• Reemplace accountId por el ID exclusivo de su cuenta de AWS.• Sustituya projectId por el ID exclusivo del proyecto que ha creado en el paso 1.1 (p. 55) de

este tutorial.

Note

Las acciones de logs permiten que Lambda registre su salida en CloudWatch Logs.4. Elija Review policy (Revisar política).5. En Name (Nombre), especifique un nombre para la política, como EmailPreferencesPolicy. Elija

Create Policy.

Paso 3.2: Crear un rol de IAMDespués de crear la política, puede crear un rol y asociar la política a él. La función de Lambda que hacreado en el paso 3 (p. 63) utiliza este rol para obtener acceso a los recursos de AWS necesarios.

64

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

Para crear el rol, realice el siguiente procedimiento:

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En la consola de IAM, en el panel de navegación, seleccione Roles y Create role (Crear rol).3. En Choose the service that will use this role (Elegir el servicio que utilizará este rol), seleccione

Lambda y Siguiente: Permisos.

Note

El servicio que elija en este paso no es importante. Independientemente del servicio que elija,se aplicará su propia política en el siguiente paso.

4. En Attach permissions policies (Asociar políticas de permisos), elija la política que creó en la secciónanterior y, a continuación, elija Siguiente: Etiquetas.

5. Elija Next: Review.6. En Review (Revisar), en Name (Nombre), especifique un nombre para el rol, como

EmailPreferencesForm. Elija Create role (Crear rol).

Paso 4: Crear la función de LambdaEsta solución utiliza una función de Lambda para actualizar los registros de punto de enlace de los clientesen función de las preferencias que proporcionen en el formulario web. En esta sección se muestra cómocrear, configurar y probar esta función. Posteriormente, debe configurar API Gateway y Amazon Pinpointpara ejecutar esta función.

Paso 4.1: Crear la función que actualiza puntos de enlaceLa primera función obtiene la entrada del formulario web de gestión de preferencias, que se obtiene a partirde Amazon API Gateway. Utiliza esta información para actualizar el registro de punto de enlace del clientesegún las preferencias que proporciona en el formulario.

Para crear la función de Lambda

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. En Create a function (Crear una función), elija Blueprints (Proyectos).4. En el campo de búsqueda, escriba hello y, a continuación, pulse Intro. En la lista de resultados, elija

la función de Node.js hello-world, tal y como se muestra en la siguiente imagen. Elija Configure.

65

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

66

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

5. Bajo Basic information (Información básica), haga lo siguiente:

• En Name (Nombre), especifique un nombre para la función, como EmailPreferences.• En Role, seleccione Choose an existing role.• En Existing role (Rol existente), elija el rol EmailPreferencesForm que ha creado en el paso

3.2 (p. 64).

Cuando haya terminado, elija Create function (Crear función).6. Elimine el código de ejemplo en el editor de código y, a continuación, pegue el siguiente código:

var AWS = require('aws-sdk');var pinpoint = new AWS.Pinpoint({region: process.env.region}); var projectId = process.env.projectId;

exports.handler = (event, context, callback) => { console.log('Received event:', event); var optOutAll = event.optOutAll; if (optOutAll === false) { updateOpt(event); } else if (optOutAll === true) { unsubAll(event); }};

function unsubAll(event) { var params = { ApplicationId: projectId, EndpointId: event.endpointId, EndpointRequest: { ChannelType: 'EMAIL', OptOut: 'ALL', Attributes: { SpecialOffersOptStatus: [ "OptOut" ], NewProductsOptStatus: [ "OptOut" ], ComingSoonOptStatus: [ "OptOut" ], DealOfTheDayOptStatus: [ "OptOut" ], OptStatusLastChanged: [ event.optTimestamp ], OptSource: [ event.source ] } } }; pinpoint.updateEndpoint(params, function(err,data) { if (err) { console.log(err, err.stack); } else { console.log(data); }

67

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

}); }

function updateOpt(event) { var endpointId = event.endpointId, firstName = event.firstName, lastName = event.lastName, source = event.source, specialOffersOptStatus = event.topic1, newProductsOptStatus = event.topic2, comingSoonOptStatus = event.topic3, dealOfTheDayOptStatus = event.topic4, optTimestamp = event.optTimestamp; var params = { ApplicationId: projectId, EndpointId: endpointId, EndpointRequest: { ChannelType: 'EMAIL', OptOut: 'NONE', Attributes: { SpecialOffersOptStatus: [ specialOffersOptStatus ], NewProductsOptStatus: [ newProductsOptStatus ], ComingSoonOptStatus: [ comingSoonOptStatus ], DealOfTheDayOptStatus: [ dealOfTheDayOptStatus ], OptStatusLastChanged: [ optTimestamp ], OptSource: [ source ] }, User: { UserAttributes: { FirstName: [ firstName ], LastName: [ lastName ] } } } }; pinpoint.updateEndpoint(params, function(err,data) { if (err) { console.log(err, err.stack); } else { console.log(data); } });}

7. En Environment variables (Variables de entorno), realice el siguiente procedimiento:

68

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

• En la primera fila, cree una variable con una clave de projectId. A continuación, establezca elvalor en el ID único del proyecto que ha creado en el paso 1.1 (p. 55).

• En la segunda fila, crear una variable con una clave de region. A continuación, establezca el valoren la región en la que usa Amazon Pinpoint, como us-east-1 o us-west-2.

Cuando termine, la sección Environment Variables (Variables de entorno) debe tener el aspecto delejemplo que se muestra en la siguiente imagen.

8. En la parte superior de la página, elija Save.

Paso 4.1.1: Probar la función

Después de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.Además, debe asegurarse de que el rol de IAM que ha creado cuenta con los permisos apropiados.

Para probar la función, realice el siguiente procedimiento:

1. Elija Test.2. En la ventana Configure test event (Configurar evento de prueba), haga lo siguiente:

• Elija Create new test event.• En Event Name (Nombre del evento), escriba un nombre para el evento de prueba, comoMyTestEvent.

• Borre el código de ejemplo en el editor de código. Pegue el siguiente código:

{ "endpointId": "12345",

69

Amazon Pinpoint Guía para desarrolladoresPaso 4: Crear la función de Lambda

"firstName": "Carlos", "lastName": "Salazar", "topic1": "OptOut", "topic2": "OptIn", "topic3": "OptOut", "topic4": "OptIn", "source": "Lambda test", "optTimestamp": "Tue Mar 05 2019 14:35:07 GMT-0800 (PST)", "optOutAll": false}

• En el ejemplo de código anterior, reemplace los valores de los atributos endpointId, firstNamey lastName por los valores para el punto de enlace que importó en el paso 2 (p. 61).

• Seleccione Create.3. Elija Test (Probar) de nuevo.4. En Execution result: succeeded (Resultado de ejecución: correcto), elija Details (Detalles). En la

sección Log output (Salida de registro), revise la salida de la función. Asegúrese de que la función seejecuta sin errores.

5. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.6. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).7. En el panel de navegación, seleccione Segments (Segmentos). En la página Segments (Segmentos),

elija Create a segment (Crear un segmento).8. En Segment group 1 (Grupo de segmento 1), en Add filters to refine your segment (Añadir filtros para

acotar el segmento), elija Filter by endpoint (Filtrar por punto de enlace).9. En Choose an endpoint attribute (Elegir un atributo de punto de enlace), seleccione

NewProductsOptStatus. A continuación, para Choose values (Elegir valores), seleccione OptIn.

La sección Segment estimate (Estimación de segmento) debe mostrar que hay un punto de enlaceapto y un punto de enlace total, como se muestra en la siguiente imagen.

70

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

Paso 5: Configurar Amazon API GatewayEn esta sección, cree una nueva API mediante Amazon API Gateway. El formulario de registro queimplementa en esta solución llama a esta API. API Gateway envía después la información que se capturaen la página de preferencias de correo electrónico a la función de Lambda que ha creado en el paso4 (p. 65).

Paso 5.1: Crear la APIEn primer lugar, tiene que crear una nueva API en API Gateway. Los procedimientos que se describen acontinuación muestran cómo crear una nueva API de REST.

Para crear una nueva API, realice el siguiente procedimiento:

1. Abra la consola de API Gateway en https://console.aws.amazon.com/apigateway/.

71

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

2. Seleccione Create API (Crear API). Seleccione las siguientes opciones:

• En Choose the protocol (Elegir el protocolo), elija REST.• En Create new API (Crear nueva API), elija New API (Nueva API).• En Settings (Configuración), en Name (Nombre), especifique un nombre, comoEmailPreferences. En Description (Descripción), especifique opcionalmente texto que describael objetivo de la API. En Endpoint Type, (Tipo de punto de enlace), elija Regional. A continuación,elija Create API (Crear API).

En la siguiente imagen se muestra un ejemplo de esta configuración.

72

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

Step 5.2: Crear un recursoAhora que ha creado una API, puede comenzar a añadir recursos a ella. Después, añada un métodoPOST al recurso e indique a API Gateway que transmita los datos que recibe a partir de este método a lafunción de Lambda.

73

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

1. En el menú Actions (Acciones), elija Create Resource (Crear recurso). En el panel New ChildResource (Nuevo recurso secundario), en Resource Name (Nombre de recurso), especifique prefs,como se muestra en la siguiente imagen. Elija Create Resource (Crear recurso).

2. En el menú Actions (Acciones), elija Create method (Crear método). En el menú que aparece, elijaPOST, tal y como se muestra en la siguiente imagen. A continuación, elija el botón de marca de

verificación ( ).

74

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

3. En el panel /prefs - POST - Setup (/prefs - POST- Configuración), seleccione las siguientes opciones:

• En Integration type (Tipo de integración), elija Lambda Function (Función de Lambda).• Seleccione Use Lambda Proxy Integration (Utilizar integración de proxy de LAM).• En Lambda Region (Región de LAM), elija la región en la que creó la función de Lambda.• Para Lambda Function (Función de LAM), elija la función de EmailPreferences que creó en el

paso 4 (p. 65).

En la siguiente imagen se muestra un ejemplo de esta configuración.

75

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

Seleccione Save. En la ventana que aparece, elija OK (Aceptar) para proporcionar a la API Gatewaypermiso para ejecutar su función de Lambda.

Paso 5.3: Implementar la APILa API ya está lista para su uso. En este momento, tiene que implementarla para crear un punto de enlacede acceso público.

76

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

1. En el panel de navegación, elija Resources. En la lista de recursos, elija el recurso /prefs. Por último,en el menú Actions (Acciones), elija Enable CORS (Habilitar CORS), como se muestra en la siguienteimagen.

2. En el panel Enable CORS (Habilitar CORS), elija Enable CORS and replace existing CORS headers(Habiltar CORS y reemplazar los encabezados CORS existentes).

3. En el menú Actions (Acciones), elija Deploy (Implementar). En la ventana Deploy API (ImplementarAPI), realice las siguientes selecciones:

• En Deployment stage (Etapa de implementación), elija [new stage] ([nueva etapa]).• En Stage Name (Nombre de etapa), escriba v1.• Elija Deploy (Implementar).

En la siguiente imagen se muestra un ejemplo de estas selecciones.

77

Amazon Pinpoint Guía para desarrolladoresPaso 5: Configurar Amazon API Gateway

4. En el panel v1 Stage Editor (Editor de etapas v1), elija el recurso /prefs y, a continuación, seleccioneel método POST. Copie la dirección que se muestra junto a Invoke URL (Invocar URL), tal y como semuestra en la siguiente imagen.

78

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

Paso 6: Crear e implementar el formulario webTodos los componentes de esta solución que utilizan servicios de AWS ya están en vigor. El último paso escrear e implementar el formulario web que captura los datos del cliente.

Paso 6.1: Crear el gestor de formularios JavaScriptEn esta sección, creará una función de JavaScript que analiza el contenido del formulario web que crea enla siguiente sección. Después de analizar el contenido, esta función envía los datos a la API que ha creadoen la parte 4 (p. 65).

Para crear el gestor de formularios, realice el siguiente procedimiento:

1. En un editor de texto, cree un nuevo archivo.2. En el editor, pegue el siguiente código.

$(document).ready(function() {

// Function that parses URL parameters. function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); }

79

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

// Pre-fill form data. $("#firstName").val(getParameterByName("firstName")); $("#lastName").val(getParameterByName("lastName")); $("#email").val(getParameterByName("email")); $("#endpointId").val(getParameterByName("endpointId")); if (getParameterByName("t1") == "OptIn") { $("#topic1In").prop('checked', true); } if (getParameterByName("t2") == "OptIn") { $("#topic2In").prop('checked', true); } if (getParameterByName("t3") == "OptIn") { $("#topic3In").prop('checked', true); } if (getParameterByName("t4") == "OptIn") { $("#topic4In").prop('checked', true); }

// Handle form submission. $("#submit").click(function(e) {

// Get endpoint ID from URL parameter. var endpointId = getParameterByName("endpointId");

var firstName = $("#firstName").val(), lastName = $("#lastName").val(), email = $("#email").val(), source = window.location.pathname, optTimestamp = undefined, utcSeconds = Date.now() / 1000, timestamp = new Date(0);

var topicOptIn = [ $('#topic1In').is(':checked'), $('#topic2In').is(':checked'), $('#topic3In').is(':checked'), $('#topic4In').is(':checked') ];

e.preventDefault();

$('#submit').prop('disabled', true); $('#submit').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>  Saving your preferences</button>');

// If customer unchecks a box, or leaves a box unchecked, set the opt // status to "OptOut". for (i = 0; i < topicOptIn.length; i++) { if (topicOptIn[i] == true) { topicOptIn[i] = "OptIn"; } else { topicOptIn[i] = "OptOut"; } }

timestamp.setUTCSeconds(utcSeconds);

var data = JSON.stringify({ 'endpointId': endpointId, 'firstName': firstName, 'lastName': lastName, 'topic1': topicOptIn[0], 'topic2': topicOptIn[1], 'topic3': topicOptIn[2], 'topic4': topicOptIn[3],

80

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

'source': source, 'optTimestamp': timestamp.toString(), 'optOutAll': false });

$.ajax({ type: 'POST', url: 'https://example.execute-api.us-east-1.amazonaws.com/v1/prefs', contentType: 'application/json', data: data, success: function(res) { $('#form-response').html('<div class="mt-3 alert alert-success" role="alert">Your preferences have been saved!</div>'); $('#submit').prop('hidden', true); $('#unsubAll').prop('hidden', true); $('#submit').text('Preferences saved!'); }, error: function(jqxhr, status, exception) { $('#form-response').html('<div class="mt-3 alert alert-danger" role="alert">An error occurred. Please try again later.</div>'); $('#submit').text('Save preferences'); $('#submit').prop('disabled', false); } }); });

// Handle the case when the customer clicks the "Unsubscribe from all" // button. $("#unsubAll").click(function(e) { var firstName = $("#firstName").val(), lastName = $("#lastName").val(), source = window.location.pathname, optTimestamp = undefined, utcSeconds = Date.now() / 1000, timestamp = new Date(0);

// Get endpoint ID from URL parameter. var endpointId = getParameterByName("endpointId");

e.preventDefault();

$('#unsubAll').prop('disabled', true); $('#unsubAll').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>  Saving your preferences</button>');

// Uncheck all boxes to give user a visual representation of the opt-out action. $("#topic1In").prop('checked', false); $("#topic2In").prop('checked', false); $("#topic3In").prop('checked', false); $("#topic4In").prop('checked', false);

timestamp.setUTCSeconds(utcSeconds);

var data = JSON.stringify({ 'endpointId': endpointId, 'source': source, 'optTimestamp': timestamp.toString(), 'optOutAll': true });

$.ajax({ type: 'POST', url: 'https://example.execute-api.us-east-1.amazonaws.com/v1/prefs', contentType: 'application/json', data: data, success: function(res) {

81

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

$('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Successfully opted you out of all future email communications.</div>'); $('#submit').prop('hidden', true); $('#unsubAll').prop('hidden', true); }, error: function(jqxhr, status, exception) { $('#form-response').html('<div class="mt-3 alert alert-danger" role="alert">An error occurred. Please try again later.</div>'); } }); });});

3. En el ejemplo anterior, reemplace https://example.execute-api.us-east-1.amazonaws.com/v1/prefs por la URL de invocación que ha obtenido en el paso5.3 (p. 76).

4. Guarde el archivo.

Paso 6.2: Crear el archivo de formularioEn esta sección, debe crear un archivo HTML que contenga el formulario que los clientes utilizan paraadministrar sus preferencias de correo electrónico. Este archivo utiliza el gestor de formularios JavaScriptque creó en la sección anterior para transmitir los datos del formulario a la función de Lambda.

Important

Cuando un usuario envía este formulario, se activa una función Lambda que actualiza los puntosde enlace en el proyecto Amazon Pinpoint. Los usuarios maliciosos podrían lanzar un ataque ensu formulario que podría afectar a los datos o hacer que se genere un gran número de solicitudes.Si tiene previsto utilizar esta solución para un caso de uso de producción, debe protegerlamediante un sistema como Google reCAPTCHA.

Para crear el formulario, realice el siguiente procedimiento:

1. En un editor de texto, cree un nuevo archivo.2. En el editor, pegue el siguiente código.

<!doctype html><html lang="en">

<head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <!-- Bootstrap and AJAX scripts --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

82

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Reference to JavaScript form handler. --> <script type="text/javascript" src="formHandler.js"></script>

<title>Manage your email preferences</title></head>

<body> <div class="container"> <h1>Manage your email subscriptions</h1> <h2 class="mt-3">Contact information</h2> <form>

<div class="form-row mt-3"> <div class="form-group col-md-6"> <label for="email" class="font-weight-bold">Email address</label> <input type="email" class="form-control-plaintext" id="email" readonly> </div> <div class="form-group col-md-6"> <label for="email" class="font-weight-bold">ID</label> <input type="email" class="form-control-plaintext" id="endpointId" readonly> </div> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="firstName" class="font-weight-bold">First name</label> <input type="text" class="form-control" id="firstName"> </div> <div class="form-group col-md-6"> <label for="lastName" class="font-weight-bold">Last name</label> <input type="text" class="form-control" id="lastName"> </div> </div>

<div class="form-row"> <div class="col-md-12"> <p class="font-weight-bold mt-3">Subscriptions</p> </div> </div>

<!-- Change topic names here, if necessary --> <div class="form-row"> <div class="col-md-6"> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="topic1In"> <label class="custom-control-label font-weight-bold" for="topic1In">Special offers</label> <p>Get exclusive offers available only to subscribers.</p> </div> </div> <div class="col-md-6"> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="topic2In"> <label class="custom-control-label font-weight-bold" for="topic2In">Coming soon</label> <p>Learn about our newest products before anyone else!</p> </div> </div> </div>

<div class="form-row mt-3"> <div class="col-md-6"> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="topic3In">

83

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

<label class="custom-control-label font-weight-bold" for="topic3In">New products</label> <p>Get the inside scoop on products that haven't been released yet.</p> </div> </div> <div class="col-md-6"> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="topic4In"> <label class="custom-control-label font-weight-bold" for="topic4In">Deal of the Day</label> <p>Get special deals in your inbox every day!</p> </div> </div> </div>

<div id="form-response"></div>

<div class="row mt-3"> <div class="col-md-12 text-center"> <button type="submit" id="submit" class="btn btn-primary">Update preferences</button> </div> </div>

<div class="row mt-3"> <div class="col-md-12 text-center"> <button type="button" class="btn btn-link" id="unsubAll">Unsubscribe from all email communications</button> </div> </div> </form>

<div class="row mt-3"> <div class="col-md-12 text-center"> <small class="text-muted">Copyright © 2019, ExampleCorp or its affiliates.</small> </div> </div>

</div></body>

</html>

3. En el ejemplo anterior, reemplace formHandler.js por la ruta completa al archivo JavaScript delgestor de formularios que ha creado en la sección anterior.

4. Guarde el archivo.

Paso 6.3: Cargar los archivos de formularioAhora que ha creado el formulario HTML y el gestor de formularios JavaScript, el último paso es publicarestos archivos en Internet. En esta sección se da por hecho que dispone de un proveedor de host webexistente. Si no dispone de un proveedor de host existente, puede iniciar un sitio web mediante AmazonRoute 53, Amazon Simple Storage Service (Amazon S3) y Amazon CloudFront. Para obtener másinformación, consulte Alojamiento de un sitio web estático.

Si utiliza otro proveedor de alojamiento web, consulte la documentación del proveedor para obtener másinformación sobre la publicación de páginas web.

Paso 6.4: Probar el formularioDespués de publicar el formulario, debe probarlo para confirmar que funciona correctamente.

84

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

Paso 6.4.1: Utilizar el formulario para enviar datos de prueba

El primer paso para probar el formulario de preferencias es utilizarlo para enviar algunos datos de prueba.En este caso, seleccione todos los temas de suscripción que aparecen en el formulario.

Para enviar datos de prueba, realice el siguiente procedimiento:

1. En un navegador web, diríjase a la ubicación en la que cargó la página de preferencias. Si utilizó elejemplo de código del paso 6.2 (p. 82), verá un formulario con un aspecto parecido al del ejemplode la siguiente imagen.

85

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

86

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

2. Añada la siguiente cadena al final de la URL. Reemplace los valores de firstName, lastName yendpointId por los valores especificados en el paso 2.

?firstName=Carlos&lastName=Salazar&email=recipient%40example.com&endpointId=12345

Cuando añada estos atributos al final de la URL y pulse Intro, se actualizará la página para incluir lainformación en la cadena de atributos. El formulario debe parecerse al ejemplo en la siguiente imagen.

87

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

88

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

3. En el formulario, use los conmutadores para seleccionar el punto de enlace en todos los temas y, acontinuación, elija Update preferences (Actualizar preferencias).

4. Espere aproximadamente un minuto y, a continuación, pase a la siguiente sección.

Paso 6.4.2: Comprobar el estado de confirmación del punto de enlace de prueba

Ahora que ha enviado algunos datos de prueba, puede utilizar la herramienta de segmentación de laconsola de Amazon Pinpoint consola para asegurarse de que los datos de prueba se han gestionadocorrectamente.

Para comprobar el estado de confirmación del punto de enlace, realice el siguiente procedimiento:

1. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.2. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).3. En el panel de navegación, seleccione Segments (Segmentos).4. Seleccione Create a segment (Crear segmento).5. En el grupo de segmento 1, elija Add a filter (Añadir filtro), y, a continuación, elija Filter by endpoint

(Filtrar por punto de enlace).6. Seleccione Choose an endpoint attribute (Elegir un atributo de punto de enlace) y, a continuación,

ComingSoonOptStatus. Establezca el valor del filtro en OptIn.7. Elija Add an attribute or metric (Añadir atributo o métrica). Añada el atributo DealOfTheDay al filtro y

establezca el valor en OptIn.8. Repita el paso anterior para los dos temas de confirmación restantes: NewProductsOptStatus y

SpecialOffersOptStatus.

Cuando termine, la sección Segment estimate (Estimación de segmento) debe indicar que tanto elnúmero de puntos de enlace aptos como el de puntos de enlaces totales es 1. La página debe tener elaspecto del ejemplo que se muestra en la siguiente imagen.

89

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

90

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

Paso 6.4.3: Probar la funcionalidad "Unsubscribe From All" (Cancelar lasuscripción de todo)

Asegúrese también de que el botón Unsubscribe from all email communications (Cancelar la suscripciónde todo) del formulario de preferencias funcione correctamente. Cuando un cliente elige este botón, suestado de confirmación de todos los temas se establece en "OptOut". Además, el atributo OptOut para elregistro del punto de enlace del cliente se establece en "ALL". Este cambio impide que el punto de enlacese incluya en los segmentos que cree en este proyecto en el futuro.

Para probar el botón de cancelación de suscripción, realice el siguiente procedimiento:

1. En un navegador web, diríjase a la ubicación en la que cargó la página de preferencias.2. Añada la siguiente cadena al final de la URL. Reemplace los valores de firstName, lastName y

endpointId por los valores especificados en el paso 2.

?firstName=Carlos&lastName=Salazar&email=recipient%40example.com&endpointId=12345&t1=OptIn&t2=OptIn&t3=OptIn&t4=OptIn

Cuando añada estos atributos al final de la URL y pulse Intro, se actualizará la página para incluir lainformación en la cadena de atributos.

3. En el formulario, elija Unsubscribe from all email communications (Cancelar la suscripción de todas lascomunicaciones de correo electrónico).

4. Espere aproximadamente un minuto y, a continuación, pase a la siguiente sección.

Paso 6.3.4: Comprobar el estado de comprobación del punto de enlace de prueba

El último paso para probar el formulario de preferencia es confirmar que las solicitudes de cancelación dela suscripción se gestionan correctamente. En esta sección, utilice la herramienta de segmentación de laconsola de Amazon Pinpoint para asegurarse de que se desactiva el punto de enlace de prueba de lascomunicaciones de correo electrónico que se envían desde el proyecto de Amazon Pinpoint actual.

Para comprobar el estado de confirmación del punto de enlace, realice el siguiente procedimiento:

1. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.2. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).3. En el panel de navegación, seleccione Segments (Segmentos).4. Seleccione Create a segment (Crear segmento).5. Tenga en cuenta los valores en la sección Estimación de segmento. En esta sección se debería

indicar que el número de puntos de enlace aptos es 0 y el número de puntos de enlace totales es 1. Lapágina debe tener el aspecto del ejemplo que se muestra en la siguiente imagen.

91

Amazon Pinpoint Guía para desarrolladoresPaso 6: Crear e implementar el formulario web

Solución de problemas del formulario

Si realiza estos pasos de prueba, pero los datos de su proyecto de Amazon Pinpoint no cambian, hayalgunos pasos que puede realizar para solucionar el problema:

• En la consola de Amazon Pinpoint, asegúrese de que está utilizando la región de AWS correcta. Lossegmentos y los puntos de enlace no se comparten entre regiones.

• En la consola de Lambda, abra la función que creó en el paso 4 (p. 65). En la pestaña Monitoring(Supervisión), elija View logs in CloudWatch (Ver registros en CW).

92

Amazon Pinpoint Guía para desarrolladoresPaso 7: Crear y enviar campañas de Amazon Pinpoint

En Log Streams (Secuencias de registro), elija el evento registrado más recientemente. Compruebela salida del evento para obtener más información sobre el problema. Por ejemplo, si aparece un error"AccessDeniedException" en los registros, asegúrese de que el ID de proyecto de Amazon Pinpoint yla región de AWS que especificó en el paso 4 (p. 65) sean iguales a los valores de ID de proyecto yregión que especificó en la política de IAM en el paso 3.1 (p. 63). Si ha cambiado recientemente estosvalores, espere unos minutos e inténtelo de nuevo.

• Si CloudWatch no contiene ninguna información registrada para la función, asegúrese de que CORSesté habilitado en API Gateway y que se implemente la API. Si no está seguro, repita los pasos que seindican en el paso 5.3 (p. 76).

Paso 7: Crear y enviar campañas de Amazon PinpointLa solución de administración de preferencia de correo electrónico se ha configurado y está lista para suuso. Ahora puede comenzar a enviar correos electrónicos de campaña. Esta sección muestra cómo enviarcorreos electrónicos de campaña que contienen un enlace especial que los destinatarios pueden utilizarpara administrar sus preferencias de suscripción.

Paso 7.1: Crear un segmentoPara enviar un correo electrónico de campaña, primero debe crear el segmento al que desee enviar lacampaña. Para fines de este tutorial, debe utilizar un segmento que solo contenga sus propios puntosde enlace o de destinatarios internos dentro de su organización. Después de confirmar que la soluciónfunciona según lo previsto, puede comenzar a enviar mensajes a destinatarios externos.

Para crear un segmento, repita los procedimientos en el paso 2 (p. 60) para importar un segmento dedestinatarios internos.

Paso 7.2: Crear la campañaDespués de crear un segmento de destinatarios, puede crear una campaña que tenga el segmento comodestino.

Para crear la campaña

1. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.2. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).3. En el panel de navegación, elija Campaigns (Campañas).4. Elija Create a campaign (Crear una campaña).5. En la página Create a campaign (Crear una campaña), realice el siguiente procedimiento:

• En Campaign name (Nombre de campaña), especifique un nombre para la campaña.• Para Campaign type (Tipo de campaña), elija Standard campaign (Campaña estándar).• Elija Next (Siguiente).

6. En la página Choose a segment (Elegir un segmento), haga lo siguiente:

• Elija Use an existing segment (Usar un segmento existente).• En Segment details (Detalles de segmentos), para Segment (Segmento), elija el segmento que creó

en el paso 7.1 (p. 93).• Elija Next (Siguiente).

7. En la página Create a message (Crear un mensaje), realice el siguiente procedimiento:

93

Amazon Pinpoint Guía para desarrolladoresPaso 7: Crear y enviar campañas de Amazon Pinpoint

• En Specifications (Especificaciones) para Choose a channel for this campaign (Elegir un canal paraesta campaña), elija Email (Correo electrónico).

• En Email details (Detalles de correo electrónico) para Sender email address (Dirección de correoelectrónico del remitente), especifique la dirección de correo electrónico desde la que desee enviarel correo electrónico. Se debe verificar la dirección de correo electrónico que especifique.

• En Message content (Contenido del mensaje), elija Create a new email (Crear un nuevo correoelectrónico).

• En Subject (Asunto), escriba el asunto para el correo electrónico.• En Message (Mensaje), escriba el mensaje que desee enviar. En el cuerpo del correo electrónico,

incluya "Unsubscribe" (Cancelar suscripción) o el enlace "Change your email preferences" (Cambiarpreferencias de correo electrónico). Utilice la siguiente dirección URL como destino para el enlace:

https://www.example.com/prefs.html ?firstName={{User.UserAttributes.FirstName}} &lastName={{User.UserAttributes.LastName}} &email={{Attributes.Email}} &endpointId={{Attributes.EndpointId}} &t1={{Attributes.SpecialOffersOptStatus}} &t2={{Attributes.NewProductsOptStatus}} &t3={{Attributes.ComingSoonOptStatus}} &t4={{Attributes.DealOfTheDayOptStatus}}

En el ejemplo anterior, reemplace https://www.example.com/prefs.html por la ubicación enla que ha cargado el formulario en el paso 6.3 (p. 84).

Important

La siguiente URL del ejemplo anterior incluye saltos de línea y espacios adicionales parafacilitar su lectura. Elimine todos los saltos de línea y espacios de este ejemplo antes depegarlo en el editor de correo electrónico.

• Elija Next (Siguiente).8. En la página Choose when to send the campaign (Elegir cuándo enviar la campaña), realice el

siguiente procedimiento:

• En Choose when to send the campaign (Elegir cuándo enviar la campaña), elija At a specific time(En un momento concreto).

• Si desea enviar el mensaje cuando termine de crear la campaña, elija Immediately(Inmediatamente). Si desea enviar el mensaje a una hora determinada, elija Once (Una vez) y, acontinuación, especifique la fecha y hora de cuando se debe enviar el mensaje.

• Elija Next (Siguiente).9. En la página Review and launch (Revisar y lanzar), confirme la configuración de la campaña. Si la

configuración de la campaña es correcta, elija Launch campaign (Iniciar campaña).10. Cuando reciba el correo electrónico de la campaña, elija el enlace "Unsubscribe" (Cancelar

suscripción) or "Manage your email preferences" (Administrar sus preferencias de correo electrónico).Confirme que el formulario se carga correctamente y que se completa con los valores adecuadospara Email address (Dirección de correo electrónico), ID, First name (Nombre) y Last name(Apellidos). Además, asegúrese de que las selecciones en la sección Subscriptions (Suscripciones) secorresponden con los valores de confirmación que especificó al crear el punto de enlace.

Paso 7.3: Crear segmentos de producciónUna vez que haya completado los procedimientos que se describen en las secciones anteriores y hayaconfirmado que la página de preferencia funciona según lo previsto, estará listo para comenzar a crearsegmentos de clientes que hayan optado por varios temas.

94

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

Para crear segmentos de producción para sus temas, realice el siguiente procedimiento:

1. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.2. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 55).3. En el panel de navegación, seleccione Segments (Segmentos).4. En la página Create a segment (Crear un segmento), seleccione Build a segment (Generar un

segmento).5. En Specifications (Especificaciones), en Name (Nombre), especifique un nombre para el segmento.6. En el Segment group 1 (Grupo de segmento 1), añada Filter by endpoint (Filtrar por punto de enlace).7. En Choose an endpoint attribute (Elegir un atributo de punto de enlace), seleccione

ComingSoonOptStatus. A continuación, para Choose values (Elegir valores), seleccione OptIn.8. Elija Create segment (Crear segmento).9. Repita los pasos del 4 al 8 para los temas de opción restantes (DealOfTheDayOptStatus,

NewProductsOptStatus y SpecialOffersOptStatus). Una vez que complete este paso, dispondrá deun segmento independiente para cada tema de opción. Cuando desee enviar su campaña de correoelectrónico a clientes que se suscriben a un tema específico, elija el segmento adecuado cuando creela campaña.

10. (Opcional) Cree segmentos adicionales que acoten aún más su audiencia. Cuando cree segmentosadicionales, utilice el menú Include endpoints that are in any of the following segments (Incluir puntosde enlace que están en cualquiera de los segmentos siguientes) para elegir el segmento baseadecuado de puntos de enlace de confirmación.

Para obtener más información sobre la creación de segmentos, consulte Personalización desegmentos con AWS Lambda (p. 188).

Pasos siguientesAl completar este tutorial, ha realizado lo siguiente:

• Se ha creado un proyecto de Amazon Pinpoint, se ha habilitado el canal de correo electrónico y se hacomprobado una identidad para el envío de correo electrónico.

• Se ha creado una política de IAM que utiliza la entidad principal de privilegios mínimos para concederderechos de acceso y se ha asociado esa política a un rol.

• Se ha creado un función de Lambda que utiliza la operación UpdateEndpoint en la API de AmazonPinpoint.

• Se ha creado una API de REST mediante API Gateway.• Se ha creado e implementado un formulario basado en web que recopila las preferencias de suscripción

de los destinatarios de correo electrónico.• Se ha creado una campaña de correo electrónico que contiene un enlace al formulario web

personalizado para cada destinatario.• Se han creado segmentos que contienen puntos de enlace que se suscriben a sus temas.• Se realizaron pruebas en la solución para garantizar el funcionamiento previsto.

En esta sección se explican algunas maneras en las que puede utilizar la información que recopilamediante esta solución. También incluye algunas sugerencias de formas en las que puede personalizaresta solución para adaptarla a su caso de uso exclusivo.

95

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

Utilizar el formulario para recopilar información adicionalPuede modificar esta solución para recopilar información adicional sobre el formulario de registro. Porejemplo, puede pedir al cliente que proporcione su dirección y, a continuación, utilizar los datos de ladirección para completar los campos Location.City, Location.Country, Location.Region yLocation.PostalCode en el recurso Endpoint. Si recopila estos datos, puede usarlos para crearsegmentos dirigidos.

Por ejemplo, si ofrece diferentes productos a clientes en función de su país, puede crear un segmentode usuarios que se suscriben a un tema y que se encuentran en un país determinado. Después de eso,puede enviar una campaña a ese segmento que contiene productos que se adaptan a ese país o región.Para realizar este cambio, debe añadir los campos correspondientes al formulario web. También tieneque modificar el código JavaScript del gestor de formularios para transferir los nuevos valores. Por último,tendrá que modificar la función de Lambda que actualiza el punto de enlace para gestionar la nuevainformación entrante.

También puede modificar el formulario de manera que recopile información de contacto en otros canales.Por ejemplo, puede utilizar el formulario para recopilar los números de teléfono de los clientes y enviarlesalertas de SMS. Para realizar este cambio, debe modificar el código HTML para el formulario web y elcódigo JavaScript en el gestor de formularios. También tiene que modificar la función de Lambda de formaque cree o actualice dos puntos de enlace distintos (uno para el punto de enlace de correo electrónico,y otro para el punto de enlace de SMS). Por último, debe modificar la función de Lambda de forma quegenere un valor exclusivo para el atributo de User.UserId y, a continuación, asocie ese valor a ambospuntos de enlace.

Registrar atributos adicionales para fines de auditoríaEsta solución registra dos valores valiosos cuando crea y actualiza puntos de enlace. En primer lugar,cuando la primera función de Lambda actualiza el punto de enlace, registra la ubicación del formulario enel atributo de Attributes.OptSource. Cuando un cliente envía el formulario, la función de Lambda creao actualiza el atributo de Attributes.OptStatusLastChanged. Este atributo contiene la hora y fechaexactas en las que el cliente actualizó por última vez el estado de confirmación para todos sus temas.

Estos campos pueden ser útiles si ha solicitado a un proveedor de correo electrónico o agencia reguladorapara proporcionar evidencia del consentimiento de un cliente. Puede recuperar esta información encualquier momento mediante la operación de la API GetEndpoint.

También puede modificar las funciones de Lambda para registrar datos adicionales que puedan ser útilespara fines de auditoría, como la dirección IP desde la que se envió la solicitud de registro.

Recopilar información de nuevo clienteLa solución de este tutorial utiliza la operación de la API UpdateEndpoint, que crea nuevos puntos deenlace y también actualiza los existentes. Puede utilizar el formulario web para capturar información sobrelos nuevos clientes. Si es así, tiene que generar un ID de punto de enlace exclusivo para cada cliente.Cuando un nuevo punto de enlace entre en su sistema de esa forma, debe establecer su valor OptOut en"ALL" (Todo). A continuación, debe enviar un mensaje al punto de enlace que solicita al cliente que hagaclic en un enlace para confirmar su suscripción. Cuando el cliente confirme su suscripción, podrá cambiarel valor OptOut a "NONE" (Ninguno).

Esta práctica se denomina "doble confirmación". Cuando se utilice un sistema doble confirmación,puede evitar que usuarios malintencionados registren puntos de enlace que no les pertenecen. Laimplementación de este tipo de sistemas ayuda a proteger su reputación como remitente. Además, lacaptura de este tipo de información de opción explícita es necesaria en determinados países y regiones detodo el mundo.

96

Amazon Pinpoint Guía para desarrolladoresConfiguración de un sistema de registro mediante SMS

Tutorial: Configuración de un sistema de registromediante SMS

Los mensajes SMS (mensajes de texto) son una manera excelente de enviar mensajes de extremaimportancia a sus clientes. Actualmente, muchas personas tienen cerca el teléfono en todo momento.Además, los mensajes SMS suelen llamar la atención de las personas que las notificaciones de inserción,los correos electrónicos o las llamadas telefónicas.

Una forma habitual de capturar los números de teléfonos móviles de los clientes es utilizar un formulariobasado en web. Tras comprobar que el número de teléfono del cliente y confirmar su suscripción, podrácomenzar a enviar mensajes SMS promocionales, transaccionales e informativos a ese cliente.

Este tutorial le enseña cómo configurar un formulario web para capturar la información de contacto de losclientes. El formulario web envía esta información a Amazon Pinpoint. A continuación, Amazon Pinpointverifica que el número de teléfono sea válido, y captura otros metadatos relacionados con el númerode teléfono. Después de eso, Amazon Pinpoint envía al cliente un mensaje solicitándole que confirmesu suscripción. Una vez que el cliente confirma su suscripción, Amazon Pinpoint los confirma para larecepción de sus mensajes.

El siguiente diagrama de arquitectura muestra el flujo de datos en esta solución.

97

Amazon Pinpoint Guía para desarrolladoresAcerca de la confirmación doble

Acerca de la confirmación dobleEn este tutorial se muestra cómo configurar un sistema de confirmación doble Amazon Pinpoint que utilizala mensajería de SMS bidireccionales.

En un sistema de confirmación doble de SMS, un cliente le ofrece su número de teléfono enviándolo enun formulario web o dentro de su aplicación. Cuando reciba la solicitud del cliente, deberá crear un nuevopunto de enlace en Amazon Pinpoint. El nuevo punto de enlace debe excluirse de las comunicaciones.A continuación, envíe un mensaje a ese número de teléfono. En el mensaje, solicita que el destinatarioconfirme su suscripción contestando con una frase o palabra específicas (como "Sí" o "Confirmar"). Si elcliente responde al mensaje con la palabra o frase que ha especificado, cambie el estado del punto deenlace a confirmado. De lo contrario, si el cliente no responde o responde con otra palabra o frase, puededejar el punto de enlace con el estado cancelado.

Acerca de esta soluciónEsta sección contiene información sobre la solución que va a crear en este tutorial.

Destinatarios previstos

Este tutorial está destinado a las audiencias de implementadores de sistemas y desarrolladores. No tieneque estar familiarizado con Amazon Pinpoint para completar los pasos de este tutorial. Sin embargo, debesentirse cómo con tareas de gestión de políticas de IAM, creación de funciones de Lambda en Node.js eimplementación de contenido web.

Características utilizadas

Este tutorial incluye ejemplos de uso para las siguientes características de Amazon Pinpoint:

• Envío de mensajes SMS transaccionales• Obtención de información sobre los números de teléfono mediante la validación del número de teléfono• Recepción de mensajes SMS entrantes mediante la mensajería de SMS bidireccionales• Creación de segmentos dinámicos• Creación de campañas• Interacción con la API de Amazon Pinpoint mediante AWS Lambda

Tiempo necesario

Debe tardar aproximadamente una hora en completar este tutorial. Después de implementar esta solución,existen pasos adicionales que puede realizar para ajustar la solución y adaptarla mejor a su caso de usoexclusivo.

Restricciones regionales

En este tutorial se requiere que asigne un código largo mediante la consola de Amazon Pinpoint. Puedeutilizar la consola de Amazon Pinpoint para asignar códigos largos dedicados de varios países. Sinembargo, solo los códigos largos de Estados Unidos o Canadá pueden utilizarse para enviar mensajesSMS. (Puede utilizar códigos largos de otros países y regiones para enviar mensajes de voz).

Hemos creado los ejemplos de código de este tutorial teniendo en cuenta esta restricción. Por ejemplo, enlos ejemplos de código se presupone que el número de teléfono del destinatario siempre tiene 10 dígitos yque tiene el código de país 1. Si implementa esta solución en países o regiones que no sean los EstadosUnidos o Canadá, tendrá que modificar los ejemplos de código de forma adecuada.

98

Amazon Pinpoint Guía para desarrolladoresRequisitos previos

Costos de uso de recursos

La creación de una cuenta de AWS no supone ningún costo. Sin embargo, si se implementa esta solución,es posible que se generen los siguientes gastos:

• Costos de asignación de código largo: para completar este tutorial, debe asignar un código largo. Loscódigos largos de Estados Unidos (Territorios de los Estados Unidos excluidos) y Canadá cuestan1,00 USD al mes.

• Uso de validación mediante el número de teléfono: en la solución de este tutorial se utiliza lacaracterística de validación del número de teléfono de Amazon Pinpoint para verificar que cada númeroque reciba es válido y que disponga del formato adecuado, y para obtener información adicional sobre elnúmero de teléfono. El costo de cada solicitud de validación de número de teléfono es de 0,006 USD.

• Costos de envío de mensaje: en la solución de este tutorial se envían mensajes SMS salientes.Pagará por todos los mensajes que envía mediante Amazon Pinpoint. El precio que paga por cadamensaje depende del país o la región del destinatario. Si envía mensajes a destinatarios en EstadosUnidos (excluidos los Territorios de los Estados Unidos), pagará 0,00645 USD por mensaje. Si envíamensajes a destinatarios en Canadá, pagará entre 0,00109 USD y 0,02 USD, según el transportista deldestinatario y la ubicación.

• Costos de recepción de mensajes: en la solución de esta solución también se reciben y procesanimágenes SMS entrantes. Pagará por cada mensaje entrante enviado a los números de teléfonoasociados a su cuenta de Amazon Pinpoint. El precio que paga depende del lugar en el que seencuentre el número de teléfono de recepción. Si el número de recepción está en Estados Unidos(excluidos los Territorios de los Estados Unidos), pagará 0,0075 USD por mensaje entrante. Si sunúmero se encuentra en Canadá, pagará 0,00155 USD por mensaje entrante.

• Uso deLambda: en esta solución se utilizan dos funciones de Lambda que interactúan con la API deAmazon Pinpoint. Cuando llame a una función de Lambda, se le cobrará según el número de solicitudesde sus funciones, el tiempo que tardará en ejecutarse el código y la cantidad de memoria que utilice susfunciones. Las funciones de este tutorial utilizan muy poca memoria y normalmente se ejecutan duranteun período de entre 1 y 3 segundos. El uso total o parcial de esta solución puede ser inferior al nivel deuso gratuito de Lambda. Para obtener más información, consulte Precios de Lambda.

• Uso de API Gateway: el formulario web de esta solución llama a una API gestionada por API Gateway.Por cada millón de llamadas a API Gateway, paga entre 3,50 USD y 3,70 USD en función de la regiónde AWS en la que utilice Amazon Pinpoint . Para obtener más información, consulte Precios de APIGateway.

• Costos de alojamiento web: en esta solución se incluye un formulario basado en web que tiene quealojar en su sitio web. El precio que paga por alojar este contenido depende de su proveedor deservicios de alojamiento web.

Note

Todos los precios que se muestran en esta lista se encuentran en dólares estadounidenses(USD).

Siguiente: Requisitos previos (p. 99)

Requisitos previosAntes de comenzar este tutorial, tiene que completar los siguientes requisitos previos:

• Tiene que disponer de una cuenta de AWS. Para crear una cuenta de AWS, diríjase a https://console.aws.amazon.com/ y elija Create a new AWS account (Crear una nueva cuenta de AWS).

• La cuenta que utiliza para iniciar sesión en la cuenta de Consola de administración de AWS tiene quepoder realizar las tareas siguientes:

99

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

• Crear nuevas políticas y roles de IAM• Crear nuevos proyectos de Amazon Pinpoint• Crear nuevas funciones de Lambda• Crear nuevas API en API Gateway

• Debe disponer de un método para alojar páginas web y debe saber cómo publicarlas. Aunque puedeusar servicios de AWS para alojar sus sitios web, no es necesario.

Tip

Para obtener más información sobre el alojamiento de páginas web mediante servicios de AWS,consulte Alojar una página web estática.

Siguiente: Configurar Amazon Pinpoint (p. 100)

Paso 1: Configurar Amazon PinpointEl primer paso en la implementación de esta solución es configurar Amazon Pinpoint. En esta sección,hará lo siguiente:

• Crear un proyecto de Amazon Pinpoint• Habilitar el canal de SMS y asignar un código largo• Configurar la mensajería de SMS bidireccional

Antes de comenzar con este tutorial, debe revisar los requisitos previos (p. 99).

Paso 1.1: Crear un proyecto de Amazon PinpointPara comenzar, tiene que crear un proyecto de Amazon Pinpoint. En Amazon Pinpoint, un proyecto constade segmentos, campañas, configuraciones y datos unidos por un objetivo común. Por ejemplo, podría usarun proyecto para incluir todo el contenido relacionado con una aplicación concreta o con una iniciativa demarketing o una marca específica. Al añadir información del cliente a Amazon Pinpoint, dicha informaciónse asocia a un proyecto.

Los pasos para crear un nuevo proyecto varía en función de si ha creado un proyecto en Amazon Pinpointanteriormente.

Creación de un proyecto (nuevos usuarios de Amazon Pinpoint)

Estos pasos describen el proceso de creación de un nuevo proyecto de Amazon Pinpoint si nunca hacreado un proyecto en la región de AWS actual.

Para crear un proyecto

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Pinpoint enhttps://console.aws.amazon.com/pinpoint/.

2. Utilice el selector de regiones para elegir la región de AWS que desee utilizar, tal y como se muestraen la imagen siguiente. Si no está seguro, elija la región más próxima a usted.

100

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

3. En Get started (Introducción), en Name (Nombre), especifique un nombre para la campaña (comoSMSRegistration) y, a continuación, elija Create project (Crear proyecto).

4. En la página Configure features (Configurar características), elija Skip this step (Omitir este paso).5. En el panel de navegación, elija All projects (Todos los proyectos).6. En la página All projects (Todos los proyectos), junto al proyecto que acaba de crear, copie el valor

que aparece en la columna Project ID (ID de proyecto).

Tip

Debe utilizar este ID en distintos lugares de este tutorial. Mantenga el ID de proyecto en unlugar que le resulta práctico para poder copiarlo después.

Creación de un proyecto (usuarios de Amazon Pinpoint existentes)

Estos pasos describen el proceso de creación de un nuevo proyecto de Amazon Pinpoint si nunca hacreado proyectos en la región de AWS actual.

Para crear un proyecto

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon Pinpoint enhttps://console.aws.amazon.com/pinpoint/.

2. Utilice el selector de regiones para elegir la región de AWS que desee utilizar, tal y como se muestraen la imagen siguiente. Si no está seguro, elija la región más próxima a usted.

101

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

3. En la página All projects (Todos los proyectos), elija Create a project (Crear un proyecto).4. En la ventana Create project (Crear proyecto), en Project name (Nombre del proyecto), escriba un

nombre para el proyecto (como SMSRegistration). Seleccione Create.5. En la página Configure features (Configurar características), elija Skip this step (Omitir este paso).6. En el panel de navegación, elija All projects (Todos los proyectos).7. En la página All projects (Todos los proyectos), junto al proyecto que acaba de crear, copie el valor

que aparece en la columna Project ID (ID de proyecto).

Tip

Debe utilizar este ID en distintos lugares de este tutorial. Mantenga el ID de proyecto en unlugar que le resulta práctico para poder copiarlo después.

Paso 1.2: Obtener un código largo dedicadoUna vez que cree un proyecto, podrá comenzar a configurar características dentro de ese proyecto.En esta sección, habilitará el canal de SMS y obtendrá un código largo dedicado que utilizar al enviarmensajes de SMS.

Note

En esta sección se presupone que va a asignar un código largo de Estados Unidos o Canadá. Sisigue los procedimientos de esta sección, pero elige un país que no es Estados Unidos o Canadá,no podrá utilizar ese número para enviar mensajes SMS. Para obtener más información sobre laasignación de códigos largos compatibles con SMS en países que no sean los Estados Unidos oCanadá, consulte Solicitud de códigos largos dedicados para mensajería por SMS con AmazonPinpoint en la Guía del usuario de Amazon Pinpoint.

1. En el panel de navegación, en Settings (Configuración), seleccione SMS and voice (SMS y voz).2. Junto a SMS settings (Configuración de SMS), elija Edit (Editar).3. En General settings (Configuración general), elija Enable the SMS channel for this project (Habilitar el

canal de SMS para este proyecto) y, a continuación, elija Save changes (Guardar cambios).4. Junto a Number settings (Configuración de número), elija Request long codes (Solicitar códigos

largos).5. En Long code specifications (Especificaciones de código largo), realice el siguiente procedimiento:

• En Target country or region (País o región de destino), elija United States (Estados Unidos) oCanada (Canadá).

102

Amazon Pinpoint Guía para desarrolladoresPaso 1: Configurar Amazon Pinpoint

• Para Default call type (Tipo de llamada predeterminada), elija Transactional (Transaccional).• Para Quantity (Cantidad), elija 1.

6. Elija Request long code (Solicitar código largo).

Paso 1.3: Habilitar SMS bidireccionalAhora que dispone de un número de teléfono dedicado, puede configurar SMS bidireccionales. Lahabilitación de SMS bidireccionales permite que los clientes puedan responder a los mensajes SMS queles envía. En esta solución, utilice SMS bidireccionales para proporcionar a sus clientes una forma deconfirmar que desean suscribirse a su programa de SMS.

1. En la página de configuración SMS and voice (SMS y voz), en Number settings (Configuración denúmero), elija el código largo recibido en la sección anterior.

2. En Required keywords (Palabras claves obligatorias), realice el siguiente procedimiento:

• Junto a la palabra clave HELP (Ayuda), para Response message (Mensaje de respuesta),especifique el mensaje que desee que Amazon Pinpoint envíe automáticamente a los destinatarioscuando envíen la palabra clave "HELP" (Ayuda) (o sus variantes) a este código largo.

• Junto a la palabra clave STOP (Parar), para Response message (Mensaje de respuesta),especifique el mensaje que desee que Amazon Pinpoint envíe automáticamente a los destinatarioscuando envíen la palabra clave "STOP" (Parar) (o sus variantes) a este código largo.

Note

Cuando un destinatario envía la palabra clave "STOP" (Parar) a uno de sus códigos largos,Amazon Pinpoint cancela automáticamente la suscripción de dicho destinatario a todos losmensajes SMS futuros que se envíen desde este proyecto.

3. En Registered keyword (Palabra clave registrada), para Keyword (Palabra clave), especifique lapalabra que los clientes pueden enviarle para registrarse y recibir sus mensajes. A continuación, paraResponse message (Mensaje de respuesta), especifique el mensaje que Amazon Pinpoint envíaautomáticamente cuando un cliente envía la palabra clave a este código largo.

Note

Para fines de este tutorial, el valor que especifique en esta sección no es importante. Eneste caso, los clientes se registran en su programa de mensajería de SMS completando unformulario de registro en lugar de enviándole un mensaje directamente.

4. En Two-Way SMS (SMS bidireccionales), elija Enable two-way SMS (Habilitar SMS bidireccionales).5. En Incoming message destination (Destino de mensaje entrante), elija Create a new SNS

topic (Crear un nuevo tema de SNS). Escriba un nombre de tema de Amazon SNS, comoSMSRegistrationFormTopic.

6. En Two-way SMS keywords (Palabras claves de SMS bidireccionales), para Keyword (Palabra clave),especifique la palabra que los clientes le envían para confirmar sus suscripciones (como Yes oConfirm).

Note

Este valor no distingue entre mayúsculas y minúsculas.7. En Response message (Mensaje de respuesta), especifique el mensaje que Amazon Pinpoint envía

automáticamente a los clientes cuando estos le envían la palabra clave que especificó en el pasoanterior.

8. Seleccione Save.

Siguiente: Crear políticas y roles de IAM (p. 104)

103

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear políticas y roles de IAM

Paso 2: Crear políticas y roles de IAMEl siguiente paso en la implementación de la solución de registro de SMS es configurar una política yun rol en AWS Identity and Access Management (IAM). Para esta solución, debe crear una política queproporcione acceso a determinados recursos relacionados con Amazon Pinpoint. A continuación, cree unrol y asóciele la política. Posteriormente, en este tutorial, creará una función de AWS Lambda que utilizaráeste rol para llamar a determinadas operaciones en la API de Amazon Pinpoint.

Paso 2.1: Crear una política de IAMEn esta sección se muestra cómo crear una política de IAM. Los usuarios y roles que utilizan esta políticapueden realizar el siguiente procedimiento:

• Utilizar la característica de validación de número de teléfono• Ver, crear y actualizar puntos de enlace de Amazon Pinpoint• Enviar mensajes a puntos de enlace de Amazon Pinpoint

En este tutorial, desea proporcionar a Lambda la capacidad de realizar estas tareas. Sin embargo, paramayor seguridad, esta política utiliza la entidad principal de concesión de privilegios mínimos. Es decir,solo concede permisos necesarios para completar esta solución, no más. Esta política está restringida delas siguientes formas:

• Solo puede utilizarla para llamar a la API de validación de número de teléfono en una región específica.• Solo puede utilizarla para ver, crear o actualizar los puntos de enlace que están asociados con un

proyecto de Amazon Pinpoint específico.• Solo puede utilizarla para enviar los puntos de enlace que están asociados con un proyecto de Amazon

Pinpoint específico.

Para crear la política, realice el siguiente procedimiento:

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

2. En el panel de navegación, seleccione Policies (Políticas) y, a continuación, seleccione Create policy(Crear política).

3. En la pestaña JSON, pegue el siguiente código.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": "mobiletargeting:SendMessages", "Resource": "arn:aws:mobiletargeting:region:accountId:apps/projectId/*" }, { "Effect": "Allow", "Action": [

104

Amazon Pinpoint Guía para desarrolladoresPaso 2: Crear políticas y roles de IAM

"mobiletargeting:GetEndpoint", "mobiletargeting:UpdateEndpoint", "mobiletargeting:PutEvents" ], "Resource": "arn:aws:mobiletargeting:region:accountId:apps/projectId/endpoints/*" }, { "Effect": "Allow", "Action": "mobiletargeting:PhoneNumberValidate", "Resource": "arn:aws:mobiletargeting:region:accountId:phone/number/validate" } ]}

En el ejemplo anterior, realice el siguiente procedimiento:

• Sustituya la región por la región de AWS que utiliza en Amazon Pinpoint, como us-east-1 o eu-central-1.

Tip

Para ver una lista completa de regiones de AWS en las que Amazon Pinpoint estádisponible, consulte Regiones y puntos de enlace de AWS en la AWS General Reference.

• Reemplace accountId por el ID exclusivo de su cuenta de AWS.• Sustituya projectId por el ID exclusivo del proyecto que ha creado en el paso 1.1 (p. 100) de

este tutorial.

Note

Las acciones de logs permiten que Lambda registre su salida en CloudWatch Logs.4. Elija Review policy (Revisar política).5. En Name (Nombre), especifique un nombre para la política, como RegistrationFormPolicy. Elija

Create Policy.

Paso 2.2: Crear un rol de IAMPara crear el rol, realice el siguiente procedimiento:

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En la consola de IAM, en el panel de navegación, seleccione Roles y Create role (Crear rol).3. En Choose the service that will use this role (Elegir el servicio que utilizará este rol), seleccione

Lambda y Siguiente: Permisos.

Note

El servicio que elija en este paso no es importante. Independientemente del servicio que elija,se aplicará su propia política en el siguiente paso.

4. En Attach permissions policies (Asociar políticas de permisos), elija la política que creó en la secciónanterior y, a continuación, elija Siguiente: Etiquetas.

5. Elija Next: Review.6. En Review (Revisar), en Name (Nombre), especifique un nombre para el rol, como

SMSRegistrationForm. Elija Create role (Crear rol).

Siguiente: Crear funciones de Lambda (p. 106)

105

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

Paso 3: Crear funciones de LambdaEsta solución utiliza dos funciones de Lambda. En esta sección se muestra cómo crear y configurar estasfunciones. Posteriormente, debe configurar API Gateway y Amazon Pinpoint para ejecutar estas funcionescuando se produzcan determinados eventos. Estas funciones crean y actualizan los puntos de enlace enel proyecto de Amazon Pinpoint que especifique. La primera función también utiliza la característica devalidación de número de teléfono.

Paso 3.1: Crear la función que valida la información del cliente ycrea puntos de enlaceLa primera función obtiene la entrada del formulario de registro, que se obtiene a partir de Amazon APIGateway. Dicha función utiliza esa información para obtener información sobre el número de teléfono delcliente mediante la característica de validación de número de teléfono (p. 197) de Amazon Pinpoint. Acontinuación, la función utiliza los datos validados para crear un nuevo punto de enlace en el proyecto deAmazon Pinpoint que especifique. De forma predeterminada, el punto de enlace que crea la función sedesactiva para sus futuras comunicaciones, pero el estado se puede cambiar mediante la segunda función.Por último, esta función envía al cliente un mensaje en el que se le solicita que verifique que quiere recibircomunicaciones SMS de su parte.

Para crear la función de Lambda

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. En Create a function (Crear una función), elija Blueprints (Proyectos).4. En el campo de búsqueda, escriba hello y, a continuación, pulse Intro. En la lista de resultados, elija

la función de Node.js hello-world, tal y como se muestra en la siguiente imagen. Elija Configure.

106

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

107

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

5. Bajo Basic information (Información básica), haga lo siguiente:

• En Name (Nombre), especifique un nombre para la función, como RegistrationForm.• En Role, seleccione Choose an existing role.• En Existing role (Rol existente), elija el rol SMSRegistrationForm que ha creado en el paso

2.2 (p. 105).

Cuando haya terminado, elija Create function (Crear función).6. Elimine la función de ejemplo del editor de código y, a continuación, pegue el siguiente código:

var AWS = require('aws-sdk');var pinpoint = new AWS.Pinpoint({region: process.env.region});

// Make sure the SMS channel is enabled for the projectId that you specify.// See: https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-setup.htmlvar projectId = process.env.projectId;

// You need a dedicated long code in order to use two-way SMS. // See: https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-voice-manage.html#channels-voice-manage-request-phone-numbersvar originationNumber = process.env.originationNumber;

// This message is spread across multiple lines for improved readability.var message = "ExampleCorp: Reply YES to confirm your subscription. 2 msgs per " + "month. No purchase req'd. Msg&data rates may apply. Terms: " + "example.com/terms-sms"; var messageType = "TRANSACTIONAL";

exports.handler = (event, context, callback) => { console.log('Received event:', event); validateNumber(event);};

function validateNumber (event) { var destinationNumber = event.destinationNumber; if (destinationNumber.length == 10) { destinationNumber = "+1" + destinationNumber; } var params = { NumberValidateRequest: { IsoCountryCode: 'US', PhoneNumber: destinationNumber } }; pinpoint.phoneNumberValidate(params, function(err, data) { if (err) { console.log(err, err.stack); } else { console.log(data); //return data; if (data['NumberValidateResponse']['PhoneTypeCode'] == 0) { createEndpoint(data, event.firstName, event.lastName, event.source); } else { console.log("Received a phone number that isn't capable of receiving " +"SMS messages. No endpoint created."); } } });}

108

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

function createEndpoint(data, firstName, lastName, source) { var destinationNumber = data['NumberValidateResponse']['CleansedPhoneNumberE164']; var endpointId = data['NumberValidateResponse']['CleansedPhoneNumberE164'].substring(1); var params = { ApplicationId: projectId, // The Endpoint ID is equal to the cleansed phone number minus the leading // plus sign. This makes it easier to easily update the endpoint later. EndpointId: endpointId, EndpointRequest: { ChannelType: 'SMS', Address: destinationNumber, // OptOut is set to ALL (that is, endpoint is opted out of all messages) // because the recipient hasn't confirmed their subscription at this // point. When they confirm, a different Lambda function changes this // value to NONE (not opted out). OptOut: 'ALL', Location: { PostalCode:data['NumberValidateResponse']['ZipCode'], City:data['NumberValidateResponse']['City'], Country:data['NumberValidateResponse']['CountryCodeIso2'], }, Demographic: { Timezone:data['NumberValidateResponse']['Timezone'] }, Attributes: { Source: [ source ] }, User: { UserAttributes: { FirstName: [ firstName ], LastName: [ lastName ] } } } }; pinpoint.updateEndpoint(params, function(err,data) { if (err) { console.log(err, err.stack); } else { console.log(data); //return data; sendConfirmation(destinationNumber); } });}

function sendConfirmation(destinationNumber) { var params = { ApplicationId: projectId, MessageRequest: { Addresses: { [destinationNumber]: { ChannelType: 'SMS' } }, MessageConfiguration: { SMSMessage: {

109

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

Body: message, MessageType: messageType, OriginationNumber: originationNumber } } } };

pinpoint.sendMessages(params, function(err, data) { // If something goes wrong, print an error message. if(err) { console.log(err.message); // Otherwise, show the unique ID for the message. } else { console.log("Message sent! " + data['MessageResponse']['Result'][destinationNumber]['StatusMessage']); } });}

7. En Environment variables (Variables de entorno), realice el siguiente procedimiento:

• En la primera fila, cree una variable con una clave de originationNumber. A continuación,establezca el valor en el número de teléfono del código largo dedicado que recibió en el paso1.2 (p. 102).

Note

Asegúrese de incluir el signo más (+) y el código de país para el número de teléfono.No incluya ningún otro carácter especial, como, por ejemplo, guiones (-), puntos (.) oparéntesis.

• En la segunda fila, crear una variable con una clave de projectId. A continuación, establezca elvalor en el ID único del proyecto que ha creado en el paso 1.1 (p. 100).

• En la tercera fila, cree una variable con una clave de region. A continuación, establezca el valor enla región en la que usa Amazon Pinpoint, como us-east-1 o us-west-2.

Cuando termine, la sección Environment Variables (Variables de entorno) debe tener el aspecto delejemplo que se muestra en la siguiente imagen.

110

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

8. En la parte superior de la página, elija Save.

Paso 3.1.1: Probar la función

Después de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.Además, debe asegurarse de que el rol de IAM que ha creado cuenta con los permisos apropiados.

Para probar la función, realice el siguiente procedimiento:

1. Elija Test.2. En la ventana Configure test event (Configurar evento de prueba), haga lo siguiente:

• Elija Create new test event.• En Event Name (Nombre del evento), escriba un nombre para el evento de prueba, comoMyPhoneNumber.

• Borre el código de ejemplo en el editor de código. Pegue el siguiente código:

{ "destinationNumber": "2065550142", "firstName": "Carlos", "lastName": "Salazar", "source": "Registration form test"}

111

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

• En el ejemplo de código anterior, reemplace los valores de los atributos destinationNumber,firstName y lastName por los valores que desea utilizar para realizar pruebas, como, porejemplo, sus datos de contacto personales. Cuando pruebe esta función, se envía un mensaje SMSal número de teléfono que especifique en el atributo de destinationNumber. Asegúrese de que elnúmero de teléfono que especifique pueda recibir mensajes SMS.

• Seleccione Create.3. Elija Test (Probar) de nuevo.4. En Execution result: succeeded (Resultado de ejecución: correcto), elija Details (Detalles). En la

sección Log output (Salida de registro), revise la salida de la función. Asegúrese de que la función seejecuta sin errores.

Compruebe el dispositivo asociado a destinationNumber que especificó para asegurarse de querecibió el mensaje de prueba.

5. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.6. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 100).7. En el panel de navegación, seleccione Segments (Segmentos). En la página Segments (Segmentos),

elija Create a segment (Crear un segmento).8. En Segment group 1 (Grupo de segmento 1), en Add filters to refine your segment (Añadir filtros para

acotar el segmento), elija Filter by user (Filtrar por usuario).9. En Choose a user attribute (Elegir un atributo de usuario), elija FirstName. A continuación, en Choose

values (Elegir valores), elija el nombre que especificó en el evento de prueba.

La sección Segment estimate (Estimación de segmento) debe mostrar que no hay puntos de enlaceaptos y un punto de enlace total, como se muestra en la siguiente imagen. Este resultado es elprevisto. Cuando la función crea un nuevo punto de enlace, se cancela la suscripción de este. Lossegmentos de Amazon Pinpoint excluyen automáticamente los puntos de enlace de los que se hacancelado la suscripción.

112

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

113

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

Step 3.2: Crear la función que permite que los clientes sesuscriban a sus comunicacionesLa segunda función solo se ejecuta cuando un cliente responde al mensaje enviado por la primera función.Si la respuesta del cliente incluye la palabra clave que especificó en el paso 1.3 (p. 102), la funciónactualiza su registro de punto de enlace para que suscriban a comunicaciones futuras. Amazon Pinpointtambién responda automáticamente con el mensaje que especificó en el paso 1.3.

Si el cliente no responde, o responde con un elemento que no sea la palabra clave designada, no ocurrenada. El punto de enlace del cliente continúa en Amazon Pinpoint, pero no se puede dirigir por segmentos.

Para crear la función de Lambda

1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.2. Elija Create function (Crear función).3. En Create function (Crear función), elija Blueprints (Proyectos).4. En el campo de búsqueda, escriba hello y, a continuación, pulse Intro. En la lista de resultados, elija

la función de Node.js hello-world, tal y como se muestra en la siguiente imagen. Elija Configure.5. Bajo Basic information (Información básica), haga lo siguiente:

• En Name (Nombre), especifique un nombre para la función, como RegistrationForm_OptIn.• En Role, seleccione Choose an existing role.• En Existing role (Rol existente), elija el rol SMSRegistrationForm que ha creado en el paso

2.2 (p. 105).

Cuando haya terminado, elija Create function (Crear función).6. Elimine la función de ejemplo del editor de código y, a continuación, pegue el siguiente código:

var AWS = require('aws-sdk');var projectId = process.env.projectId;var confirmKeyword = process.env.confirmKeyword.toLowerCase();var pinpoint = new AWS.Pinpoint({region: process.env.region});

exports.handler = (event, context) => { console.log('Received event:', event); var timestamp = event.Records[0].Sns.Timestamp; var message = JSON.parse(event.Records[0].Sns.Message); var originationNumber = message.originationNumber; var response = message.messageBody.toLowerCase(); if (response.includes(confirmKeyword)) { updateEndpointOptIn(originationNumber, timestamp); }};

function updateEndpointOptIn (originationNumber, timestamp) { var endpointId = originationNumber.substring(1); var params = { ApplicationId: projectId, EndpointId: endpointId, EndpointRequest: { Address: originationNumber, ChannelType: 'SMS', OptOut: 'NONE', Attributes: { OptInTimestamp: [

114

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

timestamp ] }, } }; pinpoint.updateEndpoint(params, function(err, data) { if (err) { console.log("An error occurred.\n"); console.log(err, err.stack); } else { console.log("Successfully changed the opt status of endpoint ID " + endpointId); } });}

7. En Environment variables (Variables de entorno), realice el siguiente procedimiento:

• En la primera fila, cree una variable con una clave de projectId. A continuación, establezca elvalor en el ID único del proyecto que ha creado en el paso 1.1 (p. 100).

• En la segunda fila, crear una variable con una clave de region. A continuación, establezca el valoren la región en la que usa Amazon Pinpoint, como us-east-1 o us-west-2.

• En la tercera fila, cree una variable con una clave de confirmKeyword. A continuación, establezcael valor en la palabra clave de confirmación que creó en el paso 1.3 (p. 102).

Note

La palabra clave no distingue entre mayúsculas y minúsculas. Esta función convierte elmensaje entrante a minúsculas.

Cuando termine, la sección Environment Variables (Variables de entorno) debe tener el aspecto delejemplo que se muestra en la siguiente imagen.

115

Amazon Pinpoint Guía para desarrolladoresPaso 3: Crear funciones de Lambda

8. En la parte superior de la página, elija Save.

Paso 3.2.1: Probar la función

Después de crear la función, debe probarla para asegurarse de que se ha configurado correctamente.Además, debe asegurarse de que el rol de IAM que ha creado cuenta con los permisos apropiados.

Para probar la función, realice el siguiente procedimiento:

1. Elija Test.2. En la ventana Configure test event (Configurar evento de prueba), haga lo siguiente:

a. Elija Create new test event.b. En Event Name (Nombre del evento), escriba un nombre para el evento de prueba, como

MyResponse.c. Borre el código de ejemplo en el editor de código. Pegue el siguiente código:

{ "Records":[ { "Sns":{ "Message":"{\"originationNumber\":\"+12065550142\",\"messageBody\":\"Yes\"}", "Timestamp":"2019-02-20T17:47:44.147Z" }

116

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

} ]}

En el ejemplo de código anterior, reemplace los valores del atributo de originationNumbercon el número de teléfono que utilizó cuando probó la función de Lambda anterior. Sustituyael valor de messageBody con la palabra clave de SMS bidireccional que especificó en el paso1.3 (p. 103). Si lo prefiere, puede reemplazar el valor de Timestamp por la hora y fechaactuales.

d. Seleccione Create.3. Elija Test (Probar) de nuevo.4. En Execution result: succeeded (Resultado de ejecución: correcto), elija Details (Detalles). En la

sección Log output (Salida de registro), revise la salida de la función. Asegúrese de que la función seejecuta sin errores.

5. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.6. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 100).7. En el panel de navegación, seleccione Segments (Segmentos). En la página Segments (Segmentos),

elija Create a segment (Crear un segmento).8. En Segment group 1 (Grupo de segmento 1), en Add filters to refine your segment (Añadir filtros para

acotar el segmento), elija Filter by user (Filtrar por usuario).9. En Choose a user attribute (Elegir un atributo de usuario), elija FirstName. A continuación, en Choose

values (Elegir valores), elija el nombre que especificó en el evento de prueba.

La sección Segment estimate (Estimación de segmento) debe mostrar que hay un punto de enlaceapto y un punto de enlace total.

Siguiente: Configurar Amazon API Gateway (p. 117)

Paso 4: Configurar Amazon API GatewayEn esta sección, cree una nueva API mediante Amazon API Gateway. El formulario de registro queimplementa en esta solución llama a esta API. API Gateway envía después la información que se capturaen el formulario de registro a la función de Lambda que ha creado en el paso 3 (p. 106).

Paso 4.1: Crear la APIEn primer lugar, tiene que crear una nueva API en API Gateway. Los procedimientos que se describen acontinuación muestran cómo crear una nueva API de REST.

Para crear una nueva API, realice el siguiente procedimiento:

1. Abra la consola de API Gateway en https://console.aws.amazon.com/apigateway/.2. Seleccione Create API (Crear API). Seleccione las siguientes opciones:

• En Choose the protocol (Elegir el protocolo), elija REST.• En Create new API (Crear nueva API), elija New API (Nueva API).• En Settings (Configuración), en Name (Nombre), especifique un nombre, comoRegistrationForm. En Description (Descripción), especifique opcionalmente texto que describael objetivo de la API. En Endpoint Type, (Tipo de punto de enlace), elija Regional. A continuación,elija Create API (Crear API).

En la siguiente imagen se muestra un ejemplo de esta configuración.

117

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

118

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

Paso 4.2: Crear un recursoAhora que ha creado una API, puede comenzar a añadir recursos a ella. Después, añada un métodoPOST al recurso e indique a API Gateway que transmita los datos que recibe a partir de este método a lafunción de Lambda.

1. En el menú Actions (Acciones), elija Create Resource (Crear recurso). En el panel New ChildResource (Nuevo recurso secundario), en Resource Name (Nombre de recurso), especifiqueregister, como se muestra en la siguiente imagen. Elija Create Resource (Crear recurso).

2. En el menú Actions (Acciones), elija Create method (Crear método). En el menú que aparece, elijaPOST, tal y como se muestra en la siguiente imagen. A continuación, elija el botón de marca de

verificación ( ).

119

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

3. En el panel /register - POST - Setup (/register - POST- Configuración), seleccione las siguientesopciones:

• En Integration type (Tipo de integración), elija Lambda Function (Función de Lambda).• Seleccione Use Lambda Proxy Integration (Utilizar integración de proxy de LAM).• En Lambda Region (Región de LAM), elija la región en la que creó la función de Lambda.• Para Lambda Function (Función de LAM), elija la función RegisterEndpoint que creó en el paso

3 (p. 106).

En la siguiente imagen se muestra un ejemplo de esta configuración.

120

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

Seleccione Save. En la ventana que aparece, elija OK (Aceptar) para proporcionar a la API Gatewaypermiso para ejecutar su función de Lambda.

Paso 4.3: Implementar la APILa API ya está lista para su uso. En este momento, tiene que implementarla para crear un punto de enlacede acceso público.

121

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

1. En el menú Actions (Acciones), elija Deploy (Implementar). En la ventana Deploy API (ImplementarAPI), realice las siguientes selecciones:

• En Deployment stage (Etapa de implementación), elija [new stage] ([nueva etapa]).• En Stage Name (Nombre de etapa), escriba v1.• Elija Deploy (Implementar).

En la siguiente imagen se muestra un ejemplo de estas selecciones.

2. En el panel v1 Stage Editor (Editor de etapas v1), elija el recurso /register y, a continuación, seleccioneel método POST. Copie la dirección que se muestra junto a Invoke URL (Invocar URL), tal y como semuestra en la siguiente imagen.

122

Amazon Pinpoint Guía para desarrolladoresPaso 4: Configurar Amazon API Gateway

3. En el panel de navegación, elija Resources. En la lista de recursos, elija el recurso /register. Porúltimo, en el menú Actions (Acciones), elija Enable CORS (Habilitar CORS), como se muestra en lasiguiente imagen.

123

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

4. En el panel Enable CORS (Habilitar CORS), elija Enable CORS and replace existing CORS headers(Habiltar CORS y reemplazar los encabezados CORS existentes).

Siguiente: Crear e implementar el formulario web (p. 124)

Paso 5: Crear e implementar el formulario webTodos los componentes de esta solución que utilizan servicios de AWS ya están en vigor. El último paso escrear e implementar el formulario web que captura los datos del cliente.

Paso 5.1: Crear el gestor de formularios JavaScriptEn esta sección, creará una función de JavaScript que analiza el contenido del formulario web que crea enla siguiente sección. Después de analizar el contenido, esta función envía los datos a la API que ha creadoen la parte 4 (p. 117).

Para crear el gestor de formularios, realice el siguiente procedimiento:

1. En un editor de texto, cree un nuevo archivo.2. En el editor, pegue el siguiente código.

$(document).ready(function() {

124

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

// Handle form submission. $("#submit").click(function(e) {

var firstName = $("#firstName").val(), lastName = $("#lastName").val(), source = window.location.pathname, optTimestamp = undefined, utcSeconds = Date.now() / 1000, timestamp = new Date(0), phone = $("#areaCode").val() + $("#phone1").val() + $("#phone2").val();

e.preventDefault();

if (firstName == "") { $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your first name.</div>'); } else if (lastName == "") { $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your last name.</div>'); } else if (phone.match(/[^0-9]/gi)) { $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Your phone number contains invalid characters. Please check the phone number that you supplied.</div>'); } else if (phone.length < 10) { $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Please enter your phone number.</div>'); } else if (phone.length > 10) { $('#form-response').html('<div class="mt-3 alert alert-info" role="alert">Your phone number contains too many digits. Please check the phone number that you supplied.</div>'); } else { $('#submit').prop('disabled', true); $('#submit').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>  Saving your preferences</button>');

timestamp.setUTCSeconds(utcSeconds);

var data = JSON.stringify({ 'destinationNumber': phone, 'firstName': firstName, 'lastName': lastName, 'source': source, 'optTimestamp': timestamp.toString() });

$.ajax({ type: 'POST', url: 'https://example.execute-api.us-east-1.amazonaws.com/v1/register', contentType: 'application/json', data: data, success: function(res) { $('#form-response').html('<div class="mt-3 alert alert-success" role="alert"><p>Congratulations! You&apos;ve successfully registered for SMS Alerts from ExampleCorp.</p><p>We just sent you a message. Follow the instructions in the message to confirm your subscription. We won&apos;t send any additional messages until we receive your confirmation.</p><p>If you decide you don&apos;t want to receive any additional messages from us, just reply to one of our messages with the keyword STOP.</p></div>'); $('#submit').prop('hidden', true); $('#unsubAll').prop('hidden', true); $('#submit').text('Preferences saved!'); }, error: function(jqxhr, status, exception) {

125

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

$('#form-response').html('<div class="mt-3 alert alert-danger" role="alert">An error occurred. Please try again later.</div>'); $('#submit').text('Save preferences'); $('#submit').prop('disabled', false); } }); } });});

3. En el ejemplo anterior, reemplace https://example.execute-api.us-east-1.amazonaws.com/v1/register por la URL de invocación que ha obtenido en el paso4.3 (p. 121).

4. Guarde el archivo.

Paso 5.2: Crear el archivo de formularioEn esta sección, debe crear un archivo HTML que contenga el formulario que los clientes utilizan pararegistrar su programa de SMS. Este archivo utiliza el gestor de formularios JavaScript que creó en lasección anterior para transmitir los datos del formulario a la función de Lambda.

Important

Cuando un usuario envía este formulario, se activa una función de Lambda que invoca variasoperaciones de la API de Amazon Pinpoint. Los usuarios maliciosos podrían lanzar un ataque ensu formulario que podría hacer que se generara un gran número de solicitudes. Si tiene previstoutilizar esta solución para un caso de uso de producción, debe protegerla mediante un sistemacomo Google reCAPTCHA.

Para crear el formulario, realice el siguiente procedimiento:

1. En un editor de texto, cree un nuevo archivo.2. En el editor, pegue el siguiente código.

<!doctype html><html lang="en">

<head> <!-- Meta tags required by Bootstrap --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type="text/javascript" src="SMSFormHandler.js"></script> <title>SMS Registration Form</title>

126

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

</head>

<body> <div class="container"> <div class="row justify-content-center mt-3"> <div class="col-md-6"> <h1>Register for SMS Alerts</h1> <p>Enter your phone number below to sign up for PromotionName messages from ExampleCorp.</p> <p>We don't share your contact information with anyone else. For more information, see our <a href="http://example.com/privacy">Privacy Policy</a>.</p> <p>ExampleCorp alerts are only available to recipients in the United States.</p> </div> </div> <div class="row justify-content-center"> <div class="col-md-6"> <form> <div class="form-group"> <label for="firstName" class="font-weight-bold">First name</label> <input type="text" class="form-control" id="firstName" placeholder="Your first name" required> </div> <div class="form-group"> <label for="lastName" class="font-weight-bold">Last name</label> <input type="text" class="form-control" id="lastName" placeholder="Your last name" required> </div> <label for="areaCode" class="font-weight-bold">Phone number</label> <div class="input-group"> <span class="h3">(&nbsp;</span> <input type="tel" class="form-control" id="areaCode" placeholder="Area code" required> <span class="h3">&nbsp;)&nbsp;</span> <input type="tel" class="form-control" id="phone1" placeholder="555" required> <span class="h3">&nbsp;-&nbsp;</span> <input type="tel" class="form-control" id="phone2" placeholder="0199" required> </div> <div id="form-response"></div> <button id="submit" type="submit" class="btn btn-primary btn-block mt-3">Submit</button> </form> </div> </div> <div class="row mt-3"> <div class="col-md-12 text-center"> <small class="text-muted">Copyright © 2019, ExampleCorp or its affiliates.</small> </div> </div> </div></body>

</html>

3. En el ejemplo anterior, reemplace SMSFormHandler.js por la ruta completa al archivo JavaScriptdel gestor de formularios que ha creado en la sección anterior.

4. Guarde el archivo.

127

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

Paso 5.2: Cargar los archivos de formularioAhora que ha creado el formulario HTML y el gestor de formularios JavaScript, el último paso es publicarestos archivos en Internet. En esta sección se da por hecho que dispone de un proveedor de host webexistente. Si no dispone de un proveedor de host existente, puede iniciar un sitio web mediante AmazonRoute 53, Amazon Simple Storage Service (Amazon S3) y Amazon CloudFront. Para obtener másinformación, consulte Alojamiento de un sitio web estático.

Si utiliza otro proveedor de alojamiento web, consulte la documentación del proveedor para obtener másinformación sobre la publicación de páginas web.

Paso 5.3: Probar el formularioDespués de publicar el formulario, debe enviar algunos eventos de prueba para asegurarse de quefunciona según lo previsto.

Para probar el formulario de registro, realice el siguiente procedimiento:

1. En un navegador web, diríjase a la ubicación en la que cargó el formulario de registro. Si utilizó elejemplo de código del paso 5.1 (p. 126), verá un formulario con un aspecto parecido al del ejemplode la siguiente imagen.

128

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

2. Escriba su información de contacto en los campos First name (Nombre), Last name (Apellidos) yPhone number (Número de teléfono).

129

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

Note

Cuando envíe el formulario, Amazon Pinpoint intentará enviar un mensaje al número deteléfono especificado. Debido a esta funcionalidad, debe utilizar un número de teléfono realpara probar la solución al completo.Si ha probado la función de Lambda en el paso 3 (p. 106), su proyecto de Amazon Pinpointcontendrá ya al menos un punto de enlace. Cuando pruebe este formulario, deberá enviarun número de teléfono diferentes en el formulario, o eliminar el punto de enlace existentemediante la operación de la API DeleteEndpoint operación.

3. Compruebe el dispositivo asociado al número de teléfono que especificó para asegurarse de querecibió el mensaje.

4. Abra la consola de Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/.5. En la página All projects (Todos los proyectos), elija el proyecto que ha creado en el paso

1.1 (p. 100).6. En el panel de navegación, seleccione Segments (Segmentos). En la página Segments (Segmentos),

elija Create a segment (Crear un segmento).7. En Segment group 1 (Grupo de segmento 1), en Add filters to refine your segment (Añadir filtros para

acotar el segmento), elija Filter by user (Filtrar por usuario).8. En Choose a user attribute (Elegir un atributo de usuario), elija FirstName. A continuación, en Choose

values (Elegir valores), seleccione el nombre que especificó cuando envió el formulario.

La sección Segment estimate (Estimación de segmento) debe mostrar que no hay puntos de enlaceaptos y un punto de enlace (en Total endpoints [Puntos de enlaces totales]), como se muestra en elsiguiente ejemplo. Este resultado es el previsto. Cuando la función de Lambda crea un nuevo punto deenlace, se cancela la suscripción de este de forma predeterminada.

130

Amazon Pinpoint Guía para desarrolladoresPaso 5: Crear e implementar el formulario web

131

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

9. En el dispositivo que recibió el mensaje, conteste al mensaje con la palabra clave de SMSbidireccional que especificó en el paso 1.3 (p. 103). Amazon Pinpoint envía un mensaje derespuesta de inmediato.

10. En la consola de Amazon Pinpoint, repita los pasos del 4 al 8. Esta vez, cuando cree el segmento,verá un punto de enlace apto y un punto de enlace total. El resultado es el esperado, ya que ahora seha realizado la suscripción al punto de enlace.

Pasos siguientesAl completar este tutorial, ha realizado lo siguiente:

• Se ha creado un proyecto de Amazon Pinpoint, se ha configurado el canal de SMS y se ha obtenido uncódigo largo dedicado.

• Se ha creado una política de IAM que utiliza la entidad principal de privilegios mínimos para concederderechos de acceso y se ha asociado esa política a un rol.

• Se han creado dos funciones de Lambda que utilizan las operaciones PhoneNumberValidate,UpdateEndpoint y SendMessages en la API de Amazon Pinpoint.

• Se ha creado una API de REST mediante API Gateway.• Se ha creado e implementado un formulario basado en web que recopila la información de contacto de

los clientes.• Se realizaron pruebas en la solución para garantizar que funciona.

En esta sección se explican algunas maneras en las que puede utilizar la información del cliente querecopila mediante esta solución. También incluye algunas sugerencias de formas en las que puedepersonalizar esta solución para adaptarla a su caso de uso exclusivo.

Crear segmentos de clientesTodos los detalles del cliente que recopile a través de este formulario se almacenarán como puntos deenlace. Esta solución crea puntos de enlace que contienen varios atributos que puede utilizar para fines desegmentación.

Por ejemplo, esta solución captura un atributo de punto de enlace denominado Source. Este atributocontiene la ruta completa a la ubicación en la que se hospedaba el formulario. Cuando cree un segmento,puede filtrar el segmento por punto de enlace y, a continuación, acotar aún más el filtro eligiendo unatributo de Source.

La creación de segmentos basada en el atributo de Source puede resultar útil de varias maneras. Enprimer lugar, le permite crear rápidamente un segmento de clientes que se han registrado para recibirmensajes SMS de su parte. Además, la herramienta de segmentación de Amazon Pinpoint excluyeautomáticamente los puntos de enlace para los que no se ha realizado la suscripción para recibirmensajes.

El atributo de Source resulta útil si decide alojar el formulario de registro en diferentes ubicaciones.Por ejemplo, el material de marketing podría hacer referencia a un formulario alojado en una ubicación,mientras que los clientes que detecten el formulario cuando naveguen por su sitio web podrían ver unaversión que está alojada en otra parte. Cuando realiza este procedimiento, los atributos de origen paralos clientes que completan el formulario después de ver sus materiales de marketing son diferentes de losque lo hacen después de buscarlo en su sitio web. Puede utilizar esta diferencia para crear segmentosdiferentes y, a continuación, enviar las comunicaciones personalizadas para cada una de esas audiencias.

Enviar mensajes de campaña personalizadosDespués de crear los segmentos, puede comenzar a enviar campañas a esos segmentos. Cuando creemensajes de campaña, podrá personalizarlos mediante la especificación de los atributos de punto de

132

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

enlace que desee incluir en el mensaje. Por ejemplo, el formulario web utilizado en esta solución requiereque el cliente especifique su nombre y apellidos. Estos valores se almacenan en el registro de usuario queestá asociado al punto de enlace.

Por ejemplo, si utiliza la operación de la API de GetEndpoint para recuperar información sobre un puntode enlace que se creó con esta solución, verá una sección con un aspecto similar al siguiente ejemplo:

... "User": { "UserAttributes": { "FirstName": [ "Carlos" ], "LastName": [ "Salazar" ] } } ...

Si desea incluir los valores de estos atributos en su mensaje de campaña, puede utilizar la notación depuntos para hacer referencia al atributo. A continuación, incluya toda la referencia en llaves dobles. Porejemplo, para incluir el nombre de cada destinatario de un mensaje de campaña, incluya la siguientecadena en el mensaje: {{User.UserAttributes.FirstName}}. Cuando Amazon Pinpoint envía elmensaje, sustituye la cadena por el valor del atributo FirstName.

Utilizar el formulario para recopilar información adicionalPuede modificar esta solución para recopilar información adicional sobre el formulario de registro. Porejemplo, puede pedir al cliente que proporcione su dirección y, a continuación, utilizar los datos de ladirección para completar los campos Location.City, Location.Country, Location.Region yLocation.PostalCode en el recurso Endpoint. La recopilación de información de la dirección en elformulario de registro puede provocar que el punto de enlace contenga información más precisa. Pararealizar este cambio, debe añadir los campos correspondientes al formulario web. También tiene quemodificar el código JavaScript del formulario para transferir los nuevos valores. Por último, tendrá quemodificar la función de Lambda que crea el punto de enlace para gestionar la nueva información entrante.

También puede modificar el formulario de manera que recopile información de contacto en otros canales.Por ejemplo, puede utilizar el formulario para recopilar la dirección de correo electrónico del cliente ademásde su número de teléfono. Para realizar este cambio, debe modificar los HTML y JavaScript para elformulario web. También tiene que modificar la función de Lambda que crea el punto de enlace de formaque se generen dos puntos de enlace distintos (uno para el punto de enlace de correo electrónico, y otropara el punto de enlace de SMS). También debe modificar la función de Lambda de forma que genere unvalor exclusivo para el atributo de User.UserId y, a continuación, asocie ese valor a ambos puntos deenlace.

Registrar atributos adicionales para fines de auditoríaEsta solución registra dos valores valiosos cuando crea y actualiza puntos de enlace. En primer lugar,cuando la primera función de Lambda crea inicialmente el punto de enlace, registra la URL del propioformulario en el atributo de Attributes.Source. Si el cliente responde al mensaje, la segunda funciónde Lambda crea un atributo de Attributes.OptInTimestamp. Este atributo contiene la fecha y la horaexactas en las que el cliente proporcionó su consentimiento para recibir sus mensajes.

Estos campos pueden ser útiles si un proveedor móvil o una agencia reguladora le ha solicitado queproporcione una evidencia del consentimiento de un cliente. Puede recuperar esta información encualquier momento mediante la operación de la API GetEndpoint.

133

Amazon Pinpoint Guía para desarrolladoresPasos siguientes

También puede modificar las funciones de Lambda para registrar datos adicionales que puedan ser útilespara fines de auditoría, como la dirección IP desde la que se envió la solicitud de registro.

134

Amazon Pinpoint Guía para desarrolladoresSDK Support

Integración de Amazon Pinpoint enuna aplicación

Integre Amazon Pinpoint en el código del cliente para comprender a los usuarios y conectar con ellos.

Una vez realizada la integración, a medida que los usuarios ejecutan la aplicación, esta se conecta conel servicio de Amazon Pinpoint para añadir o actualizar los puntos de enlace. Los puntos de enlacerepresentan los destinos a los que se pueden enviar mensajes —como dispositivos de usuario, direccionesde correo electrónico o números de teléfono.

Además, la aplicación proporcionará datos de uso, o eventos. Consulte los datos de eventos en la consolade Amazon Pinpoint para saber cuántos usuarios tiene, la frecuencia con la que utilizan la aplicación,cuándo lo hacen, etc.

Una vez que la aplicación haya proporcionado puntos de enlace y eventos, puede utilizar esta informaciónpara personalizar campañas de mensajería para públicos específicos, o segmentos. (También puedeenviar mensajes directamente a listas sencillas de destinatarios sin crear campañas.)

Utilice los temas de esta sección para integrar Amazon Pinpoint con un cliente móvil o web. Estos temasincluyen ejemplos de código y procedimientos para realizar la integración con una aplicación de Android,iOS o JavaScript.

Aparte del cliente, puede utilizar los SDK de AWS compatibles (p. 135) o la API de Amazon Pinpointpara importar puntos de enlace, exportar datos de eventos, definir segmentos de clientes, crear y ejecutarcampañas, etc.

Para iniciar la integración de sus aplicaciones, consulte the section called “Integración de los SDK paramóviles o la biblioteca de JS” (p. 136).

Temas• AWSCompatibilidad con SDK para Amazon Pinpoint (p. 135)• Integración de los AWS Mobile SDK o la biblioteca de JavaScript en una aplicación (p. 136)• Registro de puntos de enlace en la aplicación (p. 137)• Notificación de eventos en una aplicación (p. 138)• Gestión de notificaciones push (p. 140)

AWSCompatibilidad con SDK para AmazonPinpoint

Una de las formas más sencillas de interactuar con la API de Amazon Pinpoint consiste en utilizar un SDKde AWS. Los siguientes SDK de AWS incluyen compatibilidad con las operaciones de la API de AmazonPinpoint:

• SDK de AWS Mobile para Android versión 2.3.5 o posterior• AWS Mobile SDK for iOS versión 2.4.14 o posterior• Biblioteca de AWS JavaScript Amplify para JavaScript• Biblioteca de AWS Amplify JavaScript para React Native• AWS SDK for JavaScript versión 2.7.10 o posterior

135

Amazon Pinpoint Guía para desarrolladoresIntegración de los SDK para móviles o la biblioteca de JS

• AWS SDK for Java versión 1.11.63 o posterior• AWS SDK para .NET versión 3.3.27.0 o posterior• AWS SDK para PHP versión 3.20.1• AWS SDK para Python (Boto 3) versión 1.4.2 o posterior• AWS SDK parar Ruby versión 1.0.0.rc2 o posterior• AWS SDK for Go versión 1.5.13 o posterior• SDK de AWS para C++ versión 1.0.20151208.143 o posterior

También puede interactuar con la API de Amazon Pinpoint utilizando la versión 1.11.24 o posterior dela AWS Command Line Interface (AWS CLI). La AWS CLI requiere Python 2.6.5 o posterior, o Python3.3 o posterior. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte lainstalación de AWS Command Line Interface en la AWS Command Line Interface Guía del usuario.

Note

Los números de versión que se muestran en esta sección son las primeras versiones de cadaSDK o CLI que incluía compatibilidad con la API de Amazon Pinpoint. Ocasionalmente se añadennuevos recursos o nuevas operaciones a la API de Amazon Pinpoint. Para poder utilizar todas lascaracterísticas de Amazon Pinpoint a través de la API, asegúrese de que utiliza la versión másreciente del SDK o de la CLI.

Integración de los AWS Mobile SDK o la bibliotecade JavaScript en una aplicación

Para conectarse con el servicio de Amazon Pinpoint desde una aplicación web o móvil, integre los SDKpara móviles de AWS o las bibliotecas de JavaScript en el código. Con estos recursos, puede utilizar ellenguaje de programación nativo de su plataforma para emitir solicitudes a la API de Amazon Pinpoint. Porejemplo, puede añadir puntos de enlace, aplicar atributos de puntos de enlace personalizados, notificardatos de uso, etc.

En las aplicaciones de Android o iOS, utilice los AWS Mobile SDK. En el caso de las aplicaciones deJavaScript móviles o web, utilice la biblioteca de JavaScript de AWS Amplify para web y React Native.

Integración de los AWS Mobile SDK para Android oiOSUtilice AWS Amplify para integrar su aplicación con AWS. Para las aplicaciones iOS, consulte GettingStarted en la documentación de iOS SDK. Para las aplicaciones Android, consulte Getting Started en ladocumentación de Android SDK. Estos temas le ayudan a:

• Cree un proyecto con AWS Amplify.• Conecte la aplicación a las características y los recursos de AWS que AWS Amplify admite.

Integración de la biblioteca de JavaScript de AWSAmplifyPara integrar AWS Amplify con su aplicación de JavaScript, consulte Get Started (JavaScript) o GetStarted (React Native) en la documentación de AWS Amplify JavaScript. Estos temas le ayudan a:

136

Amazon Pinpoint Guía para desarrolladoresPaso siguiente

• Utilice herramientas de línea de comandos y AWS Amplify para crear un proyecto.• Crear recursos de AWS de backend para la aplicación.• Conectar la aplicación con los recursos de backend.• Integrar la biblioteca de AWS Amplify con la aplicación.

Después de integrar AWS Amplify, vuelva a este tema de la Guía para desarrolladores de Amazon Pinpointpara continuar con el siguiente paso.

Paso siguienteHa integrado AWS Amplify con su aplicación. A continuación, actualice el código para registrar losdispositivos de los usuarios como puntos de enlace. Consulte Registro de puntos de enlace en laaplicación (p. 137).

Registro de puntos de enlace en la aplicaciónCuando se inicia una sesión (por ejemplo, lanzando una aplicación móvil), la aplicación web o móvil puederegistrar (o actualizar) automáticamente un punto de enlace con Amazon Pinpoint. El punto de enlacerepresenta el dispositivo con el que se inicia la sesión. Incluye atributos que describen el dispositivo, ytambién puede incluir los atributos personalizados que se definan. Los puntos de enlace también puedenrepresentar otros métodos de comunicarse con los clientes, como direcciones de correo electrónico onúmeros de teléfono móvil.

Una vez que la aplicación haya registrado los puntos de enlace, puede segmentar el público en funciónde los atributos de los puntos de enlace. A continuación, puede atraer a estos segmentos con campañasde mensajería personalizadas. También puede utilizar la página Analytics (Análisis) de la consola deAmazon Pinpoint para ver gráficos sobre el registro y la actividad de los puntos de enlace, por ejemplo,New endpoints (Puntos de enlace nuevos) y Daily active endpoints (Puntos de enlace activos diariamente).

Puede asignar un único ID de usuario a varios puntos de enlace. Un ID de usuario representa a un únicousuario, mientras que cada uno de los puntos de enlace a los que se asocia el ID de usuario representauno de los dispositivos del usuario. Después de asignar los ID de usuario a los puntos de enlace, puedever gráficos sobre la actividad de los usuarios en la consola, como Daily active users (Usuarios activosdiariamente) y Monthly active users (Usuarios activos mensualmente).

Antes de empezarSi aún no lo ha hecho, integre el AWS Mobile SDK para Android o iOS, o integre la biblioteca de AWSAmplify JavaScript con su aplicación. Consulte Integración de los AWS Mobile SDK o la biblioteca deJavaScript en una aplicación (p. 136).

Registro de puntos de enlace con los AWS MobileSDK para Android o iOSPuede utilizar los AWS Mobile SDK para Android o iOS con el fin de registrar y personalizar puntos deenlace. Para obtener más información y ver ejemplos de código, consulte los documentos siguientes:

• Registering Endpoints in Your Application en la documentación de Android SDK.• Registering Endpoints in Your Application en la documentación del SDK de iOS.

137

Amazon Pinpoint Guía para desarrolladoresAWS Amplify

Registro de puntos de enlace con la biblioteca deJavaScript de AWS AmplifyPuede utilizar la biblioteca de AWS Amplify JavaScript para registrar y actualizar los puntos de enlace desus aplicaciones. Para obtener más información y ver ejemplos de código, consulte Update Endpoint en ladocumentación de AWS Amplify JavaScript.

Pasos siguientesHa actualizado su aplicación para registrar puntos de enlace. Ahora, a medida que los usuarios ejecutan laaplicación, Amazon Pinpoint obtiene información sobre los dispositivos y atributos personalizados. Puedeutilizar esta información para definir segmentos de público. En la consola, puede ver métricas sobre lospuntos de enlace y, si procede, los usuarios tienen ID de usuario asignados.

A continuación, siga los pasos que se indican en Notificación de eventos en una aplicación (p. 138) paraactualizar la aplicación de tal forma que notifique los datos de uso.

Notificación de eventos en una aplicaciónPuede utilizar los AWS Mobile SDK o la API de eventos de Amazon Pinpoint en la aplicación móvil oweb para notificar los datos de uso o eventos a Amazon Pinpoint. Puede notificar eventos para capturarinformación como las horas de las sesiones de la aplicación, el comportamiento de compra de los usuarios,los intentos de inicio de sesión o cualquier tipo de evento personalizado que necesite.

Una vez que la aplicación notifique los eventos, podrá consultar los análisis en la consola de AmazonPinpoint. Los gráficos de la página Analytics (Análisis) proporcionan métricas para muchos aspectos decomportamiento de los usuarios. Para obtener más información, consulte Referencia de gráficos para elanálisis en Amazon Pinpoint en la Guía del usuario de Amazon Pinpoint.

Para analizar y almacenar sus datos de eventos fuera de Amazon Pinpoint, puede configurar AmazonPinpoint para transmitir en streaming los datos a Amazon Kinesis. Para obtener más información, consulteTransmisión en streaming de eventos de Amazon Pinpoint a Kinesis (p. 234).

Utilice los AWS Mobile SDK y las bibliotecas de JavaScript de AWS Amplify para llamar a la API deAmazon Pinpoint para que notifique los siguientes tipos de eventos:

Eventos de sesión

Indican cuándo y con qué frecuencia los usuarios abren y cierran la aplicación.

Después de que la aplicación notifique los eventos de sesión, use la página Analytics (Análisis) en laconsola de Amazon Pinpoint para ver los gráficos para Sessions (Sesiones), Daily active endpoints(Puntos de enlace activos diariamente), 7-day retention rate (Tasas de permanencia de 7 días), etc.

Eventos personalizados

Son eventos no estándar que se definen asignando un tipo de evento personalizado. Es posible añadirmétricas y atributos personalizados a un evento personalizado.

En la página Analytics (Análisis) de la consola, la pestaña Events (Eventos) muestra métricas paratodos los eventos personalizados notificados por la aplicación.

Eventos de monetización

Informan sobre los ingresos que genera la aplicación y el número de elementos que compran losusuarios.

138

Amazon Pinpoint Guía para desarrolladoresAntes de empezar

En la página Analytics (Análisis), la pestaña Revenue (Ingresos) muestra gráficos para Revenue(Ingresos), Paying users (Usuarios de pago), Units sold (Unidades vendidas), etc.

Eventos de autenticación

Indican la frecuencia con la que los usuarios se autentican en la aplicación.

En la página Analytics (Análisis), la pestaña Users (Usuarios) muestra gráficos para Sign-ins (Iniciosde sesión), Sign-ups (Inscripciones) y Authentication failures (Errores de autenticación).

Antes de empezarSi aún no lo ha hecho, haga lo siguiente:

• Integre la aplicación con AWS Amplify. Consulte Integración de los AWS Mobile SDK o la biblioteca deJavaScript en una aplicación (p. 136).

• Actualice la aplicación para registrar puntos de enlace. Consulte Registro de puntos de enlace en laaplicación (p. 137).

Notificación de eventos con los AWS Mobile SDK paraAndroid o iOSPuede permitir que una aplicación móvil notifique los eventos a Amazon Pinpoint mediante los AWS MobileSDK para iOS y Android.

Para obtener más información acerca de cómo actualizar la aplicación de tal forma que registre los eventosy se los envíe a Amazon Pinpoint, consulte las páginas siguientes de la documentación de AWS Amplify:

• Analytics en la documentación de iOS SDK• Analytics en la documentación de Android SDK

Notificación de eventos con la biblioteca de JavaScriptde AWS AmplifyPuede habilitar las aplicaciones de JavaScript y React Native de tal forma que notifiquen los eventos deuso de aplicaciones a Amazon Pinpoint mediante la biblioteca JavaScript de AWS Amplify. Para obtenermás información acerca de cómo actualizar la aplicación de tal forma que envíe los eventos a AmazonPinpoint, consulte Analytics en la documentación de AWS Amplify JavaScript.

Notificación de eventos mediante la API de AmazonPinpointPuede utilizar la API de Amazon Pinpoint o un SDK de AWS para enviar eventos a Amazon Pinpoint deforma masiva. Para obtener más información, consulte el artículo sobre eventos en la Referencia de la APIde Amazon Pinpoint.

Paso siguienteHa actualizado su aplicación para notificar eventos. A partir de ahora, cuando los usuarios interactúen conla aplicación, esta enviará datos de uso a Amazon Pinpoint. Puede ver estos datos en la consola, y puedetransmitirlos a Amazon Kinesis.

139

Amazon Pinpoint Guía para desarrolladoresGestión de notificaciones push

A continuación, actualice la aplicación para controlar las notificaciones push que envíe con AmazonPinpoint. Consulte Gestión de notificaciones push (p. 140).

Gestión de notificaciones pushLos siguientes temas describen cómo modificar una aplicación de Android o iOS para que reciba lasnotificaciones de inserción enviadas con Amazon Pinpoint.

Temas• Configuración de las notificaciones de inserción para Amazon Pinpoint (p. 140)• Gestión de notificaciones push (p. 141)

Configuración de las notificaciones de inserción paraAmazon PinpointCon el fin de configurar Amazon Pinpoint de tal forma que pueda enviar notificaciones de inserción (opush) a sus aplicaciones, antes debe proporcionar las credenciales que autorizan a Amazon Pinpointa enviar mensajes a su aplicación. Las credenciales que se proporcionan dependen del sistema denotificaciones de inserción utilizado:

• En el caso de las aplicaciones de iOS, se proporciona un certificado SSL, el cual se obtiene en el portalde Apple Developer. El certificado autoriza a Amazon Pinpoint a enviar mensajes a la aplicación a travésdel Apple Push Notification service.

• En el caso de las aplicaciones Android, debe proporcionar una clave de API de web, que se obtieneen la consola de Firebase. Estas credenciales autorizan a Amazon Pinpoint a enviar mensajes a laaplicación a través de Mensajería de la nube de Firebase.

Después de obtener las credenciales para un canal de notificaciones de inserción, es preciso crear unproyecto en Amazon Pinpoint y proporcionarle las credenciales del servicio de notificaciones de inserción.

Temas• Configuración de las notificaciones de inserción de iOS (p. 140)• Configuración de las notificaciones de inserción de Android (p. 141)• Crear un proyecto en Amazon Pinpoint (p. 141)

Configuración de las notificaciones de inserción de iOSLas notificaciones push para aplicaciones iOS se envían mediante el Apple Push Notification service(APNs). Para poder enviar notificaciones de inserción a dispositivos iOS, debe crear un ID de aplicaciónen el portal de Apple Developer y crear los certificados necesarios. Encontrará más información acerca decómo llevar a cabo estos pasos en Setting Up APNs for Push Notifications en la documentación del SDKde iOS.

Uso de tokens de APN

Como práctica recomendada, debe desarrollar la aplicación para que los tokens de dispositivo de losclientes se vuelvan a generar cuando se vuelva a instalar la aplicación.

Si un destinatario actualiza su dispositivo a una nueva versión principal de iOS (por ejemplo, de iOS 12a iOS 13) y, posteriormente, vuelve a instalar la aplicación, la aplicación genera un nuevo token. Si la

140

Amazon Pinpoint Guía para desarrolladoresGestión de notificaciones push

aplicación no actualiza el token, se utiliza el token más antiguo para enviar la notificación. Como resultado,Apple Push Notification Service (APN) rechaza la notificación, ya que el token no es válido. Cuando intentaenviar la notificación, recibe una notificación de error de mensaje de las APN.

Configuración de las notificaciones de inserción de AndroidLas notificaciones de inserción para aplicaciones Android se envían usando Mensajería de la nubede Firebase (FCM), que reemplaza a Mensajería de la nube de Google (GCM). Para poder enviarnotificaciones push a dispositivos Android, debe obtener credenciales de FCM. Puede utilizar lascredenciales para crear un proyecto de Android y lanzar una aplicación de muestra que pueda recibirnotificaciones push. Encontrará más información acerca de cómo llevar a cabo estos pasos en lassecciones Setting Up FCM/GCM for Push Notifications y Push Notifications de la documentación deAndroid SDK.

Crear un proyecto en Amazon PinpointEn Amazon Pinpoint, un proyecto es una colección de ajustes, datos, campañas y segmentos que seaplican para lograr un objetivo común. En la API de Amazon Pinpoint, proyectos también se denominanaplicaciones. En esta sección, se utiliza la palabra “proyecto” exclusivamente para referirse a esteconcepto.

Para iniciar el envío de notificaciones de inserción (o push) en Amazon Pinpoint, es preciso crear unproyecto. A continuación, hay que proporcionar las credenciales adecuadas para habilitar los canales denotificaciones de inserción que se desea utilizar.

Puede crear nuevos proyectos y configurar canales de notificaciones de inserción mediante la consola deAmazon Pinpoint. Para obtener más información, consulte Configuración de canales de inserción en móvilen Amazon Pinpoint en la Guía del usuario de Amazon Pinpoint.

También puede crear y configurar proyectos mediante la API de Amazon Pinpoint, AWS SDK o la AWSCommand Line Interface (AWS CLI). Para crear un proyecto, utilice el recurso Apps. Para configurarcanales de notificaciones de inserción, utilice los siguientes recursos:

• Canal de APN para enviar mensajes a los usuarios de dispositivos iOS mediante Apple Push Notificationservice.

• Canal de ADM para enviar mensajes a los usuarios de dispositivos Amazon Kindle Fire.• Canal de Baidu para enviar mensajes a los usuarios de Baidu.• Canal de GCM para enviar mensajes a los dispositivos Android mediante Mensajería de la nube de

Firebase (FCM), que reemplaza a Mensajería de la nube de Google (GCM).

Gestión de notificaciones pushDespués de obtener las credenciales que se requieren para enviar notificaciones de inserción, puedeactualizar sus aplicaciones de modo que puedan recibirlas. Para obtener más información, consulte lassecciones siguientes de la documentación de AWS Amplify:

• Mensajería de la nube de Firebase: Handling FCM/GCM Push Notifications• Apple Push Notification service: Add Amazon Pinpoint Targeted and Campaign Push Messaging• Amazon Device Messaging: Handling Amazon Device Messaging Push Notifications• Baidu Push: Handling Baidu Push Notifications

141

Amazon Pinpoint Guía para desarrolladoresAdición de puntos de enlace

Definir el público en Amazon PinpointEn Amazon Pinpoint, cada miembro de su público está representado por uno o varios puntos de enlace.Cuando se utiliza Amazon Pinpoint para enviar un mensaje, dirige el mensaje a los puntos de enlace querepresentan los miembros de su público de destino. Cada definición de punto de enlace incluye un destinode mensaje; por ejemplo, un token de dispositivo, dirección de correo electrónico o número de teléfono.También incluye datos acerca de los usuarios y sus dispositivos. Antes de analizar, segmentar o atraer asu público, el primer paso consiste en añadir puntos de enlace a su proyecto de Amazon Pinpoint.

Para añadir puntos de enlace, puede hacer lo siguiente:

• Integrar Amazon Pinpoint con su cliente de Android, iOS o JavaScript, de modo que los puntos de enlacese añadan de forma automática cuando los usuarios visiten su aplicación.

• Utilizar la API de Amazon Pinpoint para añadir puntos de enlace de manera individual o en lotes.• Importar definiciones de punto de enlace que se almacenan fuera de Amazon Pinpoint.

Después de añadir puntos de enlace, puede:

• Ver análisis sobre su público en la consola de Amazon Pinpoint.• Obtener más información sobre su público buscando o exportando datos de punto de enlace.• Definir los segmentos de público en función de los atributos de puntos de enlace, como, por ejemplo,

datos demográficos o intereses del usuario.• Atraer la atención del público objetivo con campañas de mensajería personalizadas.• Enviar mensajes directamente a listas de puntos de enlace.

Utilizar los temas de esta sección para agregar, actualizar y eliminar puntos de enlace utilizando la API deAmazon Pinpoint. Si desea añadir puntos de enlace automáticamente desde su cliente de Android, iOS oJavaScript, consulte Registro de puntos de enlace en la aplicación (p. 137) en su lugar.

Temas• Añadir puntos de enlace a Amazon Pinpoint (p. 142)• Asociación de usuarios a puntos de enlace de Amazon Pinpoint (p. 147)• Adición de un lote de puntos de enlace a Amazon Pinpoint (p. 151)• Importación de puntos de enlace en Amazon Pinpoint (p. 156)• Eliminación de puntos de enlace desde Amazon Pinpoint (p. 165)

Añadir puntos de enlace a Amazon PinpointUn punto de enlace representa un destino al que puede enviar mensajes —como un dispositivo móvil,número de teléfono o dirección de correo electrónico. Antes de poder enviar un mensaje a un miembro desu público, debe definir uno o varios puntos de enlace para esa persona.

Al definir un punto de enlace, debe especificar el canal y la dirección. El canal es el tipo de plataforma quese utiliza para enviar un mensaje al punto de enlace. Entre los ejemplos de canales se incluyen un serviciode notificación de inserción, SMS o correo electrónico. La dirección especifica dónde enviar mensajes alpunto de enlace, como, por ejemplo, un token de dispositivo, número de teléfono o dirección de correoelectrónico.

142

Amazon Pinpoint Guía para desarrolladoresEjemplos

Para añadir más detalles sobre el público, puede enriquecer los puntos de enlace con atributospersonalizados y estándar. Estos atributos podrían incluir datos acerca de los usuarios, sus preferencias,sus dispositivos, las versiones del cliente que utilizan o sus ubicaciones. Al añadir este tipo de datos a lospuntos de enlace, puede:

• Ver gráficos sobre su público en la consola de Amazon Pinpoint.• Segmentar el público en función de los atributos de puntos de enlace para que pueda enviar sus

mensajes al público de destino correcto.• Personalizar sus mensajes incorporando variables de mensajes que se sustituyen por valores de

atributos de punto de enlace.

Una aplicación móvil o cliente de JavaScript registra los puntos de enlace automáticamente si integraAmazon Pinpoint mediante los SDK de AWS Mobile o la biblioteca JavaScript de AWS Amplify. El clienteregistra un punto de enlace para cada usuario nuevo y actualiza los puntos de enlace para los usuariosrecurrentes. Para registrar puntos de enlace desde un cliente móvil o de JavaScript, consulte Registro depuntos de enlace en la aplicación (p. 137).

EjemplosLos siguientes ejemplos muestran cómo añadir un punto de enlace a un proyecto de Amazon Pinpoint. Elpunto de enlace representa a un miembro del público que vive en Seattle y utiliza un iPhone. Se puedeenviar un mensaje a esta persona a través de Apple Push Notification Service (APN). La dirección delpunto de enlace es token de dispositivo que proporciona APN.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Update Endpoint

Para añadir o actualizar un punto de enlace, utilice el comando update-endpoint:

$ aws pinpoint update-endpoint \> --application-id application-id \> --endpoint-id endpoint-id \> --endpoint-request file://endpoint-request-file.json

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en que añade o actualiza un punto deenlace.

• example-endpoint es el ID que está asignando a un nuevo punto de enlace o es el ID de un puntode enlace existente que está actualizando.

• endpoint-request-file.json es la ruta de archivo a un archivo JSON local que contiene la entrada parael parámetro --endpoint-request.

Example Archivo de solicitud de punto de enlace

El comando update-endpoint de ejemplo utiliza un archivo JSON como argumento para elparámetro --endpoint-request. Este archivo contiene una definición de punto de enlace similar ala siguiente:

{ "ChannelType": "APNS",

143

Amazon Pinpoint Guía para desarrolladoresEjemplos

"Address": "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f", "Attributes": { "interests": [ "technology", "music", "travel" ] }, "Metrics": { "technology_interest_level": 9.0, "music_interest_level": 6.0, "travel_interest_level": 4.0 }, "Demographic": { "AppVersion": "1.0", "Make": "apple", "Model": "iPhone", "ModelVersion": "8", "Platform": "ios", "PlatformVersion": "11.3.1", "Timezone": "America/Los_Angeles" }, "Location": { "Country": "US", "City": "Seattle", "PostalCode": "98121", "Latitude": 47.61, "Longitude": -122.33 }}

Para los atributos que puede utilizar para definir un punto de enlace, consulte el esquemaEndpointRequest en la Referencia de la API de Amazon Pinpoint.

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para añadir un punto de enlace, inicialice un objeto EndpointRequest y páselo al métodoupdateEndpoint del cliente AmazonPinpoint:

import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.*;import java.util.Arrays;

public class AddExampleEndpoint {

public static void main(String[] args) { final String USAGE = "\n" + "AddExampleEndpoint - Adds an example endpoint to an Amazon Pinpoint application." + "Usage: AddExampleEndpoint <applicationId>" + "Where:\n" + " applicationId - The ID of the Amazon Pinpoint application to add the example " + "endpoint to."; if (args.length < 1) {

144

Amazon Pinpoint Guía para desarrolladoresEjemplos

System.out.println(USAGE); System.exit(1); } String applicationId = args[0]; // The device token assigned to the user's device by Apple Push Notification service (APNs). String deviceToken = "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f"; // Initializes an endpoint definition with channel type and address. EndpointRequest wangXiulansIphoneEndpoint = new EndpointRequest() .withChannelType(ChannelType.APNS) .withAddress(deviceToken); // Adds custom attributes to the endpoint. wangXiulansIphoneEndpoint.addAttributesEntry("interests", Arrays.asList( "technology", "music", "travel")); // Adds custom metrics to the endpoint. wangXiulansIphoneEndpoint.addMetricsEntry("technology_interest_level", 9.0); wangXiulansIphoneEndpoint.addMetricsEntry("music_interest_level", 6.0); wangXiulansIphoneEndpoint.addMetricsEntry("travel_interest_level", 4.0); // Adds standard demographic attributes. wangXiulansIphoneEndpoint.setDemographic(new EndpointDemographic() .withAppVersion("1.0") .withMake("apple") .withModel("iPhone") .withModelVersion("8") .withPlatform("ios") .withPlatformVersion("11.3.1") .withTimezone("America/Los_Angeles")); // Adds standard location attributes. wangXiulansIphoneEndpoint.setLocation(new EndpointLocation() .withCountry("US") .withCity("Seattle") .withPostalCode("98121") .withLatitude(47.61) .withLongitude(-122.33)); // Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build(); // Updates or creates the endpoint with Amazon Pinpoint. UpdateEndpointResult result = pinpointClient.updateEndpoint(new UpdateEndpointRequest() .withApplicationId(applicationId) .withEndpointId("example_endpoint") .withEndpointRequest(wangXiulansIphoneEndpoint)); System.out.format("Update endpoint result: %s\n", result.getMessageBody().getMessage()); }}

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

145

Amazon Pinpoint Guía para desarrolladoresEjemplos

Example Solicitud PUT para punto de enlace

Para añadir un punto de enlace, emita una solicitud PUT al recurso Punto de enlace en el URIsiguiente:

/v1/apps/application-id/endpoints/endpoint-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en que añade o actualiza un punto deenlace.

• endpoint-id es el ID que está asignando a un nuevo punto de enlace o es el ID de un punto deenlace existente que está actualizando.

En su solicitud, incluya los encabezados necesarios y proporcione el JSON EndpointRequest comocuerpo:

PUT /v1/apps/application_id/endpoints/example_endpoint HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180415T182538ZContent-Type: application/jsonAccept: application/jsonX-Amz-Date: 20180428T004705ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180428/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{ "ChannelType": "APNS", "Address": "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f", "Attributes": { "interests": [ "technology", "music", "travel" ] }, "Metrics": { "technology_interest_level": 9.0, "music_interest_level": 6.0, "travel_interest_level": 4.0 }, "Demographic": { "AppVersion": "1.0", "Make": "apple", "Model": "iPhone", "ModelVersion": "8", "Platform": "ios", "PlatformVersion": "11.3.1", "Timezone": "America/Los_Angeles" }, "Location": { "Country": "US", "City": "Seattle", "PostalCode": "98121", "Latitude": 47.61, "Longitude": -122.33 }}

Si la solicitud se realiza correctamente, recibirá una respuesta similar a la siguiente:

146

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

{ "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72", "Message": "Accepted"}

Información relacionadaPara obtener más información acerca del recurso de punto de enlace en la API de Amazon Pinpoint,incluidos los métodos HTTP compatibles y los parámetros de solicitud, consulte el tema sobre puntos deenlace en la Referencia de la API de Amazon Pinpoint.

Para obtener más información sobre la personalización de mensajes con variables, consulte Variables delmensaje en la Guía del usuario de Amazon Pinpoint.

Para obtener información sobre las cuotas que se aplican a los puntos de enlace, como el número deatributos que puede asignar, consulte the section called “Cuotas de punto de enlace” (p. 413).

Asociación de usuarios a puntos de enlace deAmazon Pinpoint

Un punto de enlace puede incluir atributos que definen un usuario, que representa una persona de supúblico. Por ejemplo, un usuario puede representar a alguien que ha instalado su aplicación móvil oalguien que tenga una cuenta en su sitio web.

Puede definir un usuario especificando un ID de usuario único y, opcionalmente, atributos de usuariopersonalizados. Si alguien utiliza la aplicación en varios dispositivos o si se pueden enviar mensajes aesa persona en varias direcciones, puede asignar el mismo ID de usuario a varios puntos de enlace. Eneste caso, Amazon Pinpoint sincroniza los atributos de usuario entre los puntos de enlace. Por lo tanto, siagrega un atributo de usuario a un punto de enlace, Amazon Pinpoint añade dicho atributo a cada punto deenlace que incluye el mismo identificador de usuario.

Puede añadir atributos de usuario para realizar un seguimiento de los datos que se aplican a una personay no varía en función del dispositivo que la persona está utilizando. Por ejemplo, puede añadir atributospara el nombre de una persona, la edad o el estado de la cuenta.

Tip

Si la aplicación utiliza grupos de usuarios de Amazon Cognito para gestionar la autenticación delusuario, Amazon Cognito puede añadir ID de usuario y atributos a los puntos de enlace de formaautomática. Para el valor de ID de usuario de punto de enlace, Amazon Cognito asigna el valorsub que se ha asignado al usuario en el grupo de usuarios. Para obtener información sobre cómoañadir usuarios con Amazon Cognito, consulte Uso del análisis de Amazon Pinpoint con gruposde usuarios de Amazon Cognito en Guía para desarrolladores de Amazon Cognito.

Después de añadir definiciones de usuario a los puntos de enlace, tiene más opciones acerca de cómosegmentar su público. Puede definir un segmento en función de atributos de usuario o puede definir unsegmento importando una lista de ID de usuario. Cuando envía un mensaje a un segmento que se basaen usuarios, los destinos posibles incluyen todos los puntos de enlace asociados con cada usuario en elsegmento.

También tiene más opciones acerca de cómo enviar mensajes a su público. Puede utilizar una campañapara enviar mensajes a un segmento de usuarios o puede enviar un mensaje directamente a una lista deID de usuario. Para personalizar su mensaje, puede incluir variables de mensajes que se sustituyen porvalores de atributos de usuario.

147

Amazon Pinpoint Guía para desarrolladoresEjemplos

EjemplosLos siguientes ejemplos muestran cómo añadir una definición de usuario a un punto de enlace.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Update Endpoint

Para añadir un usuario a un punto de enlace, utilice el comando update-endpoint. Para el parámetro--endpoint-request, puede definir un nuevo punto de enlace, que puede incluir un usuario. Obien, para actualizar un punto de enlace existente, puede proporcionar solo los atributos que deseecambiar. En el siguiente ejemplo se añade un usuario a un punto de enlace existente proporcionandosolo los atributos de usuario:

$ aws pinpoint update-endpoint \> --application-id application-id \> --endpoint-id endpoint-id \> --endpoint-request file://endpoint-request-file.json

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en el que agrega o actualiza un puntode enlace.

• endpoint-id es el ID que asigna a un nuevo punto de enlace o el ID de un punto de enlaceexistente que está actualizando.

• endpoint-request-file.json es la ruta de archivo a un archivo JSON local que contiene laentrada para el parámetro --endpoint-request.

Example Archivo de solicitud de punto de enlace

El comando update-endpoint de ejemplo utiliza un archivo JSON como argumento para elparámetro --endpoint-request. Este archivo contiene una definición de usuario similar a lasiguiente:

{ "User": { "UserId": "example_user", "UserAttributes": { "name": [ "Wang", "Xiulan" ], "gender": [ "female" ], "age": [ "39" ] } }}

Para los atributos que puede utilizar para definir un usuario, consulte el objeto User en el esquemaEndpointRequest en la Referencia de la API de Amazon Pinpoint.

148

Amazon Pinpoint Guía para desarrolladoresEjemplos

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para añadir un usuario a un punto de enlace, inicialice un objeto EndpointRequest y páselo al métodoupdateEndpoint del cliente AmazonPinpoint. Puede utilizar este objeto para definir un nuevopunto de enlace, que puede incluir un usuario. O bien, para actualizar un punto de enlace existente,puede actualizar solo las propiedades que desee cambiar. En el siguiente ejemplo se añade unusuario a un punto de enlace existente añadiendo un objeto EndpointUser al objeto EndpointRequest:

import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.EndpointRequest;import com.amazonaws.services.pinpoint.model.EndpointUser;import com.amazonaws.services.pinpoint.model.UpdateEndpointRequest;import com.amazonaws.services.pinpoint.model.UpdateEndpointResult;

import java.util.Arrays;import java.util.Collections;

public class AddExampleUser {

public static void main(String[] args) {

final String USAGE = "\n" + "AddExampleUser - Adds a user definition to the specified Amazon Pinpoint endpoint." + "Usage: AddExampleUser <endpointId> <applicationId>" + "Where:\n" + " endpointId - The ID of the endpoint to add the user to." + " applicationId - The ID of the Amazon Pinpoint application that contains the endpoint.";

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String endpointId = args[0]; String applicationId = args[1];

// Creates a new user definition. EndpointUser wangXiulan = new EndpointUser().withUserId("example_user");

// Assigns custom user attributes. wangXiulan.addUserAttributesEntry("name", Arrays.asList("Wang", "Xiulan")); wangXiulan.addUserAttributesEntry("gender", Collections.singletonList("female")); wangXiulan.addUserAttributesEntry("age", Collections.singletonList("39"));

// Adds the user definition to the EndpointRequest that is passed to the Amazon Pinpoint client. EndpointRequest wangXiulansIphone = new EndpointRequest() .withUser(wangXiulan);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

149

Amazon Pinpoint Guía para desarrolladoresEjemplos

// Updates the specified endpoint with Amazon Pinpoint. UpdateEndpointResult result = pinpointClient.updateEndpoint(new UpdateEndpointRequest() .withEndpointRequest(wangXiulansIphone) .withApplicationId(applicationId) .withEndpointId(endpointId));

System.out.format("Update endpoint result: %s\n", result.getMessageBody().getMessage());

}}

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud PUT de punto de enlace con definición de usuario

Para añadir un usuario a un punto de enlace, emita una solicitud PUT al recurso Endpoint en el URIsiguiente:

/v1/apps/application-id/endpoints/endpoint-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en el que agrega o actualiza un puntode enlace.

• endpoint-id es el ID que asigna a un nuevo punto de enlace o el ID de un punto de enlaceexistente que está actualizando.

En su solicitud, incluya los encabezados necesarios y proporcione el JSON EndpointRequest comocuerpo. El cuerpo de la solicitud puede definir un nuevo punto de enlace, que puede incluir un usuario.O bien, para actualizar un punto de enlace existente, puede proporcionar solo los atributos que deseecambiar. En el siguiente ejemplo se añade un usuario a un punto de enlace existente proporcionandosolo los atributos de usuario:

PUT /v1/apps/application_id/endpoints/example_endpoint HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180415T182538ZContent-Type: application/jsonAccept: application/jsonAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180501/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{ "User": { "UserId": "example_user", "UserAttributes": { "name": [ "Wang", "Xiulan" ], "gender": [ "female" ], "age": [ "39"

150

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

] } }}

Si la solicitud se realiza correctamente, recibirá una respuesta similar a la siguiente:

{ "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72", "Message": "Accepted"}

Información relacionadaPara obtener más información acerca del recurso de punto de enlace en la API de Amazon Pinpoint,incluidos los métodos HTTP compatibles y los parámetros de solicitud, consulte el tema sobre puntos deenlace en la Referencia de la API de Amazon Pinpoint.

Para obtener más información sobre la personalización de mensajes con variables, consulte Variables delmensaje en la Guía del usuario de Amazon Pinpoint.

Para saber cómo definir un segmento mediante la importación de una lista de ID de usuario, consulteImportación de segmentos en la Guía del usuario de Amazon Pinpoint.

Para obtener información sobre cómo enviar un mensaje directo a un máximo de 100 ID de usuario,consulte el apartado sobre mensajes de usuario en la Referencia de la API de Amazon Pinpoint.

Para obtener información sobre las cuotas que se aplican a los puntos de enlace, incluido el número deatributos de usuario que puede asignar, consulte the section called “Cuotas de punto de enlace” (p. 413).

Adición de un lote de puntos de enlace a AmazonPinpoint

Puede añadir o actualizar varios puntos de enlace en una sola operación proporcionando los puntos deenlace en lotes. Cada solicitud de lote puede incluir hasta 100 definiciones de punto de enlace.

Si desea añadir o actualizar más de 100 puntos de enlace en una sola operación, consulte Importación depuntos de enlace en Amazon Pinpoint (p. 156) en su lugar.

EjemplosLos siguientes ejemplos muestran cómo añadir dos puntos de enlace a la vez incluyendo los puntos deenlace en una solicitud de lote.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Update Endpoints Batch

Para enviar una solicitud de lote de puntos de enlace, utilice el comando update-endpoints-batch:

151

Amazon Pinpoint Guía para desarrolladoresEjemplos

$ aws pinpoint update-endpoints-batch \> --application-id application-id \> --endpoint-batch-request file://endpoint_batch_request_file.json

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en el que agrega o actualiza lospuntos de enlace.

• endpoint_batch_request_file.json es la ruta de archivo a un archivo JSON local quecontiene la entrada para el parámetro --endpoint-batch-request.

Example Archivo de solicitud de lote de puntos de enlace

El comando update-endpoints-batch de ejemplo utiliza un archivo JSON como argumento parael parámetro --endpoint-request. Este archivo contiene un lote de definiciones de punto deenlace similar al siguiente:

{ "Item": [ { "ChannelType": "EMAIL", "Address": "[email protected]", "Attributes": { "interests": [ "music", "books" ] }, "Metrics": { "music_interest_level": 3.0, "books_interest_level": 7.0 }, "Id": "example_endpoint_1", "User": { "UserId": "example_user_1", "UserAttributes": { "name": [ "Richard", "Roe" ] } } }, { "ChannelType": "SMS", "Address": "+16145550100", "Attributes": { "interests": [ "cooking", "politics", "finance" ] }, "Metrics": { "cooking_interest_level": 5.0, "politics_interest_level": 8.0, "finance_interest_level": 4.0 }, "Id": "example_endpoint_2", "User": { "UserId": "example_user_2",

152

Amazon Pinpoint Guía para desarrolladoresEjemplos

"UserAttributes": { "name": [ "Mary", "Major" ] } } } ]}

Para los atributos que puede utilizar para definir un lote de puntos de enlace, consulte el esquemaEndpointBatchRequest en la Referencia de la API de Amazon Pinpoint.

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para enviar una solicitud de lote de puntos de enlace, inicialice un objeto EndpointBatchRequesty páselo al método updateEndpointsBatch del cliente AmazonPinpoint. En el siguiente ejemplo,se rellena un objeto EndpointBatchRequest con dos objetos EndpointBatchItem:

import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.ChannelType;import com.amazonaws.services.pinpoint.model.EndpointBatchItem;import com.amazonaws.services.pinpoint.model.EndpointBatchRequest;import com.amazonaws.services.pinpoint.model.EndpointUser;import com.amazonaws.services.pinpoint.model.UpdateEndpointsBatchRequest;import com.amazonaws.services.pinpoint.model.UpdateEndpointsBatchResult;

import java.util.Arrays;

public class AddExampleEndpoints {

public static void main(String[] args) {

final String USAGE = "\n" + "AddExampleEndpoints - Adds example endpoints to an Amazon Pinpoint application." + "Usage: AddExampleEndpoints <applicationId>" + "Where:\n" + " applicationId - The ID of the Amazon Pinpoint application to add the example endpoints to.";

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String applicationId = args[0];

// Initializes an endpoint definition with channel type, address, and ID. EndpointBatchItem richardRoesEmailEndpoint = new EndpointBatchItem() .withChannelType(ChannelType.EMAIL) .withAddress("[email protected]") .withId("example_endpoint_1");

153

Amazon Pinpoint Guía para desarrolladoresEjemplos

// Adds custom attributes to the endpoint. richardRoesEmailEndpoint.addAttributesEntry("interests", Arrays.asList( "music", "books"));

// Adds custom metrics to the endpoint. richardRoesEmailEndpoint.addMetricsEntry("music_interest_level", 3.0); richardRoesEmailEndpoint.addMetricsEntry("books_interest_level", 7.0);

// Initializes a user definition with a user ID. EndpointUser richardRoe = new EndpointUser().withUserId("example_user_1");

// Adds custom user attributes. richardRoe.addUserAttributesEntry("name", Arrays.asList("Richard", "Roe"));

// Adds the user definition to the endpoint. richardRoesEmailEndpoint.setUser(richardRoe);

// Initializes an endpoint definition with channel type, address, and ID. EndpointBatchItem maryMajorsSmsEndpoint = new EndpointBatchItem() .withChannelType(ChannelType.SMS) .withAddress("+16145550100") .withId("example_endpoint_2");

// Adds custom attributes to the endpoint. maryMajorsSmsEndpoint.addAttributesEntry("interests", Arrays.asList( "cooking", "politics", "finance"));

// Adds custom metrics to the endpoint. maryMajorsSmsEndpoint.addMetricsEntry("cooking_interest_level", 5.0); maryMajorsSmsEndpoint.addMetricsEntry("politics_interest_level", 8.0); maryMajorsSmsEndpoint.addMetricsEntry("finance_interest_level", 4.0);

// Initializes a user definition with a user ID. EndpointUser maryMajor = new EndpointUser().withUserId("example_user_2");

// Adds custom user attributes. maryMajor.addUserAttributesEntry("name", Arrays.asList("Mary", "Major"));

// Adds the user definition to the endpoint. maryMajorsSmsEndpoint.setUser(maryMajor);

// Adds multiple endpoint definitions to a single request object. EndpointBatchRequest endpointList = new EndpointBatchRequest() .withItem(richardRoesEmailEndpoint) .withItem(maryMajorsSmsEndpoint);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

// Updates or creates the endpoints with Amazon Pinpoint. UpdateEndpointsBatchResult result = pinpointClient.updateEndpointsBatch( new UpdateEndpointsBatchRequest() .withApplicationId(applicationId) .withEndpointBatchRequest(endpointList));

System.out.format("Update endpoints batch result: %s\n", result.getMessageBody().getMessage());

}

}

154

Amazon Pinpoint Guía para desarrolladoresEjemplos

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud PUT de puntos de enlace

Para enviar una solicitud de lote de puntos de enlace, emita una solicitud PUT al recurso Puntos deenlace en el URI siguiente:

/v1/apps/application-id/endpoints

Donde application-id es el ID del proyecto de Amazon Pinpoint en el que agrega o actualiza lospuntos de enlace.

En su solicitud, incluya los encabezados necesarios y proporcione el JSON EndpointBatchRequestcomo cuerpo:

PUT /v1/apps/application_id/endpoints HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonX-Amz-Date: 20180501T184948ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180501/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{ "Item": [ { "ChannelType": "EMAIL", "Address": "[email protected]", "Attributes": { "interests": [ "music", "books" ] }, "Metrics": { "music_interest_level": 3.0, "books_interest_level": 7.0 }, "Id": "example_endpoint_1", "User": { "UserId": "example_user_1", "UserAttributes": { "name": [ "Richard", "Roe" ] } } }, { "ChannelType": "SMS", "Address": "+16145550100", "Attributes": { "interests": [ "cooking", "politics",

155

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

"finance" ] }, "Metrics": { "cooking_interest_level": 5.0, "politics_interest_level": 8.0, "finance_interest_level": 4.0 }, "Id": "example_endpoint_2", "User": { "UserId": "example_user_2", "UserAttributes": { "name": [ "Mary", "Major" ] } } } ]}

Si la solicitud se realiza correctamente, recibirá una respuesta similar a la siguiente:

{ "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72", "Message": "Accepted"}

Información relacionadaPara obtener más información acerca del recurso de punto de enlace en la API de Amazon Pinpoint,incluidos los métodos HTTP compatibles y los parámetros de solicitud, consulte Punto de enlace en laReferencia de la API de Amazon Pinpoint.

Importación de puntos de enlace en AmazonPinpoint

Puede añadir o actualizar puntos de enlace a gran escala importándolos desde un bucket de AmazonS3. La importación de puntos de enlace resulta útil si tiene registros sobre su público fuera de AmazonPinpoint y desea añadir esta información a un proyecto de Amazon Pinpoint. En este caso, debería hacerlo siguiente:

1. Crear definiciones de punto de enlace basadas en sus propios datos de público.2. Guardar estas definiciones de punto de enlace en uno o más archivos y cargar los archivos en un

bucket de Amazon S3.3. Añadir los puntos de enlace a su proyecto de Amazon Pinpoint importándolos desde el bucket.

Cada trabajo de importación puede transferir hasta 1 GB de datos. En un trabajo típico, en el que cadapunto de enlace tiene 4 KB o menos, puede importar en torno a 250 000 puntos de enlace. Puede ejecutarhasta dos trabajos de importación simultáneos por cuenta de AWS. Si necesita más ancho de banda parasus trabajos de importación, puede enviar una solicitud de aumento de cuota de servicio a AWS Support.Para obtener más información, consulte Solicitud de aumento de cuota (p. 420).

156

Amazon Pinpoint Guía para desarrolladoresAntes de empezar

Antes de empezarPara poder importar los puntos de enlace, son precisos los siguientes recursos en su cuenta de AWS:

• Un bucket de Amazon S3. Para crear un bucket, consulte la sección Creación de un bucket en la Guíade introducción a Amazon Simple Storage Service.

• Una función de AWS Identity and Access Management (IAM) que conceda a Amazon Pinpoint permisosde lectura para su bucket de Amazon S3. Para crear la función, consulte Función de IAM para importarpuntos de enlace o segmentos (p. 391).

EjemplosLos siguientes ejemplos muestran cómo añadir definiciones de punto de enlace a su bucket de Amazon S3y, a continuación, importar dichos puntos de enlace en un proyecto de Amazon Pinpoint.

Archivos con definiciones de puntos de enlaceLos archivos que agrega a su bucket de Amazon S3 pueden contener definiciones de punto de enlaceen formato CSV o JSON delimitado por saltos de línea. Para los atributos que puede utilizar para definirpuntos de enlace, consulte el esquema JSON EndpointRequest en la Referencia de la API de AmazonPinpoint.

CSV

Puede importar puntos de enlace definidos en un archivo CSV, como se muestra en el siguienteejemplo:

ChannelType,Address,Location.Country,Demographic.Platform,Demographic.Make,User.UserIdSMS,2065550182,CAN,Android,LG,example-user-id-1APNS,1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f,USA,iOS,Apple,example-user-id-2EMAIL,[email protected],USA,iOS,Apple,example-user-id-2

La primera línea es el encabezado, que contiene los atributos del punto de enlace. Especifique losatributos anidados utilizando la notación de puntos, como en Location.Country.

En las líneas siguientes se definen los puntos de enlace mediante la inclusión de valores para cadauno de los atributos en el encabezado.

Para incluir una coma, un salto de línea o comillas dobles en un valor, escriba el valor entre comillasdobles, por ejemplo, "aaa,bbb". Para obtener más información sobre el formato CSV, consulte RFC4180 Common Format and MIME Type for Comma-Separated Values (CSV) Files (Formato comúnRCF 4180 y tipo MIME para archivos de valores separados por comas [CSV]).

JSON

Puede importar puntos de enlace definidos en un archivo JSON delimitado por saltos de línea, comose muestra en el siguiente ejemplo:

{"ChannelType":"SMS","Address":"2065550182","Location":{"Country":"CAN"},"Demographic":{"Platform":"Android","Make":"LG"},"User":{"UserId":"example-user-id-1"}}{"ChannelType":"APNS","Address":"1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}{"ChannelType":"EMAIL","Address":"[email protected]","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}

157

Amazon Pinpoint Guía para desarrolladoresEjemplos

En este formato, cada línea es un objeto JSON completo que contiene una definición de punto deenlace individual.

Solicitud de trabajo de importaciónLos siguientes ejemplos muestran cómo añadir definiciones de puntos de enlace a Amazon S3 cargandoun archivo local en un bucket. A continuación, los ejemplos importan las definiciones de puntos de enlaceen un proyecto de Amazon Pinpoint.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando CP de S3

Para cargar un archivo local en un bucket de Amazon S3, utilice el comando cp de Amazon S3:

$ aws s3 cp ./endpoints-file s3://bucket-name/prefix/

Donde:

• ./endpoints-file es la ruta de archivo a un archivo local que contiene definiciones de punto de enlace.• bucket-name/prefix es el nombre de su bucket de Amazon S3 y, opcionalmente, un prefijo que le

ayuda a organizar los objetos en su bucket de forma jerárquica. Por ejemplo, un prefijo útil puedeser pinpoint/imports/endpoints/.

Example Comando Create Import Job

Para importar las definiciones de puntos de enlace desde un bucket de Amazon S3, utilice el comandocreate-import-job:

$ aws pinpoint create-import-job \> --application-id application-id \> --import-job-request \> S3Url=s3://bucket-name/prefix/key,\> RoleArn=iam-import-role-arn,\> Format=format,\> RegisterEndpoints=true

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en el que está importando los puntos deenlace.

• bucket-name/prefix/key es la ubicación en Amazon S3 que contiene uno o más objetos queimportar. La ubicación puede finalizar con la clave para un objeto individual o puede terminar con unprefijo que califica varios objetos.

• iam-import-role-arn es el nombre de recurso de Amazon (ARN) de una función de IAM que concedea Amazon Pinpoint acceso de lectura al bucket.

• format puede ser JSON o bien CSV, en función del formato que haya utilizado para definir los puntosde enlace. Si la ubicación de Amazon S3 incluye varios objetos de formatos mixtos, AmazonPinpoint solo importa los objetos que coinciden con el formato especificado.

La respuesta incluye detalles acerca del trabajo de importación:

158

Amazon Pinpoint Guía para desarrolladoresEjemplos

{ "ImportJobResponse": { "CreationDate": "2018-05-24T21:26:33.995Z", "Definition": { "DefineSegment": false, "ExternalId": "463709046829", "Format": "JSON", "RegisterEndpoints": true, "RoleArn": "iam-import-role-arn", "S3Url": "s3://bucket-name/prefix/key" }, "Id": "d5ecad8e417d498389e1d5b9454d4e0c", "JobStatus": "CREATED", "Type": "IMPORT" }}

La respuesta proporciona el ID de trabajo con el atributo Id. Puede utilizar este ID para comprobar elestado actual del trabajo de importación.

Example Comando Get Import Job

Para comprobar el estado actual de un trabajo de importación, utilice el comando get-import-job:

$ aws pinpoint get-import-job \> --application-id application-id \> --job-id job-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint para el que se inició el trabajo deimportación.

• job-id es el ID del trabajo de importación que está comprobando.

La respuesta a este comando ofrece el estado actual del trabajo de importación:

{ "ImportJobResponse": { "ApplicationId": "application-id", "CompletedPieces": 1, "CompletionDate": "2018-05-24T21:26:45.308Z", "CreationDate": "2018-05-24T21:26:33.995Z", "Definition": { "DefineSegment": false, "ExternalId": "463709046829", "Format": "JSON", "RegisterEndpoints": true, "RoleArn": "iam-import-role-arn", "S3Url": "s3://s3-bucket-name/prefix/endpoint-definitions.json" }, "FailedPieces": 0, "Id": "job-id", "JobStatus": "COMPLETED", "TotalFailures": 0, "TotalPieces": 1, "TotalProcessed": 3, "Type": "IMPORT" }}

159

Amazon Pinpoint Guía para desarrolladoresEjemplos

La respuesta proporciona el estado de trabajo con el atributo JobStatus.

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para cargar un archivo con definiciones de puntos de enlace en Amazon S3, utilice el métodoputObject del cliente AmazonS3.

Para importar los puntos de enlace en un proyecto de Amazon Pinpoint, inicialice un objetoCreateImportJobRequest. A continuación, pase este objeto al método createImportJob delcliente AmazonPinpoint.

package com.amazonaws.examples.pinpoint;

import com.amazonaws.AmazonServiceException;import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.CreateImportJobRequest;import com.amazonaws.services.pinpoint.model.CreateImportJobResult;import com.amazonaws.services.pinpoint.model.Format;import com.amazonaws.services.pinpoint.model.GetImportJobRequest;import com.amazonaws.services.pinpoint.model.GetImportJobResult;import com.amazonaws.services.pinpoint.model.ImportJobRequest;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.AmazonS3Exception;import java.io.File;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.concurrent.TimeUnit;

public class ImportEndpoints {

public static void main(String[] args) {

final String USAGE = "\n" + "ImportEndpoints - Adds endpoints to an Amazon Pinpoint application by: \n" + "1.) Uploading the endpoint definitions to an Amazon S3 bucket. \n" + "2.) Importing the endpoint definitions from the bucket to an Amazon Pinpoint " + "application.\n\n" + "Usage: ImportEndpoints <endpointsFileLocation> <s3BucketName> <iamImportRoleArn> " + "<applicationId>\n\n" + "Where:\n" + " endpointsFileLocation - The relative location of the JSON file that contains the " + "endpoint definitions.\n" + " s3BucketName - The name of the Amazon S3 bucket to upload the JSON file to. If the " + "bucket doesn't exist, a new bucket is created.\n" + " iamImportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint read " + "permissions to the S3 bucket.\n" + " applicationId - The ID of the Amazon Pinpoint application to add the endpoints to.";

160

Amazon Pinpoint Guía para desarrolladoresEjemplos

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String endpointsFileLocation = args[0]; String s3BucketName = args[1]; String iamImportRoleArn = args[2]; String applicationId = args[3];

Path endpointsFilePath = Paths.get(endpointsFileLocation); File endpointsFile = new File(endpointsFilePath.toAbsolutePath().toString()); uploadToS3(endpointsFile, s3BucketName);

importToPinpoint(endpointsFile.getName(), s3BucketName, iamImportRoleArn, applicationId);

}

private static void uploadToS3(File endpointsFile, String s3BucketName) {

// Initializes Amazon S3 client. final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

// Checks whether the specified bucket exists. If not, attempts to create one. if (!s3.doesBucketExistV2(s3BucketName)) { try { s3.createBucket(s3BucketName); System.out.format("Created S3 bucket %s.\n", s3BucketName); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); System.exit(1); } }

// Uploads the endpoints file to the bucket. String endpointsFileName = endpointsFile.getName(); System.out.format("Uploading %s to S3 bucket %s . . .\n", endpointsFileName, s3BucketName); try { s3.putObject(s3BucketName, "imports/" + endpointsFileName, endpointsFile); System.out.println("Finished uploading to S3."); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }

private static void importToPinpoint(String endpointsFileName, String s3BucketName, String iamImportRoleArn, String applicationId) {

// The S3 URL that Amazon Pinpoint requires to find the endpoints file. String s3Url = "s3://" + s3BucketName + "/imports/" + endpointsFileName;

// Defines the import job that Amazon Pinpoint runs. ImportJobRequest importJobRequest = new ImportJobRequest() .withS3Url(s3Url) .withRegisterEndpoints(true) .withRoleArn(iamImportRoleArn) .withFormat(Format.JSON); CreateImportJobRequest createImportJobRequest = new CreateImportJobRequest() .withApplicationId(applicationId) .withImportJobRequest(importJobRequest);

// Initializes the Amazon Pinpoint client.

161

Amazon Pinpoint Guía para desarrolladoresEjemplos

AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

System.out.format("Importing endpoints in %s to Amazon Pinpoint application %s . . .\n", endpointsFileName, applicationId);

try {

// Runs the import job with Amazon Pinpoint. CreateImportJobResult importResult = pinpointClient.createImportJob(createImportJobRequest);

String jobId = importResult.getImportJobResponse().getId(); GetImportJobResult getImportJobResult = null; String jobStatus = null;

// Checks the job status until the job completes or fails. do { getImportJobResult = pinpointClient.getImportJob(new GetImportJobRequest() .withJobId(jobId) .withApplicationId(applicationId)); jobStatus = getImportJobResult.getImportJobResponse().getJobStatus(); System.out.format("Import job %s . . .\n", jobStatus.toLowerCase()); TimeUnit.SECONDS.sleep(3); } while (!jobStatus.equals("COMPLETED") && !jobStatus.equals("FAILED"));

if (jobStatus.equals("COMPLETED")) { System.out.println("Finished importing endpoints."); } else { System.err.println("Failed to import endpoints."); System.exit(1); }

// Checks for entries that failed to import. // getFailures provides up to 100 of the first failed entries for the job, if any exist. List<String> failedEndpoints = getImportJobResult.getImportJobResponse().getFailures(); if (failedEndpoints != null) { System.out.println("Failed to import the following entries:"); for (String failedEndpoint : failedEndpoints) { System.out.println(failedEndpoint); } }

} catch (AmazonServiceException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); }

}

}

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud PUT Object de S3

Para añadir las definiciones de puntos de enlace a un bucket, utilice la operación PUT Object deAmazon S3 y proporcione las definiciones del punto de enlace como cuerpo:

162

Amazon Pinpoint Guía para desarrolladoresEjemplos

PUT /prefix/key HTTP/1.1Content-Type: text/plainAccept: application/jsonHost: bucket-name.s3.amazonaws.comX-Amz-Content-Sha256: c430dc094b0cec2905bc88d96314914d058534b14e2bc6107faa9daa12fdff2dX-Amz-Date: 20180605T184132ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/us-east-1/s3/aws4_request, SignedHeaders=accept;cache-control;content-length;content-type;host;postman-token;x-amz-content-sha256;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{"ChannelType":"SMS","Address":"2065550182","Location":{"Country":"CAN"},"Demographic":{"Platform":"Android","Make":"LG"},"User":{"UserId":"example-user-id-1"}}{"ChannelType":"APNS","Address":"1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}{"ChannelType":"EMAIL","Address":"[email protected]","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}

Donde:

• /prefix/key es el prefijo y nombre de clave para el objeto que contendrá las definiciones de puntos deenlace después de la carga. Puede utilizar el prefijo para organizar sus objetos jerárquicamente. Porejemplo, un prefijo útil puede ser pinpoint/imports/endpoints/.

• bucket-name es el nombre del bucket de Amazon S3 al que está añadiendo las definiciones depuntos de enlace.

Example Solicitud POST de trabajo de importación

Para importar definiciones de puntos de enlace desde un bucket de Amazon S3, emita una solicitudPOST al recurso Import jobs. En su solicitud, incluya los encabezados necesarios y proporcione elJSON ImportJobRequest como cuerpo:

POST /v1/apps/application_id/jobs/import HTTP/1.1Content-Type: application/jsonAccept: application/jsonHost: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180605T214912ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-length;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{ "S3Url": "s3://bucket-name/prefix/key", "RoleArn": "iam-import-role-arn", "Format": "format", "RegisterEndpoints": true}

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint en el que está importando los puntos deenlace.

• bucket-name/prefix/key es la ubicación en Amazon S3 que contiene uno o más objetos queimportar. La ubicación puede finalizar con la clave para un objeto individual o puede terminar con unprefijo que califica varios objetos.

163

Amazon Pinpoint Guía para desarrolladoresEjemplos

• iam-import-role-arn es el nombre de recurso de Amazon (ARN) de una función de IAM que concedea Amazon Pinpoint acceso de lectura al bucket.

• format puede ser JSON o bien CSV, en función del formato que haya utilizado para definir los puntosde enlace. Si la ubicación de Amazon S3 incluye varios archivos de formatos mixtos, AmazonPinpoint solo importa los archivos que coincidan con el formato especificado.

Si la solicitud se realiza correctamente, recibirá una respuesta similar a la siguiente:

{ "Id": "a995ce5d70fa44adb563b7d0e3f6c6f5", "JobStatus": "CREATED", "CreationDate": "2018-06-05T21:49:15.288Z", "Type": "IMPORT", "Definition": { "S3Url": "s3://bucket-name/prefix/key", "RoleArn": "iam-import-role-arn", "ExternalId": "external-id", "Format": "JSON", "RegisterEndpoints": true, "DefineSegment": false }}

La respuesta proporciona el ID de trabajo con el atributo Id. Puede utilizar este ID para comprobar elestado actual del trabajo de importación.

Example Solicitud GET de trabajo de importación

Para comprobar el estado actual de un trabajo de importación, emita una solicitud GET al recursoImport Job:

GET /v1/apps/application_id/jobs/import/job_id HTTP/1.1Content-Type: application/jsonAccept: application/jsonHost: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180605T220744ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

Donde:

• application_id es el ID del proyecto de Amazon Pinpoint para el que se inició el trabajo deimportación.

• job_id es el ID del trabajo de importación que está comprobando.

Si la solicitud se realiza correctamente, recibirá una respuesta similar a la siguiente:

{ "ApplicationId": "application_id", "Id": "70a51b2cf442447492d2c8e50336a9e8", "JobStatus": "COMPLETED", "CompletedPieces": 1, "FailedPieces": 0, "TotalPieces": 1, "CreationDate": "2018-06-05T22:04:49.213Z", "CompletionDate": "2018-06-05T22:04:58.034Z",

164

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

"Type": "IMPORT", "TotalFailures": 0, "TotalProcessed": 3, "Definition": { "S3Url": "s3://bucket-name/prefix/key.json", "RoleArn": "iam-import-role-arn", "ExternalId": "external-id", "Format": "JSON", "RegisterEndpoints": true, "DefineSegment": false }}

La respuesta proporciona el estado de trabajo con el atributo JobStatus.

Información relacionadaPara obtener más información acerca del recurso Import Jobs en la API de Amazon Pinpoint, incluidoslos métodos HTTP compatibles y los parámetros de solicitud, consulte Trabajos de importación en laReferencia de la API de Amazon Pinpoint.

Eliminación de puntos de enlace desde AmazonPinpoint

Puede eliminar puntos de enlace cuando ya no desee enviar mensajes a un destino determinado —porejemplo si el destino deja de estar disponible o cuando un cliente cierra una cuenta.

EjemplosEn los siguientes ejemplos puede ver cómo eliminar un punto de enlace.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Delete Endpoint

Para eliminar un punto de enlace, utilice el comando delete-endpoint:

$ aws pinpoint delete-endpoint \> --application-id application-id \> --endpoint-id endpoint-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint que contiene el punto de enlace.• endpoint-id es el ID del punto de enlace que está eliminando.

La respuesta a este comando es la definición JSON del punto de enlace que eliminó.

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

165

Amazon Pinpoint Guía para desarrolladoresEjemplos

Example Code

Para eliminar un punto de enlace, utilice el método deleteEndpoint del cliente AmazonPinpoint.Proporcione un objeto DeleteEndpointRequest como argumento de método:

import com.amazonaws.AmazonServiceException;import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.DeleteEndpointRequest;import com.amazonaws.services.pinpoint.model.DeleteEndpointResult;

import java.util.Arrays;

public class DeleteEndpoints {

public static void main(String[] args) {

final String USAGE = "\n" + "DeleteEndpoints - Removes one or more endpoints from an " + "Amazon Pinpoint application.\n\n" +

"Usage: DeleteEndpoints <applicationId> <endpointId1> [endpointId2 ...]\n";

if (args.length < 2) { System.out.println(USAGE); System.exit(1); }

String applicationId = args[0]; String[] endpointIds = Arrays.copyOfRange(args, 1, args.length);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

try { // Deletes each of the specified endpoints with the Amazon Pinpoint client. for (String endpointId: endpointIds) { DeleteEndpointResult result = pinpointClient.deleteEndpoint(new DeleteEndpointRequest() .withEndpointId(endpointId) .withApplicationId(applicationId)); System.out.format("Deleted endpoint %s.\n", result.getEndpointResponse().getId()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }}

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud DELETE punto de enlace

Para eliminar un punto de enlace, emita una solicitud DELETE al recurso Punto de enlace:

DELETE /v1/apps/application-id/endpoints/endpoint-id HTTP/1.1

166

Amazon Pinpoint Guía para desarrolladoresEjemplos

Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonCache-Control: no-cache

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint que contiene el punto de enlace.• endpoint-id es el ID del punto de enlace que está eliminando.

La respuesta a esta solicitud es la definición JSON del punto de enlace que eliminó.

167

Amazon Pinpoint Guía para desarrolladoresBúsqueda de puntos de enlace

Acceso a los datos de público enAmazon Pinpoint

A medida que añade puntos de enlace a Amazon Pinpoint, aumenta como repositorio de datos de público.Estos datos se componen de:

• Los puntos de enlace que añade o actualiza utilizando la API de Amazon Pinpoint.• Los puntos de enlace que su código de cliente añade o actualiza a medida que los usuarios llegan a la

aplicación.

A medida que el público crece y cambia, también lo hacen los datos de punto de enlace. Para ver lainformación más reciente de que dispone Amazon Pinpoint acerca del público, puede buscar puntos deenlace de manera individual o puede exportar todos los puntos de enlace para un proyecto de AmazonPinpoint. Al visualizar sus datos de punto de enlace, puede aprender acerca de las características depúblico que registra en sus puntos de enlace como, por ejemplo:

• Los dispositivos y plataformas de sus usuarios.• Las zonas horarias de sus usuarios.• Las versiones de su aplicación que están instaladas en los dispositivos de los usuarios.• Las ubicaciones de los usuarios, como, por ejemplo, las ciudades o países.• Cualquier métrica o atributo personalizado que registre.

La consola de Amazon Pinpoint también proporciona análisis de datos demográficos y atributospersonalizados que se capturan en sus puntos de enlace.

Antes de poder buscar puntos de enlace, debe añadirlos a su proyecto de Amazon Pinpoint. Para añadirpuntos de enlace, consulte Definir el público en Amazon Pinpoint (p. 142).

Utilice los temas de esta sección para buscar o exportar puntos de enlace mediante la API de AmazonPinpoint.

Temas• Búsqueda de puntos de enlace con Amazon Pinpoint (p. 168)• Exportación de puntos de enlace desde Amazon Pinpoint (p. 172)• Listado de ID de puntos de enlace con Amazon Pinpoint (p. 180)

Búsqueda de puntos de enlace con AmazonPinpoint

Puede buscar los detalles de cualquier punto de enlace individual que se añadió a un proyecto de AmazonPinpoint. Estos detalles pueden incluir la dirección de destino de sus mensajes, el canal de mensajería,datos acerca del dispositivo del usuario, datos acerca de la ubicación del usuario y cualquier otro atributopersonalizado que registre en sus puntos de enlace.

168

Amazon Pinpoint Guía para desarrolladoresEjemplos

Para buscar un punto de enlace, necesita el ID del punto de enlace. Si no conoce el ID, puede obtener losdatos del punto de enlace exportándolo en su lugar. Para exportar puntos de enlace, consulte the sectioncalled “Exportación de puntos de enlace” (p. 172).

EjemplosEn los siguientes ejemplos puede ver cómo buscar un punto de enlace individual especificando su ID.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Get punto de enlace

Para buscar un punto de enlace, utilice el comando get-endpoint:

$ aws pinpoint get-endpoint \> --application-id application-id \> --endpoint-id endpoint-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint que contiene el punto de enlace.• endpoint-id es el ID del punto de enlace que está buscando.

La respuesta a este comando es la definición JSON del punto de enlace, como en el ejemplosiguiente:

{ "EndpointResponse": { "Address": "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f", "ApplicationId": "application-id", "Attributes": { "interests": [ "technology", "music", "travel" ] }, "ChannelType": "APNS", "CohortId": "63", "CreationDate": "2018-05-01T17:31:01.046Z", "Demographic": { "AppVersion": "1.0", "Make": "apple", "Model": "iPhone", "ModelVersion": "8", "Platform": "ios", "PlatformVersion": "11.3.1", "Timezone": "America/Los_Angeles" }, "EffectiveDate": "2018-05-07T19:03:29.963Z", "EndpointStatus": "ACTIVE", "Id": "example_endpoint", "Location": { "City": "Seattle", "Country": "US", "Latitude": 47.6, "Longitude": -122.3,

169

Amazon Pinpoint Guía para desarrolladoresEjemplos

"PostalCode": "98121" }, "Metrics": { "music_interest_level": 6.0, "travel_interest_level": 4.0, "technology_interest_level": 9.0 }, "OptOut": "ALL", "RequestId": "7f546cac-6858-11e8-adcd-2b5a07aab338", "User": { "UserAttributes": { "gender": [ "female" ], "name": [ "Wang", "Xiulan" ], "age": [ "39" ] }, "UserId": "example_user" } }}

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para buscar un punto de enlace, inicialice un objeto GetEndpointRequest. A continuación, paseeste objeto al método getEndpoint del cliente AmazonPinpoint:

import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.EndpointResponse;import com.amazonaws.services.pinpoint.model.GetEndpointRequest;import com.amazonaws.services.pinpoint.model.GetEndpointResult;import com.google.gson.FieldNamingPolicy;import com.google.gson.Gson;import com.google.gson.GsonBuilder;

public class LookUpEndpoint {

public static void main(String[] args) {

final String USAGE = "\n" + "LookUpEndpoint - Prints the definition of the endpoint that has the specified ID." + "Usage: LookUpEndpoint <applicationId> <endpointId>\n\n" +

"Where:\n" + " applicationId - The ID of the Amazon Pinpoint application that has the " + "endpoint." + " endpointId - The ID of the endpoint ";

170

Amazon Pinpoint Guía para desarrolladoresEjemplos

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String applicationId = args[0]; String endpointId = args[1];

// Specifies the endpoint that the Amazon Pinpoint client looks up. GetEndpointRequest request = new GetEndpointRequest() .withEndpointId(endpointId) .withApplicationId(applicationId);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

// Uses the Amazon Pinpoint client to get the endpoint definition. GetEndpointResult result = pinpointClient.getEndpoint(request); EndpointResponse endpoint = result.getEndpointResponse();

// Uses the Google Gson library to pretty print the endpoint JSON. Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) .setPrettyPrinting() .create(); String endpointJson = gson.toJson(endpoint);

System.out.println(endpointJson); }}

Para imprimir los datos de punto de enlace en un formato legible, en este ejemplo se utiliza labiblioteca GSON de Google para convertir el objeto EndpointResponse en una cadena JSON.

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud GET al punto de enlace

Para buscar un punto de enlace, emita una solicitud GET al recurso Punto de enlace:

GET /v1/apps/application_id/endpoints/endpoint_id HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonCache-Control: no-cache

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint que contiene el punto de enlace.• endpoint-id es el ID del punto de enlace que está buscando.

La respuesta a esta solicitud es la definición JSON del punto de enlace, como en el ejemplo siguiente:

{ "ChannelType": "APNS",

171

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

"Address": "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f", "EndpointStatus": "ACTIVE", "OptOut": "NONE", "RequestId": "b720cfa8-6924-11e8-aeda-0b22e0b0fa59", "Location": { "Latitude": 47.6, "Longitude": -122.3, "PostalCode": "98121", "City": "Seattle", "Country": "US" }, "Demographic": { "Make": "apple", "Model": "iPhone", "ModelVersion": "8", "Timezone": "America/Los_Angeles", "AppVersion": "1.0", "Platform": "ios", "PlatformVersion": "11.3.1" }, "EffectiveDate": "2018-06-06T00:58:19.865Z", "Attributes": { "interests": [ "technology", "music", "travel" ] }, "Metrics": { "music_interest_level": 6, "travel_interest_level": 4, "technology_interest_level": 9 }, "User": {}, "ApplicationId": "application_id", "Id": "example_endpoint", "CohortId": "39", "CreationDate": "2018-06-06T00:58:19.865Z"}

Información relacionadaPara obtener más información acerca del recurso punto de enlace en la API de Amazon Pinpoint, consultePunto de enlace en la Referencia de la API de Amazon Pinpoint.

Exportación de puntos de enlace desde AmazonPinpoint

Para obtener toda la información que Amazon Pinpoint tiene acerca del público, puede exportar lasdefiniciones de punto de enlace que pertenecen a un proyecto. Al exportar, Amazon Pinpoint coloca lasdefiniciones de punto de enlace en un bucket de Amazon S3 que especifique. La exportación de puntos deenlace resulta útil cuando desea:

• Ver los datos más recientes sobre puntos de enlace nuevos y existentes que la aplicación cliente registrócon Amazon Pinpoint.

• Sincronizar los datos de puntos de enlace en Amazon Pinpoint con su propio sistema de administraciónde las relaciones con el cliente (CRM).

172

Amazon Pinpoint Guía para desarrolladoresAntes de empezar

• Analizar o crear informes sobre datos de los clientes.

Antes de empezarPara poder exportar los puntos de enlace, son precisos los siguientes recursos en su cuenta de AWS:

• Un bucket de Amazon S3. Para crear un bucket, consulte la sección Creación de un bucket en la Guíade introducción a Amazon Simple Storage Service.

• Una función de AWS Identity and Access Management (IAM) que conceda a Amazon Pinpoint permisosde escritura para su bucket de Amazon S3. Para crear la función, consulte Función de IAM para exportarpuntos de enlace o segmentos (p. 392).

EjemplosLos siguientes ejemplos muestran cómo exportar puntos de enlace desde un proyecto de Amazon Pinpointy, a continuación, descargar esos puntos de enlace desde su bucket de Amazon S3.

AWS CLI

Puede utilizar Amazon Pinpoint ejecutando comandos con la AWS CLI.

Example Comando Create Export Job

Para exportar los puntos de enlace en su proyecto de Amazon Pinpoint, utilice el comando create-export-job:

$ aws pinpoint create-export-job \> --application-id application-id \> --export-job-request \> S3UrlPrefix=s3://bucket-name/prefix/,\> RoleArn=iam-export-role-arn

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint que contiene los puntos de enlace.• bucket-name/prefix/ es el nombre de su Amazon S3 y, opcionalmente, un prefijo que le ayuda

a organizar los objetos en su bucket de forma jerárquica. Por ejemplo, un prefijo útil puede serpinpoint/exports/endpoints/.

• iam-export-role-arn es el nombre de recurso de Amazon (ARN) de un rol de IAM que concedea Amazon Pinpoint acceso de escritura al bucket.

La respuesta a este comando ofrece información detallada sobre el trabajo de exportación:

{ "ExportJobResponse": { "CreationDate": "2018-06-04T22:04:20.585Z", "Definition": { "RoleArn": "iam-export-role-arn", "S3UrlPrefix": "s3://s3-bucket-name/prefix/" }, "Id": "7390e0de8e0b462380603c5a4df90bc4", "JobStatus": "CREATED", "Type": "EXPORT" }

173

Amazon Pinpoint Guía para desarrolladoresEjemplos

}

La respuesta proporciona el ID de trabajo con el atributo Id. Puede utilizar este ID para comprobar elestado actual del trabajo de exportación.

Example Comando Get Export Job

Para comprobar el estado actual de un trabajo de exportación, utilice el comando get-export-job:

$ aws pinpoint get-export-job \> --application-id application-id \> --job-id job-id

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint desde el que exportó los puntos deenlace.

• job-id es el ID del trabajo que está comprobando.

La respuesta a este comando ofrece el estado actual del trabajo de exportación:

{ "ExportJobResponse": { "ApplicationId": "application-id", "CompletedPieces": 1, "CompletionDate": "2018-05-08T22:16:48.228Z", "CreationDate": "2018-05-08T22:16:44.812Z", "Definition": {}, "FailedPieces": 0, "Id": "6c99c463f14f49caa87fa27a5798bef9", "JobStatus": "COMPLETED", "TotalFailures": 0, "TotalPieces": 1, "TotalProcessed": 215, "Type": "EXPORT" }}

La respuesta proporciona el estado de trabajo con el atributo JobStatus. Cuando el valor de estadodel trabajo es COMPLETED, puede obtener los puntos de enlace exportados desde su bucket deAmazon S3.

Example Comando CP de S3

Para descargar los puntos de enlace exportados, utilice el comando cp de Amazon S3:

$ aws s3 cp s3://bucket-name/prefix/key.gz /local/directory/

Donde:

• bucket-name/prefix/key es la ubicación del archivo .gz que Amazon Pinpoint agregó a subucket cuando exportó los puntos de enlace. Este archivo contiene las definiciones de punto deenlace exportadas.

• /local/directory/ es la ruta del archivo al directorio local donde desea descargar los puntos deenlace.

174

Amazon Pinpoint Guía para desarrolladoresEjemplos

AWS SDK for Java

Puede utilizar el API Amazon Pinpoint en sus aplicaciones Java con el cliente que se AWS SDK forJava proporciona.

Example Code

Para exportar puntos de enlace desde un proyecto de Amazon Pinpoint, inicialice un objetoCreateExportJobRequest. A continuación, pase este objeto al método createExportJob delcliente AmazonPinpoint.

Para descargar los puntos de enlace exportados desde Amazon Pinpoint, utilice el métodogetObject del cliente de AmazonS3.

import com.amazonaws.AmazonServiceException;import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.*;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.S3Object;import com.amazonaws.services.s3.model.S3ObjectInputStream;import com.amazonaws.services.s3.model.S3ObjectSummary;

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.nio.file.Path;import java.nio.file.Paths;import java.util.Date;import java.util.List;import java.util.concurrent.TimeUnit;import java.util.stream.Collectors;

public class ExportEndpoints {

public static void main(String[] args) {

final String USAGE = "\n" + "ExportEndpoints - Downloads endpoints from an Amazon Pinpoint application by: \n" + "1.) Exporting the endpoint definitions to an Amazon S3 bucket. \n" + "2.) Downloading the endpoint definitions to the specified file path.\n\n" +

"Usage: ExportEndpoints <s3BucketName> <iamExportRoleArn> <downloadDirectory> " + "<applicationId>\n\n" +

"Where:\n" + " s3BucketName - The name of the Amazon S3 bucket to export the endpoints files " + "to. If the bucket doesn't exist, a new bucket is created.\n" + " iamExportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint write " + "permissions to the S3 bucket.\n" + " downloadDirectory - The directory to download the endpoints files to.\n" + " applicationId - The ID of the Amazon Pinpoint application that has the " + "endpoints.";

175

Amazon Pinpoint Guía para desarrolladoresEjemplos

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String s3BucketName = args[0]; String iamExportRoleArn = args[1]; String downloadDirectory = args[2]; String applicationId = args[3];

// Exports the endpoints to Amazon S3 and stores the keys of the new objects. List<String> objectKeys = exportEndpointsToS3(s3BucketName, iamExportRoleArn, applicationId);

// Filters the keys to only those objects that have the endpoint definitions. // These objects have the .gz extension. List<String> endpointFileKeys = objectKeys .stream() .filter(o -> o.endsWith(".gz")) .collect(Collectors.toList());

// Downloads the exported endpoints files to the specified directory. downloadFromS3(s3BucketName, endpointFileKeys, downloadDirectory); }

public static List<String> exportEndpointsToS3(String s3BucketName, String iamExportRoleArn, String applicationId) {

// The S3 path that Amazon Pinpoint exports the endpoints to. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH_mm:ss.SSS_z"); String endpointsKeyPrefix = "exports/" + applicationId + "_" + dateFormat.format(new Date ()); String s3UrlPrefix = "s3://" + s3BucketName + "/" + endpointsKeyPrefix + "/";

// Defines the export job that Amazon Pinpoint runs. ExportJobRequest exportJobRequest = new ExportJobRequest() .withS3UrlPrefix(s3UrlPrefix) .withRoleArn(iamExportRoleArn); CreateExportJobRequest createExportJobRequest = new CreateExportJobRequest() .withApplicationId(applicationId) .withExportJobRequest(exportJobRequest);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

System.out.format("Exporting endpoints from Amazon Pinpoint application %s to Amazon S3 " + "bucket %s . . .\n", applicationId, s3BucketName);

List<String> objectKeys = null;

try { // Runs the export job with Amazon Pinpoint. CreateExportJobResult exportResult = pinpointClient.createExportJob(createExportJobRequest);

// Prints the export job status to the console while the job runs. String jobId = exportResult.getExportJobResponse().getId(); printExportJobStatus(pinpointClient, applicationId, jobId);

// Initializes the Amazon S3 client. AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

176

Amazon Pinpoint Guía para desarrolladoresEjemplos

// Lists the objects created by Amazon Pinpoint. objectKeys = s3Client .listObjectsV2(s3BucketName, endpointsKeyPrefix) .getObjectSummaries() .stream() .map(S3ObjectSummary::getKey) .collect(Collectors.toList());

} catch (AmazonServiceException e) { System.err.println(e.getMessage()); System.exit(1); }

return objectKeys; }

private static void printExportJobStatus(AmazonPinpoint pinpointClient, String applicationId, String jobId) {

GetExportJobResult getExportJobResult; String jobStatus;

try { // Checks the job status until the job completes or fails. do { getExportJobResult = pinpointClient.getExportJob(new GetExportJobRequest() .withJobId(jobId) .withApplicationId(applicationId)); jobStatus = getExportJobResult.getExportJobResponse().getJobStatus(); System.out.format("Export job %s . . .\n", jobStatus.toLowerCase()); TimeUnit.SECONDS.sleep(3); } while (!jobStatus.equals("COMPLETED") && !jobStatus.equals("FAILED"));

if (jobStatus.equals("COMPLETED")) { System.out.println("Finished exporting endpoints."); } else { System.err.println("Failed to export endpoints."); System.exit(1); }

// Checks for entries that failed to import. // getFailures provides up to 100 of the first failed entries for the job, if any exist. List<String> failedEndpoints = getExportJobResult.getExportJobResponse().getFailures(); if (failedEndpoints != null) { System.out.println("Failed to import the following entries:"); for (String failedEndpoint : failedEndpoints) { System.out.println(failedEndpoint); } } } catch (AmazonServiceException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } }

public static void downloadFromS3(String s3BucketName, List<String> objectKeys, String downloadDirectory) {

// Initializes the Amazon S3 client. AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

try {

177

Amazon Pinpoint Guía para desarrolladoresEjemplos

// Downloads each object to the specified file path. for (String key : objectKeys) { S3Object object = s3Client.getObject(s3BucketName, key); String endpointsFileName = key.substring(key.lastIndexOf("/")); Path filePath = Paths.get(downloadDirectory + endpointsFileName);

System.out.format("Downloading %s to %s . . .\n", filePath.getFileName(), filePath.getParent());

writeObjectToFile(filePath, object); } System.out.println("Download finished."); } catch (AmazonServiceException | NullPointerException e) { System.err.println(e.getMessage()); System.exit(1); }

}

private static void writeObjectToFile(Path filePath, S3Object object) {

// Writes the contents of the S3 object to a file. File endpointsFile = new File(filePath.toAbsolutePath().toString()); try (FileOutputStream fos = new FileOutputStream(endpointsFile); S3ObjectInputStream s3is = object.getObjectContent()) { byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); } }}

HTTP

Puede utilizar Amazon Pinpoint realizando solicitudes HTTP directamente a la API de REST.

Example Solicitud POST de Export Job

Para exportar los puntos de enlace de su proyecto de Amazon Pinpoint, emita una solicitud POST alrecurso Export Jobs:

POST /v1/apps/application_id/jobs/export HTTP/1.1Content-Type: application/jsonAccept: application/jsonHost: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180606T001238ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180606/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-length;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

{ "S3UrlPrefix": "s3://bucket-name/prefix", "RoleArn": "iam-export-role-arn"}

Donde:

178

Amazon Pinpoint Guía para desarrolladoresEjemplos

• application-id es el ID del proyecto de Amazon Pinpoint que contiene los puntos de enlace.• bucket-name/prefix es el nombre de su Amazon S3 y, opcionalmente, un prefijo que le ayuda

a organizar los objetos en su bucket de forma jerárquica. Por ejemplo, un prefijo útil puede serpinpoint/exports/endpoints/.

• iam-export-role-arn es el nombre de recurso de Amazon (ARN) de un rol de IAM que concedea Amazon Pinpoint acceso de escritura al bucket.

La respuesta a esta solicitud ofrece información detallada sobre el trabajo de exportación:

{ "Id": "611bdc54c75244bfa51fe7001ddb2e36", "JobStatus": "CREATED", "CreationDate": "2018-06-06T00:12:43.271Z", "Type": "EXPORT", "Definition": { "S3UrlPrefix": "s3://bucket-name/prefix", "RoleArn": "iam-export-role-arn" }}

La respuesta proporciona el ID de trabajo con el atributo Id. Puede utilizar este ID para comprobar elestado actual del trabajo de exportación.

Example Solicitud GET de Export Job

Para comprobar el estado actual de un trabajo de exportación, emita una solicitud GET al recursoExport Job:

GET /v1/apps/application_id/jobs/export/job_id HTTP/1.1Content-Type: application/jsonAccept: application/jsonHost: pinpoint.us-east-1.amazonaws.comX-Amz-Date: 20180606T002443ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180606/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170Cache-Control: no-cache

Donde:

• application-id es el ID del proyecto de Amazon Pinpoint desde el que exportó los puntos deenlace.

• job-id es el ID del trabajo que está comprobando.

La respuesta a esta solicitud ofrece el estado actual del trabajo de exportación:

{ "ApplicationId": "application_id", "Id": "job_id", "JobStatus": "COMPLETED", "CompletedPieces": 1, "FailedPieces": 0, "TotalPieces": 1, "CreationDate": "2018-06-06T00:12:43.271Z", "CompletionDate": "2018-06-06T00:13:01.141Z", "Type": "EXPORT", "TotalFailures": 0,

179

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

"TotalProcessed": 217, "Definition": {}}

La respuesta proporciona el estado de trabajo con el atributo JobStatus. Cuando el valor de estadodel trabajo es COMPLETED, puede obtener los puntos de enlace exportados desde su bucket deAmazon S3.

Información relacionadaPara obtener más información acerca del recurso Export Jobs en la API de Amazon Pinpoint, incluidoslos métodos HTTP compatibles y los parámetros de solicitud, consulte Trabajos de exportación en laReferencia de la API de Amazon Pinpoint.

Listado de ID de puntos de enlace con AmazonPinpoint

Para actualizar o eliminar un punto de enlace, necesita el ID del punto de enlace. Por lo tanto, si desearealizar estas operaciones en todos los puntos de enlace en un proyecto de Amazon Pinpoint, el primerpaso consiste en enumerar todos los ID de los puntos de enlace que pertenezcan a ese proyecto. Acontinuación, puede iterar en estos ID para, por ejemplo, añadir un atributo globalmente o eliminar todoslos puntos de enlace del proyecto.

En el siguiente ejemplo se utiliza la AWS SDK for Java y hace lo siguiente:

1. Llama al método exportEndpointsToS3 de ejemplo desde el código de ejemplo en Exportación depuntos de enlace desde Amazon Pinpoint (p. 172). Este método exporta las definiciones de punto deenlace desde un proyecto de Amazon Pinpoint. Las definiciones de punto de enlace se añaden comoarchivos gzip en un bucket de Amazon S3.

2. Descarga los archivos gzip exportados.3. Lee los archivos gzip y obtiene el ID del punto de enlace desde la definición JSON de cada punto de

enlace.4. Imprime los ID de punto de enlace a la consola.5. Se realiza una limpieza eliminando los archivos que Amazon Pinpoint ha añadido a Amazon S3.

import com.amazonaws.AmazonServiceException;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.DeleteObjectsRequest;import com.amazonaws.services.s3.model.S3Object;import com.google.gson.FieldNamingPolicy;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonObject;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;import java.util.zip.GZIPInputStream;

180

Amazon Pinpoint Guía para desarrolladoresListado de ID de puntos de enlace

public class ListEndpointIds {

public static void main(String[] args) {

final String USAGE = "\n" + "ListEndpointIds - Prints all of the endpoint IDs that belong to an Amazon " + "Pinpoint application. This program performs the following steps:\n\n" +

"1) Exports the endpoints to an Amazon S3 bucket.\n" + "2) Downloads the exported endpoints files from Amazon S3.\n" + "3) Parses the endpoints files to obtain the endpoint IDs and prints them.\n" + "4) Cleans up by deleting the objects that Amazon Pinpoint created in the S3 " + "bucket.\n\n" +

"Usage: ListEndpointIds <applicationId> <s3BucketName> <iamExportRoleArn>\n\n" +

"Where:\n" + " applicationId - The ID of the Amazon Pinpoint application that has the " + "endpoint.\n" + " s3BucketName - The name of the Amazon S3 bucket to export the JSON file to. If" + " the bucket doesn't exist, a new bucket is created.\n" + " iamExportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint write " + "permissions to the S3 bucket.";

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String applicationId = args[0]; String s3BucketName = args[1]; String iamExportRoleArn = args[2];

// Exports the endpoints to Amazon S3 and stores the keys of the new objects. List<String> objectKeys = ExportEndpoints.exportEndpointsToS3(s3BucketName, iamExportRoleArn, applicationId);

// Filters the keys to only those objects that have the endpoint definitions. // These objects have the .gz extension. List<String> endpointFileKeys = objectKeys .stream() .filter(o -> o.endsWith(".gz")) .collect(Collectors.toList());

// Gets the endpoint IDs from the exported endpoints files. List<String> endpointIds = getEndpointIds(s3BucketName, endpointFileKeys);

System.out.println("Endpoint IDs:");

for (String endpointId : endpointIds) { System.out.println("\t- " + endpointId); }

// Deletes the objects that Amazon Pinpoint created in the S3 bucket. deleteS3Objects(s3BucketName, objectKeys); }

181

Amazon Pinpoint Guía para desarrolladoresListado de ID de puntos de enlace

private static List<String> getEndpointIds(String s3bucketName, List<String> endpointFileKeys) {

List<String> endpointIds = new ArrayList<>();

// Initializes the Amazon S3 client. AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

// Gets the endpoint IDs from the exported endpoints files. try { for (String key : endpointFileKeys) { S3Object endpointFile = s3Client.getObject(s3bucketName, key); endpointIds.addAll(getEndpointIdsFromFile(endpointFile)); } } catch (AmazonServiceException e) { System.err.println(e.getMessage()); System.exit(1); }

return endpointIds; }

private static List<String> getEndpointIdsFromFile(S3Object endpointsFile) {

List<String> endpointIdsFromFile = new ArrayList<>();

// The Google Gson library is used to parse the exported endpoint JSON. Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) .create();

// Reads each endpoint entry in the file and adds the ID to the list. try (GZIPInputStream gzipInputStream = new GZIPInputStream(endpointsFile.getObjectContent()); BufferedReader reader = new BufferedReader(new InputStreamReader( gzipInputStream, "UTF-8"))) { String endpointString; while ((endpointString = reader.readLine()) != null) { JsonObject endpointJson = gson.fromJson(endpointString, JsonObject.class); endpointIdsFromFile.add(endpointJson .getAsJsonPrimitive("Id") .getAsString()); } } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }

return endpointIdsFromFile; }

private static void deleteS3Objects(String s3BucketName, List<String> keys) {

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();

String[] keysArray = keys.toArray(new String[keys.size()]); DeleteObjectsRequest request = new DeleteObjectsRequest(s3BucketName).withKeys(keysArray);

System.out.println("Deleting the following Amazon S3 objects created by Amazon Pinpoint:");

for (String key : keys) { System.out.println("\t- " + key); }

182

Amazon Pinpoint Guía para desarrolladoresListado de ID de puntos de enlace

try { s3Client.deleteObjects(request); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

System.out.println("Finished deleting objects."); }}

183

Amazon Pinpoint Guía para desarrolladoresCreación de segmentos

Creación de segmentosUn segmento de usuarios representa un subconjunto de los usuarios basado en ciertas característicascompartidas, como, por ejemplo, la forma en la que han usado recientemente la aplicación o quéplataforma de dispositivos utilizan. Un segmento designa qué usuarios reciben los mensajes enviadospor una campaña. Defina segmentos para llegar al público correcto cuando desee invitar a usuarios avolver a la aplicación, hacer ofertas especiales o aumentar de otro modo las compras de los usuarios y suimplicación.

Después de crear un segmento, puede utilizarlo en una o varias campañas. Una campaña envía mensajespersonalizados a los usuarios del segmento.

Para obtener más información, consulte Segmentos.

Temas• Creación de segmentos (p. 184)• Importación de segmentos (p. 185)• Personalización de segmentos con AWS Lambda (p. 188)

Creación de segmentosPara llegar al público previsto de una campaña, cree un segmento basado en los datos notificados por laaplicación. Por ejemplo, para llegar a los usuarios que no hayan usado la aplicación recientemente, puededefinir un segmento para los usuarios que no la hayan utilizado en los últimos 30 días.

Creación de segmentos con AWS SDK for JavaEl siguiente ejemplo muestra cómo crear un segmento con AWS SDK for Java.

import com.amazonaws.services.pinpoint.AmazonPinpointClient;import com.amazonaws.services.pinpoint.model.AttributeDimension;import com.amazonaws.services.pinpoint.model.AttributeType;import com.amazonaws.services.pinpoint.model.CreateSegmentRequest;import com.amazonaws.services.pinpoint.model.CreateSegmentResult;import com.amazonaws.services.pinpoint.model.RecencyDimension;import com.amazonaws.services.pinpoint.model.SegmentBehaviors;import com.amazonaws.services.pinpoint.model.SegmentDemographics;import com.amazonaws.services.pinpoint.model.SegmentDimensions;import com.amazonaws.services.pinpoint.model.SegmentLocation;import com.amazonaws.services.pinpoint.model.SegmentResponse;import com.amazonaws.services.pinpoint.model.WriteSegmentRequest;

import java.util.HashMap;import java.util.Map;

public class PinpointSegmentSample {

public SegmentResponse createSegment(AmazonPinpointClient client, String appId) { Map<String, AttributeDimension> segmentAttributes = new HashMap<>();

184

Amazon Pinpoint Guía para desarrolladoresImportación de segmentos

segmentAttributes.put("Team", new AttributeDimension().withAttributeType(AttributeType.INCLUSIVE).withValues("Lakers"));

SegmentBehaviors segmentBehaviors = new SegmentBehaviors(); SegmentDemographics segmentDemographics = new SegmentDemographics(); SegmentLocation segmentLocation = new SegmentLocation();

RecencyDimension recencyDimension = new RecencyDimension(); recencyDimension.withDuration("DAY_30").withRecencyType("ACTIVE"); segmentBehaviors.setRecency(recencyDimension);

SegmentDimensions dimensions = new SegmentDimensions() .withAttributes(segmentAttributes) .withBehavior(segmentBehaviors) .withDemographic(segmentDemographics) .withLocation(segmentLocation);

WriteSegmentRequest writeSegmentRequest = new WriteSegmentRequest() .withName("MySegment").withDimensions(dimensions);

CreateSegmentRequest createSegmentRequest = new CreateSegmentRequest() .withApplicationId(appId).withWriteSegmentRequest(writeSegmentRequest);

CreateSegmentResult createSegmentResult = client.createSegment(createSegmentRequest);

System.out.println("Segment ID: " + createSegmentResult.getSegmentResponse().getId());

return createSegmentResult.getSegmentResponse(); }

}

Cuando se ejecuta este ejemplo, se muestra lo siguiente en la ventana de la consola de su IDE:

Segment ID: 09cb2967a82b4a2fbab38fead8d1f4c4

Importación de segmentosCon Amazon Pinpoint, puede definir un segmento de usuarios mediante la importación de informaciónacerca de los puntos de enlace que pertenecen al segmento. Un punto de enlace es un único destinode mensajería, como un token de inserción en dispositivos móviles, un número de teléfono móvil o unadirección de correo electrónico.

La importación de segmentos resulta útil si ya se han creado segmentos de usuarios fuera de AmazonPinpoint, pero se desea conectar con los usuarios en campañas de Amazon Pinpoint.

Cuando se importa un segmento, Amazon Pinpoint obtiene los puntos de enlace del segmento desdeAmazon Simple Storage Service (Amazon S3). Antes de importar, se añaden los puntos de enlace aAmazon S3 y se crea una función de IAM que concede a Amazon Pinpoint acceso a Amazon S3. Acontinuación, se proporciona a Amazon Pinpoint la ubicación de Amazon S3 en la que se almacenan lospuntos de enlace y Amazon Pinpoint añade cada punto de enlace al segmento.

Para crear la función de IAM, consulte Función de IAM para importar puntos de enlace osegmentos (p. 391). Para obtener información sobre la importación de un segmento mediante la consolade Amazon Pinpoint, consulte Importación de segmentos en la Guía del usuario de Amazon Pinpoint.

185

Amazon Pinpoint Guía para desarrolladoresImportación de un segmento

Importación de un segmentoEn el siguiente ejemplo se muestra cómo importar un segmento mediante AWS SDK for Java.

import com.amazonaws.AmazonServiceException;import com.amazonaws.regions.Regions;import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.*;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder;import com.amazonaws.services.s3.model.AmazonS3Exception;import java.io.File;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.concurrent.TimeUnit;

public class ImportSegment {

public static void main(String[] args) {

final String USAGE = "\n" + "ImportSegment - Creates a segment by: \n" + "1.) Uploading the endpoint definitions that belong to the segment to an Amazon S3 bucket. \n" + "2.) Importing the endpoint definitions from the bucket to an Amazon Pinpoint application." + " Amazon Pinpoint creates a segment that has the specified name.\n\n" + "Usage: ImportSegment <endpointsFileLocation> <s3BucketName> <iamImportRoleArn> <segmentName> <applicationId>\n\n" + "Where:\n" + " endpointsFileLocation - The relative location of the JSON file that contains the endpoint definitions.\n" + " s3BucketName - The name of the Amazon S3 bucket to upload the JSON file to. If the bucket doesn't " + "exist, a new bucket is created.\n" + " iamImportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint read permissions so the S3 bucket.\n" + " segmentName - The name for the segment that you are creating or updating." + " applicationId - The ID of the Amazon Pinpoint application to add the endpoints to.";

if (args.length < 1) { System.out.println(USAGE); System.exit(1); }

String endpointsFileLocation = args[0]; String s3BucketName = args[1]; String iamImportRoleArn = args[2]; String segmentName = args[3]; String applicationId = args[4];

Path endpointsFilePath = Paths.get(endpointsFileLocation); File endpointsFile = new File(endpointsFilePath.toAbsolutePath().toString()); uploadToS3(endpointsFile, s3BucketName);

importSegment(endpointsFile.getName(), s3BucketName, iamImportRoleArn, segmentName, applicationId);

}

186

Amazon Pinpoint Guía para desarrolladoresImportación de un segmento

private static void uploadToS3(File endpointsFile, String s3BucketName) {

// Initializes Amazon S3 client. final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

// Checks whether the specified bucket exists. If not, attempts to create one. if (!s3.doesBucketExistV2(s3BucketName)) { try { s3.createBucket(s3BucketName); System.out.format("Created S3 bucket %s.\n", s3BucketName); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); System.exit(1); } }

// Uploads the endpoints file to the bucket. String endpointsFileName = endpointsFile.getName(); System.out.format("Uploading %s to S3 bucket %s . . .\n", endpointsFileName, s3BucketName); try { s3.putObject(s3BucketName, "imports/" + endpointsFileName, endpointsFile); System.out.println("Finished uploading to S3."); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }

private static void importSegment(String endpointsFileName, String s3BucketName, String iamImportRoleArn, String segmentName, String applicationId) {

// The S3 URL that Amazon Pinpoint requires to find the endpoints file. String s3Url = "s3://" + s3BucketName + "/imports/" + endpointsFileName;

// Defines the import job that Amazon Pinpoint runs. ImportJobRequest importJobRequest = new ImportJobRequest() .withS3Url(s3Url) .withFormat(Format.JSON) .withRoleArn(iamImportRoleArn) .withRegisterEndpoints(true) .withDefineSegment(true) .withSegmentName(segmentName); CreateImportJobRequest createImportJobRequest = new CreateImportJobRequest() .withApplicationId(applicationId) .withImportJobRequest(importJobRequest);

// Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build();

System.out.format("Creating segment %s with the endpoints in %s . . .\n", segmentName, endpointsFileName);

try {

// Runs the import job with Amazon Pinpoint. CreateImportJobResult importResult = pinpointClient.createImportJob(createImportJobRequest); String jobId = importResult.getImportJobResponse().getId();

// Checks the job status until the job completes or fails. GetImportJobResult getImportJobResult = null; String jobStatus = null; do {

187

Amazon Pinpoint Guía para desarrolladoresPersonalización de segmentos con AWS Lambda

getImportJobResult = pinpointClient.getImportJob(new GetImportJobRequest() .withJobId(jobId) .withApplicationId(applicationId)); jobStatus = getImportJobResult.getImportJobResponse().getJobStatus(); System.out.format("Import job %s . . .\n", jobStatus.toLowerCase()); if (jobStatus.equals("FAILED")) { System.err.println("Failed to import segment."); System.exit(1); } try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } } while (!jobStatus.equals("COMPLETED"));

System.out.println("Finished importing segment.");

// Checks for entries that failed to import. List<String> failedEndpoints = getImportJobResult.getImportJobResponse().getFailures(); if (failedEndpoints != null) { System.out.println("Failed to import the following entries:"); for (String failedEndpoint : failedEndpoints) { System.out.println(failedEndpoint); } }

} catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

}

}

Personalización de segmentos con AWS LambdaEsta es una documentación preliminar para una característica en versión de beta pública. Está sujeta acambios.

Puede usar AWS Lambda para adaptar cómo una campaña de Amazon Pinpoint atrae al público objetivo.Con AWS Lambda, puede modificar el segmento de campaña en el momento en que Amazon Pinpointenvía el mensaje de la campaña.

AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrarservidores. Puede empaquetar el código y cargarlo en Lambda como funciones de Lambda. Lambdaejecuta una función cuando se invoca la función, lo que se podría hacer de forma manual o automática enrespuesta a eventos. Para obtener más información, consulte la AWS Lambda Developer Guide.

Para asignar una función de Lambda a una campaña, defina la configuración CampaignHook de lacampaña mediante el recurso de campaña en la API de Amazon Pinpoint. Entre estos ajustes se incluye elnombre de la función de Lambda. También se incluye el modo CampaignHook, que establece si AmazonPinpoint recibe un valor de retorno de la función.

Las funciones de Lambda asignadas a una campaña se conocen como extensiones de Amazon Pinpoint.

188

Amazon Pinpoint Guía para desarrolladoresDatos del evento

Con la configuración CampaignHook definida, Amazon Pinpoint invoca automáticamente la función deLambda cuando ejecuta la campaña, antes de enviar el mensaje de la campaña. Cuando Amazon Pinpointinvoca la función, proporciona datos de eventos sobre el envío de mensajes. Estos datos incluyen elsegmento de la campaña, que es la lista de puntos de enlace a los que Amazon Pinpoint envía el mensaje.

Si el modo CampaignHook está establecido en FILTER, Amazon Pinpoint permite que la funciónmodifique y devuelva el segmento antes de enviar el mensaje. Por ejemplo, la función podría actualizarlas definiciones del punto de enlace con atributos que contienen datos de una fuente externa a AmazonPinpoint. O bien, la función podría filtrar el segmento quitando ciertos puntos de enlace dependiendo delas condiciones del código de la función. Una vez Amazon Pinpoint reciba el segmento modificado de lafunción, envía el mensaje a cada uno de los puntos de enlace del segmento utilizando el canal de entregade la campaña.

Al procesar sus segmentos con AWS Lambda, tiene más control sobre a quién le envía mensajes y loque contienen estos mensajes. Puede adaptar sus campañas en tiempo real, en el momento en que losmensajes de la campaña se envíen. Filtrar segmentos le permite atraer a subconjuntos de los segmentosdefinidos más concretamente. Agregar o actualizar los atributos de los puntos de enlace también permiteque haya nuevos datos disponibles para las variables de mensajes.

Note

También puede utilizar la configuración de CampaignHook para asignar una función de Lambdaque administre la entrega de mensajes. Este tipo de función resulta útil para la entrega demensajes a través de canales personalizadas que Amazon Pinpoint no admite, como, porejemplo, las plataformas de redes sociales. Para obtener más información, consulte Creación decanales personalizados con AWS Lambda (p. 342).

Para modificar los segmentos de la campaña con AWS Lambda, primero cree una función que procese losdatos de eventos que envíe Amazon Pinpoint y devuelva un segmento modificado. A continuación, autoricea Amazon Pinpoint a invocar la función asignando una política de función de Lambda. Por último, asigne lafunción a una o varias campañas definiendo configuraciones de CampaignHook.

Datos del eventoCuando Amazon Pinpoint invoca la función de Lambda, proporciona la siguiente carga como los datos deeventos:

{ "MessageConfiguration": {Message configuration} "ApplicationId": ApplicationId, "CampaignId": CampaignId, "TreatmentId": TreatmentId, "ActivityId": ActivityId, "ScheduledTime": Scheduled Time, "Endpoints": { EndpointId: {Endpoint definition} . . . }}

AWS Lambda transfiere los datos de eventos al código de la función. Los datos de eventos proporciona lossiguientes atributos:

• MessageConfiguration: tiene la misma estructura que el objeto DirectMessageConfigurationdel recurso de mensajes en la API de Amazon Pinpoint.

• ApplicationId – ID del proyecto de Amazon Pinpoint al que pertenece la campaña.• CampaignId: el ID de la campaña de Amazon Pinpoint para el que se invoca la función.• TreatmentId – ID de una variación de campaña utilizada para efectuar pruebas A/B.

189

Amazon Pinpoint Guía para desarrolladoresCreación de una función de Lambda

• ActivityId – ID de la actividad que está realizando la campaña.• ScheduledTime – Fecha y hora, en formato ISO 8601, en que se enviarán los mensajes de la

campaña.• Endpoints – una asignación que asocia los ID de los puntos de enlace con las definiciones de estos

últimos. Cada carga de datos de eventos contiene hasta 50 puntos de enlace. Si el segmento de lacampaña contiene más de 50 puntos de enlace, Amazon Pinpoint invoca la función reiteradamente, de50 en 50 puntos de enlace, hasta que se hayan procesado todos ellos.

Creación de una función de LambdaPara obtener información sobre cómo crear una función de Lambda, consulte Introducción en la AWSLambda Developer Guide. Al crear la función, recuerde que la entrega de mensajes produce un error enlas siguientes condiciones:

• La función de Lambda tarda más de 15 segundos en devolver el segmento modificado.• Amazon Pinpoint no puede decodificar el valor de retorno de la función.• La función requiere más de 3 intentos de Amazon Pinpoint para invocarla correctamente.

Amazon Pinpoint solo acepta las definiciones de punto de enlace del valor de retorno de la función. Lafunción no puede modificar otros elementos de los datos de eventos.

Función de Lambda de ejemploSu función Lambda procesa los datos de eventos enviados por Amazon Pinpoint y devuelve los puntos deenlace modificados, tal y como se muestra en el siguiente controlador de ejemplo, escrito en Node.js:

'use strict'; exports.handler = (event, context, callback) => { for (var key in event.Endpoints) { if (event.Endpoints.hasOwnProperty(key)) { var endpoint = event.Endpoints[key]; var attr = endpoint.Attributes; if (!attr) { attr = {}; endpoint.Attributes = attr; } attr["CreditScore"] = [ Math.floor(Math.random() * 200) + 650]; } } console.log("Received event:", JSON.stringify(event, null, 2)); callback(null, event.Endpoints);};

Lambda transfiere los datos de eventos al controlador según el parámetro event.

En este ejemplo, el controlador itera mediante cada punto de enlace en el objeto event.Endpoints yañade un nuevo atributo, CreditScore, en el punto de enlace. El valor del atributo CreditScore essimplemente un número aleatorio.

La instrucción console.log() registra el evento en CloudWatch Logs.

La instrucción callback() devuelve los puntos de enlace modificados Amazon Pinpoint. Normalmente,el parámetro callback es opcional en las funciones de Lambda de Node.js, pero es obligatorio en estecontexto porque la función debe devolver los puntos de enlace actualizados a Amazon Pinpoint.

190

Amazon Pinpoint Guía para desarrolladoresAsignación de una política de función de Lambda

Su función debe devolver los puntos de enlace en el mismo formato proporcionado por los datos deeventos, que es un mapa que asocia los ID de punto de enlace con las definiciones de punto de enlace,como en el siguiente ejemplo:

{ "eqmj8wpxszeqy/b3vch04sn41yw": { "ChannelType": "GCM", "Address": "4d5e6f1a2b3c4d5e6f7g8h9i0j1a2b3c", "EndpointStatus": "ACTIVE", "OptOut": "NONE", "Demographic": { "Make": "android" }, "EffectiveDate": "2017-11-02T21:26:48.598Z", "User": {} }, "idrexqqtn8sbwfex0ouscod0yto": { "ChannelType": "APNS", "Address": "1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f", "EndpointStatus": "ACTIVE", "OptOut": "NONE", "Demographic": { "Make": "apple" }, "EffectiveDate": "2017-11-02T21:26:48.598Z", "User": {} }}

La función de ejemplo modifica y devuelve el objeto event.Endpoints que recibió en los datos deevento.

Si lo prefiere, puede incluir los atributos BodyOverride y TitleOverride en las definiciones de lospuntos de enlace que se devuelven.

Note

Cuando se utiliza esta solución para enviar mensajes, Amazon Pinpoint solo respeta losatributos TitleOverride y BodyOverride de los puntos de enlace cuando el valor delatributo ChannelType es uno de los siguientes: ADM, APNS, APNS_SANDBOX, APNS_VOIP,APNS_VOIP_SANDBOX, BAIDU, GCM o SMS.Amazon Pinpoint no respeta estos atributos de los puntos de enlace cuando el valor del atributoChannelType es EMAIL.

Asignación de una política de función de LambdaAntes de poder utilizar su función de Lambda para procesar los puntos de enlace, debe autorizar aAmazon Pinpoint a invocar dicha función de Lambda. Para conceder permiso de invocación, asigne unapolítica de función de Lambda a la función. Una política de función de Lambda consiste en una política depermisos basada en el recurso que designa qué entidades pueden usar su función y qué acciones puedenrealizar dichas entidades.

Para obtener más información, consulte Uso de políticas basadas en recursos para AWS Lambda en laAWS Lambda Developer Guide.

Política de función de ejemploLa siguiente política concede permiso al principal del servicio de Amazon Pinpoint para utilizar la acciónlambda:InvokeFunction para una campaña específica (campaign-id):

191

Amazon Pinpoint Guía para desarrolladoresAsignación de una política de función de Lambda

{ "Sid": "sid", "Effect": "Allow", "Principal": { "Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:account-id:function:function-name}", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:/apps/application-id/campaigns/campaign-id" } }}

La política de función requiere un bloque Condition que incluye una clave AWS:SourceArn. Este códigoindica qué campaña de Amazon Pinpoint tiene permitido invocar la función. En este ejemplo, la políticaconcede permiso solo a una única campaña.

Para escribir una política más genérica, use caracteres comodín (*) que sustituyan a varios caracteres. Porejemplo, puede usar el siguiente bloque Condition para permitir que cualquier campaña en un proyectoconcreto de Amazon Pinpoint(application-id) invoque la función:

"Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:/apps/application-id/campaigns/*" }}

Si desea que la función de Lambda sea la función predeterminada que utilizan todas las campañas de unproyecto, le recomendamos que configure el bloque Condition para la política de la forma anterior. Paraobtener información sobre cómo establecer una función de Lambda como predeterminada para todas lascampañas de un proyecto, consulte Asignación de una función de Lambda a una campaña más adelanteen este tema.

Concesión de permiso de invocación a Amazon PinpointPuede utilizar la AWS Command Line Interface (AWS CLI) para añadir permisos a la política de función deLambda asignada a su función de Lambda. Para permitir que Amazon Pinpoint invoque una función parauna campaña específica, use el comandoadd-permission de Lambda, como se muestra en el siguienteejemplo:

$ aws lambda add-permission \> --function-name function-name \> --statement-id sid \> --action lambda:InvokeFunction \> --principal pinpoint.us-east-1.amazonaws.com \> --source-arn arn:aws:mobiletargeting:us-east-1:account-id:/apps/application-id/campaigns/campaign-id

Si desea proporcionar un ID de campaña para el parámetro --source-arn, puede buscar sus ID decampaña mediante el comando get-campaigns de Amazon Pinpoint; con la AWS CLI. Este comandorequiere el parámetro --application-id. Para buscar sus ID de aplicación, inicie sesión en la consolade Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/ y vaya a la página All Projects (Todoslos proyectos). En la consola se muestra un Project ID (ID de proyecto) para cada proyecto, que es el ID deaplicación del proyecto.

192

Amazon Pinpoint Guía para desarrolladoresAsignación de una función de Lambda a una campaña

Cuando ejecuta el comando add-permission de Lambda, AWS Lambda devuelve la siguiente salida:

{ "Statement": "{\"Sid\":\"sid\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"pinpoint.us-east-1.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:function-name\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:mobiletargeting:us-east-1:111122223333:/apps/application-id/campaigns/campaign-id\"}}}"}

El valor de Statement es una versión de cadena JSON de la instrucción que se agregó a la política de lafunción de Lambda.

Asignación de una función de Lambda a una campañaPuede asignar una función de Lambda a una campaña de Amazon Pinpoint individual. O bien, puedeconfigurar la función de Lambda como la predeterminada que utilizan todas las campañas de un proyecto,excepto en el caso de las campañas a las que se le asigne una función de manera individual.

Para asignar una función de Lambda a una campaña individual, use la API de Amazon Pinpoint a fin decrear o actualizar un objeto Campaign y defina su atributo CampaignHook. Para establecer una funciónde Lambda como la predeterminada de todas las campañas de un proyecto, cree o actualice el recursoSettings de ese proyecto y defina su objeto CampaignHook.

En ambos casos, establezca los siguientes atributos CampaignHook:

• LambdaFunctionName – Nombre o ARN de la función de Lambda que Amazon Pinpoint invoca antesde enviar mensajes para la campaña.

• Mode – establecido en FILTER. Con este modo, Amazon Pinpoint invoca la función y espera a quedevuelva los puntos de enlace modificados. Tras recibirlos, Amazon Pinpoint envía el mensaje. AmazonPinpoint espera hasta 15 segundos antes de que la entrega del mensaje dé error.

Con la configuración CampaignHook definida para una campaña, Amazon Pinpoint invoca la funciónLambda especificada antes de enviar los mensajes de la campaña. Amazon Pinpoint espera hastarecibir los puntos de enlace modificados de la función. Si Amazon Pinpoint recibe el los puntos de enlaceactualizados, continúa con el envío de mensajes, utilizando los datos de punto de enlace actualizados.

193

Amazon Pinpoint Guía para desarrolladoresCreación de campañas estándar

Creación de campañasPara ayudar a aumentar la conexión entre la aplicación y los usuarios, utilice Amazon Pinpoint para crear yadministrar campañas de notificaciones de inserción que se dirijan a segmentos de usuarios concretos.

Por ejemplo, la campaña podría invitar a los usuarios que no han ejecutado la aplicación recientemente aque regresen a ella u ofrecer promociones especiales a los usuarios que no han comprado últimamente.

Una campaña envía un mensaje personalizado a un segmento de usuario que se especifique. La campañapuede enviar el mensaje a todos los usuarios del segmento, o bien puede asignar exclusiones, que es unporcentaje de los usuarios que no recibirán ningún mensaje.

Puede establecer la programación de la campaña para enviar el mensaje una vez o con una frecuenciarecurrente, como, por ejemplo, una vez a la semana. Para evitar que los usuarios reciban el mensaje ahoras poco apropiadas, la programación puede incluir una horas de silencio durante las que no se enviaráningún mensaje.

Para experimentar con estrategias de campaña alternativas, configure su campaña como una prueba A/B. Una prueba A/B incluye dos o más tratamientos del mensaje o la programación. Los tratamientos sonvariaciones del mensaje o la programación. A medida que los usuarios respondan a la campaña, podrá veranálisis de dicha campaña para comparar la eficacia de cada tratamiento.

Para obtener más información, consulte Campañas.

Creación de campañas estándarUna campaña estándar envía una notificación de inserción personalizada a un segmento especificado deacuerdo con una programación que se define.

Creación de campañas con AWS SDK for JavaEl siguiente ejemplo muestra cómo crear una campaña con AWS SDK for Java.

import com.amazonaws.services.pinpoint.AmazonPinpointClient;import com.amazonaws.services.pinpoint.model.Action;import com.amazonaws.services.pinpoint.model.CampaignResponse;import com.amazonaws.services.pinpoint.model.CreateCampaignRequest;import com.amazonaws.services.pinpoint.model.CreateCampaignResult;import com.amazonaws.services.pinpoint.model.Message;import com.amazonaws.services.pinpoint.model.MessageConfiguration;import com.amazonaws.services.pinpoint.model.Schedule;import com.amazonaws.services.pinpoint.model.WriteCampaignRequest;

import java.util.ArrayList;import java.util.List;

public class PinpointCampaignSample {

public CampaignResponse createCampaign(AmazonPinpointClient client, String appId, String segmentId) { Schedule schedule = new Schedule() .withStartTime("IMMEDIATE");

194

Amazon Pinpoint Guía para desarrolladoresCreación de campañas de prueba A/B

Message defaultMessage = new Message() .withAction(Action.OPEN_APP) .withBody("My message body.") .withTitle("My message title.");

MessageConfiguration messageConfiguration = new MessageConfiguration() .withDefaultMessage(defaultMessage);

WriteCampaignRequest request = new WriteCampaignRequest() .withDescription("My description.") .withSchedule(schedule) .withSegmentId(segmentId) .withName("MyCampaign") .withMessageConfiguration(messageConfiguration);

CreateCampaignRequest createCampaignRequest = new CreateCampaignRequest() .withApplicationId(appId).withWriteCampaignRequest(request);

CreateCampaignResult result = client.createCampaign(createCampaignRequest);

System.out.println("Campaign ID: " + result.getCampaignResponse().getId());

return result.getCampaignResponse(); }

}

Cuando se ejecuta este ejemplo, se muestra lo siguiente en la ventana de la consola de su IDE:

Campaign ID: b1c3de717aea4408a75bb3287a906b46

Creación de campañas de prueba A/BUna prueba A/B se comporta como una campaña estándar, pero permite definir diferentes tratamientospara el mensaje o la programación de la campaña.

Creación de campañas de prueba A/B con AWS SDKfor JavaEl siguiente ejemplo muestra cómo crear una campaña de prueba A/B con AWS SDK for Java.

import com.amazonaws.services.pinpoint.AmazonPinpointClient;import com.amazonaws.services.pinpoint.model.Action;import com.amazonaws.services.pinpoint.model.CampaignResponse;import com.amazonaws.services.pinpoint.model.CreateCampaignRequest;import com.amazonaws.services.pinpoint.model.CreateCampaignResult;import com.amazonaws.services.pinpoint.model.Message;import com.amazonaws.services.pinpoint.model.MessageConfiguration;import com.amazonaws.services.pinpoint.model.Schedule;import com.amazonaws.services.pinpoint.model.WriteCampaignRequest;import com.amazonaws.services.pinpoint.model.WriteTreatmentResource;

import java.util.ArrayList;import java.util.List;

public class PinpointCampaignSample {

195

Amazon Pinpoint Guía para desarrolladoresCreación de campañas de prueba

A/B con AWS SDK for Java

public CampaignResponse createAbCampaign(AmazonPinpointClient client, String appId, String segmentId) { Schedule schedule = new Schedule() .withStartTime("IMMEDIATE");

// Default treatment. Message defaultMessage = new Message() .withAction(Action.OPEN_APP) .withBody("My message body.") .withTitle("My message title.");

MessageConfiguration messageConfiguration = new MessageConfiguration() .withDefaultMessage(defaultMessage);

// Additional treatments WriteTreatmentResource treatmentResource = new WriteTreatmentResource() .withMessageConfiguration(messageConfiguration) .withSchedule(schedule) .withSizePercent(40) .withTreatmentDescription("My treatment description.") .withTreatmentName("MyTreatment");

List<WriteTreatmentResource> additionalTreatments = new ArrayList<WriteTreatmentResource>(); additionalTreatments.add(treatmentResource);

WriteCampaignRequest request = new WriteCampaignRequest() .withDescription("My description.") .withSchedule(schedule) .withSegmentId(segmentId) .withName("MyCampaign") .withMessageConfiguration(messageConfiguration) .withAdditionalTreatments(additionalTreatments) .withHoldoutPercent(10); // Hold out of A/B test

CreateCampaignRequest createCampaignRequest = new CreateCampaignRequest() .withApplicationId(appId).withWriteCampaignRequest(request);

CreateCampaignResult result = client.createCampaign(createCampaignRequest);

System.out.println("Campaign ID: " + result.getCampaignResponse().getId());

return result.getCampaignResponse(); }

}

Cuando se ejecuta este ejemplo, se muestra lo siguiente en la ventana de la consola de su IDE:

Campaign ID: b1c3de717aea4408a75bb3287a906b46

196

Amazon Pinpoint Guía para desarrolladoresCasos de uso de validación de números de teléfono

Validación de números de teléfono enAmazon Pinpoint

Amazon Pinpoint incluye un servicio de validación de números de teléfono que puede utilizar paradeterminar si un número de teléfono es válido y para obtener información adicional sobre el propio númerode teléfono. Por ejemplo, cuando se usa el servicio de validación de números de teléfono, este devuelve lasiguiente información:

• El número de teléfono en formato E.164.• El tipo de número de teléfono (por ejemplo, móvil, fijo o VoIP).• La ciudad y el país del número de teléfono.• El proveedor de servicios asociado al número de teléfono.

Se aplica un cargo adicional por el uso del servicio de validación de números de teléfono. Para obtenermás información, consulte Precios de Amazon Pinpoint.

Casos de uso de validación de números de teléfonoPuede utilizar el servicio de validación de números de teléfono para varios casos de uso, entre los que seincluyen los siguientes:

• Verificación de números de teléfono proporcionados en un formulario web: si utiliza formularios web pararecopilar información de contacto de sus clientes, puede validar los números de teléfono que los clientesproporcionan antes de enviar el formulario. Utilice el backend de su sitio web para validar el númeromediante la API de Amazon Pinpoint. La respuesta de la API indica si el número no es válido (porejemplo, si el número de teléfono tiene un formato incorrecto). Si determina que el número de teléfonoque el cliente ha proporcionado no es válido, el formulario web puede pedir al cliente que proporcioneotro número.

• Limpieza de la base de datos de contactos existente: si tiene una base de datos de números de teléfonode los clientes, puede validar cada uno de estos números y, a continuación, actualizar su base de datosen función de sus resultados. Por ejemplo, si encuentra puntos de enlace con números de teléfono queno pueden recibir mensajes SMS, puede cambiar la propiedad ChannelType del punto de enlace SMS aVOICE.

• Selección del canal adecuado antes de enviar un mensaje: si va a enviar un mensaje SMS perodetermina que el número de destino no es válido, puede enviar un mensaje al destinatario a través deun canal diferente. Por ejemplo, si el punto de enlace no puede recibir mensajes SMS, puede enviar unmensaje de voz en su lugar.

Uso del servicio de validación de números deteléfono

Para validar un número, envíe una solicitud POST HTTP al URI /v1/phone/number/validate/ en laAPI de Amazon Pinpoint. La solicitud del siguiente ejemplo incluye los encabezados HTTP necesarios y uncuerpo JSON sencillo. El cuerpo especifica el número que se valida con el parámetro PhoneNumber.

197

Amazon Pinpoint Guía para desarrolladoresRespuestas de validación de números de teléfono

POST /v1/phone/number/validate/ HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonX-Amz-Date: 20190805T031042ZAuthorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20190805/us-east-1/mobiletargeting/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=39df573629ddb283aea1fa2f7eef4106c0fb4826edf72e9934f03cf77exampleCache-Control: no-cache

{ "PhoneNumber": "+12065550100"}

Para obtener información sobre los métodos, parámetros y esquemas admitidos, consulte el temarelacionado con la validación de números de teléfono en la Referencia de la API de Amazon Pinpoint.

También puede utilizar la AWS CLI para validar rápidamente números de teléfono individuales.

Para utilizar el servicio de validación de números de teléfono mediante la AWS CLI

• En la línea de comandos, escriba el comando siguiente.

aws pinpoint phone-number-validate --number-validate-request PhoneNumber=+442079460881

En el comando anterior, sustituya +442079460881 por el número de teléfono que desea validar.

Note

Cuando proporciona un número de teléfono en el servicio de validación de números deteléfono, debe incluir siempre el código de país. Si no incluye el código de país, el serviciopodría devolver información de un número de teléfono de un país diferente.

Respuestas de validación de números de teléfonoLa información que el servicio de validación de números de teléfono proporciona varía ligeramente enfunción de los datos que estén disponibles para el número de teléfono proporcionado. En esta sección seincluyen ejemplos de las respuestas que devuelve el servicio de validación de números de teléfono.

Note

Los datos que proporciona el servicio de validación de números de teléfono depende de lainformación proporcionada por los proveedores del servicio de telecomunicaciones y otrasentidades de todo el mundo. Los proveedores de algunos países podrían actualizar estainformación con menos frecuencia que los de otros países. Por ejemplo, si emite una solicitudpara validar un número de teléfono móvil y el número que proporciona se ha transferido de unoperador móvil a otro, la respuesta del servicio de validación de números de teléfono podría incluirel nombre del operador original, en lugar del actual.

Números de teléfono móvil válidos

Cuando envía una solicitud al servicio de validación de números de teléfono y el número de teléfono es unnúmero de teléfono móvil válido, el servicio devuelve información con un aspecto similar al del siguienteejemplo:

{ "NumberValidateResponse": { "Carrier": "ExampleCorp Mobile",

198

Amazon Pinpoint Guía para desarrolladoresRespuestas de validación de números de teléfono

"City": "Seattle", "CleansedPhoneNumberE164": "+12065550142", "CleansedPhoneNumberNational": "2065550142", "Country": "United States", "CountryCodeIso2": "US", "CountryCodeNumeric": "1", "OriginalPhoneNumber": "+12065550142", "PhoneType": "MOBILE", "PhoneTypeCode": 0, "Timezone": "America/Los_Angeles", "ZipCode": "98101" }}

Números de teléfono fijo válidos

Si su solicitud contiene un número de teléfono fijo válido, el servicio de validación de números de teléfonodevuelve información similar a la del siguiente ejemplo:

{ "CountryCodeIso2": "US", "CountryCodeNumeric": "1", "Country": "United States", "City": "Santa Clara", "ZipCode": "95037", "Timezone": "America/Los_Angeles", "CleansedPhoneNumberNational": "4085550101", "CleansedPhoneNumberE164": "14085550101", "Carrier": "AnyCompany", "PhoneTypeCode": 1, "PhoneType": "LANDLINE", "OriginalPhoneNumber": "+14085550101"}

Números de teléfono VoIP válidos

Si su solicitud contiene un número de teléfono VoIP (protocolo de voz a través de Internet) válido, elservicio de validación de números de teléfono devuelve información con un aspecto similar al del siguienteejemplo:

{ "NumberValidateResponse": { "Carrier": "ExampleCorp", "City": "Countrywide", "CleansedPhoneNumberE164": "+441514960001", "CleansedPhoneNumberNational": "1514960001", "Country": "United Kingdom", "CountryCodeIso2": "GB", "CountryCodeNumeric": "44", "OriginalPhoneNumber": "+441514960001", "PhoneType": "VOIP", "PhoneTypeCode": 2 }}

Números de teléfono no válidos

Si su solicitud contiene un número de teléfono no válido, el servicio de validación de números de teléfonodevuelve información similar a la del siguiente ejemplo:

{

199

Amazon Pinpoint Guía para desarrolladoresRespuestas de validación de números de teléfono

"NumberValidateResponse": { "CleansedPhoneNumberE164": "+44163296076", "CleansedPhoneNumberNational": "163296076", "Country": "United Kingdom", "CountryCodeIso2": "GB", "CountryCodeNumeric": "44", "OriginalPhoneNumber": "+440163296076", "PhoneType": "INVALID", "PhoneTypeCode": 3 }}

Tenga en cuenta que la propiedad PhoneType de esta respuesta indica que este número de teléfonoes INVALID y que no incluye información sobre el operador o la ubicación asociada con el número deteléfono. Debe evitar el envío de mensajes SMS o de voz a números de teléfono en los que PhoneTypesea INVALID, ya que es muy poco probable que estos números pertenezcan a destinatarios reales.

Otros números de teléfono

A veces, la respuesta del servicio de validación de números de teléfono incluye el valor PhoneTypeOTHER. El servicio puede devolver este tipo de respuesta en las siguientes situaciones:

• El número de teléfono es un número de teléfono gratuito.• El número de teléfono está reservado para su uso en series de televisión y películas, como los números

de teléfono de los Estados Unidos que comienzan por 555.• El número de teléfono incluye un código de área que actualmente no se encuentra en uso, como el

código de área 999 en Norteamérica.• El número de teléfono está reservado para cualquier otro fin.

En el siguiente ejemplo se muestra la respuesta que el servicio de validación de números de teléfonoproporciona cuando su solicitud incluye un número de teléfono de Norteamérica ficticio:

{ "NumberValidateResponse": { "Carrier": "Multiple OCN Listing", "CleansedPhoneNumberE164": "+14255550199", "CleansedPhoneNumberNational": "4255550199", "Country": "United States", "CountryCodeIso2": "US", "CountryCodeNumeric": "1", "OriginalPhoneNumber": "+14255550199", "PhoneType": "OTHER", "PhoneTypeCode": 4, "Timezone": "America/Los_Angeles" }}

Para obtener más información acerca de la información incluida en estas respuestas, consulte Validaciónde números de teléfono en la Referencia de la API de Amazon Pinpoint.

200

Amazon Pinpoint Guía para desarrolladoresEnviar correos electrónicos

Envío de mensajes transaccionalesdesde sus aplicaciones

Puede utilizar la API de Amazon Pinpoint y AWS SDK para enviar mensajes transaccionales directamentedesde sus aplicaciones. Los mensajes transaccionales son mensajes que envía a destinatariosespecíficos, en lugar de mensajes que se envían a los segmentos. Existen varios motivos por los quees posible que desee enviar mensajes de transacciones en lugar de mensajes basados en campañas.Por ejemplo, puede enviar una confirmación por correo electrónico cuando un cliente realiza un pedido.También puede enviar una contraseña de un solo uso por SMS o voz que un cliente puede utilizar paracompletar el proceso de creación de una cuenta para su servicio.

En esta sección se incluye código de ejemplo en varios lenguajes de programación que puede utilizar parainiciar el envío de correos electrónicos transaccionales, mensajes SMS y mensajes de voz.

Temas de esta sección:• Enviar mensajes de correo electrónico transaccional (p. 201)• Envío de mensajes SMS (p. 217)• Enviar mensajes de voz (p. 223)• Envío de notificaciones push (p. 227)

Enviar mensajes de correo electrónicotransaccional

En esta sección se proporciona ejemplos de código completos que puede utilizar para enviar mensajes decorreo electrónico transaccionales a través de Amazon Pinpoint. Existen dos métodos que puede utilizarpara enviar mensajes de correo electrónico de transacciones:

• Mediante la operación SendMessages en la API de Amazon Pinpoint (p. 202): puede utilizar laoperación SendMessages en la API de Amazon Pinpoint para enviar mensajes en todos los canales queadmite Amazon Pinpoint, incluidos los canales de correo electrónico, de voz, de SMS y de notificacionesde inserción.

La ventaja de utilizar esta operación es que la sintaxis de solicitud para enviar mensajes es muy similaren todos los canales. De ese modo, resulta más sencillo replanificar el código existente. La operaciónSendMessages también le permite sustituir contenido en sus mensajes de correo electrónico y lepermite enviar correo electrónico a los ID de punto de enlace de Amazon Pinpoint enlace en lugar de adirecciones de correo electrónico específicas.

• Mediante la interfaz de SMTP de Amazon Pinpoint (p. 209): puede utilizar la interfaz de SMTP deAmazon Pinpoint para enviar solo mensajes de correo electrónico.

La ventaja de utilizar la interfaz de SMTP es que puede utilizar aplicaciones de envío de correoelectrónico y bibliotecas para enviar correo electrónico. Por ejemplo, si utiliza un sistema de tickets quepermita enviar correos electrónicos a sus clientes, puede utilizar la interfaz de SMTP para configurarel sistema para enviar mensajes de correo electrónico desde su dominio. También puede utilizar lasbibliotecas de envío de correo electrónico en varios lenguajes de programación para enviar correoelectrónico a través de la interfaz de SMTP.

En esta sección se incluye código de ejemplo en varios lenguajes de programación que puede utilizar parainiciar el envío de correos electrónicos transaccionales.

201

Amazon Pinpoint Guía para desarrolladoresSelección de un método de envío de correo electrónico

Temas de esta sección:• Selección de un método de envío de correo electrónico (p. 202)• Enviar correo electrónico mediante la API de Amazon Pinpoint (p. 202)• Enviar correo electrónico mediante la interfaz de SMTP de Amazon Pinpoint (p. 209)

Selección de un método de envío de correoelectrónicoEl mejor método que se puede utilizar para enviar correos electrónicos transaccionales depende del casode uso. Por ejemplo, si necesita enviar correo electrónico a través de una aplicación de terceros, o si AWSSDK no está disponible para su lenguaje de programación, es posible que tenga que utilizar la interfaz deSMTP. Si desea enviar mensajes en otros canales admitidos por Amazon Pinpoint, y desea utilizar códigocoherente para realizar esas solicitudes, debe utilizar la operación SendMessages de la API de AmazonPinpoint.

Enviar correo electrónico mediante la API de AmazonPinpointEn esta sección se incluyen ejemplos de código completos que puede utilizar para enviar correoselectrónicos a través de la API de Amazon Pinpoint mediante AWS SDK.

C#

Utilice este ejemplo para enviar un correo electrónico mediante AWS SDK para .NET. En este ejemplose presupone que ya ha instalado y configurado AWS SDK para .NET. Para obtener más información,consulte Introducción a AWS SDK para .NET en la AWS SDK para .NET Developer Guide.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales de AWS en la AWS SDK para .NETDeveloper Guide.

Este ejemplo de código se ha probado utilizando la versión 3.3.29.13 de AWS SDK para .NET y laversión 2.1.2 de tiempo de ejecución de .NET Core.

using System;using System.Collections.Generic;using Amazon;using Amazon.Pinpoint;using Amazon.Pinpoint.Model;

namespace PinpointEmailSendMessageAPI{ class MainClass { // The AWS Region that you want to use to send the email. For a list of // AWS Regions where the Amazon Pinpoint API is available, see // https://docs.aws.amazon.com/pinpoint/latest/apireference/ static string region = "us-west-2";

// The "From" address. This address has to be verified in Amazon Pinpoint // in the region you're using to send email. static string senderAddress = "[email protected]";

// The address on the "To" line. If your Amazon Pinpoint account is in

202

Amazon Pinpoint Guía para desarrolladoresUso de la API

// the sandbox, this address also has to be verified. static string toAddress = "[email protected]";

// The Amazon Pinpoint project/application ID to use when you send this message. // Make sure that the SMS channel is enabled for the project or application // that you choose. static string appId = "ce796be37f32f178af652b26eexample";

// The subject line of the email. static string subject = "Amazon Pinpoint Email test";

// The body of the email for recipients whose email clients don't // support HTML content. static string textBody = @"Amazon Pinpoint Email Test (.NET)---------------------------------This email was sent using the Amazon Pinpoint API using the AWS SDK for .NET.";

// The body of the email for recipients whose email clients support // HTML content. static string htmlBody = @"<html><head></head><body> <h1>Amazon Pinpoint Email Test (AWS SDK for .NET)</h1> <p>This email was sent using the <a href='https://aws.amazon.com/pinpoint/'>Amazon Pinpoint</a> API using the <a href='https://aws.amazon.com/sdk-for-net/'> AWS SDK for .NET</a>.</p></body></html>";

// The character encoding the you want to use for the subject line and // message body of the email. static string charset = "UTF-8";

public static void Main(string[] args) { using (var client = new AmazonPinpointClient(RegionEndpoint.GetBySystemName(region))) { var sendRequest = new SendMessagesRequest { ApplicationId = appId, MessageRequest = new MessageRequest { Addresses = new Dictionary<string, AddressConfiguration> { { toAddress, new AddressConfiguration { ChannelType = "EMAIL" } } }, MessageConfiguration = new DirectMessageConfiguration { EmailMessage = new EmailMessage { FromAddress = senderAddress, SimpleEmail = new SimpleEmail { HtmlPart = new SimpleEmailPart { Charset = charset, Data = htmlBody

203

Amazon Pinpoint Guía para desarrolladoresUso de la API

}, TextPart = new SimpleEmailPart { Charset = charset, Data = textBody }, Subject = new SimpleEmailPart { Charset = charset, Data = subject } } } } } }; try { Console.WriteLine("Sending message..."); SendMessagesResponse response = client.SendMessages(sendRequest); Console.WriteLine("Message sent!"); } catch (Exception ex) { Console.WriteLine("The message wasn't sent. Error message: " + ex.Message); } } } }}

Java

Utilice este ejemplo para enviar un correo electrónico mediante AWS SDK for Java. En este ejemplose presupone que ya ha instalado y configurado AWS SDK para Java 2.x. Para obtener másinformación, consulte Introducción en la Guía para desarrolladores de AWS SDK para Java 2.x.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales y regiones de AWS para desarrolloen la AWS SDK for Java Developer Guide.

Este ejemplo de código se ha probado utilizando la versión 2.3.1 de AWS SDK for Java y la versión11.0.1 de OpenJDK.

package com.amazonaws.samples;import java.io.IOException;import java.util.HashMap;import java.util.Map;

import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.AddressConfiguration;import com.amazonaws.services.pinpoint.model.ChannelType;import com.amazonaws.services.pinpoint.model.DirectMessageConfiguration;import com.amazonaws.services.pinpoint.model.EmailMessage;import com.amazonaws.services.pinpoint.model.MessageRequest;import com.amazonaws.services.pinpoint.model.SendMessagesRequest;import com.amazonaws.services.pinpoint.model.SimpleEmail;import com.amazonaws.services.pinpoint.model.SimpleEmailPart;

204

Amazon Pinpoint Guía para desarrolladoresUso de la API

public class SendMessages {

// The AWS Region that you want to use to send the message. For a list of // AWS Regions where the Amazon Pinpoint API is available, see // https://docs.aws.amazon.com/pinpoint/latest/apireference/ public static String region = "us-west-2"; // The "From" address. This address has to be verified in Amazon // Pinpoint in the region you're using to send email. public static String senderAddress = "[email protected]";

// The address on the "To" line. If your Amazon Pinpoint account is in // the sandbox, this address also has to be verified. public static String toAddress = "[email protected]";

// The Amazon Pinpoint project/application ID to use when you send this message. // Make sure that the SMS channel is enabled for the project or application // that you choose. public static String appId = "ce796be37f32f178af652b26eexample";

// The subject line of the email. public static String subject = "Amazon Pinpoint test";

// The email body for recipients with non-HTML email clients. static final String textBody = "Amazon Pinpoint Test (SDK for Java 2.x)\r\n" + "---------------------------------\r\n" + "This email was sent using the Amazon Pinpoint " + "API using the AWS SDK for Java 2.x."; // The body of the email for recipients whose email clients support // HTML content. static final String htmlBody = "<h1>Amazon Pinpoint test (AWS SDK for Java 2.x)</h1>" + "<p>This email was sent through the <a href='https://aws.amazon.com/pinpoint/'>" + "Amazon Pinpoint</a> Email API using the " + "<a href='https://aws.amazon.com/sdk-for-java/'>AWS SDK for Java 2.x</a>";

// The character encoding the you want to use for the subject line and // message body of the email. public static String charset = "UTF-8"; public static void main(String[] args) throws IOException { try { Map<String,AddressConfiguration> addressMap = new HashMap<String,AddressConfiguration>(); addressMap.put(toAddress, new AddressConfiguration() .withChannelType(ChannelType.EMAIL)); AmazonPinpoint client = AmazonPinpointClientBuilder.standard() .withRegion(region).build(); SendMessagesRequest request = (new SendMessagesRequest() .withApplicationId(appId) .withMessageRequest(new MessageRequest() .withAddresses(addressMap) .withMessageConfiguration(new DirectMessageConfiguration() .withEmailMessage(new EmailMessage() .withSimpleEmail(new SimpleEmail() .withHtmlPart(new SimpleEmailPart() .withCharset(charset) .withData(htmlBody) )

205

Amazon Pinpoint Guía para desarrolladoresUso de la API

.withTextPart(new SimpleEmailPart() .withCharset(charset) .withData(textBody) ) .withSubject(new SimpleEmailPart() .withCharset(charset) .withData(subject) ) ) ) ) ) ); System.out.println("Sending message..."); client.sendMessages(request); System.out.println("Message sent!"); } catch (Exception ex) { System.out.println("The message wasn't sent. Error message: " + ex.getMessage()); } }}

JavaScript (Node.js)

Utilice este ejemplo para enviar un correo electrónico mediante AWS SDK for JavaScript in Node.js.En este ejemplo se presupone que ya ha instalado y configurado SDK para JavaScript en Node.js.Para obtener más información, consulte Introducción en la Guía para desarrolladores de AWS SDK forJavaScript in Node.js.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales en la Guía para desarrolladores deAWS SDK for JavaScript in Node.js.

Este ejemplo de código se ha probado utilizando la versión 2.388.0 de SDK para JavaScript enNode.js y la versión 11.7.0 de Node.js.

'use strict';

const AWS = require('aws-sdk');

// The AWS Region that you want to use to send the email. For a list of// AWS Regions where the Amazon Pinpoint API is available, see// https://docs.aws.amazon.com/pinpoint/latest/apireference/const aws_region = "us-west-2"

// The "From" address. This address has to be verified in Amazon Pinpoint// in the region that you use to send email.const senderAddress = "[email protected]";

// The address on the "To" line. If your Amazon Pinpoint account is in// the sandbox, this address also has to be verified.var toAddress = "[email protected]";

// The Amazon Pinpoint project/application ID to use when you send this message.// Make sure that the SMS channel is enabled for the project or application// that you choose.const appId = "ce796be37f32f178af652b26eexample";

// The subject line of the email.

206

Amazon Pinpoint Guía para desarrolladoresUso de la API

var subject = "Amazon Pinpoint (AWS SDK for JavaScript in Node.js)";

// The email body for recipients with non-HTML email clients.var body_text = `Amazon Pinpoint Test (SDK for JavaScript in Node.js)----------------------------------------------------This email was sent with Amazon Pinpoint using the AWS SDK for JavaScript in Node.js.For more information, see https:\/\/aws.amazon.com/sdk-for-node-js/`;

// The body of the email for recipients whose email clients support HTML content.var body_html = `<html><head></head><body> <h1>Amazon Pinpoint Test (SDK for JavaScript in Node.js)</h1> <p>This email was sent with <a href='https://aws.amazon.com/pinpoint/'>the Amazon Pinpoint API</a> using the <a href='https://aws.amazon.com/sdk-for-node-js/'> AWS SDK for JavaScript in Node.js</a>.</p></body></html>`;

// The character encoding the you want to use for the subject line and// message body of the email.var charset = "UTF-8";

// Specify that you're using a shared credentials file.var credentials = new AWS.SharedIniFileCredentials({profile: 'default'});AWS.config.credentials = credentials;

// Specify the region.AWS.config.update({region:aws_region});

//Create a new Pinpoint object.var pinpoint = new AWS.Pinpoint();

// Specify the parameters to pass to the API.var params = { ApplicationId: appId, MessageRequest: { Addresses: { [toAddress]:{ ChannelType: 'EMAIL' } }, MessageConfiguration: { EmailMessage: { FromAddress: senderAddress, SimpleEmail: { Subject: { Charset: charset, Data: subject }, HtmlPart: { Charset: charset, Data: body_html }, TextPart: { Charset: charset, Data: body_text } } } } }};

//Try to send the email.

207

Amazon Pinpoint Guía para desarrolladoresUso de la API

pinpoint.sendMessages(params, function(err, data) { // If something goes wrong, print an error message. if(err) { console.log(err.message); } else { console.log("Email sent! Message ID: ", data['MessageResponse']['Result'][toAddress]['MessageId']); }});

Python

Utilice este ejemplo para enviar un correo electrónico mediante AWS SDK para Python (Boto 3). Eneste ejemplo se presupone que ya ha instalado y configurado SDK para Python (Boto 3). Si deseaobtener más información, consulte la Guía de inicio rápido en la AWS SDK for Python (Boto 3) APIReference.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Credenciales en la AWS SDK for Python (Boto 3) API Reference.

Este ejemplo de código se ha probado utilizando la versión 1.9.62 de SDK para Python (Boto 3) y laversión 3.6.7 de Python.

import boto3from botocore.exceptions import ClientError

# The AWS Region that you want to use to send the email. For a list of# AWS Regions where the Amazon Pinpoint API is available, see# https://docs.aws.amazon.com/pinpoint/latest/apireference/AWS_REGION = "us-west-2"

# The "From" address. This address has to be verified in# Amazon Pinpoint in the region you're using to send email.SENDER = "Mary Major <[email protected]>"

# The addresses on the "To" line. If your Amazon Pinpoint account is in# the sandbox, these addresses also have to be verified.TOADDRESS = "[email protected]"

# The Amazon Pinpoint project/application ID to use when you send this message.# Make sure that the email channel is enabled for the project or application# that you choose.APPID = "ce796be37f32f178af652b26eexample"

# The subject line of the email.SUBJECT = "Amazon Pinpoint Test (SDK for Python (Boto 3))"

# The body of the email for recipients whose email clients don't support HTML# content.BODY_TEXT = """Amazon Pinpoint Test (SDK for Python)-------------------------------------This email was sent with Amazon Pinpoint using the AWS SDK for Python (Boto 3).For more information, see https:#aws.amazon.com/sdk-for-python/ """

# The body of the email for recipients whose email clients can display HTML# content.BODY_HTML = """<html><head></head><body> <h1>Amazon Pinpoint Test (SDK for Python)</h1>

208

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

<p>This email was sent with <a href='https:#aws.amazon.com/pinpoint/'>Amazon Pinpoint</a> using the <a href='https:#aws.amazon.com/sdk-for-python/'> AWS SDK for Python (Boto 3)</a>.</p></body></html> """

# The character encoding that you want to use for the subject line and message# body of the email.CHARSET = "UTF-8"

# Create a new client and specify a region.client = boto3.client('pinpoint',region_name=AWS_REGION)try: response = client.send_messages( ApplicationId=APPID, MessageRequest={ 'Addresses': { TOADDRESS: { 'ChannelType': 'EMAIL' } }, 'MessageConfiguration': { 'EmailMessage': { 'FromAddress': SENDER, 'SimpleEmail': { 'Subject': { 'Charset': CHARSET, 'Data': SUBJECT }, 'HtmlPart': { 'Charset': CHARSET, 'Data': BODY_HTML }, 'TextPart': { 'Charset': CHARSET, 'Data': BODY_TEXT } } } } } )except ClientError as e: print(e.response['Error']['Message'])else: print("Message sent! Message ID: " + response['MessageResponse']['Result'][TOADDRESS]['MessageId'])

Enviar correo electrónico mediante la interfaz deSMTP de Amazon PinpointEn esta sección se incluyen ejemplos de código completos que puede utilizar para enviar correoselectrónicos desde sus aplicaciones mediante la interfaz SMTP de Amazon Pinpoint. Estos ejemplosutilizan bibliotecas de envío de correo electrónico estándar siempre que sea posible.

Estos ejemplos presuponen que ya ha creado un nombre de usuario y contraseña de SMTP de AmazonPinpoint y contraseña. Para obtener más información, consulte Obtención de las credenciales de SMTP enla Guía del usuario de Amazon Pinpoint.

209

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

C#

Utilice este ejemplo para enviar correo electrónico a través de clases en el espacio de nombresSystem.Net.Mail de .NET.

using System;using System.Net;using System.Net.Mail;

namespace PinpointEmailSMTP{ class MainClass { // If you're using Amazon Pinpoint in a region other than US West (Oregon), // replace email-smtp.us-west-2.amazonaws.com with the Amazon Pinpoint SMTP // endpoint in the appropriate AWS Region. static string smtpEndpoint = "email-smtp.us-west-2.amazonaws.com";

// The port to use when connecting to the SMTP server. static int port = 587;

// Replace [email protected] with your "From" address. // This address must be verified with Amazon Pinpoint. static string senderName = "Mary Major"; static string senderAddress = "[email protected]";

// Replace [email protected] with a "To" address. If your account // is still in the sandbox, this address must be verified. static string toAddress = "[email protected]"; // CC and BCC addresses. If your account is in the sandbox, these // addresses have to be verified. static string ccAddress = "[email protected]"; static string bccAddress = "[email protected]";

// Replace smtp_username with your Amazon Pinpoint SMTP user name. static string smtpUsername = "AKIAIOSFODNN7EXAMPLE";

// Replace smtp_password with your Amazon Pinpoint SMTP user name. static string smtpPassword = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";

// (Optional) the name of a configuration set to use for this message. static string configurationSet = "ConfigSet"; // The subject line of the email static string subject = "Amazon Pinpoint test (SMTP interface accessed using C#)";

// The body of the email for recipients whose email clients don't // support HTML content. static AlternateView textBody = AlternateView. CreateAlternateViewFromString("Amazon Pinpoint Email Test (.NET)\r\n" + "This email was sent using the Amazon Pinpoint SMTP " + "interface.", null, "text/plain");

// The body of the email for recipients whose email clients support // HTML content. static AlternateView htmlBody = AlternateView. CreateAlternateViewFromString("<html><head></head><body>" + "<h1>Amazon Pinpoint SMTP Interface Test</h1><p>This " + "email was sent using the " + "<a href='https://aws.amazon.com/pinpoint/'>Amazon Pinpoint" + "</a> SMTP interface.</p></body></html>", null, "text/html");

210

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

// The message tags that you want to apply to the email. static string tag0 = "key0=value0"; static string tag1 = "key1=value1";

public static void Main(string[] args) { // Create a new MailMessage object MailMessage message = new MailMessage(); // Add sender and recipient email addresses to the message message.From = new MailAddress(senderAddress,senderName); message.To.Add(new MailAddress(toAddress)); message.CC.Add(new MailAddress(ccAddress)); message.Bcc.Add(new MailAddress(bccAddress)); // Add the subject line, text body, and HTML body to the message message.Subject = subject; message.AlternateViews.Add(textBody); message.AlternateViews.Add(htmlBody); // Add optional headers for configuration set and message tags to the message message.Headers.Add("X-SES-CONFIGURATION-SET", configurationSet); message.Headers.Add("X-SES-MESSAGE-TAGS", tag0); message.Headers.Add("X-SES-MESSAGE-TAGS", tag1);

using (var client = new System.Net.Mail.SmtpClient(smtpEndpoint, port)) { // Create a Credentials object for connecting to the SMTP server client.Credentials = new NetworkCredential(smtpUsername, smtpPassword);

client.EnableSsl = true; // Send the message try { Console.WriteLine("Attempting to send email..."); client.Send(message); Console.WriteLine("Email sent!"); } // Show an error message if the message can't be sent catch (Exception ex) { Console.WriteLine("The email wasn't sent."); Console.WriteLine("Error message: " + ex.Message); } } } }}

Java

Utilice este ejemplo para enviar un correo electrónico mediante la API de JavaMail.

import java.util.Properties;

import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;

211

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

public class SendEmail {

// If you're using Amazon Pinpoint in a region other than US West (Oregon), // replace email-smtp.us-west-2.amazonaws.com with the Amazon Pinpoint SMTP // endpoint in the appropriate AWS Region. static final String smtpEndpoint = "email-smtp.us-west-2.amazonaws.com";

// The port to use when connecting to the SMTP server. static final int port = 587;

// Replace [email protected] with your "From" address. // This address must be verified with Amazon Pinpoint. static final String senderName= "Mary Major"; static final String senderAddress = "[email protected]";

// Replace [email protected] with a "To" address. If your account // is still in the sandbox, this address must be verified. To specify // multiple addresses, separate each address with a comma. static final String toAddresses = "[email protected]";

// CC and BCC addresses. If your account is in the sandbox, these // addresses have to be verified. To specify multiple addresses, separate // each address with a comma. static final String ccAddresses = "[email protected],[email protected]"; static final String bccAddresses = "[email protected]";

// Replace smtp_username with your Amazon Pinpoint SMTP user name. static final String smtpUsername = "AKIAIOSFODNN7EXAMPLE";

// Replace smtp_password with your Amazon Pinpoint SMTP password. static final String smtpPassword = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";

// (Optional) the name of a configuration set to use for this message. static final String configurationSet = "ConfigSet";

// The subject line of the email static final String subject = "Amazon Pinpoint test (SMTP interface accessed using Java)";

// The body of the email for recipients whose email clients don't // support HTML content. static final String htmlBody = String.join( System.getProperty("line.separator"), "<h1>Amazon Pinpoint SMTP Email Test</h1>", "<p>This email was sent with Amazon Pinpoint using the ", "<a href='https://github.com/javaee/javamail'>Javamail Package</a>", " for <a href='https://www.java.com'>Java</a>." );

// The message tags that you want to apply to the email. static final String tag0 = "key0=value0"; static final String tag1 = "key1=value1";

public static void main(String[] args) throws Exception {

// Create a Properties object to contain connection configuration information. Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.port", port); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.auth", "true");

// Create a Session object to represent a mail session with the specified properties.

212

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

Session session = Session.getDefaultInstance(props);

// Create a message with the specified information. MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(senderAddress,senderName)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddresses)); msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccAddresses)); msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bccAddresses));

msg.setSubject(subject); msg.setContent(htmlBody,"text/html");

// Add headers for configuration set and message tags to the message. msg.setHeader("X-SES-CONFIGURATION-SET", configurationSet); msg.setHeader("X-SES-MESSAGE-TAGS", tag0); msg.setHeader("X-SES-MESSAGE-TAGS", tag1);

// Create a transport. Transport transport = session.getTransport();

// Send the message. try { System.out.println("Sending...");

// Connect to Amazon Pinpoint using the SMTP username and password you specified above. transport.connect(smtpEndpoint, smtpUsername, smtpPassword);

// Send the email. transport.sendMessage(msg, msg.getAllRecipients()); System.out.println("Email sent!"); } catch (Exception ex) { System.out.println("The email wasn't sent. Error message: " + ex.getMessage()); } finally { // Close the connection to the SMTP server. transport.close(); } }}

JavaScript (Node.js)

Utilice este ejemplo para enviar correo electrónico mediante el módulo Nodemailer para Node.js.

"use strict";const nodemailer = require("nodemailer");

// If you're using Amazon Pinpoint in a region other than US West (Oregon),// replace email-smtp.us-west-2.amazonaws.com with the Amazon Pinpoint SMTP// endpoint in the appropriate AWS Region.const smtpEndpoint = "email-smtp.us-west-2.amazonaws.com";

// The port to use when connecting to the SMTP server.const port = 587;

// Replace [email protected] with your "From" address.// This address must be verified with Amazon Pinpoint.

213

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

const senderAddress = "Mary Major <[email protected]>";

// Replace [email protected] with a "To" address. If your account// is still in the sandbox, this address must be verified. To specify// multiple addresses, separate each address with a comma.var toAddresses = "[email protected]";

// CC and BCC addresses. If your account is in the sandbox, these// addresses have to be verified. To specify multiple addresses, separate// each address with a comma.var ccAddresses = "[email protected],[email protected]";var bccAddresses = "[email protected]";

// Replace smtp_username with your Amazon Pinpoint SMTP user name.const smtpUsername = "AKIAIOSFODNN7EXAMPLE";

// Replace smtp_password with your Amazon Pinpoint SMTP password.const smtpPassword = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";

// (Optional) the name of a configuration set to use for this message.var configurationSet = "ConfigSet";

// The subject line of the emailvar subject = "Amazon Pinpoint test (Nodemailer)";

// The email body for recipients with non-HTML email clients.var body_text = `Amazon Pinpoint Test (Nodemailer)---------------------------------This email was sent through the Amazon Pinpoint SMTP interface using Nodemailer.`;

// The body of the email for recipients whose email clients support HTML content.var body_html = `<html><head></head><body> <h1>Amazon Pinpoint Test (Nodemailer)</h1> <p>This email was sent with <a href='https://aws.amazon.com/pinpoint/'>Amazon Pinpoint</a> using <a href='https://nodemailer.com'>Nodemailer</a> for Node.js.</p></body></html>`;

// The message tags that you want to apply to the email.var tag0 = "key0=value0";var tag1 = "key1=value1";

async function main(){

// Create the SMTP transport. let transporter = nodemailer.createTransport({ host: smtpEndpoint, port: port, secure: false, // true for 465, false for other ports auth: { user: smtpUsername, pass: smtpPassword } });

// Specify the fields in the email. let mailOptions = { from: senderAddress, to: toAddresses, subject: subject, cc: ccAddresses, bcc: bccAddresses,

214

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

text: body_text, html: body_html, // Custom headers for configuration set and message tags. headers: { 'X-SES-CONFIGURATION-SET': configurationSet, 'X-SES-MESSAGE-TAGS': tag0, 'X-SES-MESSAGE-TAGS': tag1 } };

// Send the email. let info = await transporter.sendMail(mailOptions)

console.log("Message sent! Message ID: ", info.messageId);}

main().catch(console.error);

Python

Utilice este ejemplo para enviar correo electrónico mediante las bibliotecas de correo electrónico ysmtplib de Python.

import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText

# If you're using Amazon Pinpoint in a region other than US West (Oregon),# replace email-smtp.us-west-2.amazonaws.com with the Amazon Pinpoint SMTP# endpoint in the appropriate AWS Region.HOST = "email-smtp.us-west-2.amazonaws.com"

# The port to use when connecting to the SMTP server.PORT = 587

# Replace [email protected] with your "From" address.# This address must be verified.SENDER = 'Mary Major <[email protected]>'

# Replace [email protected] with a "To" address. If your account# is still in the sandbox, this address has to be verified.RECIPIENT = '[email protected]'

# CC and BCC addresses. If your account is in the sandbox, these# addresses have to be verified.CCRECIPIENT = "[email protected]"BCCRECIPIENT = "[email protected]"

# Replace smtp_username with your Amazon Pinpoint SMTP user name.USERNAME_SMTP = "AKIAIOSFODNN7EXAMPLE"

# Replace smtp_password with your Amazon Pinpoint SMTP password.PASSWORD_SMTP = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

# (Optional) the name of a configuration set to use for this message.# If you comment out this line, you also need to remove or comment out# the "X-Pinpoint-CONFIGURATION-SET:" header below.CONFIGURATION_SET = "ConfigSet"

# The subject line of the email.SUBJECT = 'Amazon Pinpoint Test (Python smtplib)'

# The email body for recipients with non-HTML email clients.

215

Amazon Pinpoint Guía para desarrolladoresUso de la interfaz de SMTP

BODY_TEXT = ("Amazon Pinpoint Test\r\n" "This email was sent through the Amazon Pinpoint SMTP " "Interface using the Python smtplib package." )

# Create a MIME part for the text body.textPart = MIMEText(BODY_TEXT, 'plain')

# The HTML body of the email.BODY_HTML = """<html><head></head><body> <h1>Amazon Pinpoint SMTP Email Test</h1> <p>This email was sent with Amazon Pinpoint using the <a href='https://www.python.org/'>Python</a> <a href='https://docs.python.org/3/library/smtplib.html'> smtplib</a> library.</p></body></html> """

# Create a MIME part for the HTML body.htmlPart = MIMEText(BODY_HTML, 'html')

# The message tags that you want to apply to the email.TAG0 = "key0=value0"TAG1 = "key1=value1"

# Create message container. The correct MIME type is multipart/alternative.msg = MIMEMultipart('alternative')

# Add sender and recipient addresses to the messagemsg['From'] = SENDERmsg['To'] = RECIPIENTmsg['Cc'] = CCRECIPIENTmsg['Bcc'] = BCCRECIPIENT

# Add the subject line, text body, and HTML body to the message.msg['Subject'] = SUBJECTmsg.attach(textPart)msg.attach(htmlPart)

# Add headers for configuration set and message tags to the message.msg.add_header('X-SES-CONFIGURATION-SET',CONFIGURATION_SET)msg.add_header('X-SES-MESSAGE-TAGS',TAG0)msg.add_header('X-SES-MESSAGE-TAGS',TAG1)

# Open a new connection to the SMTP server and begin the SMTP conversation.try: with smtplib.SMTP(HOST, PORT) as server: server.ehlo() server.starttls() #stmplib docs recommend calling ehlo() before and after starttls() server.ehlo() server.login(USERNAME_SMTP, PASSWORD_SMTP) #Uncomment the next line to send SMTP server responses to stdout #server.set_debuglevel(1) server.sendmail(SENDER, RECIPIENT, msg.as_string())except Exception as e: print ("Error: ", e)else: print ("Email sent!")

216

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

Envío de mensajes SMSPuede utilizar la API de Amazon Pinpoint para enviar mensajes SMS (mensajes de texto) a determinadosnúmeros de teléfono o ID de punto de enlace. En esta sección se incluyen ejemplos de código completosque puede utilizar para enviar mensajes SMS a través de la API de Amazon Pinpoint mediante un SDK deAWS.

C#

Utilice este ejemplo para enviar un mensaje SMS mediante AWS SDK para .NET. En este ejemplo sepresupone que ya ha instalado y configurado el AWS SDK para .NET. Para obtener más información,consulte Introducción en la AWS SDK para .NET Developer Guide.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales de AWS en la AWS SDK para .NETDeveloper Guide.

using System;using System.Collections.Generic;using Amazon;using Amazon.Pinpoint;using Amazon.Pinpoint.Model;

namespace SendMessage{ class MainClass { // The AWS Region that you want to use to send the message. For a list of // AWS Regions where the Amazon Pinpoint API is available, see // https://docs.aws.amazon.com/pinpoint/latest/apireference/ private static readonly string region = "us-east-1";

// The phone number or short code to send the message from. The phone number // or short code that you specify has to be associated with your Amazon Pinpoint // account. For best results, specify long codes in E.164 format. private static readonly string originationNumber = "+12065550199";

// The recipient's phone number. For best results, you should specify the // phone number in E.164 format. private static readonly string destinationNumber = "+14255550142";

// The content of the SMS message. private static readonly string message = "This message was sent through Amazon Pinpoint" + "using the AWS SDK for .NET. Reply STOP to opt out.";

// The Pinpoint project/application ID to use when you send this message. // Make sure that the SMS channel is enabled for the project or application // that you choose. private static readonly string appId = "ce796be37f32f178af652b26eexample";

// The type of SMS message that you want to send. If you plan to send // time-sensitive content, specify TRANSACTIONAL. If you plan to send // marketing-related content, specify PROMOTIONAL. private static readonly string messageType = "TRANSACTIONAL";

// The registered keyword associated with the originating short code. private static readonly string registeredKeyword = "myKeyword";

217

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

// The sender ID to use when sending the message. Support for sender ID // varies by country or region. For more information, see // https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-countries.html private static readonly string senderId = "mySenderId";

public static void Main(string[] args) { using (AmazonPinpointClient client = new AmazonPinpointClient(RegionEndpoint.GetBySystemName(region))) { SendMessagesRequest sendRequest = new SendMessagesRequest { ApplicationId = appId, MessageRequest = new MessageRequest { Addresses = new Dictionary<string, AddressConfiguration> { { destinationNumber, new AddressConfiguration { ChannelType = "SMS" } } }, MessageConfiguration = new DirectMessageConfiguration { SMSMessage = new SMSMessage { Body = message, MessageType = messageType, OriginationNumber = originationNumber, SenderId = senderId, Keyword = registeredKeyword } } } }; try { Console.WriteLine("Sending message..."); SendMessagesResponse response = client.SendMessages(sendRequest); Console.WriteLine("Message sent!"); } catch (Exception ex) { Console.WriteLine("The message wasn't sent. Error message: " + ex.Message); } } } }}

Java

Utilice este ejemplo para enviar un mensaje SMS mediante AWS SDK for Java. En este ejemplose presupone que ya ha instalado y configurado el SDK para Java. Para obtener más información,consulte Introducción en la AWS SDK for Java Developer Guide.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Para

218

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

obtener más información, consulte Configuración de credenciales y regiones de AWS para desarrolloen la AWS SDK for Java Developer Guide.

package com.amazonaws.samples;import java.io.IOException;import java.util.HashMap;import java.util.Map;

import com.amazonaws.services.pinpoint.AmazonPinpoint;import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder;import com.amazonaws.services.pinpoint.model.AddressConfiguration;import com.amazonaws.services.pinpoint.model.ChannelType;import com.amazonaws.services.pinpoint.model.DirectMessageConfiguration;import com.amazonaws.services.pinpoint.model.MessageRequest;import com.amazonaws.services.pinpoint.model.SMSMessage;import com.amazonaws.services.pinpoint.model.SendMessagesRequest;

public class SendMessage {

// The AWS Region that you want to use to send the message. For a list of // AWS Regions where the Amazon Pinpoint API is available, see // https://docs.aws.amazon.com/pinpoint/latest/apireference/ public static String region = "us-east-1"; // The phone number or short code to send the message from. The phone number // or short code that you specify has to be associated with your Amazon Pinpoint // account. For best results, specify long codes in E.164 format. public static String originationNumber = "+12065550199"; // The recipient's phone number. For best results, you should specify the // phone number in E.164 format. public static String destinationNumber = "+14255550142"; // The content of the SMS message. public static String message = "This message was sent through Amazon Pinpoint " + "using the AWS SDK for Java. Reply STOP to " + "opt out."; // The Pinpoint project/application ID to use when you send this message. // Make sure that the SMS channel is enabled for the project or application // that you choose. public static String appId = "ce796be37f32f178af652b26eexample";

// The type of SMS message that you want to send. If you plan to send // time-sensitive content, specify TRANSACTIONAL. If you plan to send // marketing-related content, specify PROMOTIONAL. public static String messageType = "TRANSACTIONAL"; // The registered keyword associated with the originating short code. public static String registeredKeyword = "myKeyword"; // The sender ID to use when sending the message. Support for sender ID // varies by country or region. For more information, see // https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-countries.html public static String senderId = "MySenderID"; public static void main(String[] args) throws IOException { try { Map<String,AddressConfiguration> addressMap = new HashMap<String,AddressConfiguration>(); addressMap.put(destinationNumber, new AddressConfiguration()

219

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

.withChannelType(ChannelType.SMS)); AmazonPinpoint client = AmazonPinpointClientBuilder.standard() .withRegion(region).build(); SendMessagesRequest request = new SendMessagesRequest() .withApplicationId(appId) .withMessageRequest(new MessageRequest() .withAddresses(addressMap) .withMessageConfiguration(new DirectMessageConfiguration() .withSMSMessage(new SMSMessage() .withBody(message) .withMessageType(messageType) .withOriginationNumber(originationNumber) .withSenderId(senderId) .withKeyword(registeredKeyword) ) ) ); System.out.println("Sending message..."); client.sendMessages(request); System.out.println("Message sent!"); } catch (Exception ex) { System.out.println("The message wasn't sent. Error message: " + ex.getMessage()); } }}

JavaScript (Node.js)

Utilice este ejemplo para enviar un mensaje SMS mediante AWS SDK for JavaScript in Node.js. Eneste ejemplo se presupone que ya ha instalado y configurado el SDK para JavaScript en Node.js.Para obtener más información, consulte Introducción en la Guía para desarrolladores de AWS SDK forJavaScript in Node.js.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales en la Guía para desarrolladores deAWS SDK for JavaScript in Node.js.

'use strict';

var AWS = require('aws-sdk');

// The AWS Region that you want to use to send the message. For a list of// AWS Regions where the Amazon Pinpoint API is available, see// https://docs.aws.amazon.com/pinpoint/latest/apireference/.var aws_region = "us-east-1";

// The phone number or short code to send the message from. The phone number// or short code that you specify has to be associated with your Amazon Pinpoint// account. For best results, specify long codes in E.164 format.var originationNumber = "+12065550199";

// The recipient's phone number. For best results, you should specify the// phone number in E.164 format.var destinationNumber = "+14255550142";

// The content of the SMS message.var message = "This message was sent through Amazon Pinpoint " + "using the AWS SDK for JavaScript in Node.js. Reply STOP to "

220

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

+ "opt out.";

// The Amazon Pinpoint project/application ID to use when you send this message.// Make sure that the SMS channel is enabled for the project or application// that you choose.var applicationId = "ce796be37f32f178af652b26eexample";

// The type of SMS message that you want to send. If you plan to send// time-sensitive content, specify TRANSACTIONAL. If you plan to send// marketing-related content, specify PROMOTIONAL.var messageType = "TRANSACTIONAL";

// The registered keyword associated with the originating short code.var registeredKeyword = "myKeyword";

// The sender ID to use when sending the message. Support for sender ID// varies by country or region. For more information, see// https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-countries.htmlvar senderId = "MySenderID";

// Specify that you're using a shared credentials file, and optionally specify// the profile that you want to use.var credentials = new AWS.SharedIniFileCredentials({profile: 'default'});AWS.config.credentials = credentials;

// Specify the region.AWS.config.update({region:aws_region});

//Create a new Pinpoint object.var pinpoint = new AWS.Pinpoint();

// Specify the parameters to pass to the API.var params = { ApplicationId: applicationId, MessageRequest: { Addresses: { [destinationNumber]: { ChannelType: 'SMS' } }, MessageConfiguration: { SMSMessage: { Body: message, Keyword: registeredKeyword, MessageType: messageType, OriginationNumber: originationNumber, SenderId: senderId, } } }};

//Try to send the message.pinpoint.sendMessages(params, function(err, data) { // If something goes wrong, print an error message. if(err) { console.log(err.message); // Otherwise, show the unique ID for the message. } else { console.log("Message sent! " + data['MessageResponse']['Result'][destinationNumber]['StatusMessage']); }});

221

Amazon Pinpoint Guía para desarrolladoresEnvío de mensajes SMS

Python

Utilice este ejemplo para enviar un mensaje SMS mediante el AWS SDK para Python (Boto 3). En esteejemplo se presupone que ya ha instalado y configurado el SDK for Python. Si desea obtener másinformación, consulte la Guía de inicio rápido en la Introducción a AWS SDK para Python (Boto 3).

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Credenciales en la AWS SDK for Python (Boto 3) API Reference.

import boto3from botocore.exceptions import ClientError

# The AWS Region that you want to use to send the message. For a list of# AWS Regions where the Amazon Pinpoint API is available, see# https://docs.aws.amazon.com/pinpoint/latest/apireference/region = "us-east-1"

# The phone number or short code to send the message from. The phone number# or short code that you specify has to be associated with your Amazon Pinpoint# account. For best results, specify long codes in E.164 format.originationNumber = "+12065550199"

# The recipient's phone number. For best results, you should specify the# phone number in E.164 format.destinationNumber = "+14255550142"

# The content of the SMS message.message = ("This is a sample message sent from Amazon Pinpoint by using the " "AWS SDK for Python (Boto 3).")

# The Amazon Pinpoint project/application ID to use when you send this message.# Make sure that the SMS channel is enabled for the project or application# that you choose.applicationId = "ce796be37f32f178af652b26eexample"

# The type of SMS message that you want to send. If you plan to send# time-sensitive content, specify TRANSACTIONAL. If you plan to send# marketing-related content, specify PROMOTIONAL.messageType = "TRANSACTIONAL"

# The registered keyword associated with the originating short code.registeredKeyword = "myKeyword"

# The sender ID to use when sending the message. Support for sender ID# varies by country or region. For more information, see# https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-countries.htmlsenderId = "MySenderID"

# Create a new client and specify a region.client = boto3.client('pinpoint',region_name=region)try: response = client.send_messages( ApplicationId=applicationId, MessageRequest={ 'Addresses': { destinationNumber: { 'ChannelType': 'SMS' } }, 'MessageConfiguration': { 'SMSMessage': { 'Body': message, 'Keyword': registeredKeyword,

222

Amazon Pinpoint Guía para desarrolladoresEnviar mensajes de voz

'MessageType': messageType, 'OriginationNumber': originationNumber, 'SenderId': senderId } } } )

except ClientError as e: print(e.response['Error']['Message'])else: print("Message sent! Message ID: " + response['MessageResponse']['Result'][destinationNumber]['MessageId'])

Enviar mensajes de vozPuede utilizar la API de Amazon Pinpoint para enviar mensajes de voz a determinados números deteléfono. En esta sección se incluyen ejemplos de código completos que puede utilizar para enviarmensajes de voz a través de la API de SMS y voz de Amazon Pinpoint mediante AWS SDK.

Java

Utilice este ejemplo para enviar un mensaje de voz mediante AWS SDK for Java. En este ejemplo sepresupone que ya ha instalado y configurado SDK para Java. Para obtener más información, consulteIntroducción en la AWS SDK for Java Developer Guide.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales y regiones de AWS para desarrolloen la AWS SDK for Java Developer Guide.

package com.amazonaws.samples;

import java.io.IOException;

import com.amazonaws.services.pinpointsmsvoice.AmazonPinpointSMSVoice;import com.amazonaws.services.pinpointsmsvoice.AmazonPinpointSMSVoiceClientBuilder;import com.amazonaws.services.pinpointsmsvoice.model.SSMLMessageType;import com.amazonaws.services.pinpointsmsvoice.model.SendVoiceMessageRequest;import com.amazonaws.services.pinpointsmsvoice.model.VoiceMessageContent;

public class SendMessage { // The AWS Region that you want to use to send the voice message. For a list of // AWS Regions where the Amazon Pinpoint SMS and Voice API is available, see // https://docs.aws.amazon.com/pinpoint-sms-voice/latest/APIReference/ static final String region = "us-east-1"; // The phone number that the message is sent from. The phone number that you // specify has to be associated with your Amazon Pinpoint account. For best // results, you should specify the phone number in E.164 format. static final String originationNumber = "+12065550110"; // The recipient's phone number. For best results, you should specify the // phone number in E.164 format. static final String destinationNumber = "+12065550142"; // The Amazon Polly voice that you want to use to send the message. For a list // of voices, see https://docs.aws.amazon.com/polly/latest/dg/voicelist.html

223

Amazon Pinpoint Guía para desarrolladoresEnviar mensajes de voz

static final String voiceName = "Matthew"; // The language to use when sending the message. For a list of supported // languages, see https://docs.aws.amazon.com/polly/latest/dg/SupportedLanguage.html static final String languageCode = "en-US"; // The content of the message. This example uses SSML to customize and control // certain aspects of the message, such as by adding pauses and changing // phonation. The message can't contain any line breaks. static final String ssmlMessage = "<speak>This is a test message sent from " + "<emphasis>Amazon Pinpoint</emphasis> " + "using the <break strength='weak'/>AWS " + "SDK for Java. " + "<amazon:effect phonation='soft'>Thank " + "you for listening.</amazon:effect></speak>"; // The phone number that you want to appear on the recipient's device. The // phone number that you specify has to be associated with your Amazon Pinpoint // account. static final String callerId = "+12065550199"; // The configuration set that you want to use to send the message. static final String configurationSet = "ConfigSet"; public static void main(String[] args) throws IOException { try { AmazonPinpointSMSVoice client = AmazonPinpointSMSVoiceClientBuilder.standard() .withRegion(region).build(); SendVoiceMessageRequest request = new SendVoiceMessageRequest() .withCallerId(callerId) .withDestinationPhoneNumber(destinationNumber) .withOriginationPhoneNumber(originationNumber) .withConfigurationSetName(configurationSet) .withContent(new VoiceMessageContent() .withSSMLMessage(new SSMLMessageType() .withLanguageCode(languageCode) .withVoiceId(voiceName) .withText(ssmlMessage) ) ); client.sendVoiceMessage(request); System.out.println("The message was sent successfully."); } catch (Exception ex) { System.out.println("The message wasn't sent. Error message: " + ex.getMessage()); } }}

JavaScript (Node.js)

Utilice este ejemplo para enviar un mensaje de voz mediante AWS SDK for JavaScript in Node.js. Eneste ejemplo se presupone que ya ha instalado y configurado SDK para JavaScript en Node.js.

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales en la Guía para desarrolladores deAWS SDK for JavaScript in Node.js.

'use strict'

224

Amazon Pinpoint Guía para desarrolladoresEnviar mensajes de voz

var AWS = require('aws-sdk');

// The AWS Region that you want to use to send the voice message. For a list of// AWS Regions where the Amazon Pinpoint SMS and Voice API is available, see// https://docs.aws.amazon.com/pinpoint-sms-voice/latest/APIReference/var aws_region = "us-east-1";

// The phone number that the message is sent from. The phone number that you// specify has to be associated with your Amazon Pinpoint account. For best results, you// should specify the phone number in E.164 format.var originationNumber = "+12065550110";

// The recipient's phone number. For best results, you should specify the phone// number in E.164 format.var destinationNumber = "+12065550142";

// The language to use when sending the message. For a list of supported// languages, see https://docs.aws.amazon.com/polly/latest/dg/SupportedLanguage.htmlvar languageCode = "en-US";

// The Amazon Polly voice that you want to use to send the message. For a list// of voices, see https://docs.aws.amazon.com/polly/latest/dg/voicelist.htmlvar voiceId = "Matthew";

// The content of the message. This example uses SSML to customize and control// certain aspects of the message, such as the volume or the speech rate.// The message can't contain any line breaks.var ssmlMessage = "<speak>" + "This is a test message sent from <emphasis>Amazon Pinpoint</emphasis> " + "using the <break strength='weak'/>AWS SDK for JavaScript in Node.js. " + "<amazon:effect phonation='soft'>Thank you for listening." + "</amazon:effect>" + "</speak>";

// The phone number that you want to appear on the recipient's device. The phone// number that you specify has to be associated with your Amazon Pinpoint account.var callerId = "+12065550199";

// The configuration set that you want to use to send the message.var configurationSet = "ConfigSet";

// Specify that you're using a shared credentials file, and optionally specify// the profile that you want to use.var credentials = new AWS.SharedIniFileCredentials({profile: 'default'});AWS.config.credentials = credentials;

// Specify the region.AWS.config.update({region:aws_region});

//Create a new Pinpoint object.var pinpointsmsvoice = new AWS.PinpointSMSVoice();

var params = { CallerId: callerId, ConfigurationSetName: configurationSet, Content: { SSMLMessage: { LanguageCode: languageCode, Text: ssmlMessage, VoiceId: voiceId } }, DestinationPhoneNumber: destinationNumber, OriginationPhoneNumber: originationNumber

225

Amazon Pinpoint Guía para desarrolladoresEnviar mensajes de voz

};

//Try to send the message.pinpointsmsvoice.sendVoiceMessage(params, function(err, data) { // If something goes wrong, print an error message. if(err) { console.log(err.message); // Otherwise, show the unique ID for the message. } else { console.log("Message sent! Message ID: " + data['MessageId']); }});

Python

Utilice este ejemplo para enviar un mensaje de voz mediante AWS SDK para Python (Boto 3). En esteejemplo se presupone que ya ha instalado y configurado SDK para Python (Boto 3).

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Credenciales en la AWS SDK for Python (Boto 3) API Reference.

import boto3from botocore.exceptions import ClientError

# The AWS Region that you want to use to send the voice message. For a list of# AWS Regions where the Amazon Pinpoint SMS and Voice API is available, see# https://docs.aws.amazon.com/pinpoint-sms-voice/latest/APIReference/region = "us-east-1"

# The phone number that the message is sent from. The phone number that you# specify has to be associated with your Amazon Pinpoint account. For best results, you# should specify the phone number in E.164 format.originationNumber = "+12065550110"

# The recipient's phone number. For best results, you should specify the phone# number in E.164 format.destinationNumber = "+12065550142"

# The language to use when sending the message. For a list of supported# languages, see https://docs.aws.amazon.com/polly/latest/dg/SupportedLanguage.htmllanguageCode = "en-US"

# The Amazon Polly voice that you want to use to send the message. For a list# of voices, see https://docs.aws.amazon.com/polly/latest/dg/voicelist.htmlvoiceId = "Matthew"

# The content of the message. This example uses SSML to customize and control# certain aspects of the message, such as the volume or the speech rate.# The message can't contain any line breaks.ssmlMessage = ("<speak>" "This is a test message sent from <emphasis>Amazon Pinpoint</emphasis> " "using the <break strength='weak'/>AWS SDK for Python. " "<amazon:effect phonation='soft'>Thank you for listening." "</amazon:effect>" "</speak>")

# The phone number that you want to appear on the recipient's device. The phone# number that you specify has to be associated with your Amazon Pinpoint account.callerId = "+12065550199"

# The configuration set that you want to use to send the message.

226

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

configurationSet = "ConfigSet"

# Create a new SMS and Voice client and specify an AWS Region.client = boto3.client('sms-voice',region_name=region)

try: response = client.send_voice_message( DestinationPhoneNumber = destinationNumber, OriginationPhoneNumber = originationNumber, CallerId = callerId, ConfigurationSetName = configurationSet, Content={ 'SSMLMessage':{ 'LanguageCode': languageCode, 'VoiceId': voiceId, 'Text': ssmlMessage } } )# Display an error message if something goes wrong.except ClientError as e: print(e.response['Error']['Message'])# If the message is sent successfully, show the message ID.else: print("Message sent!"), print("Message ID: " + response['MessageId'])

Envío de notificaciones pushLa API de Amazon Pinpoint puede enviar notificaciones push de transacciones a identificadores dedispositivos específicos. En esta sección se incluyen ejemplos de código completos que puede utilizar paraenviar notificaciones push a través de la API de Amazon Pinpoint mediante un SDK de AWS.

Puede utilizar estos ejemplos para enviar notificaciones push a través de cualquier servicio denotificaciones push compatible con Amazon Pinpoint. Actualmente, Amazon Pinpoint admite los siguientescanales: Firebase Cloud Messaging (FCM), Apple Push Notification service (APNs), Baidu Cloud Push yAmazon Device Messaging (ADM).

Note

Cuando envíe notificaciones push a través del servicio Firebase Cloud Messaging (FCM), utiliceel nombre del servicio GCM en la llamada a la API de Amazon Pinpoint. Google dejó de utilizar elservicio Google Cloud Messaging (GCM) el 10 de abril de 2018. Sin embargo, la API de AmazonPinpoint utiliza el nombre de servicio GCM para los mensajes que envía a través del servicioFCM con el fin de mantener la compatibilidad con el código de API que se escribió antes de lainterrupción del servicio GCM.

JavaScript (Node.js)

Utilice este ejemplo para enviar notificaciones push mediante el AWS SDK for JavaScript in Node.js.En este ejemplo se presupone que ya ha instalado y configurado el SDK para JavaScript en Node.js.

En este ejemplo también se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Configuración de credenciales en la Guía para desarrolladores deAWS SDK for JavaScript in Node.js.

'use strict';

227

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

const AWS = require('aws-sdk');

// The AWS Region that you want to use to send the message. For a list of// AWS Regions where the Amazon Pinpoint API is available, see// https://docs.aws.amazon.com/pinpoint/latest/apireference/const region = 'us-east-1';

// The title that appears at the top of the push notification.var title = 'Test message sent from Amazon Pinpoint.';

// The content of the push notification.var message = 'This is a sample message sent from Amazon Pinpoint by using the ' + 'AWS SDK for JavaScript in Node.js';

// The Amazon Pinpoint project ID that you want to use when you send this // message. Make sure that the push channel is enabled for the project that // you choose.var applicationId = 'ce796be37f32f178af652b26eexample';

// An object that contains the unique token of the device that you want to send // the message to, and the push service that you want to use to send the message.var recipient = { 'token': 'a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0', 'service': 'GCM' };

// The action that should occur when the recipient taps the message. Possible// values are OPEN_APP (opens the app or brings it to the foreground),// DEEP_LINK (opens the app to a specific page or interface), or URL (opens a// specific URL in the device's web browser.)var action = 'URL';

// This value is only required if you use the URL action. This variable contains// the URL that opens in the recipient's web browser.var url = 'https://www.example.com';

// The priority of the push notification. If the value is 'normal', then the// delivery of the message is optimized for battery usage on the recipient's// device, and could be delayed. If the value is 'high', then the notification is// sent immediately, and might wake a sleeping device.var priority = 'normal';

// The amount of time, in seconds, that the push notification service provider// (such as FCM or APNS) should attempt to deliver the message before dropping// it. Not all providers allow you specify a TTL value.var ttl = 30;

// Boolean that specifies whether the notification is sent as a silent// notification (a notification that doesn't display on the recipient's device).var silent = false;

function CreateMessageRequest() { var token = recipient['token']; var service = recipient['service']; if (service == 'GCM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message,

228

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'APNS') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'BAIDU') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'ADM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } }; }

return messageRequest}

229

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

function ShowOutput(data){ if (data["MessageResponse"]["Result"][recipient["token"]]["DeliveryStatus"] == "SUCCESSFUL") { var status = "Message sent! Response information: "; } else { var status = "The message wasn't sent. Response information: "; } console.log(status); console.dir(data, { depth: null });}

function SendMessage() { var token = recipient['token']; var service = recipient['service']; var messageRequest = CreateMessageRequest();

// Specify that you're using a shared credentials file, and specify the // IAM profile to use. var credentials = new AWS.SharedIniFileCredentials({ profile: 'default' }); AWS.config.credentials = credentials;

// Specify the AWS Region to use. AWS.config.update({ region: region });

//Create a new Pinpoint object. var pinpoint = new AWS.Pinpoint(); var params = { "ApplicationId": applicationId, "MessageRequest": messageRequest };

// Try to send the message. pinpoint.sendMessages(params, function(err, data) { if (err) console.log(err); else ShowOutput(data); });}

SendMessage()

Python

Utilice este ejemplo para enviar notificaciones push mediante el AWS SDK para Python (Boto 3). Eneste ejemplo se presupone que ya ha instalado y configurado el SDK para Python (Boto 3).

En este ejemplo se supone que está utilizando un archivo de credenciales compartidas paraespecificar la clave de acceso y la clave de acceso secreta para un usuario de IAM existente. Paraobtener más información, consulte Credenciales en la AWS SDK for Python (Boto 3) API Reference.

import jsonimport boto3from botocore.exceptions import ClientError

# The AWS Region that you want to use to send the message. For a list of# AWS Regions where the Amazon Pinpoint API is available, see# https://docs.aws.amazon.com/pinpoint/latest/apireference/region = "us-east-1"

# The title that appears at the top of the push notification.title = "Test message sent from Amazon Pinpoint."

# The content of the push notification.message = ("This is a sample message sent from Amazon Pinpoint by using the "

230

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

"AWS SDK for Python (Boto 3).")

# The Amazon Pinpoint project/application ID to use when you send this message.# Make sure that the push channel is enabled for the project or application# that you choose.application_id = "ce796be37f32f178af652b26eexample"

# A dictionary that contains the unique token of the device that you want to send the# message to, and the push service that you want to use to send the message.recipient = { "token": "a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0", "service": "GCM" }

# The action that should occur when the recipient taps the message. Possible# values are OPEN_APP (opens the app or brings it to the foreground),# DEEP_LINK (opens the app to a specific page or interface), or URL (opens a# specific URL in the device's web browser.)action = "URL"

# This value is only required if you use the URL action. This variable contains# the URL that opens in the recipient's web browser.url = "https://www.example.com"

# The priority of the push notification. If the value is 'normal', then the# delivery of the message is optimized for battery usage on the recipient's# device, and could be delayed. If the value is 'high', then the notification is# sent immediately, and might wake a sleeping device.priority = "normal"

# The amount of time, in seconds, that the push notification service provider# (such as FCM or APNS) should attempt to deliver the message before dropping# it. Not all providers allow you specify a TTL value.ttl = 30

# Boolean that specifies whether the notification is sent as a silent# notification (a notification that doesn't display on the recipient's device).silent = False

# Set the MessageType based on the values in the recipient variable.def create_message_request():

token = recipient["token"] service = recipient["service"]

if service == "GCM": message_request = { 'Addresses': { token: { 'ChannelType': 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "APNS": message_request = {

231

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

'Addresses': { token: { 'ChannelType': 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "BAIDU": message_request = { 'Addresses': { token: { 'ChannelType': 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "ADM": message_request = { 'Addresses': { token: { 'ChannelType': 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } } else: message_request = None

return message_request

# Show a success or failure message, and provide the response from the API.def show_output(response): if response['MessageResponse']['Result'][recipient["token"]]['DeliveryStatus'] == "SUCCESSFUL": status = "Message sent! Response information:\n" else: status = "The message wasn't sent. Response information:\n" print(status, json.dumps(response,indent=4))

232

Amazon Pinpoint Guía para desarrolladoresEnvío de notificaciones push

# Send the message through the appropriate channel.def send_message():

token = recipient["token"] service = recipient["service"] message_request = create_message_request()

client = boto3.client('pinpoint',region_name=region)

try: response = client.send_messages( ApplicationId=application_id, MessageRequest=message_request ) except ClientError as e: print(e.response['Error']['Message']) else: show_output(response)

send_message()

233

Amazon Pinpoint Guía para desarrolladoresConfiguración de la transmisión de eventos en streaming

Transmisión en streaming de eventosde Amazon Pinpoint a Kinesis

En Amazon Pinpoint, un evento es una acción que se produce cuando: un usuario interactúa con una desus aplicaciones, cuando envía un mensaje desde una campaña o recorrido o cuando envía un mensajede correo electrónico o SMS transaccional. Por ejemplo, si envía un mensaje de correo electrónico, seproducen varios eventos:

• Cuando envía el mensaje, se produce un evento de envío.• Cuando el mensaje llega a la bandeja de entrada del destinatario, se produce un evento de entrega.• Cuando el destinatario abre el mensaje, se produce un evento de apertura.

Puede configurar Amazon Pinpoint para enviar información sobre eventos a Amazon Kinesis. Laplataforma Kinesis ofrece servicios que puede usar para recopilar, procesar y analizar datos de losservicios de AWS en tiempo real. Amazon Pinpoint puede enviar datos de eventos a Kinesis DataFirehose, que transmite estos datos a almacenes de datos de AWS como Amazon S3 o Amazon Redshift.Amazon Pinpoint también puede transmitir datos a Kinesis Data Streams, que incorpora y almacenamúltiples flujos de datos para su procesamiento por parte de las aplicaciones de análisis.

La secuencia de eventos de Amazon Pinpoint incluye información acerca de las interacciones de losusuarios con las aplicaciones (apps) que conecte a Amazon Pinpoint. También incluye información sobretodos los mensajes que envíe desde campañas, a través de cualquier canal y de recorridos. Por último,incluye información sobre los correos electrónicos y los mensajes SMS de transacciones que envíe.

Note

Amazon Pinpoint no transmite información sobre mensajes de voz ni notificaciones push detransacciones.

En este capítulo se proporciona información acerca de la configuración de Amazon Pinpoint para transmitirdatos de eventos a Kinesis. También contiene ejemplos de los datos de eventos transmitidos por AmazonPinpoint.

Temas• Configuración de la transmisión de eventos en streaming (p. 234)• Eventos de aplicaciones (p. 236)• Eventos de campaña (p. 240)• Eventos de recorrido (p. 244)• Eventos de correo electrónico (p. 246)• Eventos de SMS (p. 255)

Configuración de la transmisión de eventos enstreaming

Puede configurar Amazon Pinpoint para enviar datos de eventos a una secuencia de Amazon Kinesis ouna secuencia de entrega de Amazon Kinesis Data Firehose. Amazon Pinpoint puede enviar datos deeventos para campañas, recorridos y mensajes de correo electrónico y SMS transaccionales.

234

Amazon Pinpoint Guía para desarrolladoresRequisitos previos

En esta sección se incluye información sobre la configuración del streaming de eventos medianteprogramación. También puede utilizar la consola de Amazon Pinpoint para configurar el streaming deeventos. Para obtener información acerca de la configuración del streaming de eventos mediante laconsola de Amazon Pinpoint, consulte Configuración de transmisión de eventos en la Guía del usuario deAmazon Pinpoint.

Requisitos previosLos ejemplos de esta sección requieren los datos siguientes:

• El ID de aplicación de una aplicación que está integrada con Amazon Pinpoint y eventos de notificación.Para obtener información acerca de cómo efectuar la integración, consulte Integración de AmazonPinpoint en una aplicación (p. 135).

• El nombre de recurso de Amazon (ARN) de una secuencia de Kinesis o una secuencia de entrega deKinesis Data Firehose de su cuenta de AWS. Para obtener información acerca de la creación de estosrecursos, consulte Creación y actualización de secuencias de datos en la Guía para desarrolladores deAmazon Kinesis Data Streams o Creación de un flujo de entrega de Amazon Kinesis Data Firehose en laGuía para desarrolladores de Amazon Kinesis Data Firehose.

• El ARN de un rol de AWS Identity and Access Management (IAM) que autorice a Amazon Pinpoint aenviar datos a la secuencia. Para obtener información acerca de la creación de un rol, consulte Rol deIAM para la transmisión de eventos en streaming a Kinesis (p. 399).

AWS CLIEn el siguiente ejemplo de la AWS CLI se utiliza el comando put-event-stream. Este comando configuraAmazon Pinpoint para enviar eventos a una secuencia de Kinesis:

aws pinpoint put-event-stream \--application-id projectId \--write-event-stream DestinationStreamArn=streamArn,RoleArn=roleArn

AWS SDK for JavaEl siguiente ejemplo de Java configura Amazon Pinpoint para enviar eventos a una secuencia de Kinesis:

public PutEventStreamResult createEventStream(AmazonPinpoint pinClient, String appId, String streamArn, String roleArn) { WriteEventStream stream = new WriteEventStream() .withDestinationStreamArn(streamArn) .withRoleArn(roleArn);

PutEventStreamRequest request = new PutEventStreamRequest() .withApplicationId(appId) .withWriteEventStream(stream);

return pinClient.putEventStream(request);}

Este ejemplo construye un objeto WriteEventStream que almacena los ARN de la secuencia de Kinesisy el rol de IAM. El objeto WriteEventStream se transfiere a un objeto PutEventStreamRequest paraconfigurar Amazon Pinpoint de forma que transmita en streaming los eventos correspondientes a unaaplicación específica. El objeto PutEventStreamRequest se pasa al método putEventStream delcliente de Amazon Pinpoint.

235

Amazon Pinpoint Guía para desarrolladoresDeshabilitación de la transmisión de eventos en streaming

Puede asignar una secuencia de Kinesis a varias aplicaciones. Si lo hace, Amazon Pinpoint envía datos delos eventos desde cada aplicación a la secuencia, lo que le permite analizar los datos como una colección.El siguiente método de ejemplo acepta una lista de ID de aplicación (app) y utiliza el método de ejemploanterior, createEventStream, para asignar una secuencia a cada aplicación:

public List<PutEventStreamResult> createEventStreamFromAppList( AmazonPinpoint pinClient, List<String> appIDs, String streamArn, String roleArn) {

return appIDs.stream() .map(appId -> createEventStream(pinClient, appId, streamArn, roleArn)) .collect(Collectors.toList());}

Aunque es posible asignar una secuencia a varias aplicaciones, no es posible asignar varias secuencias auna aplicación.

Deshabilitación de la transmisión de eventos enstreamingSi se asigna una secuencia de Kinesis a una aplicación, es posible deshabilitar la transmisión de eventospara dicha aplicación. Amazon Pinpoint deja de transmitir los eventos a Kinesis, pero puede ver los análisisde eventos mediante la consola de Amazon Pinpoint.

AWS CLIUtilice el comando delete-event-stream:

aws pinpoint delete-event-stream --application-id application-id

AWS SDK for JavaUtilice el método deleteEventStream del cliente e Amazon Pinpoint:

pinClient.deleteEventStream(new DeleteEventStreamRequest().withApplicationId(appId));

Eventos de aplicacionesDespués de integrar su aplicación (app) con Amazon Pinpoint, Amazon Pinpoint puede transmitir datos deeventos sobre la actividad del usuario y las entregas de mensajes para la aplicación.

EjemploEl objeto JSON de un evento de aplicación contiene los datos que se muestran en el siguiente ejemplo.

{ "event_type": "_session.stop", "event_timestamp": 1487973802507, "arrival_timestamp": 1487973803515, "event_version": "3.0", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",

236

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de aplicación

"cognito_identity_pool_id": "us-east-1:a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6", "package_name": "main.page", "sdk": { "name": "aws-sdk-mobile-analytics-js", "version": "0.9.1:2.4.8" }, "title": "title", "version_name": "1.0", "version_code": "1" }, "client": { "client_id": "m3n4o5p6-a1b2-c3d4-e5f6-g7h8i9j0k1l2", "cognito_id": "us-east-1:i9j0k1l2-m3n4-o5p6-a1b2-c3d4e5f6g7h8" }, "device": { "locale": { "code": "en_US", "country": "US", "language": "en" }, "make": "generic web browser", "model": "Unknown", "platform": { "name": "android", "version": "10.10" } }, "session": { "session_id": "f549dea9-1090-945d-c3d1-e4967example", "start_timestamp": 1487973202531, "stop_timestamp": 1487973802507 }, "attributes": {}, "metrics": {}}

Atributos de los eventos de aplicaciónEn esta sección se definen los atributos que se incluyen en la secuencia de eventos de la aplicación.

Atributo Descripción

event_type El tipo de evento. Los valores posibles son:

• _session.start: el punto de enlace ha iniciado unanueva sesión.

• _session.stop: el punto de enlace ha finalizado unasesión.

• _userauth.sign_in: el punto de enlace ha iniciadosesión en la aplicación.

• _userauth.sign_up: un nuevo punto de enlace hacompletado el proceso de registro en la aplicación.

• _userauth.auth_fail: el punto de enlace ha intentadoiniciar sesión en la aplicación, pero no ha podidocompletar el proceso.

• _monetization.purchase: el punto de enlace harealizado una compra en la aplicación.

• _session.pause: el punto de enlace ha puesto enpausa una sesión. Las sesiones en pausa se pueden

237

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de aplicación

Atributo Descripciónreanudar para poder seguir recopilando métricas sininiciar una sesión totalmente nueva.

• _session.resume: el punto de enlace ha reanudadouna sesión.

event_timestamp La hora a la que se notificó el evento, que se muestra enformato de tiempo Unix en milisegundos.

arrival_timestamp La hora a la que Amazon Pinpoint recibió el evento, quese muestra en formato de tiempo Unix en milisegundos.

event_version La versión del esquema JSON del evento.

Tip

Compruebe esta versión en la aplicación deprocesamiento de eventos para saber cuándoactualizar la aplicación en respuesta a unaactualización del esquema.

application Información sobre el proyecto de Amazon Pinpointasociado al evento. Consulte la tabla de la secciónApplication (Aplicación) (p. 238) para obtener másinformación.

client Información sobre el punto de enlace que notificóel evento. Consulte la tabla de la sección Client(Cliente) (p. 239) para obtener más información.

device Información sobre el dispositivo que notificó elevento. Consulte la tabla de la sección Device(Dispositivo) (p. 239) para obtener más información.

session Información sobre la sesión que generó elevento. Consulte la tabla de la sección Session(Sesión) (p. 240) para obtener más información.

attributes Atributos asociados al evento. Para los eventosnotificados por las aplicaciones, este objeto incluye losatributos personalizados que usted defina.

metrics Métricas relacionadas con el evento. Si lo desea, puedeconfigurar las aplicaciones para que envíen métricaspersonalizadas a Amazon Pinpoint.

AplicaciónIncluye información sobre el proyecto de Amazon Pinpoint al que está asociado el evento.

Atributo Descripción

app_id El ID único del proyecto de Amazon Pinpoint que notificóel evento.

cognito_identity_pool_id El ID del grupo de identidades de Amazon Cognito al queestá asociado el punto de enlace.

238

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de aplicación

Atributo Descripción

package_name El nombre del paquete de la aplicación, comocom.example.my_app.

sdk Información sobre el SDK que se utilizó para notificar elevento. Consulte la tabla de la sección SDK (p. 239)para obtener más información.

title El nombre de la aplicación.

version_name El nombre de la versión de la aplicación, como, porejemplo, V2.5.

version_code El número de versión de la aplicación, como, porejemplo, 3.

SDKIncluye información sobre el SDK que se utilizó para notificar el evento.

Atributo Descripción

name El nombre del SDK que se utilizó para notificar elevento.

version La versión del SDK.

ClienteIncluye información sobre el punto de enlace que generó el evento.

Atributo Descripción

client_id ID del punto de enlace.

cognito_id El token del ID de Amazon Cognito asociado al punto deenlace.

DispositivoIncluye información sobre el dispositivo del punto de enlace que generó el evento.

Atributo Descripción

locale Información sobre la configuración de idioma y regióndel dispositivo del punto de enlace. Consulte la tabla dela sección Locale (Local) (p. 240) para obtener másinformación.

make El fabricante del dispositivo del punto de enlace.

model El identificador del modelo del dispositivo del punto deenlace.

239

Amazon Pinpoint Guía para desarrolladoresEventos de campaña

Atributo Descripción

platform Información sobre el sistema operativo en el dispositivodel punto de enlace. Consulte la tabla de la secciónPlatform (Plataforma) (p. 240) para obtener másinformación.

LocaleIncluye información sobre la configuración de idioma y región del dispositivo del punto de enlace.

Atributo Descripción

code El identificador de configuración regional asociadoal dispositivo.

country El país o la región que está asociado a laconfiguración regional del dispositivo.

language El idioma asociado a la configuración regional deldispositivo.

PlataformaIncluye información sobre el sistema operativo en el dispositivo del punto de enlace.

Atributo Descripción

name El nombre del sistema operativo del dispositivo.

version La versión del sistema operativo del dispositivo.

SesiónIncluye información sobre la sesión que generó el evento.

Atributo Descripción

session_id ID único que identifica la sesión.

start_timestamp La fecha y la hora en que comenzó la sesión, que semuestra en formato de tiempo Unix en milisegundos.

stop_timestamp La fecha y la hora en que finalizó la sesión, que semuestra en formato de tiempo Unix en milisegundos.

Eventos de campañaSi utiliza Amazon Pinpoint para enviar campañas a través de cualquier canal, Amazon Pinpoint puedetransmitir datos de eventos sobre esas campañas. Esto incluye datos de eventos de cualquier mensaje decorreo electrónico o SMS que envíe desde una campaña. Para obtener información detallada sobre los

240

Amazon Pinpoint Guía para desarrolladoresEjemplo de evento

datos que Amazon Pinpoint transmite para esos tipos de mensajes, consulte the section called “Eventos decorreo electrónico” (p. 246) y the section called “Eventos de SMS” (p. 255).

Ejemplo de eventoEl objeto JSON de un evento de campaña contiene los datos que se muestran en el siguiente ejemplo.

{ "event_type": "_campaign.send", "event_timestamp": 1562109497426, "arrival_timestamp": 1562109497494, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {} }, "client": { "client_id": "d8dcf7c5-e81a-48ae-8313-f540cexample" }, "device": { "platform": {} }, "session": {}, "attributes": { "treatment_id": "0", "campaign_activity_id": "5473285727f04865bc673e527example", "campaign_id": "4f8d6097c2e8400fa3081d875example", "campaign_send_status": "SUCCESS" }, "client_context": { "custom": { "endpoint": "{\"ChannelType\":\"GCM\",\"EndpointStatus\":\"ACTIVE\", #\"OptOut\":\"NONE\",\"RequestId\":\"ec229696-9d1e-11e9-8bf1-85d0aexample\", #\"EffectiveDate\":\"2019-07-02T23:12:54.836Z\",\"User\":{}}" } }, "awsAccountId": "123456789012"}

Atributos de los eventos de campañaEn esta sección se definen los atributos que se incluyen en la secuencia de eventos de la campaña.

Atributo Descripción

event_type El tipo de evento. Los valores posibles son:

• _campaign.send: Amazon Pinpoint ejecutó lacampaña.

• _campaign.opened_notification: para las campañas denotificaciones push, este tipo de evento indica que eldestinatario ha tocado la notificación para abrirla.

• _campaign.received_foreground: para campañas denotificaciones push, este tipo de evento indica que eldestinatario recibió el mensaje como notificación enprimer plano.

• _campaiign.received_background: para campañas denotificaciones push, este tipo de evento indica que el

241

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de campaña

Atributo Descripcióndestinatario recibió el mensaje como una notificaciónen segundo plano.

event_timestamp La hora a la que se notificó el evento, que se muestra enformato de tiempo Unix en milisegundos.

arrival_timestamp La hora a la que Amazon Pinpoint recibió el evento, quese muestra en formato de tiempo Unix en milisegundos.

event_version La versión del esquema JSON del evento.

Tip

Compruebe esta versión en la aplicación deprocesamiento de eventos para saber cuándoactualizar la aplicación en respuesta a unaactualización del esquema.

application Información sobre el proyecto de Amazon Pinpointasociado al evento. Consulte la tabla de la secciónApplication (Aplicación) (p. 242) para obtener másinformación.

client Información sobre el punto de enlace al que estáasociado el evento. Consulte la tabla de la sección Client(Cliente) (p. 243) para obtener más información.

device Información sobre el dispositivo que notificó el evento.Para los mensajes de campaña y de transacciones, esteobjeto está vacío.

session Información sobre la sesión que generó el evento. Paralas campañas, este objeto está vacío.

attributes Atributos asociados al evento. Para los eventosnotificados por una de sus aplicaciones, este objetopuede incluir atributos personalizados definidos porla aplicación. Para los eventos que se crean al enviaruna campaña, este objeto contiene atributos asociadosa la campaña. Para los eventos que se generan alenviar mensajes de transacciones, este objeto contieneinformación relacionada con el propio mensaje.

Consulte la tabla de la sección Attributes(Atributos) (p. 243) para obtener más información.

client_context Contiene un objeto custom, que contiene una propiedadendpoint. La propiedad endpoint contiene elcontenido del registro del punto de enlace al que seenvió la campaña.

awsAccountId El ID de la cuenta de AWS de que se utilizó para enviarel mensaje.

AplicaciónIncluye información sobre el proyecto de Amazon Pinpoint al que está asociado el evento.

242

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de campaña

Atributo Descripción

app_id El ID único del proyecto de Amazon Pinpoint que notificóel evento.

sdk El SDK que se utilizó para notificar el evento.

AtributosIncluye información sobre la campaña que produjo el evento.

Atributo Descripción

treatment_id Si el mensaje se envió mediante una campaña deprueba A/B, este valor representa el número detratamiento del mensaje. Para las campañas estándar,este valor es 0.

campaign_activity_id El ID único que Amazon Pinpoint genera cuando seproduce el evento.

campaign_id El ID único de la campaña desde la que se envió elmensaje.

campaign_send_status Indica el estado de la campaña para el punto de enlacede destino. Entre los valores posibles se incluyen:

• SUCCESS: la campaña se ha enviado correctamenteal punto de enlace.

• FAILURE: la campaña no se ha enviado al punto deenlace.

• DAILY_CAP: la campaña no se ha enviado al punto deenlace porque ya se ha enviado el número máximo demensajes diarios al punto de enlace.

• EXPIRED: la campaña no se ha enviado al punto deenlace porque al enviarla se superaría la duraciónmáxima o la configuración de la tasa de envío para lacampaña.

• QUIET_TIME: la campaña no se ha enviado alpunto de enlace debido a limitaciones de tiempo deinactividad.

• HOLDOUT: la campaña no se ha enviado al puntode enlace porque este pertenecía al grupo deexclusiones.

ClienteIncluye información sobre el punto de enlace al que se dirigía la campaña.

Atributo Descripción

client_id El ID del punto de enlace al que se envió la campaña.

243

Amazon Pinpoint Guía para desarrolladoresEventos de recorrido

Eventos de recorridoSi publica un recorrido, Amazon Pinpoint puede transmitir datos de eventos sobre el recorrido. Esto incluyedatos de eventos de cualquier mensaje de correo electrónico que envíe desde el recorrido. Para obtenerinformación sobre los datos que Amazon Pinpoint transmite para los mensajes de correo electrónico,consulte the section called “Eventos de correo electrónico” (p. 246).

Ejemplo de eventoEl objeto JSON de un evento de recorrido contiene los datos que se muestran en el siguiente ejemplo.

{ "event_type":"_journey.send", "event_timestamp":1572989078843, "arrival_timestamp":1572989078843, "event_version":"3.1", "application":{ "app_id":"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk":{

} }, "client":{ "client_id":"d8dcf7c5-e81a-48ae-8313-f540cexample" }, "device":{ "platform":{

} }, "session":{

}, "attributes":{ "journey_run_id":"edc9a0b577164d1daf72ebd15example", "journey_send_status":"SUCCESS", "journey_id":"546401670c5547b08811ac6a9example", "journey_activity_id":"0yKexample" }, "client_context":{ "custom":{ "endpoint":"{\"ChannelType\":\"EMAIL\",\"EndpointStatus\":\"ACTIVE\",\"OptOut\":\"NONE\",\"Demographic\":{\"Timezone\":\"America/Los_Angeles\"}}" } }, "awsAccountId":"123456789012"}

Atributos de evento de recorridoEn esta sección se definen los atributos que se incluyen en los datos de la secuencia de eventos queAmazon Pinpoint genera para un recorrido.

Atributo Descripción

event_type El tipo de evento. Para los eventos de recorrido, el valorde este atributo es siempre _journey.send, lo queindica que Amazon Pinpoint ejecutó el recorrido.

244

Amazon Pinpoint Guía para desarrolladoresAtributos de evento de recorrido

Atributo Descripción

event_timestamp La hora a la que se notificó el evento, que se muestra enformato de tiempo Unix en milisegundos.

arrival_timestamp La hora a la que Amazon Pinpoint recibió el evento, quese muestra en formato de tiempo Unix en milisegundos.

event_version La versión del esquema JSON del evento.

Tip

Compruebe esta versión en la aplicación deprocesamiento de eventos para saber cuándoactualizar la aplicación en respuesta a unaactualización del esquema.

application Información sobre el proyecto de Amazon Pinpointasociado al evento. Para obtener más información,consulte la tabla Aplicación (p. 245).

client Información sobre el punto de enlace que está asociadoal evento. Para obtener más información, consulte latabla Cliente (p. 246).

device Información sobre el dispositivo que notificó el evento.Para recorridos, este objeto está vacío.

session Información sobre la sesión que generó el evento. Pararecorridos, este objeto está vacío.

attributes Los atributos que están asociados con el recorridoy la actividad de recorrido que generó el evento.Para obtener más información, consulte la tablaAtributos (p. 246).

client_context Contiene un objeto custom, que contiene una propiedadendpoint. La propiedad endpoint contiene elcontenido del registro de punto de enlace del punto deenlace asociado al evento.

awsAccountId El ID de la cuenta de AWS que se utilizó para ejecutar elrecorrido.

AplicaciónIncluye información sobre el proyecto de Amazon Pinpoint que está asociado con el evento.

Atributo Descripción

app_id El ID único del proyecto de Amazon Pinpoint que notificóel evento.

sdk El SDK que se utilizó para notificar el evento.

245

Amazon Pinpoint Guía para desarrolladoresEventos de correo electrónico

ClienteIncluye información sobre el punto de enlace al que está asociado con el evento.

Atributo Descripción

client_id ID del punto de enlace.

AtributosIncluye información sobre el recorrido que generó el evento.

Atributo Descripción

journey_run_id El ID único de la ejecución de recorrido que generóel evento. Amazon Pinpoint genera y asigna esteID automáticamente a cada nueva ejecución de unrecorrido.

journey_send_status Indica el estado de entrega del mensaje que estáasociado al evento. Entre los valores posibles seincluyen:

• SUCCESS: el mensaje se ha enviado correctamente alpunto de enlace.

• ERROR: el mensaje no se envió al punto de enlaceporque se produjo un error.

• DAILY_CAP: el mensaje no se envió al punto deenlace porque el envío del mensaje superaría elnúmero máximo de mensajes que el recorrido o elproyecto pueden enviar a un único punto de enlacedurante un período de 24 horas.

• QUIET_TIME: el mensaje no se envió debido arestricciones de tiempo de inactividad para el recorridoo el proyecto.

journey_id El identificador único del recorrido que generó el evento.

journey_activity_id El identificador único de la actividad de recorrido quegeneró el evento.

Eventos de correo electrónicoCuando se envían mensajes de correo electrónico, Amazon Pinpoint envía datos que proporcionaninformación adicional sobre los siguientes tipos de eventos para esos mensajes:

• Envíos• Entregas• Rebotes• Reclamaciones• Aperturas• Clics

246

Amazon Pinpoint Guía para desarrolladoresEjemplos de eventos

• Rechazos• Cancelaciones de suscripciones

Los tipos de eventos de la lista anterior se explican detalladamente en Atributos de los eventos de correoelectrónico (p. 251).

En función de la API y de la configuración que utilice para enviar mensajes de correo electrónico, esposible que vea tipos de eventos adicionales o datos diferentes. Por ejemplo, si envía mensajes medianteconjuntos de configuración que publican datos de eventos en Amazon Kinesis, como los proporcionadospor Amazon Simple Email Service (Amazon SES), los datos también pueden incluir eventos para erroresde representación de plantillas. Para obtener información acerca de esos datos, consulte Monitorizaciónutilizando la publicación de eventos de Amazon SES en la Guía para desarrolladores de Amazon SimpleEmail Service.

Ejemplos de eventosEnvío de correo electrónico

El objeto JSON referente a un evento de envío de correo electrónico contiene los datos que se muestranen el siguiente ejemplo.

{ "event_type": "_email.send", "event_timestamp": 1564618621380, "arrival_timestamp": 1564618622025, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {} }, "client": { "client_id": "9a311b17-6f8e-4093-be61-4d0bbexample" }, "device": { "platform": {} }, "session": {}, "attributes": { "feedback": "received" }, "awsAccountId": "123456789012", "facets": { "email_channel": { "mail_event": { "mail": { "message_id": "0200000073rnbmd1-mbvdg3uo-q8ia-m3ku-ibd3-ms77kexample-000000", "message_send_timestamp": 1564618621380, "from_address": "[email protected]", "destination": ["[email protected]"], "headers_truncated": false, "headers": [{ "name": "From", "value": "[email protected]" }, { "name": "To", "value": "[email protected]" }, { "name": "Subject", "value": "Amazon Pinpoint Test" }, { "name": "MIME-Version", "value": "1.0"

247

Amazon Pinpoint Guía para desarrolladoresEjemplos de eventos

}, { "name": "Content-Type", "value": "multipart/alternative; boundary=\"----=_Part_314159_271828\"" }], "common_headers": { "from": "[email protected]", "to": ["[email protected]"], "subject": "Amazon Pinpoint Test" } }, "send": {} } } }}

Entrega de correo electrónico

El objeto JSON referente a un evento de entrega de correo electrónico contiene los datos que se muestranen el siguiente ejemplo.

{ "event_type": "_email.delivered", "event_timestamp": 1564618621380, "arrival_timestamp": 1564618622690, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {} }, "client": { "client_id": "e9a3000d-daa2-40dc-ac47-1cd34example" }, "device": { "platform": {} }, "session": {}, "attributes": { "feedback": "delivered" }, "awsAccountId": "123456789012", "facets": { "email_channel": { "mail_event": { "mail": { "message_id": "0200000073rnbmd1-mbvdg3uo-q8ia-m3ku-ibd3-ms77kexample-000000", "message_send_timestamp": 1564618621380, "from_address": "[email protected]", "destination": ["[email protected]"], "headers_truncated": false, "headers": [{ "name": "From", "value": "[email protected]" }, { "name": "To", "value": "[email protected]" }, { "name": "Subject", "value": "Amazon Pinpoint Test" }, { "name": "MIME-Version", "value": "1.0" }, { "name": "Content-Type",

248

Amazon Pinpoint Guía para desarrolladoresEjemplos de eventos

"value": "multipart/alternative; boundary=\"----=_Part_314159_271828\"" }], "common_headers": { "from": "[email protected]", "to": ["[email protected]"], "subject": "Amazon Pinpoint Test" } }, "delivery": { "smtp_response": "250 ok: Message 82080542 accepted", "reporting_mta": "a8-53.smtp-out.amazonses.com", "recipients": ["[email protected]"], "processing_time_millis": 1310 } } } }}

Clic en correo electrónico

El objeto JSON referente a un evento de clic en correo electrónico contiene los datos que se muestran enel siguiente ejemplo.

{ "event_type": "_email.click", "event_timestamp": 1564618621380, "arrival_timestamp": 1564618713751, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {} }, "client": { "client_id": "49c1413e-a69c-46dc-b1c4-6470eexample" }, "device": { "platform": {} }, "session": {}, "attributes": { "feedback": "https://aws.amazon.com/pinpoint/" }, "awsAccountId": "123456789012", "facets": { "email_channel": { "mail_event": { "mail": { "message_id": "0200000073rnbmd1-mbvdg3uo-q8ia-m3ku-ibd3-ms77kexample-000000", "message_send_timestamp": 1564618621380, "from_address": "[email protected]", "destination": ["[email protected]"], "headers_truncated": false, "headers": [{ "name": "From", "value": "[email protected]" }, { "name": "To", "value": "[email protected]" }, { "name": "Subject", "value": "Amazon Pinpoint Test" }, { "name": "MIME-Version",

249

Amazon Pinpoint Guía para desarrolladoresEjemplos de eventos

"value": "1.0" }, { "name": "Content-Type", "value": "multipart/alternative; boundary=\"----=_Part_314159_271828\"" }, { "name": "Message-ID", "value": "null" }], "common_headers": { "from": "[email protected]", "to": ["[email protected]"], "subject": "Amazon Pinpoint Test" } }, "click": { "ip_address": "72.21.198.67", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15", "link": "https://aws.amazon.com/pinpoint/" } } } }}

Apertura de correo electrónico

El objeto JSON referente a un evento de apertura de correo electrónico contiene los datos que semuestran en el siguiente ejemplo.

{ "event_type": "_email.open", "event_timestamp": 1564618621380, "arrival_timestamp": 1564618712316, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {} }, "client": { "client_id": "8dc1f651-b3ec-46fc-9b67-2a050example" }, "device": { "platform": {} }, "session": {}, "attributes": { "feedback": "opened" }, "awsAccountId": "123456789012", "facets": { "email_channel": { "mail_event": { "mail": { "message_id": "0200000073rnbmd1-mbvdg3uo-q8ia-m3ku-ibd3-ms77kexample-000000", "message_send_timestamp": 1564618621380, "from_address": "[email protected]", "destination": ["[email protected]"], "headers_truncated": false, "headers": [{ "name": "From", "value": "[email protected]" }, { "name": "To",

250

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de correo electrónico

"value": "[email protected]" }, { "name": "Subject", "value": "Amazon Pinpoint Test" }, { "name": "MIME-Version", "value": "1.0" }, { "name": "Content-Type", "value": "multipart/alternative; boundary=\"----=_Part_314159_271828\"" }, { "name": "Message-ID", "value": "null" }], "common_headers": { "from": "[email protected]", "to": ["[email protected]"], "subject": "Amazon Pinpoint Test" } }, "open": { "ip_address": "72.21.198.67", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko)" } } } }}

Atributos de los eventos de correo electrónicoEn esta sección se definen los atributos que se incluyen en los datos de la secuencia de eventos queAmazon Pinpoint genera cuando se envían mensajes de correo electrónico.

Atributo Descripción

event_type El tipo de evento. Los valores posibles son:

• _email.send: Amazon Pinpoint ha aceptado el mensajey ha intentado entregarlo al destinatario.

• _email.delivered: el mensaje se ha entregado aldestinatario.

• _email.rejected: Amazon Pinpoint determinó que elmensaje contenía malware y no intentó enviarlo.

• _email.hardbounce: un problema permanente haimpedido que Amazon Pinpoint entregue el mensaje.Amazon Pinpoint no intentará entregar el mensaje denuevo.

• _email.softbounce: un problema temporal ha impedidoque Amazon Pinpoint entregue el mensaje. AmazonPinpoint intentará entregar el mensaje de nuevodurante un determinado periodo de tiempo. Despuésde este tiempo, si el mensaje todavía no se puedeentregar, se contabiliza como un rebote permanente.

• _email.complaint: el destinatario recibió el mensajey, a continuación, indicó a su proveedor de correoelectrónico que se trata de spam (por ejemplo,

251

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de correo electrónico

Atributo Descripciónmediante la característica "Marcar como spam" de sucliente de correo electrónico).

• _email.open: el destinatario recibió el mensaje y loabrió.

• _email.click: el destinatario recibió el mensaje e hizoclic en uno de sus enlaces.

• _email.unsubscribe: el destinatario recibió el mensajee hizo clic en un enlace para cancelar la suscripción.

event_timestamp Hora en que se envió el mensaje, que se muestra enformato de tiempo Unix en milisegundos. Este valorsuele ser el mismo para todos los eventos que segeneran para un mensaje.

arrival_timestamp La hora a la que Amazon Pinpoint recibió el evento, quese muestra en formato de tiempo Unix en milisegundos.

event_version La versión del esquema JSON del evento.

Tip

Compruebe esta versión en la aplicación deprocesamiento de eventos para saber cuándoactualizar la aplicación en respuesta a unaactualización del esquema.

application Información sobre el proyecto de Amazon Pinpointasociado al evento. Consulte la tabla de la secciónAplicación para obtener más información.

client Información sobre el cliente de la aplicación instalado enel dispositivo que notificó el evento. Para obtener másinformación, consulte la tabla Cliente.

device Información sobre el dispositivo que notificó el evento.Para obtener más información, consulte la tablaDispositivos.

En los eventos que se generan al enviar un mensaje detransacciones, este objeto está vacío.

session Para los eventos de correo electrónico, este objeto estávacío.

attributes Atributos asociados al evento. Para obtener másinformación, consulte la tabla Atributos.

Para los eventos notificados por una de sus aplicaciones,este objeto puede incluir atributos personalizadosdefinidos por la aplicación. Para los eventos que secrean al enviar un mensaje desde una campaña orecorrido, este objeto contiene atributos que estánasociados a la campaña o recorrido. Para los eventosque se generan al enviar mensajes de transacciones,este objeto contiene información relacionada con elpropio mensaje.

252

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de correo electrónico

Atributo Descripción

client_context Para eventos de correo electrónico, este objetocontiene un objeto custom, que contiene unatributo legacy_identifier. El valor del atributolegacy_identifier es el ID del proyecto desde elque se envió el mensaje.

facets Información adicional sobre el mensaje, como losencabezados de correo electrónico. Consulte la tabla dela sección Facetas para obtener más información.

awsAccountId El ID de la cuenta de AWS de que se utilizó para enviarel mensaje.

AplicaciónIncluye información sobre el proyecto de Amazon Pinpoint al que está asociado el evento.

Atributo Descripción

app_id El ID único del proyecto de Amazon Pinpoint que notificóel evento.

sdk El SDK que se utilizó para notificar el evento. Si envíaun mensaje de correo electrónico de transaccionesllamando directamente a la API de Amazon Pinpoint ocon la consola de Amazon Pinpoint, este objeto estarávacío.

AtributosIncluye información sobre la campaña o el recorrido que produjo el evento.

CampañaIncluye información sobre la campaña que produjo el evento.

Atributo Descripción

feedback Para los eventos _email.click, el valor de esteatributo es la URL del enlace en el que el destinatariohizo clic en el mensaje para generar el evento. Paraotros eventos, el valor representa el tipo de evento, comoreceived, opened o clicked.

treatment_id Si el mensaje se envió mediante una campaña deprueba A/B, este valor representa el número detratamiento del mensaje. Para campañas estándar ymensajes de correo electrónico de transacciones, estevalor es 0.

campaign_activity_id El ID único que Amazon Pinpoint genera cuando seproduce el evento.

253

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de correo electrónico

Atributo Descripción

campaign_id El ID único de la campaña que envió el mensaje.

Recorrido

Incluye información sobre el recorrido que produjo el evento.

Atributo Descripción

journey_run_id El identificador único de la ejecución de recorrido queenvió el mensaje. Amazon Pinpoint genera y asignaeste ID automáticamente a cada nueva ejecución de unrecorrido.

feedback Para los eventos _email.click, el valor de esteatributo es la URL del enlace en el que el destinatariohizo clic en el mensaje para generar el evento. Paraotros eventos, el valor representa el tipo de evento, comoreceived, delivered o opened.

journey_id El identificador único del recorrido que envió el mensaje.

journey_activity_id El identificador único de la actividad de recorrido queenvió el mensaje.

ClienteIncluye información sobre el punto de enlace al que se dirigía la campaña o el recorrido.

Atributo Descripción

client_id La dirección de correo electrónico del punto de enlaceque notificó el evento.

FacetasIncluye información sobre el mensaje y el tipo de evento.

Atributo Descripción

email_channel Contiene un objeto mail_event, que contiene dosobjetos: mail y un objeto que se corresponde con el tipode evento.

MailIncluye información sobre el contenido del mensaje de correo electrónico, así como metadatosrelacionados con el mensaje.

254

Amazon Pinpoint Guía para desarrolladoresEventos de SMS

Atributo Descripción

message_id El ID único del mensaje. Amazon Pinpoint generaautomáticamente este ID cuando acepta el mensaje.

message_send_timestamp La fecha y la hora a la que se envió el mensaje, en elformato especificado en RFC 822.

from_address La dirección de correo electrónico desde la que se envióel mensaje.

destination Una matriz que contiene las direcciones de correoelectrónico a las que se envió el mensaje.

headers_truncated Un valor booleano que indica si los encabezados decorreo electrónico se han truncado.

headers Un objeto que contiene varios pares nombre-valor quese corresponden con los encabezados del mensaje.Este objeto normalmente contiene información sobre lossiguientes encabezados:

• From: la dirección de correo electrónico del remitente.• To: la dirección de correo electrónico del destinatario.• Subject: la línea de asunto del correo electrónico.• MIME-Version: indica que el mensaje tiene formato

MIME. Si existe este encabezado, su valor siempre es1.0.

• Content-Type: el tipo de medio MIME del contenidodel mensaje.

common_headers Contiene información sobre varios encabezadoscomunes para mensajes de correo electrónico. Lainformación puede incluir la fecha en que se envió elmensaje y las líneas de De, Para y Asunto del mensaje.

Eventos de SMSSi el canal SMS está habilitado para un proyecto, Amazon Pinpoint puede transmitir datos de eventosacerca de entregas de mensajes SMS para el proyecto.

EjemploEl objeto JSON relacionado con un evento de SMS contiene los datos que se muestran en el siguienteejemplo.

{ "event_type": "_SMS.SUCCESS", "event_timestamp": 1553104954322, "arrival_timestamp": 1553104954064, "event_version": "3.1", "application": { "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6", "sdk": {}

255

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de SMS

}, "client": { "client_id": "123456789012" }, "device": { "platform": {} }, "session": {}, "attributes": { "sender_request_id": "565d4425-4b3a-11e9-b0a5-example", "campaign_activity_id": "cbcfc3c5e3bd48a8ae2b9cb41example", "origination_phone_number": "+12065550142", "destination_phone_number": "+14255550199", "record_status": "DELIVERED", "iso_country_code": "US", "treatment_id": "0", "number_of_message_parts": "1", "message_id": "1111-2222-3333", "message_type": "Transactional", "campaign_id": "52dc44b35c4742c98c5935269example" }, "metrics": { "price_in_millicents_usd": 645.0 }, "awsAccountId": "123456789012"}

Atributos de los eventos de SMSEn esta sección se definen los atributos que se incluyen en los datos de la secuencia de eventos queAmazon Pinpoint genera cuando envía mensajes SMS.

Evento

Atributo Descripción

event_type El tipo de evento. Los valores posibles son:

• _SMS.SEND: Amazon Pinpoint aceptó el mensaje eintentó entregarlo al destinatario.

• _SMS.BUFFERED: el mensaje todavía se estáentregando al destinatario.

• _SMS.SUCCESS: el mensaje se ha entregadocorrectamente al destinatario.

• _SMS.FAILURE: Amazon Pinpoint no ha podidoentregar el mensaje al destinatario. Para obtener másinformación sobre el error que impidió la entrega delmensaje, consulte attributes.record_status.

• _SMS.OPTOUT: el cliente ha recibido el mensaje y harespondido enviando la palabra clave de cancelación(normalmente "STOP").

event_timestamp La hora a la que se notificó el evento, que se muestra enformato de tiempo Unix en milisegundos.

arrival_timestamp La hora a la que Amazon Pinpoint recibió el evento, quese muestra en formato de tiempo Unix en milisegundos.

event_version La versión del esquema JSON del evento.

256

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de SMS

Atributo Descripción

Tip

Compruebe esta versión en la aplicación deprocesamiento de eventos para saber cuándoactualizar la aplicación en respuesta a unaactualización del esquema.

application Información sobre el proyecto de Amazon Pinpointasociado al evento. Para obtener más información,consulte la tabla Aplicación (p. 257).

client Información sobre el cliente de la aplicación instalado enel dispositivo que notificó el evento. Para obtener másinformación, consulte la tabla Cliente (p. 259).

device Información sobre el dispositivo que notificó el evento.Para obtener más información, consulte la tablaDispositivos (p. 260).

En los eventos que se generan al enviar un mensaje detransacciones, este objeto está vacío.

session Para los eventos de SMS, este objeto está vacío.

attributes Atributos asociados al evento. Para los eventosnotificados por una de sus aplicaciones, este objetopuede incluir atributos personalizados definidos porla aplicación. Para los eventos que se crean al enviaruna campaña, este objeto contiene atributos asociadosa la campaña. Para los eventos que se generan alenviar mensajes de transacciones, este objeto contieneinformación relacionada con el propio mensaje.

Para obtener más información, consulte la tablaAtributos (p. 258).

metrics Métricas adicionales asociadas al evento. Para obtenermás información, consulte la tabla Métricas (p. 260).

awsAccountId El ID de la cuenta de AWS de que se utilizó para enviarel mensaje.

AplicaciónIncluye información sobre el proyecto Amazon Pinpoint al que está asociado el evento y, si procede, elSDK que se utilizó para informar del evento.

Atributo Descripción

app_id El ID único del proyecto de Amazon Pinpoint que notificóel evento.

sdk El SDK que se utilizó para notificar el evento. Si envía unmensaje SMS de transacciones llamando directamente a

257

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de SMS

Atributo Descripciónla API de Amazon Pinpoint o con la consola de AmazonPinpoint, este objeto estará vacío.

AtributosIncluye información sobre los atributos asociados al evento.

Atributo Descripción

sender_request_id Un ID único asociado a la solicitud para enviar elmensaje SMS.

campaign_activity_id El ID único de la actividad dentro de la campaña.

origination_phone_number El número de teléfono desde el que se envió el mensaje.

destination_phone_number El número de teléfono al que se ha intentado enviar elmensaje.

record_status Información adicional sobre el estado del mensaje. Entrelos valores posibles se incluyen:

• SUCCESSFUL: el operador ha aceptado el mensaje.• DELIVERED: el mensaje se ha entregado al

dispositivo del destinatario.• PENDING: el mensaje todavía no se ha entregado al

dispositivo del destinatario.• INVALID: el número de teléfono de destino no es

válido.• UNREACHABLE: el dispositivo del destinatario está

fuera de cobertura actualmente o no está disponible.Por ejemplo, el dispositivo podría estar apagado odesconectado de la red. Puede intentar enviar elmensaje de nuevo más tarde.

• UNKNOWN : se ha producido un error que impide laentrega del mensaje. Este error suele ser transitorioy es posible intentar enviar el mensaje de nuevo mástarde.

• BLOCKED: el dispositivo del destinatario estábloqueando los mensajes SMS procedentes delnúmero de origen.

• CARRIER_UNREACHABLE: un problema con lared móvil del destinatario ha impedido la entrega delmensaje. Este error suele ser transitorio y es posibleintentar enviar el mensaje de nuevo más tarde.

• SPAM: el operador de telefonía móvil del destinatarioidentificó el contenido del mensaje como spam ybloqueó la entrega del mensaje.

• INVALID_MESSAGE: el cuerpo del mensaje SMS noes válido y no se puede entregar.

• CARRIER_BLOCKED: el operador del destinatarioha bloqueado la entrega de este mensaje. Esto suele

258

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de SMS

Atributo Descripciónocurrir cuando el operador identifica el contenido delmensaje como no solicitado o malintencionado.

• TTL_EXPIRED: el mensaje SMS no se ha podidoentregar en un periodo de tiempo determinado. Esteerror suele ser transitorio y es posible intentar enviar elmensaje de nuevo más tarde.

• MAX_PRICE_EXCEEDED: el envío del mensajehabría dado lugar a un cargo que superaría la cuotade gasto mensual de SMS de la cuenta. Para solicitarun aumento de la cuota, siga el procedimiento descritoen Solicitud de aumento de la cuota de gasto de SMSmensual para Amazon Pinpoint en la Guía del usuariode Amazon Pinpoint.

iso_country_code El país que está asociado al número de teléfono deldestinatario, mostrado en formato ISO 3166-1 alpha-2.

treatment_id El ID del tratamiento del mensaje, si el mensaje se envióen una campaña A/B.

treatment_id Si el mensaje se envió mediante una campaña deprueba A/B, este valor representa el número detratamiento del mensaje. Para los mensajes SMS detransacciones, este valor es 0.

number_of_message_parts El número de partes del mensaje que Amazon Pinpointha creado para enviar el mensaje.

Por lo general, los mensajes SMS solo pueden contener160 caracteres GSM-7 o 67 caracteres no GSM, aunqueestos límites pueden variar según el país . Si envía unmensaje que supere estos límites, Amazon Pinpoint lodivide automáticamente en partes más pequeñas. Lafacturación se realiza en función del número de partes demensajes que envíe.

message_id El ID único que Amazon Pinpoint genera cuando aceptael mensaje.

message_type Tipo de mensaje. Los valores posibles son Promotional(Promocionales) y Transactional (Transaccionales).Este valor se especifica al crear una campaña o alenviar mensajes de transacciones mediante la operaciónSendMessages de la API de Amazon Pinpoint.

campaign_id El ID único de la campaña de Amazon Pinpoint queenvió el mensaje.

ClienteIncluye información sobre el cliente de la aplicación instalada en el dispositivo que notificó el evento.

259

Amazon Pinpoint Guía para desarrolladoresAtributos de los eventos de SMS

Atributo Descripción

client_id Para los eventos generados por aplicaciones, este valores el ID único del cliente de la aplicación instalada enel dispositivo. AWS Mobile SDK for iOS y SDK de AWSMobile para Android generan automáticamente este ID.

Para los eventos que se generan al enviar campañas ymensajes de transacciones, este valor es igual al ID delpunto de enlace al que envía el mensaje.

cognito_id El ID exclusivo asignado al cliente de la aplicación en elgrupo de identidades de Amazon Cognito utilizado por laaplicación.

DispositivoIncluye información sobre el dispositivo que notificó el evento.

Atributo Descripción

locale La configuración regional del dispositivo.

make La marca del dispositivo, como, por ejemplo, Apple oSamsung.

model El modelo del dispositivo, como, por ejemplo, iPhone.

platform La plataforma del dispositivo, como, por ejemplo, ios oandroid.

MétricasIncluye información sobre las métricas asociadas al evento.

Atributo Descripción

price_in_millicents_usd La cantidad que se cobra por enviar el mensaje. Esteprecio se muestra en milésimas de centavo de dólarestadounidense. Por ejemplo, si el valor de este atributoes 645, se le cobran 0,645 ¢ por enviar el mensaje (645 /1000 = 0,645 ¢ = 0,00645 $).

Note

Esta propiedad no aparece en los mensajes conel event_type _SMS.BUFFERED.

260

Amazon Pinpoint Guía para desarrolladoresMétricas admitidas

Consulta de datos de análisis deAmazon Pinpoint

Además de utilizar las páginas de análisis de la consola de Amazon Pinpoint, puede usar las API deanálisis de Amazon Pinpoint para consultar los datos de análisis de un subconjunto de métricas estándarque proporcionan información sobre las tendencias relacionadas con la interacción de los usuarios y elalcance de la campaña, entre otras cosas. Estas métricas, denominadas también indicadores clave derendimiento (KPI), son valores medibles que pueden ayudarle a monitorizar y evaluar el rendimiento de susproyectos, campañas y recorridos.

Si utiliza las API para consultar los datos de análisis, puede analizar los datos con la herramienta degestión de informes de su elección, sin que tenga que iniciar sesión en la consola de Amazon Pinpoint nianalizar datos de eventos sin procesar de orígenes como los flujos de Amazon Kinesis. Por ejemplo, puedecrear un panel personalizado que muestre los resultados semanales de las campañas o que proporcioneanálisis detallados sobre las tasas de entrega de las campañas.

Puede consultar los datos mediante la API REST de Amazon Pinpoint, la AWS Command Line Interface(AWS CLI) o un SDK de AWS. Para consultar los datos, envíe una solicitud a la API de Amazon Pinpointy utilice los parámetros compatibles para especificar los datos que desee y los filtros que quiere aplicar.Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. A continuación, puede transferir los resultados a otro servicio o aplicación para un análisis másexhaustivo, para su almacenamiento o para la generación de informes.

Métricas admitidasAmazon Pinpoint proporciona acceso mediante programación a los datos de análisis de varios tipos demétricas estándar:

• Métricas de aplicación: estas métricas proporcionan información sobre las tendencias de todas lascampañas y los mensajes transaccionales asociadas a un proyecto. Por ejemplo, puede utilizar unamétrica de aplicación para ver un desglose del número de mensajes de la campaña que abrieron losdestinatarios de cada campaña asociada a un proyecto. Para acceder a los datos de una métrica deaplicación, utilice el recurso Métricas de aplicación de la API de Amazon Pinpoint.

• Métricas de campaña: estas métricas proporcionan información sobre el rendimiento de cada campaña.Por ejemplo, puede utilizar una métrica de campaña para determinar el número de puntos de enlacea los que se envió un mensaje de la campaña. Para acceder a los datos de una métrica de campaña,utilice el recurso Métricas de campaña de la API de Amazon Pinpoint.

• Métricas de interacción del recorrido: estas métricas proporcionan información sobre el rendimientode cada recorrido individual. Por ejemplo, puede utilizar una métrica de interacción del recorrido paraobtener un desglose del número de mensajes abiertos por los participantes en cada actividad de unrecorrido. Para acceder a los datos de una métrica de interacción del recorrido, utilice el recurso Métricasde interacción del recorrido de la API de Amazon Pinpoint.

• Métricas de ejecución de recorrido: estas métricas proporcionan información sobre las tendencias departicipación en recorridos individuales. Por ejemplo, puede utilizar una métrica de ejecución de recorridopara determinar cuántos participantes están avanzando por las actividades del recorrido. Para acceder alos datos de una métrica de ejecución de recorrido, utilice el recurso Métricas de ejecución de recorridode la API de Amazon Pinpoint.

• Métricas de ejecución de actividades de recorrido: estas métricas proporcionan información sobre lastendencias de las actividades individuales en un recorrido. Por ejemplo, puede utilizar una métrica

261

Amazon Pinpoint Guía para desarrolladoresConceptos básicos de consulta

de ejecución de actividades de recorrido para determinar cuántos participantes han completado unaactividad. Para acceder a los datos de una métrica de ejecución de actividades de recorrido, utilice elrecurso Métricas de ejecución de actividades de recorrido de la API de Amazon Pinpoint.

Para obtener una lista completa de las métricas estándar que puede consultar mediante programación,visite Métricas estándar (p. 265).

Amazon Pinpoint recopila y acumula automáticamente datos de todas las métricas compatibles paratodos los proyectos, campañas y recorridos. Además, los datos se actualizan continuamente, con lo queel periodo de latencia de los datos es de tan solo dos horas aproximadamente. No obstante, tenga encuenta que puede haber latencia de datos adicional para ciertas métricas. Esto se debe a que los datos dealgunas métricas se basan en la información que recibimos de los proveedores de correo electrónico delos destinatarios. Algunos proveedores nos envían esta información inmediatamente, mientras que otros laenvían con menos frecuencia.

Amazon Pinpoint almacena los datos durante 90 días. Para almacenar los datos durante más de 90 días opara acceder a los datos de análisis sin procesar en tiempo real, puede configurar un proyecto de AmazonPinpoint para que transmita datos de eventos a Amazon Kinesis Data Streams o Amazon Kinesis DataFirehose. Para obtener información sobre la configuración de secuencias de eventos, consulte Transmisiónen streaming de eventos de Amazon Pinpoint a Kinesis (p. 234).

Conceptos básicos de consultaPara consultar los datos de una métrica, envíe una solicitud get al recurso de métricas adecuado de laAPI de Amazon Pinpoint. En la solicitud, para definir la consulta debe utilizar parámetros compatibles conlos siguientes componentes de consulta:

• Proyecto: para especificar un proyecto, proporcione el ID de proyecto como valor del parámetroapplication-id. Este parámetro es obligatorio para todas las métricas.

• Campaña: para especificar una campaña, proporcione el ID de campaña como valor del parámetrocampaign-id. Este parámetro solo es obligatorio para las métricas de campaña.

• Recorrido: para especificar un recorrido, proporcione el ID del recorrido como valor del parámetrojourney-id. Este parámetro solo es necesario para métricas de interacción y ejecución de recorrido ypara métricas de ejecución de actividades de recorrido.

• Actividad de recorrido: para especificar una actividad de recorrido, proporcione el ID de la actividad derecorrido como valor del parámetro journey-activity-id. Este parámetro solo es necesario paramétricas de ejecución de actividades de recorrido.

• Intervalo de fechas: para filtrar opcionalmente los datos por rango de fechas, proporcione la primera yla última fecha y hora del intervalo de fechas mediante los parámetros de hora de inicio y finalizaciónadmitidos. Los valores deben estar en formato ISO 8601 ampliado y usar el tiempo universal coordinado(UTC): por ejemplo, 2019-07-19T20:00:00Z equivale a las 20:00 UTC del 19 de julio de 2019.

Los intervalos de fechas son inclusivos y deben tener 31 días naturales o menos. Además, la primerafecha y hora deben ser inferiores a 90 días desde el día actual. Si no especifica un intervalo de fechas,Amazon Pinpoint devuelve los datos de los 31 días naturales anteriores. Todos los parámetros delintervalo de fechas son compatibles con todas las métricas, excepto las métricas de ejecución derecorrido y las métricas de ejecución de actividades de recorrido.

• Métrica: para especificar la métrica, proporcione el nombre de la métrica como valor para el parámetrokpi-name. Este valor describe la métrica asociada y consta de dos o más términos, que se componende caracteres alfanuméricos en minúsculas, separados por un guion. Algunos ejemplos son email-open-rate y successful-delivery-rate. Este parámetro es obligatorio para todas las métricas,excepto las métricas de ejecución de recorrido y las métricas de ejecución de actividades de recorrido.Para obtener una lista completa de las métricas admitidas y del valor kpi-name que se va a utilizar paracada una, consulte Métricas estándar (p. 265).

262

Amazon Pinpoint Guía para desarrolladoresPolíticas de IAM

Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. En la respuesta, la estructura de los resultados varía según la métrica que consultó.

Algunas métricas proporcionan un solo valor, por ejemplo, el número de mensajes enviados por unacampaña. Otras métricas proporcionan varios valores y agrupan esos valores normalmente por un camporelevante, por ejemplo, el número de mensajes enviados por cada ejecución de una campaña, agrupadospor ejecución de campaña. Si una métrica proporciona y agrupa varios valores, la respuesta JSON incluyeun campo que indica qué campo se utilizó para agrupar los datos. Para obtener más información sobre laestructura de los resultados de la consulta, lea Uso de los resultados de las consultas (p. 309).

Políticas de IAM para consultar datos de análisis deAmazon Pinpoint

Mediante la API de Amazon Pinpoint puede consultar datos de análisis de un subconjunto de métricasestándar, también denominadas indicadores clave de rendimiento (KPI), que se aplica a los proyectos,campañas y recorridos de Amazon Pinpoint. Estas métricas pueden ayudarle a supervisar y evaluar elrendimiento de los proyectos, las campañas y los recorridos.

Para administrar el acceso a estos datos, puede crear políticas de AWS Identity and Access Management(IAM) que definan los permisos para los roles o usuarios de IAM autorizados para acceder a los datos.Para permitir el control detallado del acceso a estos datos, Amazon Pinpoint proporciona varias accionesdistintas que se pueden especificar en las políticas de IAM. Hay una acción determinada para ver los datosde análisis en la consola de Amazon Pinpoint (mobiletargeting:GetReports) y hay otras accionespara acceder a los datos de análisis mediante programación con la API de Amazon Pinpoint.

Para crear políticas de IAM que administren el acceso a los datos de análisis, puede utilizar la Consola deadministración de AWS, la AWS CLI o la API de IAM. Tenga en cuenta que la pestaña Visual editor (Editorvisual) en la Consola de administración de AWS actualmente no incluye acciones para ver o consultar losdatos de análisis de Amazon Pinpoint. Sin embargo, puede agregar las acciones necesarias a las políticasde IAM manualmente desde la pestaña JSON de la consola.

Por ejemplo, la siguiente política permite el acceso mediante programación a todos los datos de análisis detodos sus proyectos, campañas y recorridos en todas las regiones de AWS:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QueryAllAnalytics", "Effect": "Allow", "Action": [ "mobiletargeting:GetApplicationDateRangeKpi", "mobiletargeting:GetCampaignDateRangeKpi", "mobiletargeting:GetJourneyDateRangeKpi", "mobiletargeting:GetJourneyExecutionMetrics", "mobiletargeting:GetJourneyExecutionActivityMetrics" ], "Resource": [ "arn:aws:mobiletargeting:*:accountId:apps/*/kpis/*", "arn:aws:mobiletargeting:*:accountId:apps/*/campaigns/*/kpis/*", "arn:aws:mobiletargeting:*:accountId:apps/*/journeys/*/kpis/*", "arn:aws:mobiletargeting:*:accountId:apps/*/journeys/*/execution-metrics", "arn:aws:mobiletargeting:*:accountId:apps/*/journeys/*/activities/*/execution-metrics" ] } ]}

263

Amazon Pinpoint Guía para desarrolladoresPolíticas de IAM

Donde accountId es su ID de la cuenta de AWS.

Sin embargo, recomendamos que las políticas se creen según el principio de privilegios mínimos. En otraspalabras, debe crear políticas que incluyan solo los permisos necesarios para realizar una tarea específica.Para apoyar esta práctica e implementar un control más detallado, puede restringir el acceso medianteprogramación a los datos de análisis solo para un proyecto concreto en una región de AWS concreta, porejemplo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QueryProjectAnalytics", "Effect": "Allow", "Action": [ "mobiletargeting:GetApplicationDateRangeKpi", "mobiletargeting:GetCampaignDateRangeKpi", "mobiletargeting:GetJourneyDateRangeKpi", "mobiletargeting:GetJourneyExecutionMetrics", "mobiletargeting:GetJourneyExecutionActivityMetrics" ], "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/projectId/kpis/*", "arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/*/kpis/*", "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/*/kpis/*", "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/*/execution-metrics", "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/*/activities/*/execution-metrics" ] } ]}

Donde:

• region es el nombre de la región de AWS que aloja el proyecto.• accountId es el ID de la cuenta de AWS.• projectId es el identificador del proyecto al que desea proporcionar acceso.

Del mismo modo, la política de ejemplo siguiente permite el acceso mediante programación a los datos deanálisis solo para una campaña concreta:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QueryCampaignAnalytics", "Effect": "Allow", "Action": "mobiletargeting:GetCampaignDateRangeKpi", "Resource": "arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId/kpis/*" } ]}

Donde:

• region es el nombre de la región de AWS que aloja el proyecto.

264

Amazon Pinpoint Guía para desarrolladoresMétricas estándar

• accountId es el ID de la cuenta de AWS.• projectId es el identificador del proyecto asociado a la campaña.• campaignId es el identificador de la campaña a la que desea proporcionar acceso.

Y la siguiente política de ejemplo permite el acceso mediante programación a todos los datos de análisis,tanto datos de interacción como de ejecución, de un recorrido particular y las actividades que lo componen:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QueryJourneyAnalytics", "Effect": "Allow", "Action": [ "mobiletargeting:GetJourneyDateRangeKpi", "mobiletargeting:GetJourneyExecutionMetrics", "mobiletargeting:GetJourneyExecutionActivityMetrics" ], "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/kpis/*", "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/execution-metrics", "arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/activities/*/execution-metrics" ] } ]}

Donde:

• region es el nombre de la región de AWS que aloja el proyecto.• accountId es el ID de la cuenta de AWS.• projectId es el identificador del proyecto asociado al recorrido.• journeyId es el identificador del recorrido al que desea proporcionar acceso.

Para obtener una lista completa de las acciones de la API de Amazon Pinpoint que puede utilizar en laspolíticas de IAM, consulte Acciones de Amazon Pinpoint para políticas de IAM (p. 363). Para obtenerinformación detallada sobre cómo crear y administrar políticas de IAM, consulte Guía del usuario de IAM.

Métricas estándar de análisis de Amazon PinpointPuede utilizar las API de análisis de Amazon Pinpoint para consultar los datos de análisis de unsubconjunto de métricas estándar que se apliquen a los proyectos, las campañas y los recorridos deAmazon Pinpoint. Estas métricas, denominadas también indicadores clave de rendimiento (KPI), sonvalores medibles que pueden ayudarle a monitorizar y evaluar el rendimiento de los proyectos, lascampañas y los recorridos.

Amazon Pinpoint proporciona acceso mediante programación a los datos de análisis de varios tipos demétricas estándar:

• Métricas de aplicación: estas métricas proporcionan información sobre las tendencias de todas lascampañas y mensajes de transacciones que están asociados a un proyecto, denominados tambiénaplicación. Por ejemplo, puede utilizar una métrica de aplicación para ver un desglose del número demensajes de la campaña que abrieron los destinatarios de cada campaña asociada a un proyecto.

265

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para campañas

• Métricas de campaña: estas métricas proporcionan información sobre el rendimiento de cada campaña.Puede utilizar una métrica de campaña para, por ejemplo, determinar el número de puntos de enlace alque se envió un mensaje de una campaña o sobre el número de mensajes entregados a los puntos deenlace.

• Métricas de interacción del recorrido: estas métricas proporcionan información sobre el rendimientode cada recorrido individual. Por ejemplo, puede utilizar una métrica de interacción del recorrido paraobtener un desglose del número de mensajes abiertos por los participantes en cada actividad de unrecorrido.

• Métricas de ejecución de recorrido: estas métricas proporcionan información sobre las tendencias departicipación en recorridos individuales. Por ejemplo, puede utilizar una métrica de ejecución de recorridopara determinar cuántos participantes han iniciado un recorrido.

• Métricas de ejecución de actividades de recorrido: estas métricas proporcionan información sobre lastendencias de las actividades individuales en un recorrido. Por ejemplo, puede utilizar una métrica deejecución de actividades de recorrido para determinar cuántos participantes han iniciado una actividad ycuántos participantes han completado cada ruta de una actividad.

Los temas de esta sección enumeran y describen las métricas individuales que puede consultar para cadatipo de métrica.

Temas• Métricas de aplicaciones para campañas (p. 266)• Métricas de aplicaciones para mensajes de correo electrónico de transacciones (p. 269)• Métricas de aplicaciones para mensajes SMS de transacciones (p. 276)• Métricas de campaña (p. 278)• Métricas de interacción del recorrido (p. 284)• Métricas de ejecución de recorrido (p. 289)• Métricas de ejecución de actividades de recorrido (p. 290)

Métricas de aplicaciones para campañasEn la siguiente tabla se enumeran y describen las métricas de aplicación estándar que puede consultarpara evaluar todas las campañas asociadas a un proyecto de Amazon Pinpoint. Para consultar los datosde estas métricas, utilice el recurso Métricas de aplicación de la API de Amazon Pinpoint. En la tabla, lacolumna kpi-name indica el valor que se debe utilizar para el parámetro kpi-name en la consulta.

Métrica kpi-name Descripción

Porcentaje de entregas successful-delivery-rate Para todas las campañas queestán asociadas con un proyecto,el porcentaje de mensajes que seentregaron a los destinatarios.

Esta métrica se calcula como elnúmero de mensajes enviadospor todas las campañas de unproyecto y entregados a losdestinatarios, dividido entre elnúmero de mensajes enviadospor todas esas campañas.

Porcentaje de entregas,agrupadas por fecha

successful-delivery-rate-grouped-by-date

Para todas las campañas queestán asociadas a un proyecto,el porcentaje de mensajes

266

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para campañas

Métrica kpi-name Descripciónque se proporcionaron a losdestinatarios cada día delintervalo de fechas especificado.

Esta métrica se calcula como elnúmero de mensajes enviadospor todas las campañas de unproyecto y entregados a losdestinatarios, dividido por elnúmero de mensajes enviadospor todas esas campañas,durante cada día del intervalo defechas especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Porcentaje de correo electrónicosabiertos

email-open-rate Para todas las campañas queestán asociadas con un proyecto,el porcentaje de mensajes decorreo electrónico que abrieronlos destinatarios.

Esta métrica se calcula comoel número de mensajes decorreo electrónico enviadospor todas las campañas deun proyecto y abiertos por losdestinatarios, dividido por elnúmero de mensajes de correoelectrónico enviados por todasesas campañas y entregados alos destinatarios.

Porcentaje de correoselectrónicos abiertos, agrupadospor campaña

email-open-rate-grouped-by-campaign

Para cada campaña asociadaa un proyecto, el porcentaje demensajes de correo electrónicoabiertos por los destinatarios.

Esta métrica se calcula comoel número de mensajes decorreo electrónico enviadospor una campaña y abiertospor los destinatarios, divididopor el número de mensajes decorreo electrónico enviados porla campaña y entregados a losdestinatarios.

Los resultados de la consulta deesta métrica se agrupan por IDde campaña (CampaignId), quees una cadena que identifica deforma inequívoca una campaña.

267

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para campañas

Métrica kpi-name Descripción

Entregas a puntos de enlace unique-deliveries Para todas las campañas queestán asociadas con un proyecto,el número de puntos de enlacedistintos a los que se entregaronmensajes.

Entregas a puntos de enlace,agrupadas por campaña

unique-deliveries-grouped-by-campaign

Para cada campaña asociada aun proyecto, el número de puntosde enlace distintos a los que seentregaron mensajes.

Los resultados de la consulta deesta métrica se agrupan por IDde campaña (CampaignId), quees una cadena que identifica deforma inequívoca una campaña.

Entregas a puntos de enlace,agrupadas por fecha

unique-deliveries-grouped-by-date

Para todas las campañas queestán asociadas con un proyecto,el número de puntos de enlacedistintos a los que entregaronmensajes cada día del intervalode tiempo especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Mensajes entregados, agrupadospor campaña

successful-deliveries-grouped-by-campaign

Para cada campaña asociadaa un proyecto, el número demensajes que se entregaron alos destinatarios.

Esta métrica se calcula comoel número de mensajesenviados por una campaña,menos el número de mensajesenviados por la campaña queno se pudieron entregar a losdestinatarios debido a un rebotepermanente.

Los resultados de la consulta deesta métrica se agrupan por IDde campaña (CampaignId), quees una cadena que identifica deforma inequívoca una campaña.

268

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Porcentaje de notificaciones pushabiertas

push-open-rate Para todas las campañasque están asociadas con unproyecto, el porcentaje denotificaciones push que abrieronlos destinatarios.

Esta métrica se calcula como elnúmero de notificaciones pushenviadas por todas las campañasde un proyecto y abiertas porlos destinatarios, dividido entreel número de notificacionespush enviadas por todas esascampañas y entregadas a losdestinatarios.

Porcentaje de notificacionespush abiertas, agrupadas porcampaña

push-open-rate-grouped-by-campaign

Para cada campaña asociadaa un proyecto, el porcentaje denotificaciones push que abrieronlos destinatarios.

Esta métrica se calcula como elnúmero de notificaciones pushenviadas por una campaña yabiertas por los destinatarios,dividido entre el número denotificaciones push enviadas porla campaña y entregadas a losdestinatarios.

Los resultados de la consulta deesta métrica se agrupan por IDde campaña (CampaignId), quees una cadena que identifica deforma inequívoca una campaña.

Métricas de aplicaciones para mensajes de correoelectrónico de transaccionesEn la siguiente tabla se muestran y describen las métricas de aplicaciones estándar que puede consultarpara monitorizar las tendencias de todos los mensajes de correo electrónico transaccionales asociadosa un proyecto de Amazon Pinpoint. Para consultar los datos de estas métricas, utilice el recurso Métricasde aplicación de la API de Amazon Pinpoint. En la tabla, la columna kpi-name indica el valor que se debeutilizar para el parámetro kpi-name en la consulta.

Tenga en cuenta que estas métricas no proporcionan datos sobre los mensajes de correo electrónicoenviados por las campañas. Únicamente proporcionan datos sobre los mensajes de correo electrónicode transacciones. Para consultar los datos de mensajes enviados por una o varias campañas, utilice unamétrica de campaña (p. 278) o una una métrica de aplicación para campañas (p. 266).

269

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Clics txn-emails-clicked El número de veces que losdestinatarios hicieron clic en losenlaces del mensaje. Si un únicodestinatario hizo clic en variosenlaces del mensaje o hizoclic varias veces en el mismoenlace, cada clic se incluye en elrecuento.

Clics, agrupados por fecha txn-emails-clicked-grouped-by-date

El número de veces que losdestinatarios han hecho clicen enlaces en los mensajes,para cada día en el intervalo defechas especificado. Si un únicodestinatario hizo clic en variosenlaces del mensaje o hizoclic varias veces en el mismoenlace, cada clic se incluye en elrecuento.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Complaint rate (Tasa dereclamaciones)

txn-emails-complaint-rate

El porcentaje de mensajesnotificados por los destinatarioscomo correo electrónico nosolicitado o no deseado.

Esta métrica se calcula como elnúmero de mensajes notificadospor los destinatarios como correoelectrónico no solicitado o nodeseado, dividido por el númerode mensajes enviados.

Tasa de reclamaciones,agrupada por fechas

txn-emails-complaint-rate-grouped-by-date

El porcentaje de mensajesnotificados por los destinatarioscomo correo electrónico nosolicitado o no deseado, paracada día en el intervalo de fechasespecificado.

Esta métrica se calcula como elnúmero de mensajes notificadospor los destinatarios como correoelectrónico no solicitado o nodeseado, dividido por el númerode mensajes enviados, paracada día en el intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por día

270

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripciónnatural, en el formato ISO 8601extendido.

Reclamaciones txn-emails-with-complaints

El número de mensajesnotificados por los destinatarioscomo correo electrónico nosolicitado o no deseado.

Reclamaciones, agrupadas porfechas

txn-emails-with-complaints-grouped-by-date

El número de mensajesnotificados por los destinatarioscomo correo electrónico nosolicitado o no deseado, paracada día en el intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Entregas txn-emails-delivered El número de mensajes que seentregaron a los destinatarios.

Esta métrica se calcula comoel número de mensajes que seenviaron, menos el número demensajes que no se pudieronentregar debido a un rebotetemporal o permanente o porquese rechazaron. Un mensaje serechaza si Amazon Pinpointdetermina que el mensajecontiene malware. AmazonPinpoint no intenta enviarmensajes rechazados.

271

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Entregas, agrupadas por fechas txn-emails-delivered-grouped-by-date

El número de mensajes que seentregaron a los destinatarios,para cada día en el intervalo defechas especificado.

Esta métrica se calcula comoel número de mensajes que seenviaron, menos el número demensajes que no se pudieronentregar debido a un rebotetemporal o permanente o porquese rechazaron, para cadadía en el intervalo de fechasespecificado. Un mensaje serechaza si Amazon Pinpointdetermina que el mensajecontiene malware. AmazonPinpoint no intenta enviarmensajes rechazados.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Porcentaje de entregas txn-emails-delivery-rate El porcentaje de mensajes quese entregaron a los destinatarios.

Esta métrica se calcula como elnúmero de mensajes enviadosy entregados a los destinatarios,dividido por el número demensajes enviados.

Porcentaje de entregas,agrupadas por fecha

txn-emails-delivery-rate-grouped-by-date

El porcentaje de mensajes quese entregaron a los destinatarios,para cada día en el intervalo defechas especificado.

Esta métrica se calcula como elnúmero de mensajes enviadosy entregados a los destinatarios,dividido por el número demensajes enviados, para cadadía en el intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

272

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Rebotes permanentes txn-emails-hard-bounced El número de mensajes queno se han podido entregar alos destinatarios debido a unrebote permanente. Un rebotepermanente se produce si unproblema persistente impide quese entregue un mensaje, porejemplo, la dirección de correoelectrónico de un destinatario noexiste.

Rebotes permanentes,agrupados por fechas

txn-emails-hard-bounced-grouped-by-date

El número de mensajes queno se pudieron entregar alos destinatarios debido aun rebote permanente, paracada día en el intervalo defechas especificado. Un rebotepermanente se produce si unproblema persistente impide quese entregue un mensaje, porejemplo, la dirección de correoelectrónico de un destinatario noexiste.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Aperturas txn-emails-opened El número de mensajes que hanabierto los destinatarios.

Abiertos, agrupados por fechas txn-emails-opened-grouped-by-date

El número de mensajes queabrieron los destinatarios, paracada día en el intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Envíos txn-emails-sent El número de mensajes que sehan enviado.

Envíos, agrupados por fechas txn-emails-sent-grouped-by-date

El número de mensajes que seenviaron, para cada día en elintervalo de fechas especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

273

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Rebotes temporales txn-emails-soft-bounced El número de mensajes queno se han podido entregar alos destinatarios debido a unrebote temporal. Un rebotetemporal se produce si unproblema temporal impide quese entregue un mensaje, porejemplo, la bandeja de entradade un destinatario está llena oel servidor de recepción no estádisponible temporalmente.

Rebotes temporales, agrupadospor fechas

txn-emails-soft-bounced-grouped-by-date

El número de mensajes queno se pudieron entregar a losdestinatarios debido a un rebotetemporal, para cada día en elintervalo de fechas especificado.Un rebote temporal se producesi un problema temporal impideque se entregue un mensaje, porejemplo, la bandeja de entradade un destinatario está llena oel servidor de recepción no estádisponible temporalmente.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Eventos de clic de usuario únicos txn-emails-unique-clicks El número de destinatariosúnicos (puntos de enlace) quehan hecho clic en enlaces enmensajes.

A diferencia de la métrica Clicks(Clics) esta métrica indica elnúmero de destinatarios únicosque han hecho clic en enlaces,no el número de eventos declic que se han producido. Porejemplo, si un único destinatarioha hecho clic en varios enlacesdel mismo mensaje o ha hechoclic en el mismo enlace más deuna vez, esta métrica notificasolo un evento de clic para esedestinatario.

274

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para mensajesde correo electrónico de transacciones

Métrica kpi-name Descripción

Eventos de clic de usuarioúnicos, agrupados por fechas

txn-emails-unique-clicks-grouped-by-date

El número de destinatariosúnicos (puntos de enlace) quehan hecho clic en enlaces enmensajes, para cada día en elintervalo de fechas especificado.

A diferencia de la métricaClicks, grouped by date (Clics,agrupados por fecha), estamétrica indica el número dedestinatarios únicos que hanhecho clic en enlaces, no elnúmero de eventos de clic quese han producido. Por ejemplo,si un único destinatario hahecho clic en varios enlacesdel mismo mensaje o ha hechoclic en el mismo enlace más deuna vez, esta métrica notificasolo un evento de clic para esedestinatario.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Eventos de apertura de usuarioúnicos

txn-emails-unique-opens El número de destinatariosúnicos (puntos de enlace) quehan abierto mensajes.

A diferencia de la métrica Opens(Aperturas), esta métrica indica elnúmero de destinatarios únicosque han abierto mensajes, no elnúmero de eventos de aperturaque se han producido. Porejemplo, si un único destinatarioabre el mismo mensaje variasveces, esta métrica notifica soloun evento de apertura para esedestinatario.

275

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para

mensajes SMS de transacciones

Métrica kpi-name Descripción

Eventos de apertura de usuarioúnicos, agrupados por fechas

txn-emails-unique-opens-grouped-by-date

El número de destinatariosúnicos (puntos de enlace) quehan abierto mensajes, para cadadía en el intervalo de fechasespecificado.

A diferencia de la métrica Opens,grouped by date (Aperturas,agrupadas por fecha), estamétrica indica el número dedestinatarios únicos que hanabierto mensajes, no el númerode eventos de apertura que sehan producido. Por ejemplo, si unúnico destinatario abre el mismomensaje varias veces, estamétrica notifica solo un evento deapertura para ese destinatario.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Métricas de aplicaciones para mensajes SMS detransaccionesEn la siguiente tabla se muestran y describen las métricas de aplicaciones estándar que puede consultarpara monitorizar las tendencias de todos los mensajes SMS transaccionales asociados a un proyecto deAmazon Pinpoint. Para consultar los datos de estas métricas, utilice el recurso Métricas de aplicación dela API de Amazon Pinpoint. En la tabla, la columna kpi-name indica el valor que se debe utilizar para elparámetro kpi-name en la consulta.

Tenga en cuenta que estas métricas no proporcionan datos sobre los mensajes SMS enviados por lascampañas. Únicamente proporcionan datos sobre mensajes de SMS de transacción. Para consultar losdatos de mensajes enviados por una o varias campañas, utilice una métrica de campaña (p. 278) o unauna métrica de aplicación para campañas (p. 266).

Métrica kpi-name Descripción

Precio medio, agrupado por país txn-sms-average-price-grouped-by-country

Precio medio, en dólaresestadounidenses, del envío decada mensaje, para cada país oregión adonde se enviaron losmensajes.

Esta métrica se calcula comoprecio total de todos losmensajes que se enviaron alos destinatarios en cada paíso región, dividido por el númerode mensajes que se enviaron a

276

Amazon Pinpoint Guía para desarrolladoresMétricas de aplicaciones para

mensajes SMS de transacciones

Métrica kpi-name Descripciónlos destinatarios en cada uno deesos países y regiones.

Los resultados de la consulta deesta métrica se agrupan por paíso región, en formato ISO 3166-1alfa-2.

Entregas txn-sms-delivered El número de mensajes que seentregaron a los destinatarios.

Entregas, agrupadas por país txn-sms-delivered-grouped-by-country

El número de mensajes que seentregaron a los destinatarios,para cada país o región a dondese enviaron los mensajes.

Los resultados de la consulta deesta métrica se agrupan por paíso región, en formato ISO 3166-1alfa-2.

Entregas, agrupadas por fechas txn-sms-delivered-grouped-by-date

El número de mensajes que seentregaron a los destinatarios,para cada día en el intervalo defechas especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Errores de entrega txn-sms-error-distribution

El número de veces que seprodujo un error al intentarentregar los mensajes, por cadatipo de error que se produjo.

Los resultados de la consultade esta métrica se agrupan porcódigo de error, para cada tipode error que se ha producido.

Porcentaje de entregas txn-sms-delivery-rate El porcentaje de mensajes quese entregaron a los destinatarios.

Esta métrica se calcula como elnúmero de mensajes enviadosy entregados a los destinatarios,dividido por el número demensajes enviados.

277

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

Métrica kpi-name Descripción

Porcentaje de entregas,agrupadas por fecha

txn-sms-delivery-rate-grouped-by-date

El porcentaje de mensajes quese entregaron a los destinatarios,para cada día en el intervalo defechas especificado.

Esta métrica se calcula como elnúmero de mensajes enviadosy entregados a los destinatarios,dividido por el número demensajes enviados, para cadadía en el intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Envíos txn-sms-sent El número de mensajes que sehan enviado.

Envíos, agrupados por país txn-sms-sent-grouped-by-country

El número de mensajes quese enviaron, por cada país oregión adonde se enviaron losmensajes.

Los resultados de la consulta deesta métrica se agrupan por paíso región, en formato ISO 3166-1alfa-2.

Envíos, agrupados por fechas txn-sms-sent-grouped-by-date

El número de mensajes que seenviaron, para cada día en elintervalo de fechas especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Precio total, agrupado por país txn-sms-total-price-grouped-by-country

El costo total, en dólaresestadounidenses, de enviar losmensajes, para cada país oregión adonde se enviaron losmensajes.

Los resultados de la consulta deesta métrica se agrupan por paíso región, en formato ISO 3166-1alfa-2.

Métricas de campañaEn la siguiente tabla se muestran y describen las métricas de campaña estándar que puede consultar paraevaluar las tendencias de una campaña individual. Para consultar los datos de estas métricas, utilice el

278

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

recurso Métricas de campaña de la API de Amazon Pinpoint. En la tabla, la columna kpi-name indica elvalor que se debe utilizar para el parámetro kpi-name en la consulta.

Métrica kpi-name Descripción

Porcentaje de rebotes hard-bounce-rate Para todas las ejecuciones dela campaña, el porcentaje demensajes de correo electrónicoque no se pudieron entregar a losdestinatarios. Esta métrica solomide los rebotes permanentes,es decir, los mensajes en losque la dirección de correoelectrónico del destinatario teníaun problema permanente queimpidió la entrega del mensaje.

Esta métrica se calcula como elnúmero de mensajes de correoelectrónico rebotados enviadospor todas las ejecuciones dela campaña, dividido por elnúmero de mensajes de correoelectrónico enviados por todasesas ejecuciones de la campaña.

Porcentaje de rebotes,agrupados por ejecuciones de lacampaña

hard-bounce-rate-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el porcentaje demensajes de correo electrónicoque no se pudieron entregar a losdestinatarios. Esta métrica solomide los rebotes permanentes,es decir, los mensajes en losque la dirección de correoelectrónico del destinatario teníaun problema permanente queimpidió la entrega del mensaje.

Esta métrica se calcula comoel número de mensajes decorreo electrónico rebotadosenviados por una ejecuciónde la campaña, dividido por elnúmero de mensajes de correoelectrónico enviados por laejecución de la campaña.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Porcentaje de entregas successful-delivery-rate Para todas las ejecuciones dela campaña, el porcentaje de

279

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

Métrica kpi-name Descripciónmensajes que se entregaron alos destinatarios.

Esta métrica se calcula como elnúmero de mensajes enviadospor todas las ejecuciones dela campaña y entregados a losdestinatarios, dividido por elnúmero de mensajes enviadospor todas esas ejecuciones de lacampaña.

Porcentaje de entregas,agrupadas por ejecuciones de lacampaña

successful-delivery-rate-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el porcentaje demensajes que se entregaron alos destinatarios.

Esta métrica se calcula como elnúmero de mensajes enviadospor una ejecución de la campañay entregados a los destinatarios,dividido por el número demensajes enviados por laejecución de la campaña.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Porcentaje de entregas,agrupadas por fecha

successful-delivery-rate-grouped-by-date

Para todas las ejecuciones dela campaña, el porcentaje demensajes que se entregarona los destinatarios durantecada día del intervalo de fechasespecificado.

Esta métrica se calcula como elnúmero de mensajes enviadospor todas las ejecuciones dela campaña y entregados a losdestinatarios, dividido entre elnúmero de mensajes enviadospor todas esas ejecuciones de lacampaña, durante cada día delintervalo de fechas especificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

280

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

Métrica kpi-name Descripción

Porcentaje de correo electrónicosabiertos

email-open-rate Para todas las ejecuciones dela campaña, el porcentaje demensajes de correo electrónicoabiertos por los destinatarios.

Esta métrica se calcula comoel número de mensajes decorreo electrónico enviadospor todas las ejecuciones dela campaña y abiertos por losdestinatarios, dividido entre elnúmero de mensajes de correoelectrónico enviados por todasesas ejecuciones de la campañay entregados a los destinatarios.

Porcentaje de correoselectrónicos abiertos, agrupadospor ejecuciones de la campaña

email-open-rate-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el porcentaje demensajes de correo electrónicoabiertos por los destinatarios.

Esta métrica se calcula como elnúmero de mensajes de correoelectrónico enviados por unaejecución de la campaña yabiertos por los destinatarios,dividido entre el número demensajes de correo electrónicoenviados por la ejecución dela campaña y entregados a losdestinatarios.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Correos electrónicos abiertos,agrupados por ejecuciones de lacampaña

direct-email-opens-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número demensajes de correo electrónicoabiertos por los destinatarios.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

281

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

Métrica kpi-name Descripción

Entregas a puntos de enlace unique-deliveries Para todas las ejecuciones de lacampaña, el número de puntosde enlace distintos a los que seentregaron mensajes.

Entregas a puntos de enlace,agrupadas por ejecuciones de lacampaña

unique-deliveries-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número de puntosde enlace distintos a los que seentregaron mensajes.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Entregas a puntos de enlace,agrupadas por fecha

unique-deliveries-grouped-by-date

Para todas las ejecucionesde la campaña, el número depuntos de enlace distintos a losque se entregaron mensajescada día del intervalo de fechasespecificado.

Los resultados de la consulta deesta métrica se agrupan por díanatural, en el formato ISO 8601extendido.

Enlaces en los que se ha hechoclic, agrupados por ejecucionesde la campaña

clicks-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número de vecesque los destinatarios hicieron clicen los enlaces del mensaje decorreo electrónico. Si un únicodestinatario hizo clic en variosenlaces del mensaje o hizoclic varias veces en el mismoenlace, cada clic se incluye en elrecuento.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

282

Amazon Pinpoint Guía para desarrolladoresMétricas de campaña

Métrica kpi-name Descripción

Mensajes entregados, agrupadospor ejecuciones de la campaña

successful-deliveries-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número demensajes que se entregaron alos destinatarios.

Esta métrica se calcula comoel número de mensajesenviados por una ejecución dela campaña, menos el númerode mensajes que no se pudieronentregar a los destinatarios dela ejecución debido a un rebotepermanente.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Mensajes enviados, agrupadospor ejecuciones de la campaña

attempted-deliveries-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número demensajes que se enviaron.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Porcentaje de notificaciones pushabiertas

push-open-rate Para todas las ejecuciones dela campaña, el porcentaje denotificaciones push abiertas porlos destinatarios.

Esta métrica se calcula comoel número de notificacionespush enviadas por todas lasejecuciones de la campaña yabiertas por los destinatarios,dividido entre el número denotificaciones push enviadas portodas esas ejecuciones de lacampaña.

283

Amazon Pinpoint Guía para desarrolladoresMétricas de interacción del recorrido

Métrica kpi-name Descripción

Porcentaje de notificacionespush abiertas, agrupadas porejecuciones de la campaña

push-open-rate-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el porcentaje denotificaciones push abiertas porlos destinatarios.

Esta métrica se calcula como elnúmero de notificaciones pushenviadas por una ejecución dela campaña y abiertas por losdestinatarios, dividido entre elnúmero de notificaciones pushenviadas por la ejecución dela campaña y entregadas a losdestinatarios.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Total de notificaciones pushabiertas, agrupadas porejecuciones de la campaña

direct-push-opens-grouped-by-campaign-activity

Para cada ejecución de lacampaña, el número denotificaciones push abiertas porlos destinatarios.

Los resultados de la consultade esta métrica se agrupan porID de actividad de campaña(CampaignActivityId), quees una cadena que identifica deforma inequívoca una ejecuciónde la campaña.

Métricas de interacción del recorridoEn la siguiente tabla se muestran y describen las métricas de interacción del recorrido estándar quepuede consultar para supervisar las tendencias de todos los mensajes de correo electrónico enviados porun recorrido de Amazon Pinpoint. Para consultar datos de estas métricas, utilice el recurso Métricas deinteracción del recorrido de la API de Amazon Pinpoint. En la tabla, la columna kpi-name indica el valor quese debe utilizar para el parámetro kpi-name en la consulta.

Métrica kpi-name Descripción

Clics journey-emails-clicked El número de veces que losparticipantes hicieron clic enlos enlaces de los mensajes. Siun único participante hizo clicen varios enlaces del mensajeo hizo clic varias veces en el

284

Amazon Pinpoint Guía para desarrolladoresMétricas de interacción del recorrido

Métrica kpi-name Descripciónmismo enlace, cada clic seincluye en el recuento.

Clics, agrupados por actividad emails-clicked-grouped-by-journey-activity

Para cada actividad de recorrido,el número de veces que losparticipantes hicieron clic enlos enlaces de los mensajes. Siun único participante hizo clicen varios enlaces del mensajeo hizo clic varias veces en elmismo enlace, cada clic seincluye en el recuento.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Reclamaciones journey-emails-complained

El número de mensajesnotificados por los participantescomo correo electrónico nosolicitado o no deseado.

Reclamaciones, agrupadas poractividad

emails-complained-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajesnotificados por los participantescomo correo electrónico nosolicitado o no deseado.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Entregas journey-emails-delivered El número de mensajes que seentregaron a los participantes.

Esta métrica se calcula comoel número de mensajes que seenviaron, menos el número demensajes que no se pudieronentregar debido a un rebotetemporal o permanente o porquese rechazaron.

285

Amazon Pinpoint Guía para desarrolladoresMétricas de interacción del recorrido

Métrica kpi-name Descripción

Entregas, agrupadas poractividad

emails-delivered-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes que seentregaron a los participantes.

Esta métrica se calcula comoel número de mensajes que seenviaron, menos el número demensajes que no se pudieronentregar debido a un rebotetemporal o permanente o porquese rechazaron, para cadaactividad en el recorrido.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Rebotes permanentes journey-emails-hardbounced

El número de mensajes queno se han podido entregar alos participantes debido a unrebote permanente. Un rebotepermanente se produce si unproblema persistente impide quese entregue un mensaje, porejemplo, la dirección de correoelectrónico de un participante noexiste.

Rebotes permanentes,agrupados por actividad

emails-hardbounced-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes queno se han podido entregar alos participantes debido a unrebote permanente. Un rebotepermanente se produce si unproblema persistente impide quese entregue un mensaje, porejemplo, la dirección de correoelectrónico de un participante noexiste.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Aperturas journey-emails-opened El número de mensajes que hanabierto los participantes.

286

Amazon Pinpoint Guía para desarrolladoresMétricas de interacción del recorrido

Métrica kpi-name Descripción

Abiertos, agrupados por actividad emails-opened-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes queabrieron los participantes.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Rechazos journey-emails-rejected El número de mensajes que nose enviaron a los participantesporque fueron rechazados.Un mensaje se rechaza siAmazon Pinpoint determina queel mensaje contiene malware.Amazon Pinpoint no intentaenviar mensajes rechazados.

Rechazos, agrupados poractividad

emails-rejected-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes que nose enviaron a los participantesporque fueron rechazados.Un mensaje se rechaza siAmazon Pinpoint determina queel mensaje contiene malware.Amazon Pinpoint no intentaenviar mensajes rechazados.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Envíos journey-emails-sent El número de mensajes que sehan enviado.

Envíos, agrupados por actividad emails-sent-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes que seenviaron.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

287

Amazon Pinpoint Guía para desarrolladoresMétricas de interacción del recorrido

Métrica kpi-name Descripción

Rebotes temporales journey-emails-softbounced

El número de mensajes queno se han podido entregar alos participantes debido a unrebote temporal. Un rebotetemporal se produce si unproblema temporal impide quese entregue un mensaje, porejemplo, la bandeja de entradade un participante está llena oel servidor de recepción no estádisponible temporalmente.

Rebotes temporales, agrupadospor actividad

emails-softbounced-grouped-by-journey-activity

Para cada actividad de recorrido,el número de mensajes queno se han podido entregar alos participantes debido a unrebote temporal. Un rebotetemporal se produce si unproblema temporal impide quese entregue un mensaje, porejemplo, la bandeja de entradade un participante está llena oel servidor de recepción no estádisponible temporalmente.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Cancelaciones de suscripciones journey-emails-unsubscribed

El número de veces que losparticipantes hicieron clic enlos enlaces de cancelación desuscripción en los mensajes. Siun único participante hizo clic enel mismo enlace de cancelaciónde suscripción varias veces, cadaclic se incluye en el recuento.

288

Amazon Pinpoint Guía para desarrolladoresMétricas de ejecución de recorrido

Métrica kpi-name Descripción

Cancelaciones de suscripción,agrupadas por actividad

emails-unsubscribed-grouped-by-journey-activity

Para cada actividad de recorrido,el número de veces que losparticipantes hicieron clic enlos enlaces de cancelación desuscripción de los mensajes. Siun único participante hizo clic enel mismo enlace de cancelaciónde suscripción varias veces, cadaclic se incluye en el recuento.

Los resultados de laconsulta de esta métrica seagrupan por ID de actividad(JourneyActivityId), quees una cadena que identifica deforma inequívoca una actividad.

Métricas de ejecución de recorridoEn la siguiente tabla se muestran y describen las métricas de ejecución estándar que puede consultarpara evaluar el estado de los participantes en un recorrido de Amazon Pinpoint. Para consultar los datosde estas métricas, utilice el recurso Métricas de ejecución de recorrido de la API de Amazon Pinpoint. Lacolumna Campo de la tabla identifica el nombre del campo que aparece en los resultados de la consulta decada métrica.

Métrica Campo Descripción

Participantes activos ENDPOINT_ACTIVE El número de participantes queavanzan activamente a través delas actividades del recorrido.

Esta métrica se calcula comoel número de participantes quehan iniciado el recorrido, menosel número de participantes queabandonaron el recorrido y elnúmero de participantes que seretiraron del recorrido.

Cancelaciones de participantes CANCELLED El número de participantes queno completaron el recorridoporque se canceló.

Salidas de los participantes ENDPOINT_LEFT El número de participantes queabandonaron el recorrido.

Entradas de participantes ENDPOINT_ENTERED El número de participantes queiniciaron el recorrido.

Excepciones de participantes,límites de re-entradas

REENTRY_CAP_EXCEEDED El número de participantes queno completaron el recorridoporque habrían superado elnúmero máximo de veces que un

289

Amazon Pinpoint Guía para desarrolladoresMétricas de ejecución de actividades de recorrido

Métrica Campo Descripciónsolo participante puede volver aentrar en el recorrido.

Excepciones de los participantes,rechazos

ACTIVE_ENDPOINT_REJECTED El número de participantes queno pueden iniciar el recorridoporque ya son participantesactivos en el recorrido.

Un participante se rechazasi inicia un recorrido y,posteriormente, actualiza ladefinición de punto de enlacede una manera que afecte a suinclusión en un segmento (segúncriterios de segmento) o en elrecorrido (según condiciones deactividad).

Métricas de ejecución de actividades de recorridoEn la siguiente tabla se muestran y describen las métricas de ejecución estándar que puede consultarpara evaluar el estado de los participantes en cada tipo de actividad individual de un recorrido de AmazonPinpoint. Para consultar los datos de estas métricas, utilice el recurso Métricas de ejecución de actividadesde recorrido de la API de Amazon Pinpoint. La columna Métricas de la tabla muestra los campos queaparecen en los resultados de la consulta para cada tipo de actividad. También proporciona una brevedescripción de cada campo.

Tipo de actividad Métricas

División sí/no (CONDITIONAL_SPLIT) Las métricas son:

• Branch_FALSE: el número de participantes queno cumplían las condiciones de la actividad yprocedieron a la actividad en la ruta «No».

• Branch_TRUE: el número de participantes quecumplieron las condiciones de la actividad yprocedieron a la actividad en la ruta «Sí».

Hay métricas adicionales disponibles para cadaruta de la actividad. Para obtener informaciónsobre esas métricas, consulte la fila de esta tablapara ese tipo de actividad.

Retención (HOLDOUT) Las métricas son:

• HOLDOUT: el número de participantes que fueronretirados del recorrido como parte del porcentajede retención de la actividad.

• PASSED: el número de participantes que pasarona la siguiente actividad en el recorrido.

Correo electrónico (MESSAGE) Las métricas son:

290

Amazon Pinpoint Guía para desarrolladoresMétricas de ejecución de actividades de recorrido

Tipo de actividad Métricas• DAILY_CAP_EXCEEDED: el número de mensajes

que no se enviaron porque habrían superadoel número máximo de mensajes que un soloparticipante puede recibir durante un período de24 horas.

• FAILURE_PERMANENT: el número de mensajesque no se enviaron debido a un problemapermanente.

• QUIET_TIME: el número de mensajes que no seenviaron porque se habrían entregado duranteel horario de inactividad (tranquilidad) de la zonahoraria del participante.

• SERVICE_FAILURE: el número de mensajesque no se enviaron debido a un problema conAmazon Pinpoint.

• SUCCESS: el número de mensajes que seentregaron correctamente a los participantes.

• THROTTLED: el número de mensajes que nose enviaron porque el envío habría superadolas cuotas de envío de su cuenta de AmazonPinpoint.

• TRANSIENT_FAILURE: el número de mensajesque no se enviaron debido a un problematemporal.

• UNKNOWN: el número de mensajes que no seenviaron debido a un problema desconocido.

División multivariante(MULTI_CONDITIONAL_SPLIT)

Para cada ruta de la actividad, el número departicipantes que procedieron a la actividad en elcamino.

Los resultados de la consulta de esta métricase agrupan por ruta: Branch_#, donde # es elidentificador numérico de una ruta: por ejemplo,Branch_1 para la primera ruta de la actividad.

Hay métricas adicionales disponibles para cadaruta de la actividad. Para obtener informaciónsobre esas métricas, consulte la fila de esta tablapara ese tipo de actividad.

División aleatoria (RANDOM_SPLIT) Para cada ruta de la actividad, el número departicipantes que procedieron a la actividad en elcamino.

Los resultados de la consulta de esta métricase agrupan por ruta: Branch_#, donde # es elidentificador numérico de una ruta: por ejemplo,Branch_1 para la primera ruta de la actividad.

Hay métricas adicionales disponibles para cadaruta de la actividad. Para obtener informaciónsobre esas métricas, consulte la fila de esta tablapara ese tipo de actividad.

291

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de campañas

Tipo de actividad Métricas

Espera (WAIT) Las métricas son:

• WAIT_FINISHED: el número de participantesque terminaron de esperar el tiempoespecificado.

• WAIT_SKIPPED: el número de participantes queno esperaron la cantidad de tiempo especificada,normalmente porque empezaron la actividado recorrido después de la hora de finalizaciónprogramada para la actividad.

• WAIT_STARTED: el número de participantes quecomenzaron a esperar y que no han omitido laespera y que aún no han finalizado la espera porla cantidad de tiempo especificada.

Consulta de datos de análisis de Amazon Pinpointde campañas

Además de utilizar las páginas de análisis de la consola de Amazon Pinpoint, puede utilizar las API deanálisis de Amazon Pinpoint para consultar datos de análisis de un subconjunto de métricas estándarque proporcionan información sobre las tendencias relacionadas con las entregas y la interacción de lascampañas.

Cada una de estas métricas es un valor medible, también conocido como un indicador clave derendimiento (KPI), que puede ayudarle a supervisar y evaluar el rendimiento de una o más campañas.Puede utilizar una métrica para, por ejemplo, averiguar el número de puntos de enlace a los que se envióun mensaje de una campaña o cuántos de esos mensajes se entregaron a los puntos de enlace previstos.

Amazon Pinpoint recopila y agrega automáticamente estos datos de todas las campañas. Almacenalos datos durante 90 días. Si integró una aplicación móvil con Amazon Pinpoint mediante un SDKpara dispositivos móviles de AWS, Amazon Pinpoint amplía esta compatibilidad para incluir métricasadicionales, como el porcentaje de notificaciones push abiertas por los destinatarios. Para obtenerinformación sobre la integración de una aplicación móvil, consulte Integración de Amazon Pinpoint en unaaplicación (p. 135).

Si utiliza las API de análisis de Amazon Pinpoint para consultar datos, puede elegir varias opciones quedefinen el ámbito, los datos, la agrupación y los filtros de la consulta. Para ello, utilice parámetros queespecifiquen el proyecto, la campaña y la métrica que desea consultar, además de los filtros basados enfechas que desee aplicar.

En este tema se explica y se proporcionan ejemplos sobre cómo elegir estas opciones y consultar losdatos de una o varias campañas.

Requisitos previosAntes de consultar los datos de análisis de una o varias campañas, es recomendable recopilar la siguienteinformación, que después utilizará para definir la consulta:

• ID de proyecto: identificador único del proyecto asociado a la campaña o a las campañas. En la API deAmazon Pinpoint, este valor se almacena en la propiedad application-id. En la consola de Amazon

292

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de una campaña

Pinpoint, este valor se muestra como Project ID (ID de proyecto) en la página All projects (Todos losproyectos).

• ID de campaña: identificador único de la campaña, si desea consultar los datos de una sola campaña.En la API de Amazon Pinpoint, este valor se almacena en la propiedad campaign-id. Este valor no semuestra en la consola.

• Intervalo de fechas: de forma opcional, la primera y la última fecha y hora del intervalo de fechas paraconsultar los datos. Los intervalos de fechas son inclusivos y deben tener 31 días naturales o menos.Además, deben comenzar en menos de 90 días a partir del día actual. Si no especifica un intervalo defechas, Amazon Pinpoint consulta automáticamente los datos de los 31 días naturales anteriores.

• Tipo de métrica: tipo de métrica que se va a consultar. Hay dos tipos de métricas: las métricas deaplicación y las métricas de campaña. Una métrica de aplicación proporciona datos para todas lascampañas asociadas a un proyecto, también denominado aplicación. Una métrica de campañaproporciona datos de una sola campaña.

• Métrica: nombre de la métrica que se va a consultar, concretamente, el valor kpi-name de la métrica.Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una de ellas,consulte Métricas estándar (p. 265).

También ayuda determinar si desea agrupar los datos por un campo relevante. Si lo hace, para simplificarel análisis y los informes, elija una métrica diseñada para agrupar datos de forma automática. Porejemplo, Amazon Pinpoint proporciona varias métricas estándar que informan del porcentaje de mensajesentregados a los destinatarios de una campaña. Una de estas métricas agrupa automáticamente los datospor fecha (successful-delivery-rate-grouped-by-date). Otra métrica agrupa automáticamentelos datos por ejecución de campaña (successful-delivery-rate-grouped-by-campaign-activity). Una tercera métrica simplemente devuelve un valor único: el porcentaje de mensajesentregados a los destinatarios por todas las ejecuciones de campaña (successful-delivery-rate).

Si no puede encontrar una métrica estándar que agrupe los datos de la forma que quiere, puededesarrollar una serie de consultas que devuelvan los datos que desee. A continuación, desglose o combinemanualmente los resultados de la consulta en grupos personalizados de diseño propio.

Por último, es importante verificar que está autorizado para acceder a los datos que desea consultar.Para obtener más información, consulte Políticas de IAM para consultar datos de análisis de AmazonPinpoint (p. 263).

Consulta de datos de una campañaPara consultar los datos de una campaña, utilice la API Métricas de campaña y especifique valores paralos siguientes parámetros obligatorios:

• application-id: ID del proyecto, que es el identificador único del proyecto asociado a la campaña. EnAmazon Pinpoint, los términos proyecto y aplicación tienen el mismo significado.

• campaign-id: identificador único de la campaña.• kpi-name: nombre de la métrica que se va a consultar. Este valor describe la métrica asociada y consta

de dos o más términos, que se componen de caracteres alfanuméricos en minúsculas, separados por unguion. Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una deellas, consulte Métricas estándar (p. 265).

También puede aplicar un filtro que consulte los datos de un intervalo de fechas determinado. Si noespecifica un intervalo de fechas, Amazon Pinpoint devuelve los datos de los 31 días naturales anteriores.Para filtrar los datos por fechas diferentes, utilice los parámetros de intervalo de fechas admitidos paraespecificar la primera y la última fecha y hora del intervalo de fechas. Los valores deben estar en formatoISO 8601 ampliado y usar el tiempo universal coordinado (UTC): por ejemplo, 2019-07-19T20:00:00Zequivale a las 20:00 UTC del 19 de julio de 2019. Los intervalos de fechas son inclusivos y deben tener

293

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de una campaña

31 días naturales o menos. Además, la fecha y hora iniciales deben ser anteriores a 90 días a partir del díaactual.

En los siguientes ejemplos se muestra cómo consultar los datos de análisis de una campaña mediantela API REST de Amazon Pinpoint, la AWS CLI y la AWS SDK for Java. Puede utilizar cualquier SDK deAWS compatible para consultar datos de análisis de una campaña. Los ejemplos de AWS CLI tienen elformato de Microsoft Windows. Para Unix, Linux y macOS, reemplace el carácter de continuación de líneade intercalación (^) por una barra invertida (\).

REST API

Para consultar los datos de análisis de una campaña mediante la API REST de Amazon Pinpoint,envíe una solicitud HTTP(S) GET al URI Métricas de campaña. En el URI, especifique los valoresapropiados para los parámetros de ruta requeridos:

https://endpoint/v1/apps/application-id/campaigns/campaign-id/kpis/daterange/kpi-name

Donde:

• endpoint es el punto de enlace de Amazon Pinpoint para la región de AWS que aloja el proyectoasociado a la campaña.

• application-id es el identificador único del proyecto asociado a la campaña.• campaign-id es el identificador único de la campaña.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Todos los parámetros deben tener codificación URL.

Para aplicar un filtro que consulta los datos de un intervalo de fechas específico, agregue losparámetros de consulta start-time y end-time y los valores al URI. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Utilice un signo ampersand (&) para separar los parámetros.

Por ejemplo, la siguiente solicitud recupera el número de puntos de enlace únicos a los que seentregaron los mensajes, en todas las ejecuciones de una campaña, desde el 19 de julio de 2019hasta el 26 de julio de 2019:

https://pinpoint.us-east-1.amazonaws.com/v1/apps/1234567890123456789012345example/campaigns/80b8efd84042ff8d9c96ce2f8example/kpis/daterange/unique-deliveries?start-time=2019-07-19T00:00:00Z&end-time=2019-07-26T23:59:59Z

Donde:

• pinpoint.us-east-1.amazonaws.com es el punto de enlace de Amazon Pinpoint de la regiónAWS que aloja el proyecto.

• 1234567890123456789012345example es el identificador único del proyecto asociado a lacampaña.

• 80b8efd84042ff8d9c96ce2f8example es el identificador único de la campaña.• unique-deliveries es el valor kpi-name de la métrica de campaña entregas a puntos de

enlace que es la métrica que informa sobre el número de puntos de enlace únicos a los que seentregaron los mensajes en todas las ejecuciones de una campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

294

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de una campaña

AWS CLI

Para consultar los datos de análisis de una campaña con la AWS CLI, utilice el comando get-campaign-date-range-kpi y especifique los valores adecuados para los parámetros requeridos:

C:\> aws pinpoint get-campaign-date-range-kpi ^ --application-id application-id ^ --campaign-id campaign-id ^ --kpi-name kpi-name

Donde:

• application-id es el identificador único del proyecto asociado a la campaña.• campaign-id es el identificador único de la campaña.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que consulte los datos de un intervalo de fechas específico, agregue losparámetros start-time y end-time a la consulta. Estos parámetros permiten especificar laprimera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechas inclusivo pararecuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de puntos de enlace únicosa los que se entregaron los mensajes, en todas las ejecuciones de una campaña, desde el 19 de juliode 2019 hasta el 26 de julio de 2019:

C:\> aws pinpoint get-campaign-date-range-kpi ^ --application-id 1234567890123456789012345example ^ --campaign-id 80b8efd84042ff8d9c96ce2f8example ^ --kpi-name unique-deliveries ^ --start-time 2019-07-19T00:00:00Z ^ --end-time 2019-07-26T23:59:59Z

Donde:

• 1234567890123456789012345example es el identificador único del proyecto asociado a lacampaña.

• 80b8efd84042ff8d9c96ce2f8example es el identificador único de la campaña.• unique-deliveries es el valor kpi-name de la métrica de campaña entregas a puntos de

enlace que es la métrica que informa sobre el número de puntos de enlace únicos a los que seentregaron los mensajes en todas las ejecuciones de una campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

SDK para Java

Para consultar los datos de análisis de una campaña mediante AWS SDK for Java, use el métodoGetCampaignDateRangeKpiRequest de la API Métricas de campaña. Especifique los valoresapropiados para los parámetros requeridos:

GetCampaignDateRangeKpiRequest request = new GetCampaignDateRangeKpiRequest() .withApplicationId("applicationId") .withCampaignId("campaignId") .withKpiName("kpiName")

Donde:

295

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de una campaña

• applicationId es el identificador único del proyecto asociado a la campaña.• campaignId es el identificador único de la campaña.• kpiName es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que consulte los datos de un intervalo de fechas específico, incluya losparámetros startTime y endTime y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de puntos deenlace únicos a los que se entregaron los mensajes, en todas las ejecuciones de una campaña, desdeel 19 de julio de 2019 hasta el 26 de julio de 2019:

GetCampaignDateRangeKpiRequest request = new GetCampaignDateRangeKpiRequest() .withApplicationId("1234567890123456789012345example") .withCampaignId("80b8efd84042ff8d9c96ce2f8example") .withKpiName("unique-deliveries") .withStartTime(Date.from(Instant.parse("2019-07-19T00:00:00Z"))) .withEndTime(Date.from(Instant.parse("2019-07-26T23:59:59Z")));

Donde:

• 1234567890123456789012345example es el identificador único del proyecto asociado a lacampaña.

• 80b8efd84042ff8d9c96ce2f8example es el identificador único de la campaña.• unique-deliveries es el valor kpi-name de la métrica de campaña entregas a puntos de

enlace que es la métrica que informa sobre el número de puntos de enlace únicos a los que seentregaron los mensajes en todas las ejecuciones de una campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. La estructura de los resultados varía en función de la métrica que haya consultado. Algunasmétricas solo devuelven un valor. Por ejemplo, la métrica de campaña entregas a puntos de enlace(unique-deliveries), que se utiliza en los ejemplos anteriores, devuelve un valor: el número de puntosde enlace únicos a los que se entregaron los mensajes en todas las ejecuciones de una campaña. En estecaso, la respuesta JSON es la siguiente:

{ "CampaignDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "CampaignId":"80b8efd84042ff8d9c96ce2f8example", "EndTime":"2019-07-26T23:59:59Z", "KpiName":"unique-deliveries", "KpiResult":{ "Rows":[ { "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"123.0" } ] } ]

296

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de varias campañas

}, "StartTime":"2019-07-19T00:00:00Z" }}

Otras métricas devuelven varios valores y agrupan los valores por un campo relevante. Si una métricadevuelve varios valores, la respuesta JSON incluye un campo que indica qué campo se utilizó paraagrupar los datos.

Para obtener más información sobre la estructura de los resultados de la consulta, lea Uso de losresultados de las consultas (p. 309).

Consulta de datos de varias campañasExisten dos formas de consultar los datos de varias campañas. La mejor forma depende de si deseaconsultar los datos de las campañas asociadas al mismo proyecto. Si es así, también depende de si deseaconsultar los datos de todas las campañas o solo o subconjunto de ellas.

Para consultar los datos de las campañas asociadas a diferentes proyectos o solo de un subconjunto decampañas asociadas al mismo proyecto, lo mejor es crear y ejecutar una serie de consultas individuales,una para cada campaña para la que desee consultar los datos. En la sección anterior se explica cómoconsultar los datos de una sola campaña.

Para consultar los datos de todas las campañas asociadas al mismo proyecto, puede utilizar la APIMétricas de aplicación. Especifique valores para los siguientes parámetros obligatorios:

• application-id: ID del proyecto, que es el identificador único del proyecto. En Amazon Pinpoint, lostérminos proyecto y aplicación tienen el mismo significado.

• kpi-name: nombre de la métrica que se va a consultar. Este valor describe la métrica asociada y constade dos o más términos, que se componen de caracteres alfanuméricos en minúsculas, separados por unguion. Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una deellas, consulte Métricas estándar (p. 265).

También puede filtrar los datos por intervalo de fechas. Si no especifica un intervalo de fechas, AmazonPinpoint devuelve los datos de los 31 días naturales anteriores. Para filtrar los datos por fechas diferentes,utilice los parámetros de intervalo de fechas admitidos para especificar la primera y la última fecha y horadel intervalo de fechas. Los valores deben estar en formato ISO 8601 ampliado y usar el tiempo universalcoordinado (UTC): por ejemplo, 2019-07-19T20:00:00Z equivale a las 20:00 UTC del 19 de julio de2019. Los intervalos de fechas son inclusivos y deben tener 31 días naturales o menos. Además, la fecha yhora iniciales deben ser anteriores a 90 días a partir del día actual.

En los siguientes ejemplos se muestra cómo consultar los datos de análisis de una campaña mediantela API REST de Amazon Pinpoint, la AWS CLI y la AWS SDK for Java. Puede utilizar cualquier SDK deAWS compatible para consultar datos de análisis de una campaña. Los ejemplos de AWS CLI tienen elformato de Microsoft Windows. Para Unix, Linux y macOS, reemplace el carácter de continuación de líneade intercalación (^) por una barra invertida (\).

REST API

Para consultar los datos de análisis de varias campaña mediante la API REST de Amazon Pinpoint,envíe una solicitud HTTP(S) GET al URI Métricas de aplicación. En el URI, especifique los valoresapropiados para los parámetros de ruta requeridos:

https://endpoint/v1/apps/application-id/kpis/daterange/kpi-name

Donde:

297

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de varias campañas

• endpoint es el punto de enlace de Amazon Pinpoint para la región de AWS que aloja el proyectoasociado a las campañas.

• application-id es el identificador único del proyecto asociado a las campañas.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Todos los parámetros deben tener codificación URL.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, agregue losparámetros de consulta start-time y end-time y los valores al URI. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Utilice un signo ampersand (&) para separar los parámetros.

Por ejemplo, la siguiente solicitud recupera el número de puntos de enlace únicos a los que seentregaron los mensajes, en todas las campañas de un proyecto, desde el 19 de julio de 2019 hasta el26 de julio de 2019:

https://pinpoint.us-east-1.amazonaws.com/v1/apps/1234567890123456789012345example/kpis/daterange/unique-deliveries-grouped-by-campaign?start-time=2019-07-19T00:00:00Z&end-time=2019-07-26T23:59:59Z

Donde:

• pinpoint.us-east-1.amazonaws.com es el punto de enlace de Amazon Pinpoint de la regiónAWS que aloja el proyecto.

• 1234567890123456789012345example es el identificador único del proyecto asociado a lascampañas.

• unique-deliveries-grouped-by-campaign es el valor kpi-name de la métrica de aplicaciónentregas a puntos de enlace, agrupadas por campaña que es la métrica que devuelve el número depuntos de enlace únicos a los que se entregaron los mensajes por campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

AWS CLI

Para consultar los datos de análisis de varias campañas con la AWS CLI, utilice el comando get-application-date-range-kpi y especifique los valores adecuados para los parámetros obligatorios:

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id application-id ^ --kpi-name kpi-name

Donde:

• application-id es el identificador único del proyecto asociado a las campañas.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, incluya losparámetros start-time y end-time y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de puntos deenlace únicos a los que se entregaron los mensajes, en todas las campañas de un proyecto, desde el19 de julio de 2019 hasta el 26 de julio de 2019:

298

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de varias campañas

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id 1234567890123456789012345example ^ --kpi-name unique-deliveries-grouped-by-campaign ^ --start-time 2019-07-19T00:00:00Z ^ --end-time 2019-07-26T23:59:59Z

Donde:

• 1234567890123456789012345example es el identificador único del proyecto asociado a lacampaña.

• unique-deliveries-grouped-by-campaign es el valor kpi-name de la métrica de aplicaciónentregas a puntos de enlace, agrupadas por campaña que es la métrica que devuelve el número depuntos de enlace únicos a los que se entregaron los mensajes por campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

SDK para Java

Para consultar los datos de análisis de varias campañas mediante AWS SDK for Java, use el métodoGetApplicationDateRangeKpiRequest de la API Métricas de aplicación. Especifique los valoresapropiados para los parámetros requeridos:

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("applicationId") .withKpiName("kpiName")

Donde:

• applicationId es el identificador único del proyecto asociado a las campañas.• kpiName es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, incluya losparámetros startTime y endTime y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de puntos deenlace únicos a los que se entregaron los mensajes, en todas las campañas de un proyecto, desde el19 de julio de 2019 hasta el 26 de julio de 2019:

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("1234567890123456789012345example") .withKpiName("unique-deliveries-grouped-by-campaign") .withStartTime(Date.from(Instant.parse("2019-07-19T00:00:00Z"))) .withEndTime(Date.from(Instant.parse("2019-07-26T23:59:59Z")));

Donde:

• 1234567890123456789012345example es el identificador único del proyecto asociado a lascampañas.

• unique-deliveries-grouped-by-campaign es el valor kpi-name de la métrica de aplicaciónentregas a puntos de enlace, agrupadas por campaña que es la métrica que devuelve el número depuntos de enlace únicos a los que se entregaron los mensajes por campaña.

• 2019-07-19T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

299

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de varias campañas

• 2019-07-26T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. La estructura de los resultados varía en función de la métrica que haya consultado. Algunasmétricas solo devuelven un valor. Otras métricas devuelven varios valores y esos valores se agrupan porcampo relevante. Si una métrica devuelve varios valores, la respuesta JSON incluye un campo que indicaqué campo se utilizó para agrupar los datos.

Por ejemplo, la métrica de aplicación entregas a puntos de enlace, agrupadas por campaña (unique-deliveries-grouped-by-campaign), que se utiliza en los ejemplos anteriores, devuelve variosvalores: el número de puntos de enlace únicos a los que se entregaron los mensajes para cada campañaasociada a un proyecto. En este caso, la respuesta JSON es la siguiente:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "EndTime":"2019-07-26T23:59:59Z", "KpiName":"unique-deliveries-grouped-by-campaign", "KpiResult":{ "Rows":[ { "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"80b8efd84042ff8d9c96ce2f8example" } ], "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"123.0" } ] }, { "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"810c7aab86d42fb2b56c8c966example" } ], "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"456.0" } ] }, { "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"42d8c7eb0990a57ba1d5476a3example" } ], "Values":[ {

300

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de mensajes transaccionales

"Key":"UniqueDeliveries", "Type":"Double", "Value":"789.0" } ] } ] }, "StartTime":"2019-07-19T00:00:00Z" }}

En este caso, el campo GroupedBys indica que los valores están agrupados por ID de campaña(CampaignId).

Para obtener más información sobre la estructura de los resultados de la consulta, lea Uso de losresultados de las consultas (p. 309).

Consulta de los datos de análisis de AmazonPinpoint para mensajes transaccionales

Además de utilizar las páginas de análisis de la consola de Amazon Pinpoint, puede utilizar las API deanálisis de Amazon Pinpoint para consultar datos de análisis de un subconjunto de métricas estándarque proporcionan información sobre las tendencias relacionadas con las entregas y la interacción de losmensajes transaccionales enviados para un proyecto.

Cada una de estas métricas es un valor medible, también conocido como un indicador clave derendimiento (KPI), que puede ayudarle a supervisar y evaluar el rendimiento de los mensajestransaccionales. Por ejemplo, puede utilizar una métrica para averiguar cuántos mensajes de correoelectrónico o SMS transaccionales envió o cuántos de esos mensajes se entregaron a los destinatarios.Amazon Pinpoint recopila y agrega automáticamente estos datos de todos los mensajes de correoelectrónico y SMS transaccionales que envía para un proyecto. Almacena los datos durante 90 días.

Si utiliza las API de análisis de Amazon Pinpoint para consultar datos, puede elegir varias opciones quedefinen el ámbito, los datos, la agrupación y los filtros de la consulta. Para ello, utilice parámetros queespecifiquen el proyecto y la métrica que desea consultar, además de los filtros basados en fechas quedesee aplicar.

En este tema se explica y se proporcionan ejemplos de cómo elegir estas opciones y consultar los datosde mensajes transaccionales de un proyecto.

Requisitos previosAntes de consultar los datos de análisis de los mensajes transaccionales, ayuda a recopilar la siguienteinformación, que utilizará para definir la consulta:

• ID– de proyecto: identificador único del proyecto desde el que se enviaron los mensajes. En la API deAmazon Pinpoint, este valor se almacena en la propiedad application-id. En la consola de AmazonPinpoint, este valor se muestra como Project ID (ID de proyecto) en la página All projects (Todos losproyectos).

• Intervalo de fechas: de forma opcional, la primera y la última fecha y hora del intervalo de fechas paraconsultar los datos. Los intervalos de fechas son inclusivos y deben tener 31 días naturales o menos.Además, deben comenzar en menos de 90 días a partir del día actual. Si no especifica un intervalo defechas, Amazon Pinpoint consulta automáticamente los datos de los 31 días naturales anteriores.

301

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de mensajes decorreo electrónico transaccionales

• Métrica: nombre de la métrica que se va a consultar, concretamente, el valor kpi-name de la métrica.Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una de ellas,consulte Métricas estándar (p. 265).

También ayuda determinar si desea agrupar los datos por un campo relevante. Si lo hace, para simplificarel análisis y los informes, elija una métrica diseñada para agrupar datos de forma automática. Por ejemplo,Amazon Pinpoint proporciona varias métricas estándar que informan del número de mensajes SMStransaccionales que se entregaron a los destinatarios. Una de estas métricas agrupa automáticamentelos datos por fecha (txn-sms-delivered-grouped-by-date). Otra métrica agrupa automáticamentelos datos por país o región (txn-sms-delivered-grouped-by-country). Una tercera métricasimplemente devuelve un valor único: se trata del número de mensajes entregados a los destinatarios(txn-sms-delivered). Si no puede encontrar una métrica estándar que agrupe los datos de la formaque quiere, puede desarrollar una serie de consultas que devuelvan los datos que desee. A continuación,desglose o combine manualmente los resultados de la consulta en grupos personalizados de diseñopropio.

Por último, es importante verificar que está autorizado para acceder a los datos que desea consultar.Para obtener más información, consulte Políticas de IAM para consultar datos de análisis de AmazonPinpoint (p. 263).

Consulta de datos de mensajes de correo electrónicotransaccionalesPara consultar los datos de los mensajes de correo electrónico transaccionales enviados para un proyecto,utilice la API Métricas de aplicación y especifique valores para los siguientes parámetros obligatorios:

• application-id: ID del proyecto, que es el identificador único del proyecto. En Amazon Pinpoint, lostérminos proyecto y aplicación tienen el mismo significado.

• kpi-name: nombre de la métrica que se va a consultar. Este valor describe la métrica asociada y constade dos o más términos, que se componen de caracteres alfanuméricos en minúsculas, separados por unguion. Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una deellas, consulte Métricas estándar (p. 265).

También puede aplicar un filtro que consulte los datos de un intervalo de fechas determinado. Si noespecifica un intervalo de fechas, Amazon Pinpoint devuelve los datos de los 31 días naturales anteriores.Para filtrar los datos por fechas diferentes, utilice los parámetros de intervalo de fechas admitidos paraespecificar la primera y la última fecha y hora del intervalo de fechas. Los valores deben estar en formatoISO 8601 ampliado y usar el tiempo universal coordinado (UTC): por ejemplo, 2019-09-06T20:00:00Zequivale a las 20:00 UTC del 6 de septiembre de 2019. Los intervalos de fechas son inclusivos y debentener 31 días naturales o menos. Además, la primera fecha y hora deben ser inferiores a 90 días desde eldía actual.

En los siguientes ejemplos se muestra cómo consultar los datos de análisis de los mensajes de correoelectrónico transaccionales mediante la API REST de Amazon Pinpoint, la AWS CLI y la AWS SDK forJava. Puede utilizar cualquier SDK de AWS compatible para consultar los datos de análisis de mensajestransaccionales. Los ejemplos de AWS CLI tienen el formato de Microsoft Windows. Para Unix, Linux ymacOS, reemplace el carácter de continuación de línea de intercalación (^) por una barra invertida (\).

REST API

Para consultar los datos de análisis de mensajes de correo electrónico transaccionales mediante laAPI REST de Amazon Pinpoint, envíe una solicitud HTTP(S) GET al URI Métricas de aplicación. En elURI, especifique los valores apropiados para los parámetros de ruta requeridos:

https://endpoint/v1/apps/application-id/kpis/daterange/kpi-name

302

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de mensajes decorreo electrónico transaccionales

Donde:

• endpoint es el punto de enlace de Amazon Pinpoint para la región de AWS que aloja el proyecto.• application-id es el identificador único del proyecto.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Todos los parámetros deben tener codificación URL.

Para aplicar un filtro que consulta los datos de un intervalo de fechas específico, agregue losparámetros de consulta start-time y end-time y los valores al URI. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Utilice un signo ampersand (&) para separar los parámetros.

Por ejemplo, la siguiente solicitud recupera el número de mensajes de correo electrónicotransaccionales enviados para un proyecto desde el 6 de septiembre de 2019 hasta el 13 deseptiembre de 2019:

https://pinpoint.us-east-1.amazonaws.com/v1/apps/1234567890123456789012345example/kpis/daterange/txn-emails-sent?start-time=2019-09-06T00:00:00Z&end-time=2019-09-13T23:59:59Z

Donde:

• pinpoint.us-east-1.amazonaws.com es el punto de enlace de Amazon Pinpoint de la regiónAWS que aloja el proyecto.

• 1234567890123456789012345example es el identificador único del producto.• txn-emails-sent es el valor kpi-name de la métrica de aplicación envíos que es la métrica

que informa sobre el número de mensajes de correo electrónico transaccionales enviados para unproyecto.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-09-13T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

AWS CLI

Para consultar los datos de análisis de mensajes de correo electrónico transaccionales con la AWSCLI, utilice el comando get-application-date-range-kpi y especifique los valores adecuados para losparámetros obligatorios:

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id application-id ^ --kpi-name kpi-name

Donde:

• application-id es el identificador único del proyecto.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que consulte los datos de un intervalo de fechas específico, agregue losparámetros start-time y end-time a la consulta. Estos parámetros permiten especificar laprimera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechas inclusivo pararecuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de mensajes de correoelectrónico transaccionales enviados para un proyecto desde el 6 de septiembre de 2019 hasta el 13de septiembre de 2019:

303

Amazon Pinpoint Guía para desarrolladoresConsulta de datos de mensajes decorreo electrónico transaccionales

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id 1234567890123456789012345example ^ --kpi-name txn-emails-sent ^ --start-time 2019-09-06T00:00:00Z ^ --end-time 2019-09-13T23:59:59Z

Donde:

• 1234567890123456789012345example es el identificador único del producto.• txn-emails-sent es el valor kpi-name de la métrica de aplicación envíos que es la métrica

que informa sobre el número de mensajes de correo electrónico transaccionales enviados para unproyecto.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-09-13T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

SDK para Java

Para consultar los datos de análisis de mensajes de correo electrónico transaccionales mediante AWSSDK for Java, use el método GetApplicationDateRangeKpiRequest de la API Métricas de aplicación.Especifique los valores apropiados para los parámetros requeridos:

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("applicationId") .withKpiName("kpiName")

Donde:

• applicationId es el identificador único del proyecto.• kpiName es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que consulte los datos de un intervalo de fechas específico, incluya losparámetros startTime y endTime y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de mensajesde correo electrónico transaccionales enviados para un proyecto desde el 6 de septiembre de 2019hasta el 13 de septiembre de 2019:

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("1234567890123456789012345example") .withKpiName("txn-emails-sent") .withStartTime(Date.from(Instant.parse("2019-09-06T00:00:00Z"))) .withEndTime(Date.from(Instant.parse("2019-09-13T23:59:59Z")));

Donde:

• 1234567890123456789012345example es el identificador único del producto.• txn-emails-sent es el valor kpi-name de la métrica de aplicación envíos que es la métrica

que informa sobre el número de mensajes de correo electrónico transaccionales enviados para unproyecto.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

304

Amazon Pinpoint Guía para desarrolladoresConsulta de datos para mensajes SMS transaccionales

• 2019-09-13T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. La estructura de los resultados varía en función de la métrica que haya consultado. Algunasmétricas solo devuelven un valor. Por ejemplo, la métrica de aplicación envía (txn-emails-sent), quese utiliza en los ejemplos anteriores, devuelve un valor: el número de mensajes de correo electrónicotransaccionales enviados desde un proyecto. En este caso, la respuesta JSON es la siguiente:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "EndTime":"2019-09-13T23:59:59Z", "KpiName":"txn-emails-sent", "KpiResult":{ "Rows":[ { "Values":[ { "Key":"TxnEmailsSent", "Type":"Double", "Value":"62.0" } ] } ] }, "StartTime":"2019-09-06T00:00:00Z" }}

Otras métricas devuelven varios valores y agrupan los valores por un campo relevante. Si una métricadevuelve varios valores, la respuesta JSON incluye un campo que indica qué campo se utilizó paraagrupar los datos.

Para obtener más información sobre la estructura de los resultados de la consulta, lea Uso de losresultados de las consultas (p. 309).

Consulta de datos para mensajes SMStransaccionalesPara consultar los datos de los mensajes SMS transaccionales enviados para un proyecto, utilice la APIMétricas de aplicación y especifique valores para los siguientes parámetros obligatorios:

• application-id: ID del proyecto, que es el identificador único del proyecto. En Amazon Pinpoint, lostérminos proyecto y aplicación tienen el mismo significado.

• kpi-name: nombre de la métrica que se va a consultar. Este valor describe la métrica asociada y constade dos o más términos, que se componen de caracteres alfanuméricos en minúsculas, separados por unguion. Para obtener una lista completa de las métricas admitidas y el valor kpi-name de cada una deellas, consulte Métricas estándar (p. 265).

También puede aplicar un filtro que consulte los datos de un intervalo de fechas determinado. Si noespecifica un intervalo de fechas, Amazon Pinpoint devuelve los datos de los 31 días naturales anteriores.Para filtrar los datos por fechas diferentes, utilice los parámetros de intervalo de fechas admitidospara especificar la primera fecha y hora y la última fecha y hora del intervalo de fechas. Los valoresdeben estar en formato ISO 8601 ampliado y usar el tiempo universal coordinado (UTC): por ejemplo,2019-09-06T20:00:00Z equivale a las 20:00 UTC del 6 de septiembre de 2019. Los intervalos de

305

Amazon Pinpoint Guía para desarrolladoresConsulta de datos para mensajes SMS transaccionales

fechas son inclusivos y deben tener 31 días naturales o menos. Además, la primera fecha y hora deben serinferiores a 90 días desde el día actual.

En los siguientes ejemplos se muestra cómo consultar los datos de análisis de los mensajes SMStransaccionales mediante la API REST de Amazon Pinpoint, la AWS CLI y la AWS SDK for Java.Puede utilizar cualquier SDK de AWS compatible para consultar los datos de análisis de mensajestransaccionales. Los ejemplos de AWS CLI tienen el formato de Microsoft Windows. Para Unix, Linux ymacOS, reemplace el carácter de continuación de línea de intercalación (^) por una barra invertida (\).

REST API

Para consultar los datos de análisis de mensajes SMS transaccionales mediante la API RESTde Amazon Pinpoint, envíe una solicitud HTTP(S) GET al URI Métricas de aplicación. En el URI,especifique los valores apropiados para los parámetros de ruta requeridos:

https://endpoint/v1/apps/application-id/kpis/daterange/kpi-name

Donde:

• endpoint es el punto de enlace de Amazon Pinpoint para la región de AWS que aloja el proyecto.• application-id es el identificador único del proyecto.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Todos los parámetros deben tener codificación URL.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, agregue losparámetros de consulta start-time y end-time y los valores al URI. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Utilice un signo ampersand (&) para separar los parámetros.

Por ejemplo, la siguiente solicitud recupera el número de mensajes SMS transaccionales enviadoscada día desde el 6 de septiembre de 2019 hasta el 8 de septiembre de 2019:

https://pinpoint.us-east-1.amazonaws.com/v1/apps/1234567890123456789012345example/kpis/daterange/txn-sms-sent-grouped-by-date?start-time=2019-09-06T00:00:00Z&end-time=2019-09-08T23:59:59Z

Donde:

• pinpoint.us-east-1.amazonaws.com es el punto de enlace de Amazon Pinpoint de la regiónAWS que aloja el proyecto.

• 1234567890123456789012345example es el identificador único del producto.• txn-sms-sent-grouped-by-date es el valor kpi-name de los envíos, agrupados por fecha que

es la métrica que devuelve el número de mensajes SMS transaccionales enviados cada día duranteel intervalo de fechas.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-09-08T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

AWS CLI

Para consultar los datos de análisis de mensajes SMS transaccionales con la AWS CLI, utilice elcomando get-application-date-range-kpi y especifique los valores adecuados para los parámetrosobligatorios:

306

Amazon Pinpoint Guía para desarrolladoresConsulta de datos para mensajes SMS transaccionales

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id application-id ^ --kpi-name kpi-name

Donde:

• application-id es el identificador único del proyecto.• kpi-name es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, incluya losparámetros start-time y end-time y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de mensajesSMS transaccionales enviados cada día desde el 6 de septiembre de 2019 hasta el 8 de septiembrede 2019:

C:\> aws pinpoint get-application-date-range-kpi ^ --application-id 1234567890123456789012345example ^ --kpi-name txn-sms-sent-grouped-by-date ^ --start-time 2019-09-06T00:00:00Z ^ --end-time 2019-09-08T23:59:59Z

Donde:

• 1234567890123456789012345example es el identificador único del producto.• txn-sms-sent-grouped-by-date es el valor kpi-name de los envíos, agrupados por fecha que

es la métrica que devuelve el número de mensajes SMS transaccionales enviados cada día duranteel intervalo de fechas.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-09-08T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

SDK para Java

Para consultar los datos de análisis de los mensajes SMS transaccionales con AWS SDK for Java,utilice el método GetApplicationDateRangeKpiRequest de la API Métricas de aplicación y especifiquelos valores adecuados para los parámetros obligatorios:

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("applicationId") .withKpiName("kpiName")

Donde:

• applicationId es el identificador único del proyecto.• kpiName es el valor kpi-name de la métrica que se va a consultar.

Para aplicar un filtro que recupere los datos de un intervalo de fechas específico, incluya losparámetros startTime y endTime y los valores en la consulta. Estos parámetros permitenespecificar la primera y última fecha y hora, en formato ISO 8601 ampliado, de un intervalo de fechasinclusivo para recuperar los datos. Por ejemplo, la siguiente solicitud recupera el número de mensajesSMS transaccionales enviados cada día desde el 6 de septiembre de 2019 hasta el 8 de septiembrede 2019:

307

Amazon Pinpoint Guía para desarrolladoresConsulta de datos para mensajes SMS transaccionales

GetApplicationDateRangeKpiRequest request = new GetApplicationDateRangeKpiRequest() .withApplicationId("1234567890123456789012345example") .withKpiName("txn-sms-sent-grouped-by-date") .withStartTime(Date.from(Instant.parse("2019-09-06T00:00:00Z"))) .withEndTime(Date.from(Instant.parse("2019-09-08T23:59:59Z")));

Donde:

• 1234567890123456789012345example es el identificador único del producto.• txn-sms-sent-grouped-by-date es el valor kpi-name de los envíos, agrupados por fecha que

es la métrica que devuelve el número de mensajes SMS transaccionales enviados cada día duranteel intervalo de fechas.

• 2019-09-06T00:00:00Z es la primera fecha y hora para recuperar datos dentro de un intervalode fechas inclusivo.

• 2019-09-08T23:59:59Z es la última fecha y hora para recuperar datos dentro de un intervalo defechas inclusivo.

Después de enviar la consulta, Amazon Pinpoint devuelve los resultados de la consulta en una respuestaJSON. La estructura de los resultados varía en función de la métrica que haya consultado. Algunasmétricas solo devuelven un valor. Otras métricas devuelven varios valores y agrupan estos valores por uncampo relevante. Si una métrica devuelve varios valores, la respuesta JSON incluye un campo que indicaqué campo se utilizó para agrupar los datos.

Por ejemplo, la métrica de aplicación envíos, agrupados por fecha (txn-sms-sent-grouped-by-date), utilizada en los ejemplos anteriores, devuelven varios valores: el número de mensajes SMStransaccionales que se enviaron cada día durante el intervalo de fechas especificado. En este caso, larespuesta JSON es la siguiente:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "EndTime":"2019-09-08T23:59:59Z", "KpiName":"txn-sms-sent-grouped-by-date", "KpiResult":{ "Rows":[ { "GroupedBys":[ { "Key":"Date", "Type":"String", "Value":"2019-09-06" } ], "Values":[ { "Key":"TxnSmsSent", "Type":"Double", "Value":"29.0" } ] }, { "GroupedBys":[ { "Key":"Date", "Type":"String", "Value":"2019-09-07" } ], "Values":[

308

Amazon Pinpoint Guía para desarrolladoresUso de los resultados de las consultas

{ "Key":"TxnSmsSent", "Type":"Double", "Value":"35.0" } ] }, { "GroupedBys":[ { "Key":"Date", "Type":"String", "Value":"2019-09-08" } ], "Values":[ { "Key":"TxnSmsSent", "Type":"Double", "Value":"10.0" } ] } ] }, "StartTime":"2019-09-06T00:00:00Z" }}

En este caso, el campo GroupedBys indica que los valores se agrupan por día natural (Date). Estosignifica que:

• El 6 de septiembre de 2019 se enviaron 29 mensajes.• El 7 de septiembre de 2019 se enviaron 35 mensajes.• El 8 de septiembre de 2019 se enviaron 10 mensajes.

Para obtener más información sobre la estructura de los resultados de la consulta, lea Uso de losresultados de las consultas (p. 309).

Uso de los resultados de la consulta de los análisisde Amazon Pinpoint

Cuando se utilizan las API de análisis de Amazon Pinpoint para consultar datos de análisis, AmazonPinpoint devuelve los resultados en una respuesta JSON. Para las métricas de aplicación, las métricas decampaña y las métricas de interacción del recorrido, los datos de la respuesta siguen un esquema JSONestándar a la hora de generar informes de datos de análisis de Amazon Pinpoint.

Esto significa que puede utilizar el lenguaje de programación o la herramienta de su elección paraimplementar una solución personalizada que consulte los datos de una o más de estas métricas, capturelos resultados de cada consulta y, a continuación, escriba los resultados en una tabla, en un objeto o enotra ubicación. Luego podrá trabajar con los resultados de la consulta en esa ubicación con otro servicio oaplicación.

Por ejemplo, puede hacer lo siguiente:

• Crear un panel personalizado que consulte regularmente un conjunto de métricas y muestre losresultados en el marco de visualización de datos preferido.

309

Amazon Pinpoint Guía para desarrolladoresEstructura JSON

• Crear un informe que realice un seguimiento de las tasas de interacción a partir de las métricasadecuadas y mostrar los resultados en un gráfico u otro tipo de informe que haya diseñado.

• Analizar y escribir datos de análisis en un formato de almacenamiento determinado y, a continuación,trasladar los resultados a una solución de almacenamiento a largo plazo.

Tenga en cuenta que las API de análisis de Amazon Pinpoint no están diseñadas para crear o almacenarobjetos persistentes que pueda leer o utilizar posteriormente en un proyecto de Amazon Pinpoint o en sucuenta de Amazon Pinpoint. Las API están diseñadas para ayudarle a recuperar los datos de análisis ytransferirlos a otros servicios y aplicaciones para su posterior análisis, almacenamiento o generación deinformes. Utilizan en parte la misma estructura de respuesta y esquema JSON para todos los datos deanálisis que se puede consultar mediante programación para métricas de aplicación, métricas de campañay métricas de interacción del recorrido.

En este tema se explica la estructura, los objetos y los campos de una respuesta JSON a una consultapara métricas de aplicación, métricas de campaña y métricas de interacción del recorrido. Para obtenerinformación sobre los campos de una respuesta JSON a una consulta para una métrica de ejecución derecorrido o una métrica de ejecución de actividad de recorrido, consulte Métricas estándar de análisis deAmazon Pinpoint (p. 265).

Estructura JSONPara ayudarle a analizar y utilizar los resultados de la consulta, las API de análisis de Amazon Pinpointutilizan la misma estructura de respuesta JSON para todos los datos de análisis de Amazon Pinpoint quese puede consultar mediante programación para métricas de aplicación, métricas de campaña y métricasde interacción del recorrido. Cada respuesta JSON especifica los valores que definieron la consulta, comoel ID del proyecto (ApplicationId). La respuesta también incluye un (solo) objeto KpiResult. El objetoKpiResult contiene el conjunto de resultados generales de una consulta.

Cada objeto KpiResult contiene un objeto Rows. Se trata de una matriz de objetos que contieneresultados de consulta y los metadatos relevantes sobre los valores de esos resultados. La estructura y elcontenido de un objeto Rows tienen las siguientes características generales:

• Cada fila de resultados de la consulta es un objeto JSON separado, denominado Values, en el objetoRows. Por ejemplo, si una consulta devuelve tres valores, el objeto Rows contiene tres objetos Values.Cada objeto Values contiene un resultado individual para la consulta.

• Cada columna de los resultados de consulta es una propiedad del objeto Values al que se aplica. Elnombre de la columna se almacena en el campo Key del objeto Values.

• Para los resultados de consultas agrupadas, cada objeto Values tiene un objeto GroupedBysasociado. El objeto GroupedBys indica qué campo se utilizó para agrupar los resultados. Tambiénproporciona el valor de agrupación para el objeto Values asociado.

• Si los resultados de la consulta de una métrica son nulos, el objeto Rows estará vacío.

Además de estas características generales, la estructura y el contenido del objeto Rows varía según lamétrica. Esto se debe a que Amazon Pinpoint admite dos tipos de métricas: las métricas de valor único ylas métricas de varios valores.

Una métrica de valor único solo proporciona un valor acumulativo. Un ejemplo es el porcentaje demensajes entregados a los destinatarios por todas las ejecuciones de una campaña. Una métrica de variosvalores proporciona más de un valor y los agrupa por campo relevante. Un ejemplo es el porcentaje demensajes entregados a los destinatarios en cada ejecución de una campaña, agrupados por ejecución decampaña.

Para determinar rápidamente si una métrica es de valor único o de varios valores observe el nombre de lamétrica. Si el nombre no contiene grouped-by, se tratará de una métrica de valor único. Si lo contiene,

310

Amazon Pinpoint Guía para desarrolladoresEstructura JSON

será una métrica de varios valores. Para obtener una lista completa de las métricas que puede consultarmediante programación, visite Métricas estándar de análisis de Amazon Pinpoint (p. 265).

Métricas de valor únicoEn una métrica de valor único, el objeto Rows contiene un objeto Values que:

• Especifica el nombre descriptivo de la métrica que se consultó.• Proporciona el valor de la métrica que se consultó.• Identifica el tipo de datos del valor devuelto.

Por ejemplo, la siguiente respuesta JSON contiene los resultados de la consulta para una métrica de valorúnico. Esta métrica comunica el número de puntos de enlace únicos a los que se entregaron mensajespor todas las campañas asociadas a un proyecto, desde el 1 de agosto de 2019 hasta el 31 de agosto de2019:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "EndTime":"2019-08-31T23:59:59Z", "KpiName":"unique-deliveries", "KpiResult":{ "Rows":[ { "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"1368.0" } ] } ] }, "StartTime":"2019-08-01T00:00:00Z" }}

En este ejemplo, la respuesta indica que todas las campañas del proyecto enviaron mensajes a 1368puntos de enlace únicos desde el 1 de agosto de 2019 hasta el 31 de agosto de 2019, donde:

• Key es el nombre descriptivo de la métrica cuyo valor se especifica en el campo Value(UniqueDeliveries).

• Type es el tipo de datos del valor especificado en el campo Value (Double).• Value es el valor real de la métrica que se consultó, incluidos los filtros que se aplicaron (1368.0).

Si los resultados de la consulta de una métrica de valor único son nulos (ni mayor ni igual a cero), el objetoRows estará vacío. Amazon Pinpoint devuelve un valor nulo para una métrica si no hay datos que devolverpara la métrica. Por ejemplo:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"2345678901234567890123456example", "EndTime":"2019-08-31T23:59:59Z", "KpiName":"unique-deliveries", "KpiResult":{ "Rows":[

311

Amazon Pinpoint Guía para desarrolladoresEstructura JSON

] }, "StartTime":"2019-08-01T00:00:00Z" }}

Métricas de varios valoresLa estructura y el contenido del objeto Rows para una métrica de varios valores suelen ser las mismos quepara una métrica de valor único. El objeto Rows de una métrica de valores múltiples también contiene unobjeto Values. El objeto Values especifica el nombre descriptivo de la métrica consultada, proporciona elvalor de esa métrica e identifica el tipo de datos de ese valor.

Sin embargo, el objeto Rows de una métrica de valores múltiples también contiene uno o más objetosGroupedBy. Hay un objeto GroupedBy para cada objeto Values en los resultados de la consulta. Elobjeto GroupedBy indica qué campo se utilizó para agrupar los datos en los resultados y el tipo de datosde ese campo. También indica el valor de agrupación para ese campo (para el objeto Values asociado).

Por ejemplo, la siguiente respuesta JSON contiene los resultados de la consulta de una métrica de variosvalores que informa sobre el número de puntos de enlace únicos a los que se entregaron mensajes encada campaña asociada a un proyecto desde el 1 de agosto de 2019 hasta el 31 de agosto de 2019:

{ "ApplicationDateRangeKpiResponse":{ "ApplicationId":"1234567890123456789012345example", "EndTime":"2019-08-31T23:59:59Z", "KpiName":"unique-deliveries-grouped-by-campaign", "KpiResult":{ "Rows":[ { "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"80b8efd84042ff8d9c96ce2f8example" } ], "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"123.0" } ] }, { "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"810c7aab86d42fb2b56c8c966example" } ], "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"456.0" } ] },

312

Amazon Pinpoint Guía para desarrolladoresObjetos y campos JSON

{ "GroupedBys":[ { "Key":"CampaignId", "Type":"String", "Value":"42d8c7eb0990a57ba1d5476a3example" } ], "Values":[ { "Key":"UniqueDeliveries", "Type":"Double", "Value":"789.0" } ] } ] }, "StartTime":"2019-08-01T00:00:00Z" }}

En este ejemplo, la respuesta indica que tres de las campañas del proyecto entregaron mensajes a puntosde enlace únicos desde el 1 de agosto de 2019 hasta el 31 de agosto de 2019. Para cada una de estascampañas, el desglose de los recuentos de entregas es el siguiente:

• La campaña 80b8efd84042ff8d9c96ce2f8example entregó mensajes a 123 puntos de enlaceúnicos.

• La campaña 810c7aab86d42fb2b56c8c966example entregó mensajes a 456 puntos de enlaceúnicos.

• La campaña 42d8c7eb0990a57ba1d5476a3example entregó mensajes a 789 puntos de enlaceúnicos.

Donde la estructura general de los objetos y campos es la siguiente:

• GroupedBys.Key: nombre de la propiedad o campo que almacena el valor de agrupación especificadoen el campo GroupedBys.Value (CampaignId).

• GroupedBys.Type: tipo de datos del valor especificado en el campo GroupedBys.Value (String).• GroupedBys.Value: valor real del campo que se utilizó para agrupar los datos, tal como se especifica

en el campo GroupedBys.Key (ID de campaña).• Values.Key: nombre descriptivo de la métrica cuyo valor se especifica en el campo Values.Value

(UniqueDeliveries).• Values.Type: tipo de datos del valor especificado en el campo Values.Value (Double).• Values.Value: valor real de la métrica que se consultó, incluidos los filtros que se aplicaron.

Si los resultados de la consulta de una métrica de varios valores son nulos (ni mayor ni igual a cero) paraun proyecto, campaña u otro recurso específico, Amazon Pinpoint no devuelve ningún objeto ni campopara el recurso. Si los resultados de la consulta de una métrica de varios valores son nulos para todos losrecursos, Amazon Pinpoint devuelve un objeto Rows vacío.

Objetos y campos JSONAdemás de especificar los valores que definieron una consulta, como el ID del proyecto(ApplicationId), cada respuesta JSON a una consulta para métricas de aplicación, métricas decampaña o métricas de interacción del recorrido incluye un objeto KpiResult. Este objeto contiene elconjunto de resultados generales de una consulta, que puede analizar para enviar los datos de análisis

313

Amazon Pinpoint Guía para desarrolladoresObjetos y campos JSON

a otro servicio o aplicación. Cada objeto KpiResult contiene algunos o todos los objetos y camposestándar siguientes, dependiendo de la métrica.

Objeto o campo Descripción

Rows Matriz de objetos que contiene el conjunto deresultados de una consulta.

Rows.GroupedBys En una métrica de varios valores, es una matrizde campos que define el campo y los valoresutilizados para agrupar datos en los resultados dela consulta.

Rows.GroupedBys.Key En una métrica de varios valores, es el nombre dela propiedad o del campo que almacena el valorespecificado en el campo GroupedBys.Value.

Rows.GroupedBys.Type En una métrica de varios valores, es el tipode dato del valor especificado en el campoGroupedBys.Value.

Rows.GroupedBys.Value En una métrica de varios valores, es el valorreal del campo que se utilizó para agrupar datosen los resultados de la consulta. Este valor secorrelaciona con un objeto Values asociado.

Rows.Values Matriz de campos que contiene los resultados de laconsulta.

Rows.Values.Key El nombre descriptivo de la métrica que seconsultó. El valor de la métrica se especifica en elcampo Values.Value.

Rows.Values.Type Tipo de datos del valor especificado en el campoValues.Value.

Rows.Values.Value Valor real de la métrica que se consultó, incluidoslos filtros que se aplicaron.

Para obtener información sobre los campos de una respuesta JSON a una consulta para una métrica deejecución de recorrido o una métrica de ejecución de actividad de recorrido, consulte Métricas estándar deanálisis de Amazon Pinpoint (p. 265).

314

Amazon Pinpoint Guía para desarrolladoresInformación de Amazon Pinpoint en CloudTrail

Registro de llamadas a la APIde Amazon Pinpoint con AWSCloudTrail

Amazon Pinpoint está integrado con AWS CloudTrail, que es un servicio que proporciona un registro de lasacciones realizadas por un usuario, un rol o un servicio de AWS en Amazon Pinpoint. CloudTrail capturalas llamadas a la API de Amazon Pinpoint como eventos. Las llamadas capturadas incluyen las llamadasrealizadas desde la consola de Amazon Pinpoint y las llamadas de código a las operaciones de la API deAmazon Pinpoint.

Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a unbucket de Amazon Simple Storage Service (Amazon S3) incluidos los eventos de Amazon Pinpoint. Sino configura un registro de seguimiento, puede ver los eventos más recientes en el campo Event history(Historial de eventos) de la consola de CloudTrail. Mediante la información que recopila CloudTrail, sepuede determinar la solicitud que se envió a Amazon Pinpoint, la dirección IP desde la que se realizó lasolicitud, quién realizó la solicitud, cuándo la realizó y detalles adicionales.

Para obtener más información sobre CloudTrail, incluido cómo configurarlo y habilitarlo, consulte la AWSCloudTrail User Guide.

Información de Amazon Pinpoint en CloudTrailCloudTrail se habilita en una cuenta de AWS al crearla. Cuando se produce una actividad de eventoscompatible en Amazon Pinpoint, dicha actividad se registra en un evento de CloudTrail junto con loseventos de los demás servicios de AWS en Event history (Historial de eventos). Puede ver, buscar ydescargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte Visualizaciónde eventos con el historial de eventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos deAmazon Pinpoint, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviararchivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro deseguimiento en la consola, el registro de seguimiento se aplica a todas las regiones de AWS. El registrode seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivosde registro al bucket de Amazon S3 especificado. También puede configurar otros servicios de AWSpara analizar y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Paraobtener más información, consulte los siguientes temas:

• Introducción a la creación de registros de seguimiento• Servicios e integraciones compatibles con CloudTrail• Configuración de notificaciones de Amazon SNS para CloudTrail• Recibir archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro de

CloudTrail de varias cuentas

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La informaciónde identidad le ayuda a determinar:

• Si la solicitud se realizó con credenciales de usuario raíz o de AWS Identity and Access Management(IAM).

315

Amazon Pinpoint Guía para desarrolladoresAcciones de las API de Amazon Pinpoint

que pueden registrarse en CloudTrail

• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte Elemento userIdentity de CloudTrail.

Puede crear un registro de seguimiento y almacenar los archivos de registro en su bucket de Amazon S3durante el tiempo que desee. Además, puede definir reglas del ciclo de vida de Amazon S3 para archivaro eliminar archivos de registro automáticamente. De forma predeterminada, los archivos log se cifran concifrado de servidor de Amazon S3 (SSE).

Si desea recibir notificaciones de la entrega de archivos de log, configure CloudTrail para que publique lasnotificaciones de Amazon SNS cuando se envíen nuevos archivos de log. Para obtener más información,consulte Configuring Amazon SNS Notifications for CloudTrail.

También puede añadir archivos de registro de Amazon Pinpoint varias regiones de AWS y varias cuentasde AWS en un solo bucket de Amazon S3. Para obtener más información, consulte Recibir archivos deregistro de CloudTrail de varias regiones y Recepción de archivos de registro de CloudTrail de variascuentas.

Puede utilizar CloudTrail para registrar las acciones de las siguientes API de Amazon Pinpoint:

• API de Amazon Pinpoint (p. 316)• API de correo electrónico de Amazon Pinpoint (p. 318)• API de SMS y voz de Amazon Pinpoint (p. 319)

Acciones de las API de Amazon Pinpoint quepueden registrarse en CloudTrail

La API de Amazon Pinpoint admite el registro de las siguientes acciones como eventos en los archivos deregistro de CloudTrail:

• CreateApp• CreateCampaign• CreateEmailTemplate• CreateImportJob• CreateJourney• CreatePushTemplate• CreateRecommenderConfiguration• CreateSegment• CreateSmsTemplate• CreateVoiceTemplate• DeleteAdmChannel• DeleteApnsChannel• DeleteApnsSandboxChannel• DeleteApnsVoipChannel• DeleteApnsVoipSandboxChannel• DeleteApp• DeleteBaiduChannel• DeleteCampaign• DeleteEmailChannel

316

Amazon Pinpoint Guía para desarrolladoresAcciones de las API de Amazon Pinpoint

que pueden registrarse en CloudTrail

• DeleteEmailTemplate• DeleteEventStream• DeleteGcmChannel• DeleteJourney• DeletePushTemplate• DeleteRecommenderConfiguration• DeleteSegment• DeleteSmsChannel• DeleteSmsTemplate• DeleteVoiceTemplate• GetAdmChannel• GetApnsChannel• GetApnsSandboxChannel• GetApnsVoipChannel• GetApnsVoipSandboxChannel• GetApp• GetApplicationDateRangeKpi• GetApplicationSettings• GetApps• GetBaiduChannel• GetCampaign• GetCampaignActivities• GetCampaignDateRangeKpi• GetCampaignVersion• GetCampaignVersions• GetCampaigns• GetEmailChannel• GetEmailTemplate• GetEventStream• GetGcmChannel• GetImportJob• GetImportJobs• GetJourney• GetJourneyDateRangeKpi• GetJourneyExecutionActivityMetrics• GetJourneyExecutionMetrics• GetPushTemplate• GetRecommenderConfiguration• GetRecommenderConfigurations• GetSegment• GetSegmentImportJobs• GetSegmentVersion• GetSegmentVersions• GetSegments• GetSmsChannel• GetSmsTemplate

317

Amazon Pinpoint Guía para desarrolladoresAcciones de la API de correo electrónico de Amazon

Pinpoint que pueden registrarse en CloudTrail

• GetVoiceTemplate• ListJourneys• ListTagsForResource• ListTemplates• ListTemplateVersions• PutEventStream• TagResource• UntagResource• UpdateAdmChannel• UpdateApnsChannel• UpdateApnsSandboxChannel• UpdateApnsVoipChannel• UpdateApnsVoipSandboxChannel• UpdateApplicationSettings• UpdateBaiduChannel• UpdateCampaign• UpdateEmailChannel• UpdateEmailTemplate• UpdateGcmChannel• UpdateJourney• UpdateJourneyState• UpdatePushTemplate• UpdateRecommenderConfiguration• UpdateSegment• UpdateSmsChannel• UpdateSmsTemplate• UpdateTemplateActiveVersion• UpdateVoiceTemplate

Las siguientes acciones de la API de Amazon Pinpoint no se registran en CloudTrail:

• GetEndpoint• PutEvents• SendMessages• SendUsersMessages• UpdateEndpoint• UpdateEndpointsBatch

Acciones de la API de correo electrónico deAmazon Pinpoint que pueden registrarse enCloudTrail

La API de correo electrónico de Amazon Pinpoint admite el registro de las siguientes acciones comoeventos en los archivos de registro de CloudTrail:

318

Amazon Pinpoint Guía para desarrolladoresAcciones de la API de SMS y voz de AmazonPinpoint que pueden registrarse en CloudTrail

• CreateConfigurationSet• CreateConfigurationSetEventDestination• CreateDedicatedIpPool• CreateEmailIdentity• DeleteConfigurationSet• DeleteConfigurationSetEventDestination• DeleteDedicatedIpPool• DeleteEmailIdentity• GetAccount• GetConfigurationSet• GetConfigurationSetEventDestinations• GetDedicatedIp• GetDedicatedIps• GetEmailIdentity• ListConfigurationSets• ListDedicatedIpPools• ListEmailIdentities• PutAccountDedicatedIpWarmupAttributes• PutAccountSendingAttributes• PutConfigurationSetDeliveryOptions• PutConfigurationSetReputationOptions• PutConfigurationSetSendingOptions• PutConfigurationSetTrackingOptions• PutDedicatedIpInPool• PutDedicatedIpWarmupAttributes• PutEmailIdentityDkimAttributes• PutEmailIdentityFeedbackAttributes• PutEmailIdentityMailFromAttributes• UpdateConfigurationSetEventDestination

Las siguientes acciones de la API de correo electrónico de Amazon Pinpoint no se registran en CloudTrail:

• SendEmail

Acciones de la API de SMS y voz de AmazonPinpoint que pueden registrarse en CloudTrail

La API de SMS y voz de Amazon Pinpoint admite el registro de las siguientes acciones como eventos enlos archivos de registro de CloudTrail:

• CreateConfigurationSet• CreateConfigurationSetEventDestination• DeleteConfigurationSet• DeleteConfigurationSetEventDestination• GetConfigurationSetEventDestinations

319

Amazon Pinpoint Guía para desarrolladoresEjemplos: entradas de archivosde registro de Amazon Pinpoint

• UpdateConfigurationSetEventDestination

Las siguientes acciones de la API de SMS y voz de Amazon Pinpoint no se registran en CloudTrail:

• SendVoiceMessage

Ejemplos: entradas de archivos de registro deAmazon Pinpoint

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos deregistro al bucket de Amazon S3 que se especifique. Los archivos de registro de CloudTrail contienen unao varias entradas de registro. Un evento representa una única solicitud desde cualquier origen. Incluyeinformación sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud,etcétera. Los archivos de registro de CloudTrail no son un rastro de la pila ordenada de las llamadas a laAPI públicas, por lo que no aparecen en ningún orden específico.

En el ejemplo siguiente, se muestra una entrada de registro de CloudTrail que ilustra las accionesGetCampaigns y CreateCampaign de la API de Amazon Pinpoint.

{ "Records": [ { "awsRegion": "us-east-1", "eventID": "example0-09a3-47d6-a810-c5f9fd2534fe", "eventName": "GetCampaigns", "eventSource": "pinpoint.amazonaws.com", "eventTime": "2018-02-03T00:56:48Z", "eventType": "AwsApiCall", "eventVersion": "1.05", "readOnly": true, "recipientAccountId": "123456789012", "requestID": "example1-b9bb-50fa-abdb-80f274981d60", "requestParameters": { "application-id": "example71dfa4c1aab66332a5839798f", "page-size": "1000" }, "responseElements": null, "sourceIPAddress": "192.0.2.0", "userAgent": "Jersey/${project.version} (HttpUrlConnection 1.8.0_144)", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "accountId": "123456789012", "arn": "arn:aws:iam::123456789012:root", "principalId": "123456789012", "sessionContext": { "attributes": { "creationDate": "2018-02-02T16:55:29Z", "mfaAuthenticated": "false" } }, "type": "Root" } }, { "awsRegion": "us-east-1", "eventID": "example0-09a3-47d6-a810-c5f9fd2534fe", "eventName": "CreateCampaign", "eventSource": "pinpoint.amazonaws.com", "eventTime": "2018-02-03T01:05:16Z",

320

Amazon Pinpoint Guía para desarrolladoresEjemplos: entradas de archivosde registro de Amazon Pinpoint

"eventType": "AwsApiCall", "eventVersion": "1.05", "readOnly": false, "recipientAccountId": "123456789012", "requestID": "example1-b9bb-50fa-abdb-80f274981d60", "requestParameters": { "Description": "***", "HoldoutPercent": 0, "IsPaused": false, "MessageConfiguration": "***", "Name": "***", "Schedule": { "Frequency": "ONCE", "IsLocalTime": true, "StartTime": "2018-02-03T00:00:00-08:00", "Timezone": "utc-08" }, "SegmentId": "exampleda204adf991a80281aa0e591", "SegmentVersion": 1, "application-id": "example71dfa4c1aab66332a5839798f" }, "responseElements": { "ApplicationId": "example71dfa4c1aab66332a5839798f", "CreationDate": "2018-02-03T01:05:16.425Z", "Description": "***", "HoldoutPercent": 0, "Id": "example54a654f80948680cbba240ede", "IsPaused": false, "LastModifiedDate": "2018-02-03T01:05:16.425Z", "MessageConfiguration": "***", "Name": "***", "Schedule": { "Frequency": "ONCE", "IsLocalTime": true, "StartTime": "2018-02-03T00:00:00-08:00", "Timezone": "utc-08" }, "SegmentId": "example4da204adf991a80281example", "SegmentVersion": 1, "State": { "CampaignStatus": "SCHEDULED" }, "Version": 1 }, "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.9 Python/3.4.3 Linux/3.4.0+ botocore/1.8.34", "userIdentity": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "accountId": "123456789012", "arn": "arn:aws:iam::123456789012:user/userName", "principalId": "AIDAIHTHRCDA62EXAMPLE", "type": "IAMUser", "userName": "userName" } } ]}

En el ejemplo siguiente, se muestra una entrada de registro de CloudTrail que ilustra las accionesCreateConfigurationSet y CreateConfigurationSetEventDestination de la API de SMS yvoz de Amazon Pinpoint.

{ "Records": [

321

Amazon Pinpoint Guía para desarrolladoresEjemplos: entradas de archivosde registro de Amazon Pinpoint

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"AIDAIHTHRCDA62EXAMPLE", "arn":"arn:aws:iam::111122223333:user/SampleUser", "accountId":"111122223333", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"SampleUser" }, "eventTime":"2018-11-06T21:45:55Z", "eventSource":"sms-voice.amazonaws.com", "eventName":"CreateConfigurationSet", "awsRegion":"us-east-1", "sourceIPAddress":"192.0.0.1", "userAgent":"PostmanRuntime/7.3.0", "requestParameters":{ "ConfigurationSetName":"MyConfigurationSet" }, "responseElements":null, "requestID":"56dcc091-e20d-11e8-87d2-9994aexample", "eventID":"725843fc-8846-41f4-871a-7c52dexample", "readOnly":false, "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }, { "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"AIDAIHTHRCDA62EXAMPLE", "arn":"arn:aws:iam::111122223333:user/SampleUser", "accountId":"111122223333", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"SampleUser" }, "eventTime":"2018-11-06T21:47:08Z", "eventSource":"sms-voice.amazonaws.com", "eventName":"CreateConfigurationSetEventDestination", "awsRegion":"us-east-1", "sourceIPAddress":"192.0.0.1", "userAgent":"PostmanRuntime/7.3.0", "requestParameters":{ "EventDestinationName":"CloudWatchEventDestination", "ConfigurationSetName":"MyConfigurationSet", "EventDestination":{ "Enabled":true, "MatchingEventTypes":[ "INITIATED_CALL", "INITIATED_CALL" ], "CloudWatchLogsDestination":{ "IamRoleArn":"arn:aws:iam::111122223333:role/iamrole-01", "LogGroupArn":"arn:aws:logs:us-east-1:111122223333:log-group:clientloggroup-01" } } }, "responseElements":null, "requestID":"81de1e73-e20d-11e8-b158-d5536example", "eventID":"fcafc21f-7c93-4a3f-9e72-fca2dexample", "readOnly":false, "eventType":"AwsApiCall", "recipientAccountId":"111122223333" } ]

322

Amazon Pinpoint Guía para desarrolladoresEjemplos: entradas de archivosde registro de Amazon Pinpoint

}

323

Amazon Pinpoint Guía para desarrolladoresAdministración de etiquetas

Etiquetado de recursos de AmazonPinpoint

Una etiqueta es una etiqueta que puede definir y asociar opcionalmente a recursos de AWS, incluidosdeterminados tipos de recursos de Amazon Pinpoint. Las etiquetas pueden ayudarle a clasificar yadministrar recursos de distintas formas, como, por finalidad, propietario, entorno u otros criterios. Porejemplo, puede usar etiquetas para aplicar políticas o automatización, o bien para identificar recursos queestán sujetos a determinados requisitos de conformidad. Puede añadir etiquetas a los siguientes tipos derecursos de Amazon Pinpoint:

• Campañas• Plantillas de mensaje• Proyectos (aplicaciones)• Segmentos

Un recurso puede tener hasta 50 etiquetas.

Administración de etiquetasCada etiqueta está formada por una clave de etiqueta y un valor de etiqueta opcional, ambos definidospor el usuario. Un clave de etiqueta es una etiqueta general que actúa como una categoría para valoresde etiqueta más específicos. Un valor de etiqueta actúa como descriptor de una clave de etiqueta. Porejemplo, si tiene dos versiones de un proyecto de Amazon Pinpoint (una para pruebas internas y otrapara uso externo), podría asignar una clave de etiqueta Stack a ambos proyectos. El valor de la clave deetiqueta Stack puede ser Test para una versión del proyecto y Production para la otra versión.

Una clave de etiqueta incluye hasta 128 caracteres. Un valor de etiqueta puede incluir hasta 256caracteres. Los caracteres pueden ser letras Unicode, dígitos, espacios en blanco o uno de los siguientessímbolos: _ . : / = + -. Las siguientes restricciones adicionales se aplican a las etiquetas:

• Las claves y los valores de las etiquetas distinguen entre mayúsculas y minúsculas.• Para cada recurso asociado, cada clave de etiqueta debe ser única y solo puede tener un valor.• El prefijo aws: está reservado para su uso por AWS; no puede usarlo en las claves o valores de etiqueta

que defina. Además, las claves o valores de etiqueta que utilizan este prefijo no se pueden editar niquitar. Las etiquetas que usan este prefijo no cuentan para la cuota de 50 etiquetas por recurso.

• No puede actualizar ni eliminar un recurso en función únicamente de sus etiquetas. También debeespecificar el ID de recurso o nombre de recurso de Amazon (ARN), dependiendo de la operación queuse.

• Puede asociar etiquetas a recursos públicos o compartidos. Sin embargo, las etiquetas solo estándisponibles para la cuenta de AWS, no para ninguna otra cuenta que comparta el recurso. Además, lasetiquetas solo están disponibles para los recursos ubicados en la región de AWS especificada para sucuenta de AWS.

Para agregar, mostrar, actualizar y quitar claves de etiqueta y valores de los recursos de Amazon Pinpoint,puede usar la AWS Command Line Interface (AWS CLI), la API de Amazon Pinpoint, la API de etiquetadode Grupos de recursos de AWS o un SDK de AWS. Para administrar claves de etiqueta y valores en todos

324

Amazon Pinpoint Guía para desarrolladoresUso de etiquetas en directivas de IAM

los recursos de AWS ubicados en una región de AWS específica para la cuenta de AWS (incluidos losrecursos de Amazon Pinpoint), utilice la API de etiquetado de Grupos de recursos de AWS.

Uso de etiquetas en directivas de IAMDespués de empezar a implementar etiquetas, puede aplicar permisos de nivel de recursos basados enetiquetas a las políticas de AWS Identity and Access Management (IAM) y las operaciones de API. Estoincluye operaciones que admiten agregar etiquetas a los recursos cuando se crean recursos. Al utilizar lasetiquetas de esta manera, puede implementar un control detallado de los grupos y usuarios de su cuentade AWS que tienen permiso para crear y etiquetar recursos, y los grupos y usuarios que tienen permisopara crear, actualizar y quitar etiquetas de forma más general.

Por ejemplo, puede crear una política que permita a un usuario tener acceso completo a todos los recursosde Amazon Pinpoint en los que su nombre sea un valor en la etiqueta Owner del recurso:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ModifyResourceIfOwner", "Effect": "Allow", "Action": "mobiletargeting:*", "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/Owner": "${aws:username}" } } } ]}

Si define los permisos de nivel de recurso basados en etiquetas, estos entrarán en vigor inmediatamente.Esto significa que sus recursos están más seguros en cuanto se crean y que puede empezar a aplicarel uso de etiquetas de nuevos recursos rápidamente. También puede usar permisos de nivel de recursopara controlar las claves y valores de etiqueta que se pueden asociar a recursos nuevos y existentes. Paraobtener más información, consulte Control del acceso mediante etiquetas en la AWS Guía del usuario deIAM.

Adición de etiquetas a los recursosEn los ejemplos siguientes se muestra cómo agregar una etiqueta a un recurso de Amazon Pinpointmediante la AWS CLI y la API REST de Amazon Pinpoint. Los ejemplos de AWS CLI tienen el formatode Microsoft Windows. Para Unix, Linux y macOS, reemplace el carácter de continuación de línea deintercalación (^) por una barra invertida (\). También puede usar cualquier AWS SDK compatible paraagregar una etiqueta a un recurso.

Para añadir una etiqueta a varios recursos de Amazon Pinpoint en una sola operación, use lasoperaciones de etiquetado de grupos de recursos de la AWS CLI o la API de etiquetado de Grupos derecursos de AWS.

AWS CLI

Para crear un recurso nuevo y agregarle una etiqueta con la AWS CLI, utilice el comando createapropiado para el recurso. Incluya el parámetro tags y los valores. Por ejemplo, el siguiente comando

325

Amazon Pinpoint Guía para desarrolladoresAdición de etiquetas a los recursos

crea un nuevo proyecto llamado ExampleCorp y añade una clave de etiqueta Stack con un valor deetiqueta Test al proyecto:

C:\> aws pinpoint create-app ^ --create-application-request ^ --Name=ExampleCorp ^ --tags={Stack=Test}

Para obtener información acerca de los comandos que puede usar para crear un recurso de AmazonPinpoint, consulte la Referencia de comandos de la AWS CLI.

Para agregar una etiqueta a un recurso existente, utilice el comando tag-resource y especifique losvalores adecuados para los parámetros requeridos:

C:\> aws pinpoint tag-resource ^ --resource-arn resource-arn ^ --tags-model tags={key=value}

Donde:

• resource-arn es el nombre de recurso de Amazon (ARN) del recurso al que desea añadir unaetiqueta.

• key es la clave de etiqueta que desea añadir al recurso. El argumento key es obligatorio.• value es el valor de etiqueta opcional que desea añadir para la clave de etiqueta especificada

(key). El argumento value es obligatorio. Si no desea que el recurso tenga un valor de etiquetaconcreto, no especifique un valor para el argumento value. Amazon Pinpoint establecerá el valorcomo cadena vacía.

REST API

Para crear un recurso nuevo y agregarle una etiqueta mediante la API REST de Amazon Pinpoint,envíe una solicitud POST al URI de recurso apropiado. En el cuerpo de la solicitud, incluya elparámetro tags y los valores. Por ejemplo, la siguiente solicitud crea un nuevo proyecto llamadoExampleCorp y añade una clave de etiqueta Stack con un valor de etiqueta Test al proyecto:

POST /v1/apps HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/x-www-form-urlencodedAccept: application/jsonCache-Control: no-cache

{ "Name":"ExampleCorp", "tags":{ "Stack":"Test" }}

Para agregar una etiqueta a un recurso existente, envíe una solicitud POST al URI de Etiquetas.Incluya el nombre de recurso de Amazon (ARN) del recurso en el URI. El ARN debe estar codificadoen la URL. En el cuerpo de la solicitud, incluye el parámetro tags y los valores. Por ejemplo, lasiguiente solicitud añade una clave de etiqueta Stack con un valor de etiqueta Test al proyectoespecificado (resource-arn):

POST /v1/tags/resource-arn HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/json

326

Amazon Pinpoint Guía para desarrolladoresVisualización de etiquetas para recursos

Accept: application/jsonCache-Control: no-cache

{ "tags":{ "Stack":"Test" }}

Alternativamente, puede enviar una solicitud PUT al URI de recurso apropiado e incluir el parámetrotags y los valores en el cuerpo de la solicitud. Por ejemplo, la siguiente solicitud añade una clave deetiqueta Stack con un valor de etiqueta Test a la campaña especificada:

PUT /v1/apps/application-id/campaigns/campaign-id HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/x-www-form-urlencodedAccept: application/jsonCache-Control: no-cache

{ "tags":{ "Stack":"Test" }}

Donde:

• application-id es el ID del proyecto que contiene la campaña.• campaign-id es el ID de la campaña.

Tenga en cuenta que la API de Amazon Pinpoint actualmente no admite solicitudes PUT paraproyectos. Por lo tanto, debe utilizar el recurso Tags para agregar una etiqueta a un proyectoexistente.

Visualización de etiquetas para recursosLos ejemplos siguientes muestran cómo utilizar la AWS CLI y la API REST de Amazon Pinpoint paramostrar una lista de todas las etiquetas (claves y valores) asociadas a un recurso de Amazon Pinpoint. Losejemplos de AWS CLI tienen el formato de Microsoft Windows. Para Unix, Linux y macOS, reemplace elcarácter de continuación de línea de intercalación (^) por una barra invertida (\). También puede utilizarcualquier AWS SDK compatible para mostrar todas las etiquetas asociadas a un recurso.

AWS CLI

Para utilizar la AWS CLI para mostrar una lista de las etiquetas asociadas a un recurso específico,ejecute el comando list-tags-for-resource y especifique el nombre de recurso de Amazon(ARN) del recurso para el parámetro resource-arn:

C:\> aws pinpoint list-tags-for-resource ^ --resource-arn resource-arn

Para mostrar una lista de todos los recursos de Amazon Pinpoint que tienen etiquetas y todas lasetiquetas asociadas a cada uno de esos recursos, use el comando get-resources de la API deetiquetado de Grupos de recursos de AWS. Defina el parámetro resource-type-filters comomobiletargeting. Por ejemplo:

327

Amazon Pinpoint Guía para desarrolladoresActualización de etiquetas para recursos

C:\> aws resourcegroupstaggingapi get-resources ^ --resource-type-filters "mobiletargeting"

La salida del comando es una lista de ARN de todos los recursos de Amazon Pinpoint que tienenetiquetas. En la lista se incluyen todas las claves y valores de etiqueta asociados a cada recurso.

REST API

Para utilizar la API REST de Amazon Pinpoint para mostrar todas las etiquetas que están asociadas aun recurso específico, envíe una solicitud GET al URI Tags e incluya el nombre de recurso de Amazon(ARN) del recurso en el URI. El ARN debe estar codificado en la URL. Por ejemplo, la siguientesolicitud recupera todas las etiquetas asociadas a una campaña especificada (resource-arn):

GET /v1/tags/resource-arn HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonCache-Control: no-cache

La respuesta JSON a la solicitud incluye un objeto tags. El objeto tags enumera todas las claves deetiqueta y los valores asociados a la campaña.

Para mostrar todas las etiquetas asociadas a más de un recurso del mismo tipo, envíe una solicitudGET al URI adecuado para dicho tipo de recurso. Por ejemplo, la siguiente solicitud recopilainformación acerca de todas las campañas en el proyecto especificado (application-id):

GET /v1/apps/application-id/campaigns HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonCache-Control: no-cache

La respuesta JSON a la solicitud muestra todas las campañas del proyecto. El objeto tags de cadacampaña muestra todas las claves y valores de etiqueta asociados a la campaña.

Actualización de etiquetas para recursosExisten varias formas de actualizar (sobrescribir) una etiqueta para un recurso de Amazon Pinpoint. Lamejor manera de actualizar una etiqueta depende de:

• El tipo de recurso para el que desea actualizar etiquetas.• Si desea actualizar una etiqueta para uno o varios recursos al mismo tiempo.• Si desea actualizar una clave de etiqueta, un valor de etiqueta, o ambos.

Para actualizar una etiqueta para un proyecto de Amazon Pinpoint o para varios recursos al mismo tiempo,utilice las operaciones de etiquetado de grupos de recursos de la AWS CLI o la API de etiquetado deGrupos de recursos de AWS. En la actualidad la API de Amazon Pinpoint no admite directamente ningunade esas tareas.

Para actualizar una clave de etiqueta para un recurso, puede quitar la etiqueta actual (p. 330) y añadiruna nueva etiqueta (p. 325) mediante la API de Amazon Pinpoint.

Para actualizar un valor de etiqueta (de una clave de etiqueta) para un solo recurso, puede usar la APIde Amazon Pinpoint. Los siguientes ejemplos muestran cómo hacer esto utilizando la AWS CLI y la API

328

Amazon Pinpoint Guía para desarrolladoresActualización de etiquetas para recursos

REST de Amazon Pinpoint. Los ejemplos de AWS CLI tienen el formato de Microsoft Windows. Para Unix,Linux y macOS, reemplace el carácter de continuación de línea de intercalación (^) por una barra invertida(\). También puede utilizar cualquier AWS SDK compatible para actualizar un valor de etiqueta para unrecurso.

AWS CLI

Puede utilizar la AWS CLI para actualizar un valor de etiqueta para un recurso.

Para especificarlo con un ID de recurso, utilice el comando update apropiado para el tipo derecurso. Incluya el parámetro tags y los argumentos. Por ejemplo, el siguiente comando cambia elvalor de etiqueta de Test a Production para la clave de etiqueta Stack asociada a la campañaespecificada:

C:\> aws pinpoint update-campaign ^ --application-id application-id ^ --campaign-id campaign-id ^ --write-campaign-request tags={Stack=Production}

Donde:

• application-id es el ID del proyecto que contiene la campaña.• campaign-id es el ID de la campaña cuyas etiquetas desea actualizar.

Para obtener información acerca de los comandos que puede usar para actualizar un recurso deAmazon Pinpoint, consulte la Referencia de comandos de la AWS CLI.

Para actualizar un valor de etiqueta especificando un nombre de recurso de Amazon (ARN), ejecute elcomando tag-resource e incluya el parámetro tags-model y los argumentos:

C:\> aws pinpoint tag-resource ^ --resource-arn resource-arn ^ --tags-model tags={key=value}

Donde:

• resource-arn es el ARN del recurso cuyas etiquetas desea actualizar. Para obtener una lista deARN de recursos de Amazon Pinpoint, puede mostrar una lista de los recursos de Amazon Pinpointque tienen etiquetas (p. 327).

• key es la clave de etiqueta. El argumento key es obligatorio.• value es el nuevo valor de etiqueta que se utilizará para la clave de etiqueta especificada (key). El

argumento value es obligatorio. Para quitar el valor de etiqueta, no especifique un valor para esteargumento. Amazon Pinpoint establecerá el valor en una cadena vacía.

REST API

Puede utilizar la API REST de Amazon Pinpoint para actualizar un valor de etiqueta para un recurso.Para ello, envíe una solicitud PUT al URI apropiado para el tipo de recurso cuya etiqueta deseaactualizar. En el cuerpo de la solicitud, incluye el parámetro tags y los valores. Para el parámetrotags, especifique la clave de etiqueta correspondiente para la propiedad tag. Para la propiedadvalue, realice una de las siguientes acciones:

• Para usar un nuevo valor, especifíquelo.• Para quitar el valor, no especifique un valor. Amazon Pinpoint establecerá el valor como cadena

vacía.

329

Amazon Pinpoint Guía para desarrolladoresEliminación de etiquetas de recursos

Por ejemplo, la siguiente solicitud cambia el valor de etiqueta de Test a Production para la clave deetiqueta Stack asociada a la campaña especificada:

PUT /v1/apps/application-id/campaigns/campaign-id HTTP/1.1Host: pinpoint.us-east-1.amazonaws.comContent-Type: application/jsonAccept: application/jsonCache-Control: no-cache

{ "tags": { "Stack": "Production" }}

Donde:

• application-id es el ID del proyecto que contiene la campaña.• campaign-id es el ID de la campaña cuyas etiquetas desea actualizar.

Eliminación de etiquetas de recursosLos siguientes ejemplos muestran cómo quitar una etiqueta (tanto la clave como el valor) de un recursode Amazon Pinpoint mediante la AWS CLI y la API REST de Amazon Pinpoint. Los ejemplos de AWSCLI tienen el formato de Microsoft Windows. Para Unix, Linux y macOS, reemplace el carácter decontinuación de línea de intercalación (^) por una barra invertida (\). También puede usar cualquier AWSSDK compatible para quitar una etiqueta de un recurso.

Para quitar una etiqueta de varios recursos de Amazon Pinpoint en una sola operación, use lasoperaciones de etiquetado de grupos de recursos de la AWS CLI o la API de etiquetado de Gruposde recursos de AWS. Para quitar solo un valor de etiqueta específico (no una clave de etiqueta) de unrecurso, puede actualizar la etiqueta para el recurso (p. 328).

AWS CLI

Para quitar una etiqueta de un recurso con la AWS CLI, ejecute el comando untag-resource.Incluya el parámetro tag-keys y el argumento:

C:\> aws pinpoint untag-resource ^ --resource-arn resource-arn ^ --tag-keys key

Donde:

• resource-arn es el nombre de recurso de Amazon (ARN) del recurso del que desea quitar unaetiqueta. Para obtener una lista de ARN de recursos de Amazon Pinpoint, puede mostrar una listade todos los recursos de Amazon Pinpoint que tienen etiquetas (p. 327).

• key es la etiqueta que desea quitar del recurso. El argumento key es obligatorio.

Para eliminar varias etiquetas de un recurso, agregue cada clave adicional como argumento para elparámetro tag-keys:

C:\> aws pinpoint untag-resource ^ --resource-arn resource-arn ^ --tag-keys key1 key2

330

Amazon Pinpoint Guía para desarrolladoresInformación relacionada

Donde:

• resource-arn es el ARN del recurso del que desea quitar etiquetas.• key# es cada una de las etiquetas que desea quitar del recurso.

REST API

Para quitar una etiqueta de un recurso mediante la API REST de Amazon Pinpoint, envíe una solicitudDELETE al URI Tags . En el URI, incluya el nombre de recurso de Amazon (ARN) del recurso delque desea quitar una etiqueta, seguida del parámetro tagKeys y la etiqueta que se va a quitar. Porejemplo:

https://endpoint/v1/tags/resource-arn?tagKeys=key

Donde:

• endpoint es el punto de enlace de Amazon Pinpoint para la región de AWS que aloja el recurso.• resource-arn es el ARN del recurso del que desea quitar una etiqueta.• key es la etiqueta que desea quitar del recurso.

Todos los parámetros deben tener codificación URL.

Para quitar varias claves de etiquetas y sus valores asociados de un recurso, añada el parámetrotagKeys y el argumento para cada una de las etiquetas adicionales que se van a quitar, separadaspor un signo ampersand (&). Por ejemplo:

https://endpoint/v1/tags/resource-arn?tagKeys=key1&tagKeys=key2

Todos los parámetros deben tener codificación URL.

Información relacionadaPara obtener más información acerca de los comandos de la CLI que puede usar para administrar recursosde Amazon Pinpoint, consulte la sección de Amazon Pinpoint de la Referencia de comandos de la AWSCLI.

Para obtener más información acerca de los recursos de la API de Amazon Pinpoint, incluidos losesquemas, parámetros y métodos HTTP(S) admitidos, consulte la Amazon Pinpoint API Reference.

331

Amazon Pinpoint Guía para desarrolladoresUso de recomendaciones en mensajes

Personalización de recomendacionescon AWS Lambda

En Amazon Pinpoint, puede recuperar recomendaciones personalizadas de un modelo de recomendacióny agregarlas a los mensajes que envíe desde campañas y recorridos. Un modelo de recomendación es untipo de modelo de aprendizaje automático (ML) que encuentra patrones en los datos y genera prediccionesy recomendaciones basadas en los patrones que encuentra. Predice lo que un usuario en particularpreferirá de un determinado conjunto de productos o elementos, y proporciona esa información como unconjunto de recomendaciones para el usuario.

Mediante el uso de modelos de recomendación con Amazon Pinpoint, puede enviar recomendacionespersonalizadas a los destinatarios de mensajes en función de los atributos y el comportamiento de cadadestinatario. Con AWS Lambda, también puede personalizar y mejorar estas recomendaciones. Porejemplo, puede transformar dinámicamente una recomendación de un solo valor de texto (como unnombre de producto o un ID) a contenido más sofisticado (como un nombre de producto, una descripción yuna imagen). Y puede hacerlo en tiempo real, cuando Amazon Pinpoint envía el mensaje.

Esta característica está disponible en las siguientes regiones de AWS: US East (N. Virginia); EE.UU. Oeste(Oregón); Asia Pacífico (Mumbai); Asia Pacífico (Sídney) y Europa (Irlanda).

Temas• Uso de recomendaciones en mensajes (p. 332)• Creación de la función de Lambda (p. 334)• Asignación de una política de función de Lambda (p. 339)• Autorización de Amazon Pinpoint para invocar la función (p. 340)• Configuración del modelo de recomendación (p. 341)

Uso de recomendaciones en mensajesPara utilizar un modelo de recomendación con Amazon Pinpoint, comienza creando una soluciónde Amazon Personalize e implementando esa solución como campaña de Amazon Personalize. Acontinuación, crea una configuración para el modelo de recomendación en Amazon Pinpoint. En laconfiguración, especifique la configuración que determina cómo recuperar y procesar los datos derecomendación de la campaña de Amazon Personalize. Esto incluye si se debe invocar una función deAWS Lambda para realizar un procesamiento adicional de los datos que se recuperan.

Amazon Personalize es un servicio de AWS diseñado para ayudarle a crear modelos de ML queproporcionan recomendaciones personalizadas en tiempo real para los clientes que utilizan susaplicaciones. Amazon Personalize le guía a través del proceso de creación y entrenamiento de unmodelo de ML y, a continuación, de preparación e implementación el modelo como campaña de AmazonPersonalize. A continuación, puede recuperar recomendaciones personalizadas en tiempo real de lacampaña. Para obtener más información sobre Amazon Personalize, consulte la Amazon PersonalizeDeveloper Guide.

AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrarservidores. El código se empaqueta y se carga en AWS Lambda como una función de Lambda. AWSLambda ejecuta a continuación la función cuando esta se invoca. Una función se puede invocarmanualmente, automáticamente en respuesta a eventos o en respuesta a solicitudes de aplicacioneso servicios, incluyendo Amazon Pinpoint. Para obtener información sobre la creación e invocación defunciones de Lambda, consulte la AWS Lambda Developer Guide.

332

Amazon Pinpoint Guía para desarrolladoresUso de recomendaciones en mensajes

Después de crear una configuración de Amazon Pinpoint para un modelo de recomendación, puedeagregar recomendaciones del modelo a los mensajes que envíe desde campañas y recorridos. Para ello,utilice plantillas de mensaje que contienen variables de mensaje para los atributos recomendados. Unatributo recomendado es un punto de enlace dinámico o atributo de usuario diseñado para almacenardatos de recomendación. Estos atributos se definen al crear la configuración para un modelo derecomendación.

Puede utilizar variables para los atributos recomendados en los siguientes tipos de plantillas de mensaje:

• Plantillas de correo electrónico, para los mensajes de correo electrónico que envía desde campañas orecorridos.

• Plantillas de notificaciones push, para notificaciones push que envía desde campañas.• Plantillas de SMS, para mensajes de texto SMS que envía desde campañas.

Para obtener más información acerca del uso de modelos de recomendación con Amazon Pinpoint,consulte Modelos de aprendizaje automático en la Guía del usuario de Amazon Pinpoint.

Si configura Amazon Pinpoint para invocar una función de Lambda que procesa datos de recomendación,Amazon Pinpoint realiza las siguientes tareas generales cada vez que envía recomendacionespersonalizadas en un mensaje para una campaña o recorrido:

1. Evalúa y procesa la configuración y el contenido del mensaje de la plantilla de mensaje.2. Determina que la plantilla de mensaje está conectada a un modelo de recomendación.3. Evalúa los parámetros de configuración para conectarse al modelo y utilizarlo. Estos se definen

mediante el recurso Modelo de recomendación para el modelo.4. Detecta una o más variables de mensaje para los atributos recomendados definidos por los parámetros

de configuración del modelo.5. Recupera los datos de recomendación de la campaña de Amazon Personalize que se especifican en la

configuración del modelo. Utiliza la operación GetRecommendations de la API en tiempo de ejecuciónde Amazon Personalize para realizar esta tarea.

6. Agrega los datos de recomendación adecuados a un atributo dinámico recomendado(RecommendationItems) para cada destinatario del mensaje.

7. Invoca su función de Lambda y envía los datos de recomendación de cada destinatario a esa funciónpara su procesamiento.

Los datos se envían como un objeto JSON que contiene la definición de punto de enlace para cadadestinatario. Cada definición de punto de enlace incluye un campo RecommendationItems quecontiene una matriz ordenada de 1–5 valores. El número de valores de la matriz depende de losparámetros de configuración del modelo.

8. Espera a que su función de Lambda procese los datos y devuelva los resultados.

Los resultados son un objeto JSON que contiene una definición de punto de enlace actualizadapara cada destinatario. Cada definición de punto de enlace actualizada contiene un nuevo objetoRecommendations. Este objeto contiene 1–10 campos, uno para cada atributo recomendadopersonalizado definido en los parámetros de configuración del modelo. Cada uno de estos camposalmacena datos de recomendación mejorados para el punto de enlace.

9. Utiliza la definición de punto de enlace actualizada para que cada destinatario sustituya cada variable demensaje por el valor adecuado para ese destinatario.

10.Envía una versión del mensaje que contiene las recomendaciones personalizadas para cadadestinatario del mensaje.

Para personalizar y mejorar las recomendaciones de esta manera, comience por crear una función deLambda que procese las definiciones de punto de enlace enviadas por Amazon Pinpoint y devuelva lasdefiniciones de punto de enlace actualizadas. A continuación, asigne una política de función de Lambda

333

Amazon Pinpoint Guía para desarrolladoresCreación de la función de Lambda

a la función y autorice a Amazon Pinpoint a invocar la función. A continuación, configure el modelo derecomendación en Amazon Pinpoint. Al configurar el modelo, especifique la función que se va a invocar ydefina los atributos recomendados que se van a utilizar.

Creación de la función de LambdaPara obtener información sobre cómo crear una función de Lambda, consulte Introducción en la AWSLambda Developer Guide. Cuando diseñe y desarrolle la función, tenga en cuenta los siguientes requisitosy directrices.

Datos de eventos de entradaCuando Amazon Pinpoint invoca una función de Lambda para un modelo de recomendación, envía unacarga útil 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 lasdefiniciones de punto de enlace para los destinatarios de los mensajes.

Las definiciones de punto de enlace utilizan la estructura definida por el recurso de punto de enlacede la API de Amazon Pinpoint. Sin embargo, también incluyen un campo para un atributo dinámicorecomendado denominado RecommendationItems. El campo RecommendationItems contiene uno ovarios elementos recomendados para el punto de enlace, tal como se devuelve de la campaña de AmazonPersonalize. El valor de este campo es una matriz ordenada de 1–5 elementos recomendados (comocadenas). El número de elementos de la matriz depende del número de elementos recomendados quehaya configurado Amazon Pinpoint para recuperar para cada punto de enlace o usuario.

Por ejemplo:

"Endpoints": { "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"[email protected]", "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"

334

Amazon Pinpoint Guía para desarrolladoresDatos y requisitos de respuesta

}, "endpointIDexample-2":{ "ChannelType":"EMAIL", "Address":"[email protected]", "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 cadapunto de enlace o usuario. (El valor de la propiedad RecommendationsPerMessage se estableceen 3). Con esta configuración, Amazon Pinpoint recupera y agrega solo los elementos recomendadosprimero, segundo y tercero para cada punto de enlace 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 UserAttributes contiene los valores de estosatributos).

• 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 delproyecto. (El objeto Attributes contiene el valor de este atributo).

Cuando Amazon Pinpoint invoca la función de Lambda y envía esta carga útil como datos de evento, AWSLambda 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 50puntos de enlace, Amazon Pinpoint invoca la función repetidamente, para un máximo de 50 puntos deenlace a la vez, hasta que la función procese todos los datos.

Datos y requisitos de respuestaA medida que diseñe y desarrolle su función de Lambda, tenga en cuenta las cuotas para los modelosde aprendizaje automático (p. 415). Si la función no cumple las condiciones definidas por estas cuotas,Amazon Pinpoint no podrá procesar y enviar el mensaje.

335

Amazon Pinpoint Guía para desarrolladoresDatos y requisitos de respuesta

Tenga en cuenta también los siguientes requisitos:

• La función debe devolver definiciones actualizadas de punto de enlace en el mismo formato queproporcionaron los datos de evento de entrada.

• Cada definición de punto de enlace actualizada puede contener 1–10 atributos recomendadospersonalizados para el punto de enlace o el usuario. Los nombres de estos atributos deben coincidir conlos 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 objetoRecommendations para cada punto de enlace o usuario. Este requisito ayuda a garantizar que no seproduzcan conflictos de nombres. Puede agregar el objeto Recommendations a cualquier ubicación enuna definición de punto de enlace.

• El valor de cada atributo recomendado personalizado tiene que ser una cadena (valor único) o unamatriz de cadenas (valores múltiples). Si el valor es una matriz de cadenas, le recomendamos quemantenga el orden de los elementos recomendados que devolvió Amazon Personalize, como se indicaen el campo RecommendationItems. De lo contrario, es posible que el contenido no refleje laspredicciones 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 atributopara un punto de enlace o usuario. Solo debe agregar y devolver valores para atributos recomendadospersonalizados. Amazon Pinpoint no aceptará actualizaciones a ningún otro valor en la respuesta de lafunción.

• La función tiene que estar alojada en la misma región de AWS que el proyecto de Amazon Pinpoint queestá invocando la función. Si la función y el proyecto no están en la misma región, Amazon Pinpoint nopuede 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 enviarel mensaje a uno o más puntos de enlace. Esto puede provocar un error en la actividad de la campaña orecorrido.

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 ydevolver definiciones de punto de enlace modificadas. Puede hacerlo iterando a través de cada punto deenlace en el objeto Endpoints y, para cada punto de enlace, creando y estableciendo valores para losatributos recomendados personalizados que desee usar. El controlador de ejemplo siguiente, escrito enPython y siguiendo con el ejemplo anterior de datos de eventos de entrada, muestra esto:

import jsonfrom random import randrangeimport randomimport 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()

336

Amazon Pinpoint Guía para desarrolladoresDatos y requisitos de respuesta

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ámetroevent. El controlador itera a través de cada punto de enlace del objeto Endpoints y establecevalores para los atributos recomendados personalizados denominados Recommendations.Titley Recommendations.Genre. La instrucción return devuelve cada definición de punto de enlaceactualizada a Amazon Pinpoint.

Siguiendo con el ejemplo anterior de datos de eventos de entrada, las definiciones de punto de enlaceactualizadas son:

"Endpoints":{ "endpointIDexample-1":{ "ChannelType":"EMAIL", "Address":"[email protected]", "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" ] } },

337

Amazon Pinpoint Guía para desarrolladoresDatos y requisitos de respuesta

"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":"[email protected]", "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" ] } }}

338

Amazon Pinpoint Guía para desarrolladoresAsignación de una política de función de Lambda

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 ordenadade tres valores (como cadenas), donde cada valor proporciona contenido mejorado para un elementorecomendado correspondiente en el campo RecommendationItems.

Asignación de una política de función de LambdaAntes de poder utilizar la función Lambda para procesar los datos de recomendación, debe autorizar aque Amazon Pinpoint invoque la función. Para conceder permiso de invocación, asigne una política defunción de Lambda a la función. Una política de función de Lambda consiste en una política de permisosbasada en el recurso que designa qué entidades pueden usar una función y qué acciones pueden realizardichas entidades. Para obtener más información, consulte Uso de políticas basadas en recursos para AWSLambda en la AWS Lambda Developer Guide.

La siguiente política de ejemplo permite a la entidad principal del servicio de Amazon Pinpoint usar laacción lambda:InvokeFunction para una campaña de Amazon Pinpoint en particular (campaignId)en un proyecto de Amazon Pinpoint concreto (projectId):

{ "Sid": "sid", "Effect": "Allow", "Principal": { "Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:accountId:function:function-name}", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:accountId:/apps/projectId/campaigns/campaignId" } }}

La política de función requiere un bloque Condition que incluye una clave AWS:SourceArn. Estaclave especifica qué recurso puede invocar la función. En el ejemplo anterior, la directiva permite que unacampaña concreta invoque la función.

También puede escribir una política que permita a la entidad principal del servicio de Amazon Pinpointutilizar la acción lambda:InvokeFunction para todas las campañas y recorridos de un proyecto deAmazon Pinpoint específico (projectId). La siguiente política de ejemplo se muestra esto:

{ "Sid": "sid", "Effect": "Allow", "Principal": { "Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:accountId:function:function-name}", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:accountId:/apps/projectId" } }}

339

Amazon Pinpoint Guía para desarrolladoresAutorización de Amazon Pinpoint para invocar la función

A diferencia del primer ejemplo, la clave AWS:SourceArn del bloque Condition de este ejemplo permiteque un proyecto en particular invoque la función. Este permiso se aplica a todas las campañas y recorridosdel proyecto.

Para escribir una política más genérica, utilice caracteres comodín (*) que sustituyan a varios caracteres.Por ejemplo, puede utilizar el siguiente bloque de Condition para permitir que cualquier proyecto deAmazon Pinpoint invoque la función:

"Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:accountId:/apps/*" }}

Si desea utilizar la función de Lambda con todos los proyectos de su cuenta de Amazon Pinpoint, lerecomendamos que configure el bloque Condition de la política de la forma anterior. Sin embargo, comopráctica recomendada, debe crear políticas que incluyan solo los permisos necesarios para realizar unaacción específica en un recurso específico.

Autorización de Amazon Pinpoint para invocar lafunción

Después de asignar una política de función de Lambda, puede agregar permisos que permitan a AmazonPinpoint invocar la función para un proyecto, campaña o recorrido específico. Puede hacerlo utilizandola AWS Command Line Interface (AWS CLI) y el comando de Lambda add-permission. En el ejemplosiguiente se muestra cómo hacer esto para un proyecto específico (projectId):

$ aws lambda add-permission \--function-name function-name \--statement-id sid \--action lambda:InvokeFunction \--principal pinpoint.us-east-1.amazonaws.com \--source-arn arn:aws:mobiletargeting:us-east-1:accountId:/apps/projectId

El ejemplo anterior está preparado para Unix, Linux y macOS. En Microsoft Windows, reemplace elcarácter de continuación de línea de barra diagonal inversa (\) por un símbolo de intercalación (^).

Si el comando se ejecuta correctamente, aparecerá un resultado similar al siguiente:

{ "Statement": "{\"Sid\":\"sid\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"pinpoint.us-east-1.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:function-name\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:mobiletargeting:us-east-1:111122223333:/apps/projectId\"}}}"}

El valor de Statement es una versión de cadena JSON de la instrucción que se agregó a la política de lafunción de Lambda.

340

Amazon Pinpoint Guía para desarrolladoresConfiguración del modelo de recomendación

Configuración del modelo de recomendaciónPara configurar Amazon Pinpoint para invocar la función de Lambda de un modelo de recomendación,especifique los siguientes parámetros de configuración específicos de Lambda para el modelo:

• RecommendationTransformerUri: esta propiedad especifica el nombre o nombre de recurso deAmazon (ARN) de la función de Lambda.

• Attributes: este objeto es un mapa que define los atributos recomendados personalizados que lafunción agrega a cada definición de punto de enlace. Cada uno de estos atributos se puede utilizar comovariable de mensaje en una plantilla de mensaje.

Puede especificar estos valores mediante el recurso Modelos de recomendación de la API de AmazonPinpoint (al crear la configuración de un modelo) o el recurso Modelo de recomendación de la API deAmazon Pinpoint (si actualiza la configuración de un modelo). También puede definir estos parámetrosmediante la consola de Amazon Pinpoint.

Para obtener más información acerca del uso de modelos de recomendación con Amazon Pinpoint,consulte Modelos de aprendizaje automático en la Guía del usuario de Amazon Pinpoint.

341

Amazon Pinpoint Guía para desarrolladores

Creación de canales personalizadoscon AWS Lambda

Esta es una documentación preliminar para una característica en versión de beta pública. Está sujeta acambios.

Amazon Pinpoint admite canales de mensajería de inserción en móviles, correo electrónico y SMS. Sinembargo, algunos casos de uso de mensajería podrían requerir canales no admitidos. Por ejemplo,es posible que desee enviar un mensaje a un servicio de mensajería instantánea, como FacebookMessenger, o que desee mostrar una notificación dentro de su aplicación web. En tales casos, puedeusar AWS Lambda para crear un canal personalizado que lleve a cabo la entrega de mensajes fuera deAmazon Pinpoint.

AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrarservidores. Puede empaquetar el código y cargarlo en Lambda como funciones de Lambda. Lambdaejecuta una función cuando se invoca la función, lo que se podría hacer de forma manual o automática enrespuesta a eventos.

Para obtener más información, consulte Funciones de Lambda en la AWS Lambda Developer Guide.

Para crear un canal personalizado, define una función de Lambda que gestiona el envío de mensajes parauna campaña de Amazon Pinpoint. A continuación, puede asignar la función a una campaña definiendo laconfiguración CampaignHook de esta (recurso de campaña). Entre estos ajustes se incluyen el nombre dela función de Lambda y el modo CampaignHook. Al configurar el modo en DELIVERY, se especifica que lafunción de Lambda gestiona el envío de mensajes en lugar de Amazon Pinpoint.

Las funciones de Lambda asignadas a una campaña se conocen como extensiones de Amazon Pinpoint.

Con la configuración CampaignHook definida, Amazon Pinpoint invoca automáticamente la función deLambda cuando ejecuta la campaña, sin enviar el mensaje de la campaña a un canal estándar. En sulugar, Amazon Pinpoint envía datos de eventos sobre el envío de mensajes a la función y permite que estase encargue de la entrega. Los datos de eventos incluyen el cuerpo del mensaje y la lista de puntos deenlace a los que se debe entregar el mensaje.

Una vez que Amazon Pinpoint invoque la función correctamente, se genera evento de envío satisfactoriopara la campaña.

Note

También puede utilizar la configuración de CampaignHook para asignar una función de Lambdaque modifica y devuelve el segmento de una campaña antes de que Amazon Pinpoint entregue elmensaje de la campaña. Para obtener más información, consulte Personalización de segmentoscon AWS Lambda (p. 188).

Para crear un canal personalizado con AWS Lambda, primero debe crear una función que acepte losdatos de eventos enviados por Amazon Pinpoint y se encarga de la entrega del mensaje. A continuación,autorice a Amazon Pinpoint a invocar la función asignando una política de función de Lambda. Por último,asigne la función a una o varias campañas definiendo configuraciones de CampaignHook.

342

Amazon Pinpoint Guía para desarrolladoresDatos del evento

Datos del eventoCuando Amazon Pinpoint invoca la función de Lambda, proporciona la siguiente carga como los datos deeventos:

{ "MessageConfiguration": {Message configuration} "ApplicationId": ApplicationId, "CampaignId": CampaignId, "TreatmentId": TreatmentId, "ActivityId": ActivityId, "ScheduledTime": Scheduled Time, "Endpoints": { EndpointId: {Endpoint definition} . . . }}

Los datos de eventos proporciona los siguientes atributos:

• MessageConfiguration – tiene la misma estructura que el objeto DirectMessageConfigurationdelrecurso de mensajes en la API de Amazon Pinpoint.

• ApplicationId – el ID del proyecto de Amazon Pinpoint al que pertenece la campaña.• CampaignId – el ID del proyecto de Amazon Pinpoint para el que se invoca la función.• TreatmentId – el ID de una variación de campaña utilizada para efectuar pruebas A/B.• ActivityId – el ID de la actividad que está realizando la campaña.• ScheduledTime – la hora programada a la que se envían los mensajes de la campaña en formato ISO

8601.• Endpoints – una asignación que asocia los ID de los puntos de enlace con las definiciones de estos

últimos. Cada carga de datos de eventos contiene hasta 50 puntos de enlace. Si el segmento de lacampaña contiene más de 50 puntos de enlace, Amazon Pinpoint invoca la función reiteradamente, de50 en 50 puntos de enlace, hasta que se hayan procesado todos ellos.

Creación de una función de LambdaPara crear una función de Lambda, consulte Creación de funciones de Lambda en la AWS LambdaDeveloper Guide.

Función de Lambda de ejemploLa siguiente función de Lambda de ejemplo recibe datos de eventos cuando Amazon Pinpoint ejecuta unacampaña y envía el mensaje de esta a Facebook Messenger:

"use strict";

var https = require("https");var q = require("q");

var VERIFY_TOKEN = "my_token";var PAGE_ACCESS_TOKEN = "EAF...DZD";/* this constant can be put in a constants file and shared between this function and your Facebook Messenger webhook code */var FACEBOOK_MESSENGER_PSID_ATTRIBUTE_KEY = "facebookMessengerPsid";

343

Amazon Pinpoint Guía para desarrolladoresFunción de Lambda de ejemplo

exports.handler = function(event, context, callback) {

var deliverViaMessengerPromises = [];

if (event.Message && event.Endpoints) { for (var endpoint in event.Endpoints) { if (isFbookMessengerActive(event.Endpoints[endpoint])) { deliverViaMessengerPromises.push(deliverViaMessenger(event.Message, event.Endpoints[endpoint].User)); } } }

/* default OK response */ var response = { body: "ok", statusCode: 200 };

if (deliverViaMessengerPromises.length > 0) { q.all(deliverViaMessengerPromises).done(function() { callback(null, response); }); } else { callback(null, response); }

}

/**Example Pinpoint Endpoint User object where we've added custom attribute facebookMessengerPsid to store the PSID needed by Facebook's API{ "UserId": "7a9870b7-493c-4521-b0ca-08bbbc36e595", "UserAttributes": { "facebookMessengerPsid": [ "1667566386619741" ] }}**/function isFbookMessengerActive(endpoint) { return endpoint.User && endpoint.User.UserAttributes && endpoint.User.UserAttributes[FACEBOOK_MESSENGER_PSID_ATTRIBUTE_KEY];}

/**Sample message object from Pinpoint. This sample was an SMS so it has "smsmessage" attribute but this will vary for each messaging channel{ "smsmessage": { "body": "This message should be intercepted by a campaign hook." }}**/function deliverViaMessenger(message, user) { var deferred = q.defer();

var messageText = message["smsmessage"]["body"]; var pinpointUserId = user.UserId; var facebookPsid = user.UserAttributes[FACEBOOK_MESSENGER_PSID_ATTRIBUTE_KEY][0]; console.log("Sending message for user %s and page %s with message:", pinpointUserId, facebookPsid, messageText);

var messageData = { recipient: { id: facebookPsid },

344

Amazon Pinpoint Guía para desarrolladoresAsignación de una política de función de Lambda

message: { text: messageText } };

var body = JSON.stringify(messageData); var path = "/v2.6/me/messages?access_token=" + PAGE_ACCESS_TOKEN; var options = { host: "graph.facebook.com", path: path, method: "POST", headers: { "Content-Type": "application/json" } };

var req = https.request(options, httpsCallback);

req.on("error", function(e) { console.log("Error posting to Facebook Messenger: " + e); deferred.reject(e); });

req.write(body); req.end();

return deferred.promise;

function httpsCallback(response) { var str = ""; response.on("data", function(chunk) { str += chunk; }); response.on("end", function() { console.log(str); deferred.resolve(response); }); }}

Asignación de una política de función de LambdaAntes de poder utilizar su función de Lambda para procesar los puntos de enlace, debe autorizar aAmazon Pinpoint a invocar dicha función de Lambda. Para conceder permiso de invocación, asigne unapolítica de función de Lambda a la función. Una política de función de Lambda consiste en una política depermisos basada en el recurso que designa qué entidades pueden usar su función y qué acciones puedenrealizar dichas entidades.

Para obtener más información, consulte Uso de políticas basadas en recursos para AWS Lambda (políticasde funciones de Lambda) en la AWS Lambda Developer Guide.

Política de función de ejemploLa siguiente política concede permiso al principal del servicio de Amazon Pinpoint para usar la acciónlambda:InvokeFunction:

{ "Sid": "sid", "Effect": "Allow", "Principal": {

345

Amazon Pinpoint Guía para desarrolladoresConcesión de permiso de invocación a Amazon Pinpoint

"Service": "pinpoint.us-east-1.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "{arn:aws:lambda:us-east-1:account-id:function:function-name}", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:/apps/application-id/campaigns/campaign-id" } }}

La política de función requiere un bloque Condition que incluye una clave AWS:SourceArn. Este códigoindica qué campaña de Amazon Pinpoint tiene permitido invocar la función. En este ejemplo, la políticaconcede permiso solo a un único ID de campaña. Para escribir una política más genérica, use caracterescomodín (*) que sustituyan a varios caracteres. Por ejemplo, puede usar el siguiente bloque Conditionpara permitir que cualquier campaña de Amazon Pinpoint en su cuenta de AWS invoque la función:

"Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:mobiletargeting:us-east-1:account-id:/apps/*/campaigns/*" }}

Concesión de permiso de invocación a AmazonPinpointPuede utilizar la AWS Command Line Interface (AWS CLI) para añadir permisos a la política de función deLambda asignada a su función de Lambda. Para permitir que Amazon Pinpoint invoque una función, use elcomando add-permission de Lambda, como se muestra en el siguiente ejemplo:

$ aws lambda add-permission \> --function-name function-name \> --statement-id sid \> --action lambda:InvokeFunction \> --principal pinpoint.us-east-1.amazonaws.com \> --source-arn arn:aws:mobiletargeting:us-east-1:account-id:/apps/application-id/campaigns/campaign-id

Si desea proporcionar un ID de campaña para el parámetro --source-arn, puede buscar sus ID decampaña mediante el comando get-campaigns de Amazon Pinpoint; con la AWS CLI. Este comandorequiere el parámetro --application-id. Para buscar sus ID de aplicación, inicie sesión en la consolade Amazon Pinpoint en https://console.aws.amazon.com/pinpoint/ y vaya a la página Projects (Proyectos).En la consola se muestra un ID para cada proyecto, que es el ID de aplicación de cada proyecto.

Cuando ejecuta el comando add-permission de Lambda, AWS Lambda devuelve la siguiente salida:

{ "Statement": "{\"Sid\":\"sid\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"pinpoint.us-east-1.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:function-name\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:mobiletargeting:us-east-1:111122223333:/apps/application-id/campaigns/campaign-id\"}}}"

346

Amazon Pinpoint Guía para desarrolladoresAsignación de una función de Lambda a una campaña

}

El valor de Statement es una versión de cadena JSON de la instrucción que se añade a la política de lafunción de Lambda.

Asignación de una función de Lambda a unacampaña

Puede asignar una función de Lambda a una campaña de Amazon Pinpoint individual. O bien, puedeconfigurar la función de Lambda como la predeterminada que utilizan todas las campañas de un proyecto,excepto en el caso de las campañas a las que se le asigne una función de manera individual.

Para asignar una función de Lambda a una campaña individual, use la API de Amazon Pinpoint a fin decrear o actualizar un objeto de campaña y defina su atributo CampaignHook. Para establecer una funciónde Lambda como la predeterminada de todas las campañas de un proyecto, cree o actualice el recurso deconfiguración de ese proyecto y defina su objeto CampaignHook.

En ambos casos, establezca los siguientes atributos CampaignHook:

• LambdaFunctionName – el nombre o ARN de la función de Lambda que Amazon Pinpoint invoca a finde enviar mensajes para la campaña.

• Mode – establecido en DELIVERY. Con este modo, Amazon Pinpoint utiliza la función para entregar losmensajes de una campaña y no intenta enviar los mensajes a través de los canales estándares.

347

Amazon Pinpoint Guía para desarrolladoresEliminación de puntos de enlace

Eliminación de datos de AmazonPinpoint

En función de cómo lo utilice, Amazon Pinpoint podría almacenar determinados datos que podríanconsiderarse personales. Por ejemplo, un punto de enlace de Amazon Pinpoint contiene información decontacto de un usuario final, como su dirección de correo electrónico o su número de teléfono móvil.

Puede utilizar la consola o la API de Amazon Pinpoint para eliminar de forma permanente los datospersonales. Este tema incluye procedimientos para eliminar diversos tipos de datos que podríanconsiderarse personales.

Eliminación de puntos de enlaceUn punto de enlace representa un único método de ponerse en contacto con uno de sus clientes. Cadapunto de enlace puede hacer referencia a la dirección de correo electrónico de un cliente, al identificadordel dispositivo móvil, al número de teléfono o a otro tipo de destino al que puede enviar mensajes. Enmuchas jurisdicciones, este tipo de información puede considerarse personal.

Para eliminar todos los datos de un punto de enlace específico, puede utilizar la API de Amazon Pinpointpara eliminar el punto de enlace. El siguiente procedimiento muestra cómo eliminar un punto de enlacemediante el uso de la AWS CLI para interactuar con la API de Amazon Pinpoint. En este procedimientose presupone que ya ha instalado y configurado la AWS CLI. Para obtener más información, consulteInstalación de la AWS CLI en la AWS Command Line Interface Guía del usuario.

Para eliminar un punto de enlace utilizando la AWS CLI

• En la línea de comandos, escriba el comando siguiente.

aws pinpoint delete-endpoint --application-id 810c7aab86d42fb2b56c8c966example --endpoint-id ad015a3bf4f1b2b0b82example

En el comando anterior, reemplace 810c7aab86d42fb2b56c8c966example por el ID del proyectoal que está asociado el punto de enlace. Asimismo, reemplace ad015a3bf4f1b2b0b82example porel ID exclusivo del propio punto de enlace.

Para buscar el ID de un punto de enlace específico, determine a qué segmento pertenece el punto deenlace y, a continuación, exporte el segmento desde Amazon Pinpoint. Los datos exportados incluyen elID del punto de enlace para cada punto de enlace. Puede exportar un segmento a un archivo mediantela consola de Amazon Pinpoint. Para obtener más información, consulte Exportación de segmentos enla Guía del usuario de Amazon Pinpoint. También puede exportar un segmento a un bucket de AmazonSimple Storage Service (Amazon S3) mediante la API de Amazon Pinpoint. Para obtener informaciónsobre cómo hacerlo, consulte Exportación de puntos de enlace (p. 172) en esta guía.

Eliminación de datos de segmentos y puntos deenlace almacenados en Amazon S3

Puede importar segmentos desde un archivo que está almacenado en un bucket de Amazon S3 mediantela consola o la API de Amazon Pinpoint. También puede exportar datos de aplicaciones, de segmentos y

348

Amazon Pinpoint Guía para desarrolladoresEliminación de todos los datos del proyecto

de puntos de enlace desde Amazon Pinpoint a un bucket de Amazon S3. Tanto los archivos importadoscomo los exportados pueden contener datos personales, incluidas direcciones de correo electrónico,números de teléfono móvil e información sobre la ubicación física de un punto de enlace. Puede eliminarestos archivos de Amazon S3.

El contenido entregado en los buckets de Amazon S3 podría incluir datos de los clientes. Para obtener másinformación sobre cómo eliminar información confidencial, consulte ¿Cómo puedo vaciar un bucket de S3?o ¿Cómo elimino un bucket de S3?.

Eliminación de todos los datos del proyectoPuede eliminar de forma permanente todos los datos almacenados para un proyecto de Amazon Pinpoint.Puede hacerlo eliminando el proyecto.

Warning

Si elimina un proyecto, Amazon Pinpoint borra todos los parámetros y datos específicos delproyecto. La información no se puede recuperar.

Cuando se elimina un proyecto, Amazon Pinpoint borra toda la configuración específica del proyectopara los canales de notificación push y mensajería SMS bidireccional, así como todos los segmentos,campañas, recorridos y datos de análisis específicos del proyecto almacenados en Amazon Pinpoint, comolos siguientes:

• Segmentos: Toda la configuración y datos de segmentos. Para los segmentos dinámicos, esto incluyelos grupos de segmento y filtros que ha definido. Para los segmentos importados, esto incluye los puntosde enlace, ID de usuario y otros datos que ha importado. así como los filtros que haya aplicado.

• Campañas: todos los mensajes, tratamientos y variables de mensajes, datos de análisis,programaciones y otros ajustes.

• Recorridos: todas las actividades, datos de análisis, programaciones y otros ajustes.• Análisis: datos para todas las métricas de interacción, como el número de mensajes enviados y

entregados de campañas y recorridos, y todas las métricas de ejecución de recorridos. Para aplicacionesweb y móviles, esto incluye todos los datos de eventos que no se han transmitido a otro servicio de AWScomo, por ejemplo, Amazon Kinesis, todos los embudos y los datos de métricas de uso de aplicación,ingresos y datos demográficos. Antes de eliminar un proyecto, le recomendamos que exporte estosdatos a otra ubicación.

Puede eliminar un proyecto con la consola de Amazon Pinpoint. Para obtener más información, consulteEliminación de un proyecto en la Guía del usuario de Amazon Pinpoint. También puede eliminar unproyecto mediante programación con el recurso App de la API de Amazon Pinpoint.

Eliminación de todos los datos de AWS mediante elcierre de la cuenta de AWS

También puede eliminar todos los datos personales que ha almacenado en Amazon Pinpoint medianteel cierre de la cuenta de AWS. Sin embargo, esta acción, también elimina todos los demás datos —personales o no personales— que haya almacenado en los demás servicios de AWS.

Al cerrar su cuenta de AWS, conservamos los datos de su cuenta de AWS durante 90 días. Al finalizar esteperiodo de retención, eliminamos estos datos de forma permanente e irreversible.

349

Amazon Pinpoint Guía para desarrolladoresEliminación de todos los datos de AWS

Warning

El siguiente procedimiento elimina por completo todos los datos almacenados en la cuenta deAWS en todos los servicios de AWS y las regiones de AWS.

Puede cerrar su cuenta de AWS mediante la Consola de administración de AWS.

Para cerrar la cuenta de AWS

1. Abra la Consola de administración de AWS en https://console.aws.amazon.com.2. Vaya a la página Account Settings (Configuración de cuenta) en https://console.aws.amazon.com/

billing/home?#/account.

Warning

Los dos pasos siguientes eliminan de forma definitiva todos los datos que haya almacenadoen todos los servicios de AWS en todas las regiones de AWS.

3. En Close Account (Cerrar cuenta), lea el texto de renuncia que describe las consecuencias del cierrede su cuenta de AWS. Si está de acuerdo con las condiciones, seleccione la casilla de verificación y, acontinuación, elija Close Account (Cerrar cuenta).

4. En el cuadro de diálogo de confirmación, elija Close Account (Cerrar cuenta).

350

Amazon Pinpoint Guía para desarrolladoresProtección de los datos

Seguridad en Amazon PinpointLa seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de unaarquitectura de red y un centro de datos diseñados para satisfacer los requisitos de seguridad de lasorganizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El modelo de responsabilidadcompartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad de la nube – AWS es responsable de proteger la infraestructura que ejecuta servicios deAWS en la nube de AWS. AWS también proporciona servicios que puede utilizar de forma segura.Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad comoparte de los Programas de conformidad de AWS . Para obtener información sobre los programas deconformidad que se aplican a Amazon Pinpoint, consulte Servicios de AWS en el ámbito del programade conformidad.

• Seguridad en la nube – su responsabilidad viene determinada por el servicio de AWS que utilice.También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de laempresa y la legislación y los reglamentos aplicables.

Esta documentación lo ayuda a comprender cómo puede aplicar el modelo de responsabilidad compartidacuando se utiliza Amazon Pinpoint. En los siguientes temas, aprenderá a configurar Amazon Pinpoint parasatisfacer sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros servicios de AWSque lo ayuden a monitorear y proteger sus recursos de Amazon Pinpoint.

Temas• Protección de datos en Amazon Pinpoint (p. 351)• Administración de identidad y acceso en Amazon Pinpoint (p. 354)• Registro y monitoreo en Amazon Pinpoint (p. 406)• Validación de conformidad para Amazon Pinpoint (p. 407)• Resiliencia en Amazon Pinpoint (p. 408)• Seguridad de la infraestructura en Amazon Pinpoint (p. 408)• Configuración y análisis de vulnerabilidades en Amazon Pinpoint (p. 409)

Protección de datos en Amazon PinpointAmazon Pinpoint cumple los requisitos del modelo de responsabilidad compartida de AWS, queincluye reglamentos y directrices para la protección de los datos. AWS es responsable de proteger lainfraestructura global que ejecuta todos los servicios de AWS. AWS mantiene el control de los datosalojados en esta infraestructura, incluidos los controles de configuración de la seguridad para el tratamientodel contenido y los datos personales de los clientes. Los clientes de AWS y los socios de AWS PartnerNetwork (APN), que actúan como controladores o procesadores de datos, son responsables de todos losdatos personales que colocan en la nube de AWS.

En función de cómo configure y utilice el servicio, Amazon Pinpoint puede almacenar los siguientes tiposde datos personales sobre usted o sobre sus clientes:

351

Amazon Pinpoint Guía para desarrolladoresProtección de los datos

Datos de configuración

Esto incluye datos de configuración del proyecto, como credenciales y parámetros que definen cómoy cuándo Amazon Pinpoint envía mensajes a través de los canales admitidos y los segmentos deusuario a los que envía mensajes. Para enviar mensajes, estos datos pueden incluir direcciones IPdedicadas para mensajes de correo electrónico, códigos cortos e identificadores de remitente paramensajes de texto SMS y credenciales para comunicarse con servicios de notificaciones push comoApple Push Notification service (APNs) y Mensajería de la nube de Firebase (FCM).

Datos de usuario y de punto de enlace

Entre estos se incluyen atributos estándar y personalizados que se utilizan para almacenar yadministrar datos sobre usuarios y puntos de enlace de un proyecto de Amazon Pinpoint. Un atributopuede almacenar información sobre un usuario específico (como el nombre de un usuario) o un puntode enlace específico de un usuario (como la dirección de correo electrónico de un usuario, el númerode teléfono móvil o el token de dispositivo móvil). Estos datos también pueden incluir identificadoresde usuario externos que establezcan una correspondencia de los usuarios de un proyecto de AmazonPinpoint con los usuarios de un sistema externo, como un sistema de administración de relaciones conlos clientes. Para obtener más información acerca de lo que pueden incluir estos datos, consulte losesquemas de usuario y punto de enlace en la Amazon Pinpoint API Reference.

Datos de análisis

Entre estos se incluyen datos de métricas, denominados también indicadores clave de rendimiento(KPI), que proporcionan información sobre el rendimiento de un proyecto de Amazon Pinpoint paraáreas como la interacción y la actividad de compra de los usuarios. Entre estos se incluyen tambiénlos datos de métricas que proporcionan información sobre la demografía de los usuarios de unproyecto. Los datos pueden proceder de atributos estándar y personalizados para usuarios y puntosde enlace, como la ciudad en la que vive un usuario. También pueden proceder de eventos, comoeventos de apertura y clic de los mensajes de correo electrónico que envía para un proyecto.

Datos importados

Incluyen todos los datos de usuario, segmentación y análisis que agregue o importe desde fuentesexternas y utilice en Amazon Pinpoint. Un ejemplo es un archivo JSON que importe en AmazonPinpoint (directamente a través de la consola o desde un bucket de Amazon S3) para crear unsegmento estático. Otros ejemplos son los datos de punto de enlace que se agregan medianteprogramación para crear un segmento dinámico, las direcciones de punto de enlace a las que seenvían mensajes directos y los eventos que se configuran en una aplicación para que se registren enAmazon Pinpoint.

Para ayudar a proteger estos datos, le recomendamos que proteja las credenciales de la cuenta de AWS yque configure cuentas de usuario individuales con AWS Identity and Access Management (IAM), de modoque a cada usuario se le concedan únicamente los permisos necesarios para llevar a cabo su trabajo.También le recomendamos proteger sus datos de las siguientes formas:

• Utilice la autenticación multifactor (MFA) con cada cuenta.• Utilice SSL/TLS para comunicarse con los recursos de AWS.• Configure la API y el registro de actividad del usuario con AWS CloudTrail.• Utilice las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados

dentro de los servicios de AWS.• Utilice los servicios de seguridad administrados avanzados como Amazon Macie, que ayudan a detectar

y proteger los datos personales almacenados en Amazon S3.

Es absolutamente recomendable que nunca incluya información de identificación confidencial, como losnúmeros de cuenta de sus clientes, en los campos de formato libre, como el campo Name (Nombre) oun campo de identificador. No debe especificar esta información cuando trabaje con Amazon Pinpoint u

352

Amazon Pinpoint Guía para desarrolladoresCifrado de datos

otros servicios de AWS a través de la consola, las API, la AWS CLI o los SDK de AWS. Cualquier dato queescriba en Amazon Pinpoint o en otros servicios se puede agregar a los registros de diagnóstico e incluirseen ellos. Cuando proporcione una URL a un servidor externo, no incluya información de credenciales en laURL para validar la solicitud para ese servidor.

Para obtener más información sobre la protección de datos, consulte la entrada de blog relativa al modelode responsabilidad compartida de AWS y GDPR en el blog de seguridad de AWS.

Temas• Cifrado de datos (p. 353)• Privacidad del tráfico entre redes (p. 353)

Cifrado de datosLos datos de Amazon Pinpoint se cifran en tránsito y en reposo. Cuando envía datos a Amazon Pinpoint,el servicio cifra los datos a medida que los recibe y los almacena. Cuando se recuperan datos de AmazonPinpoint, el servicio los transmite mediante los protocolos de seguridad actuales.

Cifrado en reposoAmazon Pinpoint cifra todos los datos que almacena para usted. Entre estos se incluyen los datos deconfiguración, los datos de usuario y punto de enlace, los datos de análisis y los datos que agrega oimporta a Amazon Pinpoint. Para cifrar los datos, Amazon Pinpoint utiliza claves internas de AWS KeyManagement Service (AWS KMS) que el servicio posee y mantiene en su nombre. Rotamos estas clavesperiódicamente. Para obtener información acerca de AWS KMS, consulte la AWS Key ManagementService Developer Guide.

Cifrado en tránsitoAmazon Pinpoint utiliza HTTPS y Transport Layer Security (TLS) 1.0 o posterior para comunicarse con susclientes y aplicaciones. Para comunicarse con otros servicios de AWS, Amazon Pinpoint utiliza HTTPSy TLS 1.2. Además, al crear y administrar recursos de Amazon Pinpoint mediante la consola, un SDK deAWS o la AWS Command Line Interface, todas las comunicaciones se protegen mediante HTTPS y TLS1.2.

Administración de clavesPara cifrar los datos de Amazon Pinpoint, Amazon Pinpoint utiliza claves internas de AWS KMS que elservicio posee y mantiene en su nombre. Rotamos estas claves periódicamente. No puede aprovisionar niusar su propia AWS KMS u otras claves para cifrar los datos almacenados en Amazon Pinpoint.

Privacidad del tráfico entre redesLa privacidad del tráfico entre redes se refiere a la protección de las conexiones y el tráfico entre AmazonPinpoint y sus clientes y aplicaciones locales, y entre Amazon Pinpoint y otros recursos de AWS dela misma región de AWS. Las siguientes características y prácticas pueden ayudarlo a garantizar laprivacidad del tráfico entre redes en Amazon Pinpoint.

Tráfico entre Amazon Pinpoint y aplicaciones y clientes localesPara establecer una conexión privada entre Amazon Pinpoint y clientes y aplicaciones en la red local,puede utilizar AWS Direct Connect. Esto le permite vincular su red a una ubicación de AWS Direct Connectmediante un cable de Ethernet de fibra óptica estándar. Un extremo del cable se conecta al enrutador. El

353

Amazon Pinpoint Guía para desarrolladoresIdentity and Access Management

otro extremo se conecta a un enrutador de AWS Direct Connect. Para obtener más información, consulte¿Qué es AWS Direct Connect? en la Guía del usuario de AWS Direct Connect.

Para ayudar a garantizar el acceso a Amazon Pinpoint través de las API publicadas, le recomendamos quecumpla los requisitos de Amazon Pinpoint relativos a las llamadas a la API. Amazon Pinpoint requiere quelos clientes utilicen Transport Layer Security (TLS) 1.0 o posterior. (Recomendamos TLS 1.2 o una versiónposterior). Los clientes también deben admitir conjuntos de cifrado con confidencialidad directa total (PFS)tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). Lamayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de accesosecreta que estén asociados a una entidad principal de AWS Identity and Access Management (IAM)de su cuenta de AWS. También puede utilizar AWS Security Token Service (AWS STS) para generarcredenciales de seguridad temporales para firmar solicitudes.

Tráfico entre Amazon Pinpoint y otros recursos de AWSPara proteger las comunicaciones entre Amazon Pinpoint y otros recursos de AWS en la misma región deAWS, Amazon Pinpoint utiliza HTTPS y TLS 1.2 de forma predeterminada.

Administración de identidad y acceso en AmazonPinpoint

AWS Identity and Access Management (IAM) es un servicio de AWS que ayuda a un administrador acontrolar de forma segura el acceso a los recursos de AWS. Los administradores de IAM controlan quiénpuede ser autenticado (iniciar sesión) y estar autorizado (tener permisos) para utilizar los recursos deAmazon Pinpoint. IAM es un servicio de AWS que se puede utilizar sin costo adicional.

Temas• Público (p. 354)• Autenticación con identidades (p. 355)• Administración de acceso mediante políticas (p. 357)• Funcionamiento de Amazon Pinpoint con IAM (p. 358)• Acciones de Amazon Pinpoint para políticas de IAM (p. 363)• Ejemplos de políticas basadas en identidad de Amazon Pinpoint (p. 382)• Ejemplos de política basada en recursos de Amazon Pinpoint (p. 389)• Roles de IAM para tareas de Amazon Pinpoint comunes (p. 390)• Solución de problemas de administración de identidad y acceso en Amazon Pinpoint (p. 404)

PúblicoLa forma en que utilice AWS Identity and Access Management (IAM) difiere, en función del trabajo querealice en Amazon Pinpoint.

Usuario de servicio: si utiliza el servicio Amazon Pinpoint para realizar su trabajo, su administrador leproporciona las credenciales y los permisos que necesita. A medida que utilice más características deAmazon Pinpoint para realizar su trabajo, es posible que necesite permisos adicionales. Entender cómose administra el acceso puede ayudarle a solicitar los permisos correctos a su administrador. Si no puedeacceder a una característica en Amazon Pinpoint, consulte Solución de problemas de administración deidentidad y acceso en Amazon Pinpoint (p. 404).

354

Amazon Pinpoint Guía para desarrolladoresAutenticación con identidades

Administrador de servicio: si está a cargo de los recursos de Amazon Pinpoint en su empresa,probablemente tenga acceso completo a Amazon Pinpoint. Su trabajo consiste en determinar qué acaracterísticas y recursos de Amazon Pinpoint deben acceder sus empleados. A continuación, debe enviarsolicitudes a su administrador de IAM para cambiar los permisos de los usuarios de su servicio. Revisela información de esta página para conocer los conceptos básicos de IAM. Para obtener más informaciónsobre cómo su empresa puede utilizar IAM con Amazon Pinpoint, consulte Funcionamiento de AmazonPinpoint con IAM (p. 358).

Administrator de IAM: si es un administrador de IAM, es posible que quiera conocer información sobrecómo escribir políticas para administrar el acceso a Amazon Pinpoint. Para ver ejemplos de políticasbasadas en la identidad de Amazon Pinpoint que puede utilizar en IAM, consulte Ejemplos de políticasbasadas en identidad de Amazon Pinpoint (p. 382).

Autenticación con identidadesLa autenticación es la manera de iniciar sesión en AWS mediante credenciales de identidad. Para obtenermás información acerca del inicio de sesión con la Consola de administración de AWS, consulte Laconsola de IAM y la página de inicio de sesión en la Guía del usuario de IAM.

Debe estar autenticado (haber iniciado sesión en AWS) como Usuario de la cuenta raíz de AWS, usuariode IAM o asumiendo un rol de IAM. También puede utilizar la autenticación de inicio de sesión único desu empresa o incluso iniciar sesión con Google o Facebook. En estos casos, su administrador habráconfigurado previamente la federación de identidad mediante roles de IAM. Cuando obtiene acceso a AWSmediante credenciales de otra empresa, asume un rol indirectamente.

Para iniciar sesión directamente en la Consola de administración de AWS, use su contraseña con sucorreo electrónico usuario raíz o su nombre de usuario de IAM. Puede obtener acceso a AWS medianteprogramación utilizando sus claves de acceso usuario raíz o de usuario de IAM. AWS proporciona SDK yherramientas de línea de comandos para firmar criptográficamente su solicitud con sus credenciales. Si noutiliza las herramientas de AWS, debe firmar usted mismo la solicitud. Para ello, utilice Signature Version4, un protocolo para autenticar solicitudes de API de entrada. Para obtener más información acerca de laautenticación de solicitudes, consulte Proceso de firma Signature Version 4 en la AWS General Reference.

Independientemente del método de autenticación que utilice, es posible que también deba proporcionarinformación de seguridad adicional. Por ejemplo, AWS le recomienda el uso de la autenticación multifactor(MFA) para aumentar la seguridad de su cuenta. Para obtener más información, consulte Uso de Multi-Factor Authentication (MFA) en AWS en la Guía del usuario de IAM.

Usuario raíz de la cuenta de AWSCuando se crea por primera vez una cuenta de AWS, se comienza con una única identidad de inicio desesión que tiene acceso completo a todos los servicios y recursos de AWS de la cuenta. Esta identidadrecibe el nombre de AWS de la cuenta de usuario raíz y se obtiene acceso a ella iniciando sesión con ladirección de correo electrónico y la contraseña que utilizó para crear la cuenta. Le recomendamos queno utilice usuario raíz en sus tareas cotidianas, ni siquiera en las tareas administrativas. En lugar de ello,es mejor ceñirse a la práctica recomendada de utilizar exclusivamente usuario raíz para crear el primerusuario de IAM. A continuación, guarde las credenciales de usuario raíz en un lugar seguro y utilícelasúnicamente para algunas tareas de administración de cuentas y servicios.

Usuarios y grupos de IAMUn usuario de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos para unasola persona o aplicación. Un usuario de IAM puede tener credenciales a largo plazo, como un nombrede usuario y una contraseña o un conjunto de claves de acceso. Para obtener más información acerca decómo generar claves de acceso, consulte Administración de las claves de acceso de los usuarios de IAMen la Guía del usuario de IAM. Al generar claves de acceso para un usuario de IAM, asegúrese de ver y

355

Amazon Pinpoint Guía para desarrolladoresAutenticación con identidades

guardar de forma segura el par de claves. No puede recuperar la clave de acceso secreta en el futuro. Ensu lugar, debe generar un nuevo par de claves de acceso.

Un grupo de IAM es una identidad que especifica un conjunto de usuarios de IAM. No puede iniciar sesióncomo grupo. Puede usar los grupos para especificar permisos para varios usuarios a la vez. Los gruposfacilitan la administración de los permisos de grandes conjuntos de usuarios. Por ejemplo, podría tener ungrupo cuyo nombre fuese Administradores de IAM y conceder permisos a dicho grupo para administrar losrecursos de IAM.

Los usuarios son diferentes de los roles. Un usuario se asocia exclusivamente a una persona o aplicación,pero la intención es que cualquier usuario pueda asumir un rol que necesite. Los usuarios tienencredenciales permanentes a largo plazo y los roles proporcionan credenciales temporales. Para obtenermás información, consulte Cuándo crear un usuario de IAM (en lugar de un rol) en la Guía del usuario deIAM.

Roles de IAMUn rol de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos. Es similar aun usuario de IAM, pero no está asociado a una determinada persona. Puede asumir temporalmente unrol de IAM en la Consola de administración de AWS cambiando de roles. Puede asumir un rol llamandoa una operación de la AWS CLI o de la API de AWS, o utilizando una URL personalizada. Para obtenermás información acerca de los métodos para el uso de roles, consulte Uso de roles de IAM en la Guía delusuario de IAM.

Los roles de IAM con credenciales temporales son útiles en las siguientes situaciones:

• Permisos de usuario temporales de IAM: un usuario de IAM puede asumir un rol de IAM para recibirtemporalmente permisos distintos que le permitan realizar una tarea concreta.

• Acceso de usuario federado: En lugar de crear un usuario de IAM, puede utilizar identidades existentesde AWS Directory Service, del directorio de usuarios de la empresa o de un proveedor de identidadesweb. A estas identidades se les llama usuarios federados. AWS asigna una función a un usuariofederado cuando se solicita acceso a través de un proveedor de identidad. Para obtener másinformación acerca de los usuarios federados, consulte Usuarios federados y roles en la Guía delusuario de IAM.

• Acceso entre cuentas: puede utilizar un rol de IAM para permitir que alguien (una entidad principal deconfianza) de otra cuenta obtenga acceso a los recursos de su cuenta. Los roles son la forma principalde conceder acceso entre cuentas. Sin embargo, con algunos servicios de AWS, puede asociar unapolítica directamente a un recurso (en lugar de utilizar un rol como proxy). Para obtener informaciónacerca de la diferencia entre los roles y las políticas basadas en recursos para el acceso entre cuentas,consulte Cómo los roles de IAM difieren de las políticas basadas en recursos en la Guía del usuario deIAM.

• Acceso a servicios de AWS: Un rol de servicio es un rol de IAM que un servicio asume para realizaracciones en su cuenta en su nombre. Al configurar algunos de los entornos de los servicios de AWS,debe definir un rol que el servicio asumirá. Este rol de servicio debe incluir todos los permisos queson necesarios para que el servicio pueda acceder a los recursos de AWS que necesita. Los roles deservicio varían de servicio a servicio, pero muchos le permiten elegir sus permisos, siempre y cuandose cumplan los requisitos documentados para dicho servicio. Los roles de servicio ofrecen acceso solodentro de su cuenta y no se pueden utilizar para otorgar acceso a servicios en otras cuentas. Puedecrear, modificar y eliminar un rol de servicio desde IAM. Por ejemplo, puede crear un rol que permitaa Amazon Redshift tener acceso a un bucket de Amazon S3 en su nombre y, a continuación, cargarlos datos de ese bucket en un clúster de Amazon Redshift. Para obtener más información, consulteCreación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.

• Aplicaciones que se ejecutan en Amazon EC2: Puede utilizar un rol de IAM para administrarcredenciales temporales para las aplicaciones que se ejecutan en una instancia EC2 y realizansolicitudes de la AWS CLI o la API de AWS. Es preferible hacerlo de este modo a almacenar claves deacceso en la instancia EC2. Para asignar un rol de AWS a una instancia EC2 y ponerla a disposición detodas las aplicaciones, cree un perfil de instancia asociado a la misma. Un perfil de instancia contiene el

356

Amazon Pinpoint Guía para desarrolladoresAdministración de acceso mediante políticas

rol y permite a los programas que se ejecutan en la instancia EC2 obtener credenciales temporales. Paraobtener más información, consulte Uso de un rol de IAM para conceder permisos a aplicaciones que seejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.

Para obtener información acerca del uso de los roles de IAM, consulte Cuándo crear un rol de IAM (en vezde un usuario) en la Guía del usuario de IAM.

Administración de acceso mediante políticasPara controlar el acceso en AWS, se crean políticas y se asocian a identidades de IAM o recursos deAWS. Una política es un objeto de AWS que, cuando se asocia a una identidad o un recurso, definesus permisos. AWS evalúa estas políticas cuando una entidad principal (usuario raíz, usuario de IAM orol de IAM) realiza una solicitud. Los permisos en las políticas determinan si la solicitud se permite o sedeniega. Las mayoría de las políticas se almacenan en AWS como documentos JSON. Para obtenermás información acerca de la estructura y el contenido de los documentos de política JSON, consulteInformación general de las políticas de JSON en la Guía del usuario de IAM.

Un administrador de IAM puede utilizar las políticas para especificar quién tiene acceso a los recursos deAWS y qué acciones se pueden realizar en dichos recursos. Cada entidad de IAM (usuario o rol) comienzasin permisos. En otras palabras, de forma predeterminada, los usuarios no pueden hacer nada, ni siquieracambiar sus propias contraseñas. Para conceder permiso a un usuario para hacer algo, el administradordebe asociarle una política de permisos. O bien el administrador puede añadir al usuario a un grupo quetenga los permisos necesarios. Cuando el administrador concede permisos a un grupo, todos los usuariosde ese grupo obtienen los permisos.

Las políticas de IAM definen permisos para una acción independientemente del método que se utilicepara realizar la operación. Por ejemplo, suponga que dispone de una política que permite la accióniam:GetRole. Un usuario con dicha política puede obtener información del usuario de la Consola deadministración de AWS, la AWS CLI o la API de AWS.

Políticas basadas en la identidadLas políticas basadas en identidad son documentos de políticas de permisos JSON que puede asociara una identidad, como por ejemplo un usuario, un rol o un grupo de IAM. Estas políticas controlan quéacciones puede realizar dicha identidad, en qué recursos y en qué condiciones. Para obtener másinformación acerca de cómo crear una política basada en identidad, consulte Creación de políticas de IAMen la Guía del usuario de IAM.

Las políticas basadas en identidad pueden clasificarse además como políticas insertadas o políticasadministradas. Las políticas insertadas se integran directamente en un único usuario, grupo o rol. Laspolíticas administradas son políticas independientes que puede asociar a varios usuarios, grupos y rolesde su cuenta de AWS. Las políticas administradas incluyen las políticas administradas por AWS y laspolíticas administradas por el cliente. Para obtener más información acerca de cómo elegir una políticaadministrada o una política insertada, consulte Elegir entre políticas administradas y políticas insertadas enla Guía del usuario de IAM.

Amazon Pinpoint admite el uso de políticas basadas en la identidad para controlar el acceso a los recursosde Amazon Pinpoint.

Políticas basadas en recursosLas políticas basadas en recursos son documentos de política JSON que puede asociar a un recursocomo, por ejemplo, un bucket de Amazon S3. Los administradores de servicios pueden utilizar estaspolíticas para definir qué acciones puede realizar un principal especificado (miembro de cuenta, usuario orol) en dicho recurso y bajo qué condiciones. Las políticas basadas en recursos son políticas insertadas.No existen políticas basadas en recursos que sean administradas.

357

Amazon Pinpoint Guía para desarrolladoresFuncionamiento de Amazon Pinpoint con IAM

Amazon Pinpoint admite el uso de políticas basadas en recursos para controlar el acceso a los recursos deAmazon Pinpoint.

Listas de control de acceso (ACL)Las listas de control de acceso (ACL) son un tipo de política que controlan qué entidades principales(cuentas, miembros, usuarios o roles) tienen permisos para obtener acceso a un recurso. Las ACL sonsimilares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticaJSON. Amazon S3, AWS WAF y Amazon VPC son ejemplos de servicios que admiten ACL. Para obtenermás información sobre las ACL, consulte Información general de las Access Control Lists (ACL, Listas decontrol de acceso) en la Guía para desarrolladores de Amazon Simple Storage Service.

Amazon Pinpoint no admite el uso de ACL para controlar el acceso a los recursos de Amazon Pinpoint.

Otros tipos de políticasAWS admite otros tipos de políticas menos frecuentes. Estos tipos de políticas pueden establecer elmáximo de permisos que los tipos de políticas más frecuentes le otorgan.

• Límites de permisos: un límite de permisos es una característica avanzada que le permite definir lospermisos máximos que una política basada en identidad puede conceder a una entidad de IAM (usuarioo rol de IAM). Puede establecer un límite de permisos para una identidad. Los permisos resultantes sonla intersección de las políticas basadas en identidades de la entidad y los límites de sus permisos. Laspolíticas basadas en recursos que especifiquen el usuario o rol en el campo Principal no estaránrestringidas por el límite de permisos. Una denegación explícita en cualquiera de estas políticas anularáel permiso. Para obtener más información acerca de los límites de permisos, consulte see Límites depermisos para las entidades de IAM en la Guía del usuario de IAM.

• Políticas de control de servicios (SCP): las SCP son políticas de JSON que especifican los permisosmáximos para una organización o unidad organizativa (OU) en AWS Organizations. AWS Organizationses un servicio que le permite agrupar y administrar de forma centralizada varias cuentas de AWSque posee su negocio. Si habilita todas las funciones en una organización, entonces podrá aplicarpolíticas de control de servicio (SCP) a una o todas sus cuentas. Una SCP limita los permisos para lasentidades de las cuentas de miembros, incluido cada Usuario de la cuenta raíz de AWS. Para obtenermás información acerca de Organizaciones y las SCP, consulte Funcionamiento de las SCP en la Guíadel usuario de AWS Organizations.

• Políticas de sesión: las políticas de sesión son políticas avanzadas que se pasan como parámetrocuando se crea una sesión temporal mediante programación para un rol o un usuario federado. Lospermisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y laspolíticas de la sesión. Los permisos también pueden proceder de una política basada en recursos. Unadenegación explícita en cualquiera de estas políticas anulará el permiso. Para obtener más información,consulte Políticas de sesión en la Guía del usuario de IAM.

Amazon Pinpoint admite el uso de estos tipos de políticas para controlar el acceso a los recursos deAmazon Pinpoint.

Varios tipos de políticasCuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicadosde entender. Para obtener información acerca de cómo AWS determina si permitir una solicitud cuandohay varios tipos de políticas implicados, consulte Lógica de evaluación de políticas en la Guía del usuariode IAM.

Funcionamiento de Amazon Pinpoint con IAMPara utilizar Amazon Pinpoint, los usuarios de su cuenta de AWS requieren permisos que les permitan verlos datos de análisis, definir segmentos de usuarios, implementar campañas, etc. Si integra una aplicación

358

Amazon Pinpoint Guía para desarrolladoresFuncionamiento de Amazon Pinpoint con IAM

móvil o web con Amazon Pinpoint, los usuarios de su aplicación también requieren acceso a AmazonPinpoint. Este acceso permite que su aplicación registre los datos de uso y punto de enlace en AmazonPinpoint. Para conceder acceso a las características de Amazon Pinpoint, cree políticas de AWS Identityand Access Management (IAM) que permitan acciones de Amazon Pinpoint para identidades de IAM orecursos de Amazon Pinpoint.

IAM es un servicio que ayuda a los administradores a controlar de forma segura el acceso a losrecursos de AWS. Las políticas de IAM incluyen instrucciones que permiten o deniegan accionesespecíficas a usuarios específicos o en recursos concretos. Amazon Pinpoint proporciona un conjunto deacciones (p. 363) que puede utilizar en las políticas de IAM para especificar permisos pormenorizadospara los usuarios y recursos de Amazon Pinpoint. Esto significa que puede conceder el nivel adecuado deacceso a Amazon Pinpoint sin necesidad de crear políticas demasiado permisivas, algo que podría dejarexpuestos datos importantes o poner en peligro sus recursos. Por ejemplo, puede conceder acceso sinrestricciones a un administrador de Amazon Pinpoint y conceder acceso de solo lectura a las personas quesolo necesiten acceso a un proyecto específico.

Antes de utilizar IAM para administrar el acceso a Amazon Pinpoint, debe saber qué características deIAM están disponibles para utilizarse con Amazon Pinpoint. Para obtener una perspectiva general de cómoAmazon Pinpoint y otros servicios de AWS funcionan con IAM, consulte Servicios de AWS que funcionancon IAM en la Guía del usuario de IAM.

Temas• Políticas basadas en identidad de Amazon Pinpoint (p. 359)• Políticas basadas en recursos de Amazon Pinpoint (p. 361)• Autorización basada en etiquetas de Amazon Pinpoint (p. 362)• Roles de IAM de Amazon Pinpoint (p. 362)

Políticas basadas en identidad de Amazon PinpointCon las políticas basadas en identidad de IAM, puede especificar las acciones permitidas o denegadas ylos recursos además de las condiciones en las que se permiten o deniegan las acciones. Amazon Pinpointadmite acciones, recursos y claves de condiciones específicos. Para obtener más información acerca delos elementos que puede utilizar en una política de JSON, consulte Referencia de los elementos de laspolíticas de JSON de IAM en la Guía del usuario de IAM.

ActionsEl elemento Action de una política basada en la identidad de IAM describe la acción o las accionesespecíficas que la política permitirá o denegará. Las acciones de la política generalmente tienen el mismonombre que la operación de API de AWS asociada. La acción se utiliza en una política para otorgarpermisos para realizar la operación asociada.

Esto significa que las acciones de la política controlan lo que los usuarios pueden hacer en la consola deAmazon Pinpoint. También controlan lo que los usuarios pueden hacer mediante programación con losSDK AWS, la AWS Command Line Interface (AWS CLI) o con las API de Amazon Pinpoint directamente.

Las acciones de política de Amazon Pinpoint utilizan los prefijos siguientes:

• mobiletargeting: para las acciones que se derivan de la API de , que es la API principal de AmazonPinpoint.

• sms-voice: para las acciones que se derivan de la API de SMS y voz de Amazon Pinpoint, que es unaAPI complementaria que proporciona opciones avanzadas para usar y administrar los canales de SMS yvoz en Amazon Pinpoint.

Por ejemplo, para conceder a alguien permiso para ver información sobre todos los segmentos de unproyecto, que es una acción que corresponde a la operación GetSegments de la API Amazon Pinpoint,

359

Amazon Pinpoint Guía para desarrolladoresFuncionamiento de Amazon Pinpoint con IAM

incluya la acción mobiletargeting:GetSegments en su política. Las instrucciones de política debenincluir un elemento Action o NotAction. Amazon Pinpoint define su propio conjunto de acciones, quedescriben las tareas que se pueden realizar con este servicio.

Para especificar varias acciones en una única instrucción, sepárelas con comas:

"Action": [ "mobiletargeting:action1", "mobiletargeting:action2"

También puede utilizar caracteres comodín (*) para especificar varias acciones. Por ejemplo, paraespecificar todas las acciones que comiencen por la palabra Get, incluya la siguiente acción:

"Action": "mobiletargeting:Get*"

Sin embargo, recomendamos que las políticas se creen según el principio de privilegios mínimos. Enotras palabras, debe crear políticas que incluyan solo los permisos necesarios para realizar una acciónespecífica.

Para obtener una lista de las acciones de Amazon Pinpoint que puede utilizar en las políticas de IAM,consulte Acciones de Amazon Pinpoint para políticas de IAM (p. 363).

Recursos

El elemento Resource especifica el objeto u objetos a los que se aplica la acción. Las instrucciones debencontener un elemento Resource o NotResource. Especifique un recurso con un ARN o el caráctercomodín (*) para indicar que la instrucción se aplica a todos los recursos.

.

Por ejemplo, la acción mobiletargeting:GetSegments recupera información sobre todos lossegmentos asociados a un proyecto de Amazon Pinpoint específico. Identifica un proyecto con un ARN conel siguiente formato:

arn:aws:mobiletargeting:${Region}:${Account}:apps/${projectId}

Para obtener más información acerca del formato de los ARN, consulte Nombres de recursos de Amazon(ARN) en la AWS General Reference.

En las políticas de IAM, puede especificar ARN para los siguientes tipos de recursos de Amazon Pinpoint:

• Campañas• Recorridos• Plantillas de mensajes (denominadas plantillas en algunos contextos)• Proyectos (denominados apps o aplicaciones en algunos contextos)• Modelos de recomendación (denominados recomendadores en algunos contextos)• Segmentos

Por ejemplo, para crear una instrucción de política para el proyecto con el ID de proyecto810c7aab86d42fb2b56c8c966example, utilice el siguiente ARN:

"Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/810c7aab86d42fb2b56c8c966example"

360

Amazon Pinpoint Guía para desarrolladoresFuncionamiento de Amazon Pinpoint con IAM

Para especificar todos los proyectos que pertenecen a una cuenta específica, utilice el carácter comodín(*):

"Resource": "arn:aws:mobiletargeting:us-east-1:123456789012:apps/*"

Algunas acciones de Amazon Pinpoint, como determinadas acciones para crear recursos, no se puedenllevar a cabo en un recurso específico. En dichos casos, debe utilizar el carácter comodín (*):

"Resource": "*"

Algunas acciones de la API de Amazon Pinpoint implican varios recursos. Por ejemplo, la acciónTagResource puede agregar una etiqueta a varios proyectos. Para especificar varios recursos en unaúnica instrucción, separe los ARN con comas:

"Resource": [ "resource1", "resource2"

Para ver una lista de los tipos de recursos de Amazon Pinpoint y sus ARN, consulte Recursos definidos porAmazon Pinpoint en la Guía del usuario de IAM. Para saber qué acciones puede especificar con el ARN decada tipo de recurso, consulte Acciones definidas por Amazon Pinpoint en la Guía del usuario de IAM.

Claves de condiciónEl elemento Condition (o bloque de Condition) permite especificar condiciones en las que entra envigor una instrucción. El elemento Condition es opcional. Puede crear expresiones condicionales queutilizan operadores de condición, tales como igual o menor que, para que coincida la condición de lapolítica con valores de la solicitud.

Si especifica varios elementos de Condition en una instrucción o varias claves en un único elemento deCondition, AWS las evalúa mediante una operación AND lógica. Si especifica varios valores para unaúnica clave de condición, AWS evalúa la condición con una operación lógica OR. Se deben cumplir todaslas condiciones antes de que se concedan los permisos de la instrucción.

También puede utilizar variables de marcador de posición al especificar condiciones. Por ejemplo, puedeconceder un permiso de usuario de IAM para acceder a un recurso solo si está etiquetado con su nombrede usuario de IAM. Para obtener más información, consulte Elementos de la política de IAM: Variables yetiquetas en la Guía del usuario de IAM.

Amazon Pinpoint define su propio conjunto de claves de condición y también admite algunas claves decondición globales. Para obtener una lista de todas las claves de condición globales de AWS, consulteClaves de contexto de condición globales de AWS en la Guía del usuario de IAM. Para ver una lista declaves de condición de Amazon Pinpoint, consulte Claves de condición de Amazon Pinpoint en la Guíadel usuario de IAM. Para conocer las acciones y los recursos con los que puede utilizar una clave decondición, consulte Acciones definidas por Amazon Pinpoint en la Guía del usuario de IAM.

Ejemplos

Para ver ejemplos de políticas basadas en identidad de Amazon Pinpoint, consulte Ejemplos de políticasbasadas en identidad de Amazon Pinpoint (p. 382).

Políticas basadas en recursos de Amazon PinpointLas políticas basadas en recursos son documentos de política de JSON que especifican qué accionespuede realizar una entidad principal especificada en un recurso de Amazon Pinpoint y en qué condiciones.

361

Amazon Pinpoint Guía para desarrolladoresFuncionamiento de Amazon Pinpoint con IAM

Amazon Pinpoint admite políticas de permisos basados en recursos para campañas, recorridos, plantillasde mensajes (plantillas), modelos de recomendación (recomendadores), proyectos (aplicaciones) ysegmentos. Las políticas basadas en recursos le permiten conceder a otras cuentas permisos de uso paracada recurso. También puede utilizar una política basada en recursos para permitir que otro servicio deAWS tenga acceso a estos tipos de recursos de Amazon Pinpoint.

Para hacer posible el acceso entre cuentas, puede especificar toda una cuenta o entidades de IAM deotra cuenta como la entidad principal de la política basada en recursos. Añadir a una política basada enrecursos una entidad principal entre cuentas es solo una parte del establecimiento de una relación deconfianza. Cuando el principal y el recurso se encuentran en cuentas de AWS diferentes, también debeconceder a la entidad principal permiso para obtener acceso al recurso. Conceda permiso asociando ala entidad una política basada en identidades. Sin embargo, si la política basada en recursos concedeel acceso a una entidad principal de la misma cuenta, no es necesaria una política basada en identidadadicional. Para obtener más información, consulte Cómo los roles de IAM difieren de las políticas basadasen recursos en la Guía del usuario de IAM.

Ejemplos

Para ver ejemplos de políticas basadas en recursos de Amazon Pinpoint, consulte Ejemplos de políticabasada en recursos de Amazon Pinpoint (p. 389).

Autorización basada en etiquetas de Amazon Pinpoint.

Puede asociar etiquetas a determinados tipos de recursos de Amazon Pinpoint o pasar etiquetas enuna solicitud a Amazon Pinpoint. Para controlar el acceso basado en etiquetas, debe proporcionarinformación de las etiquetas en el elemento condition de una política utilizando las claves de condiciónaws:ResourceTag/${TagKey}, aws:RequestTag/${TagKey} o aws:TagKeys.

Para obtener información sobre cómo etiquetar los recursos de Amazon Pinpoint, incluida una política deIAM de ejemplo, consulte Etiquetado de recursos de Amazon Pinpoint (p. 324).

Roles de IAM de Amazon PinpointUn rol de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos.

Uso de credenciales temporales con Amazon PinpointPuede utilizar credenciales temporales para iniciar sesión con federación, asumir un rol de IAM o asumirun rol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen mediante unallamada a operaciones de la API de AWS Security Token Service (AWS STS), como AssumeRole oGetFederationToken.

Amazon Pinpoint admite el uso de credenciales temporales.

Roles vinculados a serviciosLos roles vinculados a servicios permiten a los servicios de AWS obtener acceso a los recursos de otrosservicios para completar una acción en su nombre. Los roles vinculados a servicios aparecen en la cuentade IAM y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos delos roles vinculados a servicios.

Amazon Pinpoint no utiliza roles vinculados a servicios.

Roles de servicioEsta característica permite que un servicio asuma un rol de servicio en nombre de usted. Este rol permiteque el servicio obtenga acceso a los recursos de otros servicios para completar una acción en su nombre.

362

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

Los roles de servicio aparecen en su cuenta de IAM y son propiedad de la cuenta. Esto significa que unadministrador de IAM puede cambiar los permisos de este rol. Sin embargo, hacerlo podría deteriorar lafuncionalidad del servicio.

Amazon Pinpoint admite el uso de roles de servicio.

Acciones de Amazon Pinpoint para políticas de IAMPara administrar el acceso a los recursos de Amazon Pinpoint de su cuenta de AWS, puede agregaracciones de Amazon Pinpoint a políticas de AWS Identity and Access Management (IAM). Mediante lasacciones de las políticas, puede controlar lo que los usuarios pueden hacer en la consola de AmazonPinpoint. También puede controlar lo que los usuarios pueden hacer mediante programación utilizando losSDK de AWS, la AWS Command Line Interface (AWS CLI) o las API de Amazon Pinpoint directamente.

En una política, cada acción se especifica con el espacio de nombres de Amazon Pinpoint correspondienteseguido de dos puntos y el nombre de la acción, como GetSegments. La mayoría de las acciones secorresponden con una solicitud a la API de Amazon Pinpoint mediante un método URI y HTTP específico.Por ejemplo, si permite la acción mobiletargeting:GetSegments en la política de un usuario, elusuario puede recuperar información sobre todos los segmentos de un proyecto enviando una solicitudHTTP GET al URI /apps/projectId/segments. Esta política también permite al usuario ver esainformación en la consola y recuperarla mediante un SDK de AWS o la AWS CLI.

Cada acción se realiza en un recurso de Amazon Pinpoint específico, que se identifica en unadeclaración de una política por su nombre de recurso de Amazon (ARN). Por ejemplo, la acciónmobiletargeting:GetSegments se realiza en un proyecto específico, que se identifica con el ARNarn:aws:mobiletargeting:region:accountId:apps/projectId.

En este tema se identifican las acciones de Amazon Pinpoint que puede agregar a políticas de IAMpara su cuenta de AWS. Para ver ejemplos que muestren cómo utilizar las acciones de las políticaspara administrar el acceso a los recursos de Amazon Pinpoint, consulte Ejemplos de políticas basadasen identidad de Amazon Pinpoint (p. 382) y Ejemplos de política basada en recursos de AmazonPinpoint (p. 389).

Temas• Acciones de la API de Amazon Pinpoint (p. 363)• Acciones de la API de SMS y voz de Amazon Pinpoint (p. 381)

Acciones de la API de Amazon PinpointEn esta sección se identifican las acciones para las características que están disponibles en la API deAmazon Pinpoint, que es la API principal de Amazon Pinpoint. Para obtener más información sobre la API,consulte la Referencia de la API de Amazon Pinpoint.

Categorías:• Analytics y métricas (p. 364)• Campañas (p. 365)• Canales (p. 366)• Puntos de enlace (p. 370)• Secuencias de eventos (p. 371)• Trabajos de exportación (p. 371)• Trabajos de importación (p. 372)• Recorridos (p. 372)• Plantillas de mensajes (p. 373)• Mensajes (p. 376)

363

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• Validación de números de teléfono (p. 377)• Proyectos (p. 377)• Modelos de recomendación (p. 378)• Segmentos (p. 379)• Etiquetas (p. 380)• Usuarios (p. 381)

Analytics y métricasLos siguientes permisos están relacionados con la visualización de datos de análisis en la consola deAmazon Pinpoint. También están relacionados con la recuperación (consulta) de datos agregados paramétricas estándar, denominados también indicadores clave de rendimiento (KPI), que se aplican aproyectos, campañas y recorridos.

mobiletargeting:GetReports

Ver datos de análisis en la consola de Amazon Pinpoint.• URI – No aplicable• Método – No aplicable• ARN de recurso – arn:aws:mobiletargeting:region:accountId:reports

mobiletargeting:GetApplicationDateRangeKpi

Permite recuperar (consultar) datos acumulados de una métrica de aplicación estándar. Es unamétrica que se aplica a todas las campañas o mensajes transaccionales asociados con un proyecto.• URI – /apps/projectId/kpis/daterange/kpi-name• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/kpis/daterange/kpi-name

mobiletargeting:GetCampaignDateRangeKpi

Permite recuperar (consultar) datos acumulados de una métrica de campaña estándar. Es una métricaque se aplica a una campaña individual.• URI: /apps/projectId/campaigns/campaignId/kpis/daterange/kpi-name• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId/kpis/daterange/kpi-name

mobiletargeting:GetJourneyDateRangeKpi

Permite recuperar (consultar) datos acumulados de una métrica de interacción del recorrido estándar.Es una métrica de interacción que se aplica a un recorrido individual; por ejemplo, el número demensajes abiertos por los participantes de todas las actividades de un recorrido.• URI: /apps/projectId/journeys/journeyId/kpis/daterange/kpi-name• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/kpis/daterange/kpi-name

mobiletargeting:GetJourneyExecutionMetrics

Permite recuperar (consultar) datos acumulados de métricas de ejecución estándar que se aplican aun recorrido individual; por ejemplo, el número de participantes que avanzan por todas las actividadesde un recorrido.• URI: /apps/projectId/journeys/journeyId/execution-metrics• Método – GET

364

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/execution-metrics

mobiletargeting:GetJourneyExecutionActivityMetrics

Permite recuperar (consultar) datos acumulados de métricas de ejecución estándar que se aplicana una actividad individual en un recorrido; por ejemplo, el número de participantes que iniciaron ocompletaron la actividad.• URI: /apps/projectId/journeys/journeyId/activities/journey-activity-id/execution-metrics

• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/activities/journey-activity-id/execution-metrics

Campañas

Los siguientes permisos están relacionados con la administración de campañas en la cuenta de AmazonPinpoint.

mobiletargeting:CreateCampaign

Permite crear una campaña para un proyecto.• URI – /apps/projectId/campaigns• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns

mobiletargeting:DeleteCampaign

Elimine una campaña específica.• URI – /apps/projectId/campaigns/campaignId• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

mobiletargeting:GetCampaign

Recupere información acerca de una campaña específica.• URI – /apps/projectId/campaigns/campaignId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

mobiletargeting:GetCampaignActivities

Recupere información acerca de las actividades realizadas por una campaña.• URI – /apps/projectId/campaigns/campaignId/activities• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

mobiletargeting:GetCampaigns

Permite recuperar información acerca de todas las campañas de un proyecto.• URI – /apps/projectId/campaigns• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

365

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:GetCampaignVersion

Recupere información acerca de la versión de una campaña específica.• URI – /apps/projectId/campaigns/campaignId/versions/versionId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

mobiletargeting:GetCampaignVersions

Recupere información acerca de las versiones actual y anteriores de una campaña.• URI – /apps/projectId/campaigns/campaignId/versions• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

mobiletargeting:UpdateCampaign

Actualice una campaña específica.• URI – /apps/projectId/campaigns/campaignId• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/campaigns/campaignId

Canales

Los siguientes permisos están relacionados con la administración de canales en la cuenta de AmazonPinpoint. En Amazon Pinpoint, al hablar de canales, se hace referencia a los métodos que se utilizan paracontactar con los clientes, como el envío de correo electrónico, mensajes SMS o notificaciones push.

mobiletargeting:DeleteAdmChannel

Permite deshabilitar el canal de Amazon Device Messaging (ADM) de un proyecto.• URI – /apps/projectId/channels/adm• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/adm

mobiletargeting:GetAdmChannel

Permite recuperar información sobre el canal de ADM de un proyecto.• URI – /apps/projectId/channels/adm• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/adm

mobiletargeting:UpdateAdmChannel

Permite habilitar o actualizar el canal de ADM de un proyecto.• URI – /apps/projectId/channels/adm• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/adm

mobiletargeting:DeleteApnsChannel

Permite deshabilitar el canal de Apple Push Notification service (APNs) de un proyecto.

366

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• URI – /apps/projectId/channels/apns• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns

mobiletargeting:GetApnsChannel

Permite recuperar información acerca del canal de APNs de un proyecto.• URI – /apps/projectId/channels/apns• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns

mobiletargeting:UpdateApnsChannel

Permite habilitar o actualizar el canal de APNs de un proyecto.• URI – /apps/projectId/channels/apns• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns

mobiletargeting:DeleteApnsSandboxChannel

Permite deshabilitar el canal del entorno de pruebas de APNs de un proyecto.• URI – /apps/projectId/channels/apns_sandbox• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_sandbox

mobiletargeting:GetApnsSandboxChannel

Permite recuperar información sobre el canal del entorno de pruebas de APNs de un proyecto.• URI – /apps/projectId/channels/apns_sandbox• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_sandbox

mobiletargeting:UpdateApnsSandboxChannel

Permite habilitar o actualizar el canal de entorno de pruebas de APNs de un proyecto.• URI – /apps/projectId/channels/apns_sandbox• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_sandbox

mobiletargeting:DeleteApnsVoipChannel

Permite deshabilitar el canal de VoIP de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip

mobiletargeting:GetApnsVoipChannel

Permite recuperar información acerca del canal de VoIP de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip• Método – GET

367

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip

mobiletargeting:UpdateApnsVoipChannel

Permite habilitar o actualizar el canal VoIP de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip

mobiletargeting:DeleteApnsVoipChannel

Permite deshabilitar el canal del entorno de pruebas VoIP de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip_sandbox• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip_sandbox

mobiletargeting:GetApnsVoipChannel

Permite recuperar información sobre el canal del entorno de pruebas VoIP de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip_sandbox• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip_sandbox

mobiletargeting:UpdateApnsVoipChannel

Permite habilitar o actualizar el canal VoIP del entorno de pruebas de APNs de un proyecto.• URI – /apps/projectId/channels/apns_voip_sandbox• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/apns_voip_sandbox

mobiletargeting:DeleteBaiduChannel

Permite deshabilitar el canal de Baidu Cloud Push de un proyecto.• URI – /apps/projectId/channels/baidu• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/baidu

mobiletargeting:GetBaiduChannel

Permite recuperar información sobre el canal de Baidu Cloud Push de un proyecto.• URI – /apps/projectId/channels/baidu• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/baidu

mobiletargeting:UpdateBaiduChannel

Permite habilitar o actualizar el canal de Baidu Cloud Push para un proyecto.• URI – /apps/projectId/channels/baidu• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/baidu

368

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:DeleteEmailChannel

Permite deshabilitar el canal de correo electrónico de un proyecto• URI – /apps/projectId/channels/email• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/email

mobiletargeting:GetEmailChannel

Permite recuperar información sobre el canal de correo electrónico de un proyecto.• URI – /apps/projectId/channels/email• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/email

mobiletargeting:UpdateEmailChannel

Permite habilitar o actualizar el canal de correo electrónico de un proyecto.• URI – /apps/projectId/channels/email• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/email

mobiletargeting:DeleteGcmChannel

Permite deshabilitar el canal de Mensajería de la nube de Firebase (FCM) de un proyecto. Este canalpermite a Amazon Pinpoint enviar notificaciones push a una aplicación Android a través del servicioFCM, que sustituye al servicio Google Cloud Messaging (GCM).• URI – /apps/projectId/channels/gcm• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/gcm

mobiletargeting:GetGcmChannel

Permite recuperar información acerca del canal de FCM de un proyecto. Este canal permite a AmazonPinpoint enviar notificaciones push a una aplicación Android a través del servicio FCM, que sustituyeal servicio Google Cloud Messaging (GCM).• URI – /apps/projectId/channels/gcm• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/gcm

mobiletargeting:UpdateGcmChannel

Permite habilitar o actualizar el canal de FCM de un proyecto. Este canal permite a Amazon Pinpointenviar notificaciones push a una aplicación Android a través del servicio FCM, que sustituye al servicioGoogle Cloud Messaging (GCM).• URI – /apps/projectId/channels/gcm• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/gcm

mobiletargeting:DeleteSmsChannel

Permite deshabilitar el canal de SMS de un proyecto• URI – /apps/projectId/channels/sms

369

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/sms

mobiletargeting:GetSmsChannel

Permite recuperar información acerca del canal de SMS de un proyecto.• URI – /apps/projectId/channels/sms• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/sms

mobiletargeting:UpdateSmsChannel

Permite habilitar o actualizar el canal de SMS de un proyecto.• URI – /apps/projectId/channels/sms• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/channels/sms

Puntos de enlace

Los siguientes permisos están relacionados con la administración de puntos de enlace en la cuenta deAmazon Pinpoint. En Amazon Pinpoint, un punto de enlace constituye un destino único para los mensajes.Por ejemplo, un punto de enlace podría ser una dirección de correo electrónico del cliente, un número deteléfono o un token de dispositivo.

mobiletargeting:DeleteEndpoint

Permite eliminar un punto de enlace.• URI – /apps/projectId/endpoints/endpointId• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/endpoints/endpointId

mobiletargeting:GetEndpoint

Recupere información sobre un punto de enlace específico.• URI – /apps/projectId/endpoints/endpointId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/endpoints/endpointId

mobiletargeting:UpdateEndpoint

Cree un punto de enlace o actualice la información sobre uno.• URI – /apps/projectId/endpoints/endpointId• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/endpoints/endpointId

mobiletargeting:UpdateEndpointsBatch

Cree o actualice puntos de enlace como una operación por lotes.• URI – /apps/projectId/endpoints• Método – PUT

370

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

Secuencias de eventos

Los siguientes permisos están relacionados con la administración de secuencias de eventos para unacuenta de Amazon Pinpoint.

mobiletargeting:DeleteEventStream

Permite eliminar la secuencia de eventos de un proyecto.• URI – /apps/projectId/eventstream/• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/eventstream

mobiletargeting:GetEventStream

Permite recuperar información sobre la secuencia de eventos de un proyecto.• URI – /apps/projectId/eventstream/• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/eventstream

mobiletargeting:PutEventStream

Permite crear o actualizar una secuencia de eventos de un proyecto.• URI – /apps/projectId/eventstream/• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/eventstream

Trabajos de exportación

Los siguientes permisos están relacionados con la administración de trabajos de exportación en la cuentade Amazon Pinpoint. En Amazon Pinpoint, los trabajos de exportación se crean para enviar informaciónsobre puntos de enlace a un bucket de Amazon S3 que se va a utilizar para almacenamiento o análisis.

mobiletargeting:CreateExportJob

Cree un trabajo de exportación para exportar definiciones de puntos de enlace a Amazon S3.• URI – /apps/projectId/jobs/export• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/jobs/export

mobiletargeting:GetExportJob

Permite recuperar información sobre un trabajo de exportación específico de un proyecto.• URI – /apps/projectId/jobs/export/jobId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/jobs/export/jobId

mobiletargeting:GetExportJobs

Permite recuperar una lista de todos los trabajos de exportación de un proyecto.

371

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• URI – /apps/projectId/jobs/export• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/jobs/export

Trabajos de importación

Los siguientes permisos están relacionados con la administración de trabajos de importación en la cuentade Amazon Pinpoint. En Amazon Pinpoint, se crean trabajos de importación para generar segmentos enfunción de las definiciones de punto de enlace almacenadas en un bucket de Amazon S3.

mobiletargeting:CreateImportJob

Importe definiciones de punto de enlace desde Amazon S3 para crear un segmento.• URI – /apps/projectId/jobs/import• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

mobiletargeting:GetImportJob

Permite recuperar información sobre un trabajo de importación específico de un proyecto.• URI – /apps/projectId/jobs/import/jobId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/jobs/import/jobId

mobiletargeting:GetImportJobs

Permite recuperar información sobre todos los trabajos de importación de un proyecto.• URI – /apps/projectId/jobs/import• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

Recorridos

Los siguientes permisos están relacionados con la administración de recorridos en la cuenta de AmazonPinpoint.

mobiletargeting:CreateJourney

Permite crear un recorrido para un proyecto.• URI: /apps/projectId/journeys• Método – POST• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys

mobiletargeting:GetJourney

Recupera información sobre un segmento específico.• URI: /apps/projectId/journeys/journeyId• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId

372

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:ListJourneys

Permite recuperar información sobre todos los recorridos de un proyecto.• URI: /apps/projectId/journeys• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys

mobiletargeting:UpdateJourney

Permite actualizar la configuración y otros ajustes de un recorrido específico.• URI: /apps/projectId/journeys/journeyId• Método – PUT• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId

mobiletargeting:UpdateJourneyState

Permite cancelar un recorrido activo.• URI: /apps/projectId/journeys/journeyId/state• Método – PUT• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId/state

mobiletargeting:DeleteJourney

Elimina un viaje específico.• URI: /apps/projectId/journeys/journeyId• Método – DELETE• ARN del recurso: arn:aws:mobiletargeting:region:accountId:apps/projectId/journeys/journeyId

Plantillas de mensajes

Los siguientes permisos están relacionados con la creación y administración de plantillas de mensajespara la cuenta de Amazon Pinpoint. Una plantilla de mensaje es un conjunto de contenido y configuraciónque puede crear, guardar y volver a utilizar en los mensajes que envíe para cualquiera de los proyectos deAmazon Pinpoint.

mobiletargeting:ListTemplates

Permite recuperar información sobre todas las plantillas de mensajes asociadas a la cuenta deAmazon Pinpoint.• URI: /templates• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates

mobiletargeting:ListTemplateVersions

Recuperar información sobre todas las versiones de una plantilla de mensaje específica.• URI: /templates/template-name/template-type/versions• Método – GET• ARN de recursos – No se aplica

373

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:UpdateTemplateActiveVersion

Designe una versión específica de una plantilla de mensaje como la versión activa de la plantilla.• URI: /templates/template-name/template-type/active-version• Método – GET• ARN de recursos – No se aplica

mobiletargeting:GetEmailTemplate

Permite recuperar información sobre una plantilla de mensaje para los mensajes que se envían através del canal de correo electrónico.• URI: /templates/template-name/email• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/EMAIL

mobiletargeting:CreateEmailTemplate

Permite crear una plantilla de mensaje para los mensajes que se envían a través del canal de correoelectrónico.• URI: /templates/template-name/email• Método – POST• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/EMAIL

mobiletargeting:UpdateEmailTemplate

Permite actualizar una plantilla de mensaje existente para los mensajes que se envían a través delcanal de correo electrónico.• URI: /templates/template-name/email• Método – PUT• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/EMAIL

mobiletargeting:DeleteEmailTemplate

Permite eliminar una plantilla de mensaje para los mensajes enviados a través del canal de correoelectrónico.• URI: /templates/template-name/email• Método – DELETE• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/EMAIL

mobiletargeting:GetPushTemplate

Permite recuperar información sobre una plantilla de mensaje para los mensajes que se envían através de un canal de notificación push.• URI: /templates/template-name/push• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/PUSH

374

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:CreatePushTemplate

Permite crear una plantilla de mensaje para los mensajes que se envían a través de un canal denotificación push.• URI: /templates/template-name/push• Método – POST• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/PUSH

mobiletargeting:UpdatePushTemplate

Permite actualizar una plantilla de mensaje existente para los mensajes que se envían a través de uncanal de notificación push.• URI: /templates/template-name/push• Método – PUT• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/PUSH

mobiletargeting:DeletePushTemplate

Permite eliminar una plantilla de mensajes para los mensajes enviados a través de un canal denotificación push.• URI: /templates/template-name/push• Método – DELETE• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/PUSH

mobiletargeting:GetSmsTemplate

Permite recuperar información sobre una plantilla de mensaje para los mensajes que se envían através del canal de SMS.• URI: /templates/template-name/sms• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/SMS

mobiletargeting:CreateSmsTemplate

Permite crear una plantilla de mensaje para los mensajes que se envían a través del canal de SMS.• URI: /templates/template-name/sms• Método – POST• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/SMS

mobiletargeting:UpdateSmsTemplate

Permite actualizar una plantilla de mensaje existente para los mensajes que se envían a través delcanal de SMS.• URI: /templates/template-name/sms• Método – PUT

375

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/SMS

mobiletargeting:DeleteSmsTemplate

Permite eliminar una plantilla de mensaje para los mensajes enviados a través del canal de SMS.• URI: /templates/template-name/sms• Método – DELETE• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/SMS

mobiletargeting:GetVoiceTemplate

Permite recuperar información sobre una plantilla de mensaje para los mensajes que se envían através del canal de voz.• URI: /templates/template-name/voice• Método – GET• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/VOICE

mobiletargeting:CreateVoiceTemplate

Permite crear una plantilla de mensaje para los mensajes que se envían a través del canal de voz.• URI: /templates/template-name/voice• Método – POST• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/VOICE

mobiletargeting:UpdateVoiceTemplate

Permite actualizar una plantilla de mensaje existente para los mensajes que se envían a través delcanal de voz.• URI: /templates/template-name/voice• Método – PUT• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/VOICE

mobiletargeting:DeleteVoiceTemplate

Permite eliminar una plantilla de mensaje para los mensajes enviados a través del canal de voz.• URI: /templates/template-name/voice• Método – DELETE• ARN del recurso: arn:aws:mobiletargeting:region:accountId:templates/template-name/VOICE

Mensajes

Los siguientes permisos están relacionados con el envío de mensajes y notificaciones push desde unacuenta de Amazon Pinpoint. Puede utilizar las operaciones SendUsersMessages y SendMessages paraenviar mensajes a puntos de enlace específicos sin necesidad de tener que crear primero segmentos ycampañas.

mobiletargeting:SendMessages

Permite enviar un mensaje o una notificación push a puntos de enlace específicos.

376

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• URI – /apps/projectId/messages• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/messages

mobiletargeting:SendUsersMessages

Permite enviar un mensaje o una notificación push a todos los puntos de enlace asociados a un ID deusuario concreto.• URI – /apps/projectId/users-messages• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/users-messages

Validación de números de teléfono

Los siguientes permisos están relacionados con el uso del servicio de validación de números de teléfonode Amazon Pinpoint.

mobiletargeting:PhoneNumberValidate

Permite recuperar información sobre un número de teléfono.• URI – /phone/number/validate• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:phone/number/validate

Proyectos

Los siguientes permisos están relacionados con la administración de proyectos en la cuenta de AmazonPinpoint. En un principio, los proyectos se denominaban aplicaciones. Para los objetivos de estasoperaciones, una aplicación de Amazon Pinpoint es lo mismo que un proyecto de Amazon Pinpoint.

mobiletargeting:CreateApp

Cree un proyecto de Amazon Pinpoint.• URI – /apps• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps

mobiletargeting:DeleteApp

Permite eliminar un proyecto de Amazon Pinpoint.• URI – /apps/projectId• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

mobiletargeting:GetApp

Permite recuperar información de un proyecto de Amazon Pinpoint.• URI – /apps/projectId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

377

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

mobiletargeting:GetApps

Permite recuperar información sobre todos los proyectos asociados a la cuenta de Amazon Pinpoint.• URI – /apps• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps

mobiletargeting:GetApplicationSettings

Permite recuperar la configuración predeterminada de proyecto de Amazon Pinpoint.• URI – /apps/projectId/settings• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

mobiletargeting:UpdateApplicationSettings

Permite actualizar la configuración predeterminada de proyecto de Amazon Pinpoint.• URI – /apps/projectId/settings• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

Modelos de recomendación

Los siguientes permisos están relacionados con la administración de configuraciones de Amazon Pinpointpara recuperar y procesar datos de recomendaciones de modelos de recomendación. Un modelo derecomendación es un tipo de modelo de aprendizaje automático que predice y genera recomendacionespersonalizadas mediante la búsqueda de patrones en los datos.

mobiletargeting:CreateRecommenderConfiguration

Cree una configuración de Amazon Pinpoint para un modelo de recomendación.• URI: /recommenders• Método – POST• ARN de recurso: arn:aws:mobiletargeting:region:accountId:recommenders

mobiletargeting:GetRecommenderConfigurations

Recuperar información sobre todas las configuraciones de modelos de recomendación asociadas a sucuenta de Amazon Pinpoint.• URI: /recommenders• Método – GET• ARN de recurso: arn:aws:mobiletargeting:region:accountId:recommenders

mobiletargeting:GetRecommenderConfiguration

Recuperar información sobre una configuración individual de Amazon Pinpoint para un modelo derecomendación.• URI: /recommenders/recommenderId• Método – GET• ARN de recurso:arn:aws:mobiletargeting:region:accountId:recommenders/recommenderId

mobiletargeting:UpdateRecommenderConfiguration

Actualice una configuración de Amazon Pinpoint para un modelo de recomendación.

378

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• URI: /recommenders/recommenderId• Método – PUT• ARN de recurso:arn:aws:mobiletargeting:region:accountId:recommenders/recommenderId

mobiletargeting:GetRecommenderConfiguration

Elimine una configuración de Amazon Pinpoint para un modelo de recomendación.• URI: /recommenders/recommenderId• Método – DELETE• ARN de recurso:arn:aws:mobiletargeting:region:accountId:recommenders/recommenderId

Segmentos

Los siguientes permisos están relacionados con la administración de segmentos en la cuenta de AmazonPinpoint. En Amazon Pinpoint, los segmentos son grupos de destinatarios de las campañas que compartendeterminados atributos que usted defina.

mobiletargeting:CreateSegment

Permite crear un segmento. Para permitir que un usuario cree un segmento mediante laimportación de datos de punto de enlace desde fuera de Amazon Pinpoint, permita la acciónmobiletargeting:CreateImportJob.• URI – /apps/projectId/segments• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

mobiletargeting:DeleteSegment

Permite eliminar un segmento.• URI – /apps/projectId/segments/segmentId• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

mobiletargeting:GetSegment

Recupere información sobre un segmento específico.• URI – /apps/projectId/segments/segmentId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

mobiletargeting:GetSegmentExportJobs

Permite recuperar información sobre los trabajos que exportan definiciones de punto de enlace paraun segmento.• URI – /apps/projectId/segments/segmentId/jobs/export• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId/jobs/export

mobiletargeting:GetSegments

Permite recuperar información sobre todos los segmentos de un proyecto.

379

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• URI – /apps/projectId/segments• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId

mobiletargeting:GetSegmentImportJobs

Recupere información sobre los trabajos que crean segmentos mediante la importación dedefiniciones de punto de enlace desde Amazon S3.• URI – /apps/projectId/segments/segmentId/jobs/import• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

mobiletargeting:GetSegmentVersion

Recupere información acerca de la versión de un segmento específico.• URI – /apps/projectId/segments/segmentId/versions/versionId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

mobiletargeting:GetSegmentVersions

Recupere información acerca de las versiones actual y anteriores de un segmento.• URI – /apps/projectId/segments/segmentId/versions• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

mobiletargeting:UpdateSegment

Actualice un segmento específico.• URI – /apps/projectId/segments/segmentId• Método – PUT• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/segments/segmentId

Etiquetas

Los siguientes permisos están relacionados con la consulta y administración de etiquetas para recursos deAmazon Pinpoint.

mobiletargeting:ListTagsforResource

Permite recuperar información sobre las etiquetas que están asociadas con un proyecto, campaña,plantilla de mensaje o segmento.• URI – /tags/resource-arn• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:*

mobiletargeting:TagResource

Permite agregar una o más etiquetas a un proyecto, campaña, plantilla de mensaje o segmento.• URI – /tags/resource-arn

380

Amazon Pinpoint Guía para desarrolladoresAcciones de política de Amazon Pinpoint

• Método – POST• ARN de recurso – arn:aws:mobiletargeting:region:accountId:*

mobiletargeting:UntagResource

Permite quitar una o varias etiquetas de un proyecto, campaña, plantilla de mensaje o segmento.• URI – /tags/resource-arn• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:*

Usuarios

Los siguientes permisos están relacionados con la administración de usuarios. En Amazon Pinpoint, eltérmino usuarios hace referencia a las personas que reciben mensajes enviados por usted. Un usuariopuede estar asociado con uno o varios puntos de enlace.

mobiletargeting:DeleteUserEndpoints

Permite eliminar todos los puntos de enlace asociados a un ID de usuario.• URI – /apps/projectId/users/userId• Método – DELETE• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/users/userId

mobiletargeting:GetUserEndpoints

Permite recuperar información sobre todos los puntos de enlace que están asociados a un ID deusuario.• URI – /apps/projectId/users/userId• Método – GET• ARN de recurso – arn:aws:mobiletargeting:region:accountId:apps/projectId/users/userId

Acciones de la API de SMS y voz de Amazon PinpointEn esta sección se identifican las acciones para las características que están disponibles en la API de SMSy voz de Amazon Pinpoint. Esta es una API complementaria que proporciona opciones avanzadas parausar y administrar los canales de SMS y voz en Amazon Pinpoint. Para obtener más información sobreesta API, consulte la Referencia de la API de SMS y voz de Amazon Pinpoint.

sms-voice:CreateConfigurationSet

Permite crear un conjunto de configuración para enviar mensajes de voz.• URI – /sms-voice/configuration-sets• Método – POST• ARN de recurso – no disponible. Use *.

sms-voice:DeleteConfigurationSet

Permite eliminar un conjunto de configuración para enviar mensajes de voz.

381

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

• URI – /sms-voice/configuration-sets/ConfigurationSetName• Método – DELETE• ARN de recurso – no disponible. Use *.

sms-voice:GetConfigurationSetEventDestinations

Permite obtener información acerca de un conjunto de configuración y de los destinos de eventos quecontiene.• URI – /sms-voice/configuration-sets/ConfigurationSetName/event-destinations• Método – GET• ARN de recurso – no disponible. Use *.

sms-voice:CreateConfigurationSetEventDestination

Permite crear un destino de evento para eventos de voz.• URI – /sms-voice/configuration-sets/ConfigurationSetName/event-destinations• Método – POST• ARN de recurso – no disponible. Use *.

sms-voice:UpdateConfigurationSetEventDestination

Permite actualizar un destino de evento para eventos de voz.• URI – /sms-voice/configuration-sets/ConfigurationSetName/event-

destinations/EventDestinationName• Método – PUT• ARN de recurso – no disponible. Use *.

sms-voice:DeleteConfigurationSetEventDestination

Permite eliminar un destino de evento para eventos de voz.• URI – /sms-voice/configuration-sets/ConfigurationSetName/event-

destinations/EventDestinationName• Método – DELETE• ARN de recurso – no disponible. Use *.

sms-voice:SendVoiceMessage

Permite crear y enviar mensajes de voz.• URI – /sms-voice/voice/message• Método – POST• ARN de recurso – no disponible. Use *.

Ejemplos de políticas basadas en identidad deAmazon PinpointDe forma predeterminada, los usuarios y roles de IAM no tienen permiso para crear, ver ni modificarrecursos de Amazon Pinpoint. Tampoco pueden realizar tareas mediante la Consola de administración de

382

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

AWS, la AWS CLI, o una API de AWS. Un administrador de IAM debe crear políticas de IAM que concedanpermisos a los usuarios y a los roles para realizar operaciones de la API concretas en los recursos quenecesiten. El administrador debe adjuntar esas políticas a los usuarios o grupos de IAM que necesitanesos permisos.

Para obtener más información acerca de cómo crear una política basada en identidad de IAM con estosdocumentos de políticas de JSON de ejemplo, consulte Creación de políticas en la pestaña JSON en laGuía del usuario de IAM.

Temas• Prácticas recomendadas relativas a políticas (p. 383)• Uso de la consola de Amazon Pinpoint (p. 383)• Ejemplo: Acceso a un único proyecto de Amazon Pinpoint (p. 384)• Ejemplo: Ver recursos de Amazon Pinpoint basados en etiquetas (p. 386)• Ejemplo: Permitir que los usuarios vean sus propios permisos (p. 387)• Ejemplos: Proporcionar acceso a acciones de la API de Amazon Pinpoint (p. 387)• Ejemplos: Proporcionar acceso a las acciones de la API de voz y SMS de Amazon Pinpoint (p. 388)

Prácticas recomendadas relativas a políticasLas políticas basadas en identidad son muy eficaces. Determinan si alguien puede crear, acceder oeliminar los recursos de Amazon Pinpoint de su cuenta. Estas acciones pueden generar costes adicionalespara su cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas enidentidad:

• Introducción sobre el uso de políticas administradas de AWS: para comenzar a utilizar Amazon Pinpointrápidamente, utilice las políticas administradas de AWS para proporcionar a los empleados los permisosnecesarios. Estas políticas ya están disponibles en su cuenta y las mantiene y actualiza AWS. Paraobtener más información, consulte Introducción sobre el uso de permisos con políticas administradas deAWS en la Guía del usuario de IAM.

• Conceder privilegios mínimos: al crear políticas personalizadas, conceda solo los permisos necesariospara llevar a cabo una tarea. Comience con un conjunto mínimo de permisos y conceda permisosadicionales según sea necesario. Por lo general, es más seguro que comenzar con permisos que sondemasiado tolerantes e intentar hacerlos más severos más adelante. Para obtener más información,consulte Conceder privilegios mínimos en la Guía del usuario de IAM.

• Habilitar MFA para operaciones confidenciales: para mayor seguridad, obligue a los usuarios deIAM a que utilicen la autenticación multifactor (MFA) para acceder a recursos u operaciones de APIconfidenciales. Para obtener más información, consulte Uso de Multi-Factor Authentication (MFA) enAWS en la Guía del usuario de IAM.

• Utilizar condiciones de política para mayor seguridad: en la medida en que sea práctico, defina lascondiciones en las que sus políticas basadas en identidad permitan el acceso a un recurso. Por ejemplo,puede escribir condiciones para especificar un rango de direcciones IP permitidas desde el que debeproceder una solicitud. También puede escribir condiciones para permitir solicitudes solo en un intervalode hora o fecha especificado o para solicitar el uso de SSL o MFA. Para obtener más información,consulte Elementos de la política de JSON de IAM: condición en la Guía del usuario de IAM.

Uso de la consola de Amazon PinpointPara acceder a la consola de Amazon Pinpoint, debe tener un conjunto mínimo de permisos. Estospermisos deben permitirle registrar y consultar los detalles sobre los recursos de Amazon Pinpoint ensu cuenta de AWS. Si crea una política basada en identidad que aplica permisos más restrictivos que elmínimo de permisos necesarios, la consola no funcionará del modo esperado para las entidades (usuarioso roles de IAM) que tengan esa política. Para asegurarse de que esas entidades puedan utilizar la consola

383

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

Amazon Pinpoint, asocie una política a dichas entidades. Para obtener más información, consulte Adiciónde permisos a un usuario en la Guía del usuario de IAM:

La siguiente política de ejemplo concede acceso de solo lectura a la consola de Amazon Pinpoint en unaregión de AWS específica. Incluye acceso de solo lectura a otros servicios de los que depende la consolade Amazon Pinpoint, como Amazon Simple Email Service (Amazon SES), IAM y Amazon Kinesis.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UseConsole", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:region:accountId:*" }, { "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "iam:ListRoles", "kinesis:ListStreams", "s3:List*", "ses:Describe*", "ses:Get*", "ses:List*", "sns:ListTopics" ], "Resource": "*" } ]}

En el ejemplo de política anterior, sustituya region por el nombre de la región de AWS y reemplaceaccountId por su ID de cuenta de AWS.

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadasa la AWS CLI o a la API de AWS. En su lugar, permite acceso únicamente a las acciones que coincidancon la operación de API que intentan realizar.

Ejemplo: Acceso a un único proyecto de Amazon PinpointTambién puede crear políticas de solo lectura que proporcionan acceso únicamente a proyectosespecíficos. La siguiente política de ejemplo permite a los usuarios iniciar sesión en la consola y ver unalista de proyectos. También permite a los usuarios ver información sobre recursos relacionados para otrosservicios de AWS de los que depende la consola de Amazon Pinpoint, como Amazon SES, IAM y AmazonKinesis. Sin embargo, la política solo permite ver a los usuarios información adicional sobre el proyectoque está especificado en la política. Puede modificar esta política para permitir el acceso a proyectos oregiones adicionales de AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewProject", "Effect": "Allow", "Action": "mobiletargeting:GetApps", "Resource": "arn:aws:mobiletargeting:region:accountId:*" },

384

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

{ "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": [ "arn:aws:mobiletargeting:region:accountId:apps/projectId", "arn:aws:mobiletargeting:region:accountId:apps/projectId/*", "arn:aws:mobiletargeting:region:accountId:reports" ] }, { "Effect": "Allow", "Action": [ "ses:Get*", "kinesis:ListStreams", "firehose:ListDeliveryStreams", "iam:ListRoles", "ses:List*", "sns:ListTopics", "ses:Describe*", "s3:List*" ], "Resource": "*" } ]}

En el ejemplo anterior, sustituya region por el nombre de una región de AWS, reemplace accountId porel ID de la cuenta de AWS y cambie projectId por el ID del proyecto de Amazon Pinpoint al que deseaproporcionar acceso.

Del mismo modo, puede crear políticas que concedan a un usuario de IAM de su cuenta de AWS accesode escritura limitado a uno de sus proyectos de Amazon Pinpoint, como el proyecto que tiene el ID deproyecto 810c7aab86d42fb2b56c8c966example. En este caso, desea permitir que el usuario vea,agregue y actualice componentes del proyecto, como segmentos y campañas, pero que no elimine ningúncomponente.

Además de conceder permisos para las acciones mobiletargeting:Get y mobiletargeting:List,cree una política que conceda permisos para las siguientes acciones: mobiletargeting:Create;mobiletargeting:Update; y mobiletargeting:Put. Estos son los permisos adicionales necesariospara crear y administrar la mayoría de los componentes del proyecto. Por ejemplo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitedWriteProject", "Effect": "Allow", "Action": "mobiletargeting:GetApps", "Resource": "arn:aws:mobiletargeting:region:accountId:*" }, { "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*", "mobiletargeting:Create*", "mobiletargeting:Update*", "mobiletargeting:Put*" ], "Resource": [

385

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

"arn:aws:mobiletargeting:region:accountId:apps/810c7aab86d42fb2b56c8c966example", "arn:aws:mobiletargeting:region:accountId:apps/810c7aab86d42fb2b56c8c966example/*", "arn:aws:mobiletargeting:region:accountId:reports" ] }, { "Effect": "Allow", "Action": [ "ses:Get*", "kinesis:ListStreams", "firehose:ListDeliveryStreams", "iam:ListRoles", "ses:List*", "sns:ListTopics", "ses:Describe*", "s3:List*" ], "Resource": "*" } ]}

Ejemplo: Ver recursos de Amazon Pinpoint basados en etiquetasPuede utilizar las condiciones de una política basada en la identidad para controlar el acceso a losrecursos de Amazon Pinpoint basados en etiquetas. Esta política de ejemplo muestra cómo puede creareste tipo de política para permitir la consulta de recursos de Amazon Pinpoint. Sin embargo, los permisossolo se conceden si la etiqueta de recurso Owner tiene el valor del nombre de usuario de dicho usuario.Esta política también proporciona los permisos necesarios para llevar a cabo esta acción en la consola.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListResources", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "*" }, { "Sid": "ViewResourceIfOwner", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:*:*:*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ]}

También puede asociar este tipo de política a los usuarios de IAM de su cuenta. Si un usuario llamadorichard-roe intenta ver un recurso de Amazon Pinpoint, el recurso debe estar etiquetado comoOwner=richard-roe o owner=richard-roe. De lo contrario, se le deniega el acceso. La clave de la

386

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

etiqueta de condición Owner coincide con los nombres de las claves de condición Owner y owner porqueno distinguen entre mayúsculas y minúsculas. Para obtener más información, consulte Elementos de lapolítica de JSON de IAM: condición en la Guía del usuario de IAM.

Ejemplo: Permitir que los usuarios vean sus propios permisosEn este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver laspolíticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluyepermisos para llevar a cabo esta acción en la consola o mediante programación con la AWS CLI o la APIde AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Ejemplos: Proporcionar acceso a acciones de la API de AmazonPinpointEsta sección proporciona políticas de ejemplo que permiten el acceso a las características que estándisponibles desde la API de Amazon Pinpoint, que es la API principal de Amazon Pinpoint. Para obtenermás información sobre la API, consulte la Referencia de la API de Amazon Pinpoint.

Acceso de solo lecturaLa siguiente política de ejemplo permite acceso de solo lectura a todos los recursos de su cuenta deAmazon Pinpoint en una región de AWS específica.

{ "Version": "2012-10-17",

387

Amazon Pinpoint Guía para desarrolladoresEjemplos de políticas basadas en identidad

"Statement": [ { "Sid": "ViewAllResources", "Effect": "Allow", "Action": [ "mobiletargeting:Get*", "mobiletargeting:List*" ], "Resource": "arn:aws:mobiletargeting:region:accountId:*" } ]}

En el ejemplo anterior, sustituya region por el nombre de la región de AWS y reemplace accountId porsu ID de cuenta de AWS.

Acceso de administradorLa siguiente política de ejemplo permite el acceso completo a todas las acciones y recursos de AmazonPinpoint de su cuenta de Amazon Pinpoint en todas las regiones de AWS:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccess", "Effect": "Allow", "Action": [ "mobiletargeting:*" ], "Resource": "arn:aws:mobiletargeting:*:accountId:*" } ]}

En el ejemplo anterior, sustituya accountId por el ID de la cuenta de AWS.

Ejemplos: Proporcionar acceso a las acciones de la API de voz ySMS de Amazon PinpointEn esta sección se proporcionan políticas de ejemplo que permiten el acceso a las características queestán disponibles en la API de SMS y voz de Amazon Pinpoint. Esta es una API complementaria queproporciona opciones avanzadas para usar y administrar los canales de SMS y voz en Amazon Pinpoint.Para obtener más información sobre esta API, consulte la Referencia de la API de SMS y voz de AmazonPinpoint.

Acceso de solo lecturaLa política de ejemplo siguiente permite el acceso de solo lectura a todas las acciones y recursos de APIde SMS y voz de Amazon Pinpoint de su cuenta de AWS en todas las regiones de AWS:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewAllResources", "Effect": "Allow", "Action": [ "sms-voice:Get*", "sms-voice:List*" ],

388

Amazon Pinpoint Guía para desarrolladoresEjemplo de política basada en recursos

"Resource": "*" } ]}

Acceso de administradorLa siguiente política de ejemplo permite el acceso completo a todas las acciones y recursos de API deSMS y voz de Amazon Pinpoint de su cuenta de AWS en todas las regiones de AWS:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccess", "Effect": "Allow", "Action": [ "sms-voice:*" ],

"Resource": "*" } ]}

Ejemplos de política basada en recursos de AmazonPinpointLas políticas basadas en recursos son documentos de política JSON que especifican qué acciones puederealizar una entidad principal especificada en un recurso de Amazon Pinpoint y en qué condiciones puederealizar esas acciones.

Temas• Ejemplo: Restringir el acceso de un proyecto de Amazon Pinpoint a direcciones IP

específicas (p. 389)• Ejemplo: Restringir el acceso de Amazon Pinpoint basado en etiquetas (p. 390)

Ejemplo: Restringir el acceso de un proyecto de Amazon Pinpointa direcciones IP específicasLa política de ejemplo siguiente concede permisos a cualquier usuario para realizar cualquier acción deAmazon Pinpoint en un proyecto especificado (projectId). Sin embargo, la solicitud debe proceder delintervalo de direcciones IP especificado en la condición.

La condición de esta instrucción identifica el intervalo 54.240.143.* de direcciones permitidas enformato de Protocolo de Internet versión 4 (IPv4), con una excepción: 54.240.143.188. El bloqueCondition utiliza las condiciones IpAddress y NotIpAddress, y la clave de condición aws:SourceIp,que es una clave de condición general de AWS. Para obtener más información acerca de estas clavesde condición, consulte Especificación de condiciones en una política en la Guía del usuario de IAM.Los valores de IPv4 aws:SourceIp utilizan la notación CIDR estándar. Para obtener más información,consulte Operadores de condición de dirección IP en la Guía del usuario de IAM.

{ "Version": "2012-10-17", "Id": "AMZPinpointPolicyId1",

389

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

"Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "mobiletargeting:*", "Resource": [ "arn:aws:mobiletargeting:*:*:apps/projectId", "arn:aws:mobiletargeting:*:*:apps/projectId/*" ], "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}, "NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"} } } ]}

Ejemplo: Restringir el acceso de Amazon Pinpoint basado enetiquetasLa política de ejemplo siguiente concede permisos para realizar cualquier acción de Amazon Pinpointen un proyecto especificado (projectId). Sin embargo, los permisos solo se conceden si la solicitudproviene de un usuario cuyo nombre es un valor en la etiqueta de recurso Owner del proyecto, como seespecifica en la condición.

El bloque Condition utiliza la condición StringEquals y la clave de condición aws:ResourceTag/${TagKey}. Para obtener más información acerca de las condiciones y las claves de condición, consulteEspecificación de condiciones en una política en la Guía del usuario de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ModifyResourceIfOwner", "Effect": "Allow", "Action": "mobiletargeting:*", "Resource": [ "arn:aws:mobiletargeting:*:*:apps/projectId", "arn:aws:mobiletargeting:*:*:apps/projectId/*" ], "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ]}

Roles de IAM para tareas de Amazon PinpointcomunesUn rol de IAM es una identidad de AWS Identity and Access Management (IAM) que puede crear en sucuenta de AWS y a la que puede conceder permisos específicos. Un rol de IAM es similar a un usuariode IAM en cuanto a que es una identidad de AWS con políticas de permisos que determinan lo que laidentidad puede hacer o no en AWS. Sin embargo, en lugar de asociarse exclusivamente a una persona, laintención es que cualquier usuario pueda asumir un rol que necesite.

Además, un rol no tiene asociadas credenciales estándar a largo plazo, como una contraseña o clavesde acceso. En lugar de ello, proporciona credenciales de seguridad temporales para una sesión. Puede

390

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

utilizar roles de IAM para delegar el acceso a usuarios, aplicaciones o servicios que normalmente notendrían acceso a los recursos de AWS.

Por estos motivos, puede usar roles de IAM para integrar Amazon Pinpoint con determinados serviciosy recursos de AWS de su cuenta. Por ejemplo, es posible que desee permitir el acceso de AmazonPinpoint a las definiciones de punto de enlace almacenadas en un bucket de Amazon Simple StorageService (Amazon S3) y que desee utilizar para los segmentos. O es posible que desee permitir a AmazonPinpoint que transmita datos de eventos a una secuencia de Amazon Kinesis de su cuenta. Del mismomodo, es posible que desee usar roles de IAM para permitir que las aplicaciones web o móviles registrendatos de uso o de punto de enlace para proyectos de Amazon Pinpoint, sin incluir claves de AWS en lasaplicaciones (donde pueden ser difíciles de rotar y los usuarios podrían extraerlas).

Para estos escenarios, puede delegar el acceso a Amazon Pinpoint mediante el uso de roles de IAM.En esta sección se proporcionan explicaciones y ejemplos de tareas comunes de Amazon Pinpoint queutilizan roles de IAM para trabajar con otros servicios de AWS. Para obtener información sobre el usode roles de IAM con aplicaciones web y móviles más específicamente, consulte Proporcionar acceso ausuarios autenticados externamente (identidad federada) en la Guía del usuario de IAM.

Temas• Función de IAM para importar puntos de enlace o segmentos (p. 391)• Función de IAM para exportar puntos de enlace o segmentos (p. 392)• Rol de IAM para recuperar recomendaciones de Amazon Personalize (p. 396)• Rol de IAM para la transmisión de eventos en streaming a Kinesis (p. 399)• Rol de IAM para la transmisión de eventos en streaming de correo electrónico a Kinesis Data

Firehose (p. 401)

Función de IAM para importar puntos de enlace o segmentosCon Amazon Pinpoint, puede definir segmentos de usuario importando las definiciones de puntos deenlace desde un bucket de Amazon Simple Storage Service (Amazon S3) a la cuenta de AWS. Antes deimportar, es necesario delegar los permisos necesarios a Amazon Pinpoint. Para ello, cree un rol de AWSIdentity and Access Management (IAM) y asocie las siguientes políticas a dicho rol:

• La política administrada AWS de AmazonS3ReadOnlyAccess. Esta política la crea y la gestiona AWS yconcede acceso de solo lectura al bucket de Amazon S3.

• Una política de confianza que permita a Amazon Pinpoint asumir el rol.

Tras crear el rol, puede utilizar Amazon Pinpoint para importar segmentos de un bucket de Amazon S3.Para obtener información acerca de la creación del bucket, la creación de archivos de punto de enlace yla importación de un segmento mediante la consola, consulte Importación de segmentos en la Guía delusuario de Amazon Pinpoint. Para ver un ejemplo de cómo importar un segmento mediante programaciónmediante el AWS SDK for Java, consulte Importación de segmentos (p. 185) en esta guía.

Asociación de la política de confianzaPara permitir que Amazon Pinpoint asuma la función de IAM y realice las acciones permitidas por lapolítica AmazonS3ReadOnlyAccess, conecte la siguiente política de confianza a la función:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUserToImportEndpointDefinitions", "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com"

391

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

}, "Action": "sts:AssumeRole" } ]}

Creación del rol de IAM (AWS CLI)Complete los siguientes pasos para crear el rol de IAM mediante la AWS Command Line Interface (AWSCLI). Si todavía no ha instalado la AWS CLI, consulte Instalación de la AWS CLI en la AWS Command LineInterface Guía del usuario.

Para crear el rol de IAM mediante la AWS CLI

1. Cree un archivo JSON que contenga la política de confianza correspondiente al rol y guárdelolocalmente. Puede copiar la política de confianza que se proporciona en este tema.

2. En la línea de comandos, utilice el comando create-role para crear el rol y asociar la política deconfianza:

aws iam create-role --role-name PinpointSegmentImport --assume-role-policy-document file://PinpointImportTrustPolicy.json

Tras el prefijo file://, especifique la ruta del archivo JSON que contiene la política de confianza.

Después de ejecutar este comando, verá un resultado similar al siguiente en su terminal:

{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" } } ] }, "RoleId": "AIDACKCEVSQ6C2EXAMPLE", "CreateDate": "2016-12-20T00:44:37.406Z", "RoleName": "PinpointSegmentImport", "Path": "/", "Arn": "arn:aws:iam::111122223333:role/PinpointSegmentImport" }}

3. Utilice el comando attach-role-policy para conectar la política administrada AWS deAmazonS3ReadOnlyAccess a la función:

aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess --role-name PinpointSegmentImport

Función de IAM para exportar puntos de enlace o segmentosPara obtener una lista de puntos de enlace, puede crear un trabajo de exportación. Al crear un trabajode exportación, tendrá que usar un ID de proyecto y, si lo desea, puede especificar un ID de segmento.

392

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

Amazon Pinpoint a continuación, exporta una lista de los puntos de enlace asociados con el proyecto o conun segmento a un bucket de Amazon Simple Storage Service (Amazon S3). El archivo resultante contieneuna lista de puntos de enlace con formato JSON y sus atributos (tales como el canal, la dirección, el estadode alta o baja en el servicio de notificaciones, la fecha de creación o el ID del punto de enlace).

Para crear un trabajo de exportación, debe configurar una rol de IAM que permita a Amazon Pinpointescribir en un bucket de Amazon S3. El proceso de configuración de la función consta de dos pasos:

1. Cree una política de IAM que permita a una entidad (en este caso, Amazon Pinpoint) escribir en unbucket de Amazon S3 determinado.

2. Cree una función de IAM y conéctele la política.

Este tema contiene procedimientos para completar ambos pasos. En estos procedimientos se da porhecho que ya ha creado un bucket de Amazon S3 y una carpeta en ese bucket, para almacenar lossegmentos exportados. Para obtener más información sobre la creación de buckets, consulte Crear unbucket en la Guía de introducción a Amazon Simple Storage Service.

En estos procedimientos se da por hecho que ya se ha instalado y configurado la AWS CommandLine Interface (AWS CLI). Para obtener más información sobre cómo configurar la AWS CLI, consulteInstalación de la AWS CLI en la AWS Command Line Interface Guía del usuario.

Paso 1: Crear la política de IAM

Una política de IAM define los permisos para una entidad (por ejemplo, de una identidad o recurso). Paracrear una función que permita exportar puntos de enlace de Amazon Pinpoint, es preciso crear una políticaque conceda permiso para escribir en una carpeta concreta de un bucket de Amazon S3 determinado. Lasiguiente política de ejemplo observa la práctica de seguridad de conceder los mínimos privilegios —esdecir, se conceden exclusivamente aquellos permisos que son imprescindibles para realizar una tarea.

Para crear la política de IAM

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUserToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket" ], "Condition": { "StringEquals": { "s3:delimiter": [ "/" ], "s3:prefix": [ "", "Exports/" ] }

393

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

} }, { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "Exports/*" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Action": [ "s3:*" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::example-bucket/Exports/*" ] } ]}

En el código anterior, reemplace todas las instancias de example-bucket por el nombre del bucketde Amazon S3 que contiene la carpeta a la que desea exportar la información de segmentos. Además,reemplace todas las instancias de Exports por el nombre de la carpeta propiamente dicha.

Cuando haya terminado, guarde el archivo como s3policy.json.2. Con la AWS CLI, desplácese hasta el directorio donde se encuentra el archivo s3policy.json. A

continuación, escriba el siguiente comando para crear la política:

aws iam create-policy --policy-name s3ExportPolicy --policy-document file://s3policy.json

Si la política se ha creado correctamente, aparecerá un resultado similar al siguiente:

{ "Policy": { "CreateDate": "2018-04-11T18:44:34.805Z", "IsAttachable": true, "DefaultVersionId": "v1", "AttachmentCount": 0, "PolicyId": "ANPAJ2YJQRJCG3EXAMPLE", "UpdateDate": "2018-04-11T18:44:34.805Z", "Arn": "arn:aws:iam::123456789012:policy/s3ExportPolicy", "PolicyName": "s3ExportPolicy", "Path": "/" }}

Copie el nombre de recurso de Amazon (ARN) de la política(arn:aws:iam::123456789012:policy/s3ExportPolicy en el ejemplo anterior). En lasiguiente sección, debe proporcionar este ARN al crear la función.

Note

Si aparece un mensaje que indica que la cuenta no está autorizada a llevar a cabo laoperación CreatePolicy, deberá conectar una política a la cuenta de usuario que permite

394

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

crear políticas y funciones de IAM nuevas. Para obtener más información, consulte Adición yeliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

Paso 2: Crear la función de IAM

Ahora que ha creado una política de IAM, puede crear una función y conectarle la política. Cada funciónde IAM contiene una política de confianza —es decir, un conjunto de reglas que especifica las entidadesque están autorizadas a asumir la función. En esta sección, creará una política de confianza que permitaque Amazon Pinpoint asuma esa función. A continuación, creará la función en sí y, después, le conectarála política que creó en la sección anterior.

Para crear la función de IAM

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"pinpoint.amazonaws.com" }, "Action":"sts:AssumeRole" } ]}

Guarde el archivo como trustpolicy.json.2. Con la AWS CLI, desplácese hasta el directorio donde se encuentra el archivo trustpolicy.json.

A continuación, escriba el siguiente comando para crear un nuevo rol:

aws iam create-role --role-name s3ExportRole --assume-role-policy-document file://trustpolicy.json

Si el comando se ejecuta correctamente, aparecerá un resultado similar al siguiente:

{ "Role": { "RoleName": "s3ExportRole", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "RoleId": "AROAICPO353GIPEXAMPLE", "Arn": "arn:aws:iam::123456789012:role/s3ExportRole", "CreateDate": "2018-04-11T18:52:36.712Z", "Path": "/" } }

395

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

3. En la línea de comandos, escriba el siguiente comando para asociar la política que creó en la secciónanterior al rol que acaba de crear:

aws iam attach-role-policy --policy-arn arn:aws:iam::123456789012:policy/s3ExportPolicy --role-name s3ExportRole

En el comando anterior, reemplace arn:aws:iam::123456789012:policy/s3ExportPolicypor el ARN de la política que creó en la sección anterior.

Rol de IAM para recuperar recomendaciones de AmazonPersonalizePuede configurar Amazon Pinpoint para recuperar datos de recomendación de una solución de AmazonPersonalize que se haya implementado como campaña de Amazon Personalize. Puede utilizar estosdatos para enviar recomendaciones personalizadas a los destinatarios de los mensajes en función de losatributos y el comportamiento de cada destinatario. Para obtener más información, consulte Modelos deaprendizaje automático en Guía del usuario de Amazon Pinpoint.

Antes de poder recuperar los datos de recomendación de una campaña de Amazon Personalize, debecrear un rol de AWS Identity and Access Management (IAM) que permita a Amazon Pinpoint recuperar losdatos de la campaña. Para crear este rol, utilice la API de IAM para completar los siguientes pasos:

1. Cree una política de IAM que permita a una entidad (en este caso Amazon Pinpoint) recuperar datos derecomendación de una campaña de Amazon Personalize.

2. Cree un rol de IAM y conéctele la política de IAM.

En este tema se explica cómo completar estos pasos mediante la AWS Command Line Interface (AWSCLI). Supone que ya ha creado e implementado la campaña de Amazon Personalize. Para obtenerinformación sobre cómo crear e implementar una campaña, consulte Creación de una campaña en laAmazon Personalize Developer Guide.

En este tema se supone que ya ha instalado y configurado la AWS CLI. Para obtener más informaciónsobre cómo configurar la AWS CLI, consulte Instalación de la AWS CLI en la AWS Command LineInterface Guía del usuario.

Paso 1: Crear la política de IAM

Una política de IAM define los permisos para una entidad, por ejemplo, una identidad o recurso. Para crearun rol que permita a Amazon Pinpoint recuperar datos de recomendación de una campaña de AmazonPersonalize, primero debe crear una política de IAM para el rol. Esta política debe permitir a AmazonPinpoint:

• Recupere la información de configuración de la solución implementada por la campaña(DescribeSolution).

• Compruebe el estado de la campaña (DescribeCampaign).• Recupere los datos de recomendación de la campaña (GetRecommendations).

En el procedimiento siguiente, la política de ejemplo permite este acceso para una solución de AmazonPersonalize concreta implementada por una campaña deAmazon Personalize concreta.

Para crear la política de IAM

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

396

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveRecommendationsOneCampaign", "Effect": "Allow", "Action": [ "personalize:DescribeSolution", "personalize:DescribeCampaign", "personalize:GetRecommendations" ], "Resource": [ "arn:aws:personalize:region:accountId:solution/solutionId", "arn:aws:personalize:region:accountId:campaign/campaignId" } ]}

En el ejemplo anterior, sustituya el texto en cursiva por su información:

• región: el nombre de la región de – que aloja la solución de AWS y la campaña.• IDcuenta; el ID de su cuenta de AWS.• IDsolución: el ID de recurso único para la solución de Amazon Personalize implementada por la

campaña.• IDcampaña: el ID de recurso único de la campaña de Amazon Personalize de la que se van a

recuperar los datos de recomendación.2. Cuando haya terminado, guarde el archivo como RetrieveRecommendationsPolicy.json.3. Mediante la interfaz de línea de comandos, desplácese hasta el directorio donde guardó el archivo

RetrieveRecommendationsPolicy.json.4. Escriba el siguiente comando para crear una política y asígnele el nombre

RetrieveRecommendationsPolicy. Para utilizar un nombre distinto, cambieRetrievereComendationsPolicy por el nombre que desee.

aws iam create-policy --policy-name RetrieveRecommendationsPolicy --policy-document file://RetrieveRecommendationsPolicy.json

Si la política se ha creado correctamente, aparecerá un resultado similar al siguiente:

{ "Policy": { "PolicyName": "RetrieveRecommendationsPolicy", "PolicyId": "ANPAJ2YJQRJCG3EXAMPLE", "Arn": "arn:aws:iam::123456789012:policy/RetrieveRecommendationsPolicy", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2020-03-04T22:23:15Z", "UpdateDate": "2020-03-04T22:23:15Z" }}

Note

Si recibe un mensaje que indica que la cuenta no está autorizada a llevar a cabo la operaciónCreatePolicy, deberá asociar una política a la cuenta de usuario que permite crear nuevas

397

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

políticas de IAM y roles para su cuenta. Para obtener más información, consulte Adición yeliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

5. Copie el nombre de recurso de Amazon (ARN) de la política(arn:aws:iam::123456789012:policy/RetrieveRecommendationsPolicy en el ejemploanterior). En la siguiente sección, necesitará este ARN para crear el rol IAM.

Paso 2: Crear la función de IAM

Después de crear la política de IAM, puede crear un rol de IAM y asociarle la política.

Cada rol de IAM contiene una política de confianza, que es un conjunto de reglas que especifica lasentidades que están autorizadas a asumir el rol. En esta sección, creará una política de confianza quepermita que Amazon Pinpoint asuma esa función. A continuación, crea el rol en sí. A continuación, asociela política al rol.

Para crear la función de IAM

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

{ "Version":"2012-10-17", "Statement":[ { "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

2. Guarde el archivo como RecommendationsTrustPolicy.json.3. Mediante la interfaz de línea de comandos, desplácese hasta el directorio donde guardó el archivo

RecommendationsTrustPolicy.json.4. Escriba el siguiente comando para crear un nuevo rol y llámelo PinpointRoleforPersonalize.

Para utilizar un nombre distinto, cambie PinPointRoleForPersonalize por el nombre que desee.

aws iam create-role --role-name PinpointRoleforPersonalize --assume-role-policy-document file://RecommendationsTrustPolicy.json

Si el comando se ejecuta correctamente, aparecerá un resultado similar al siguiente:

{ "Role": { "Path": "/", "RoleName": "PinpointRoleforPersonalize", "RoleId": "AKIAIOSFODNN7EXAMPLE", "Arn": "arn:aws:iam::123456789012:role/PinpointRoleforPersonalize", "CreateDate": "2020-03-04T22:29:45Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" },

398

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

"Action": "sts:AssumeRole" } ] } } }

5. Escriba el siguiente comando para asociar la política que creó en la sección anterior al rol que acabade crear:

aws iam attach-role-policy --policy-arn arn:aws:iam::123456789012:policy/RetrieveRecommendationsPolicy --role-name PinpointRoleforPersonalize

En el comando anterior, reemplace arn:aws:iam::123456789012:policy/RetrieveRecommendationsPolicy por el ARN de la política que creó en la sección anterior.Además, reemplace PinpointRoleforPersonalize por el nombre del rol que especificó en elpaso 4, si especificó un nombre distinto para el rol.

Rol de IAM para la transmisión de eventos en streaming aKinesisAmazon Pinpoint puede enviar automáticamente datos de uso de la aplicación o datos de eventos desdela aplicación a una secuencia de datos de Amazon Kinesis o una secuencia de distribución de AmazonKinesis Data Firehose en su cuenta de AWS. Para que Amazon Pinpoint puede empezar a transmitir losdatos de eventos en streaming, es necesario delegar los permisos necesarios a Amazon Pinpoint.

Si utiliza la consola para configurar la transmisión de eventos en streaming, Amazon Pinpoint creaautomáticamente un rol de AWS Identity and Access Management (IAM) con los permisos necesarios.Para obtener más información, consulte Transmisión en streaming de eventos de Amazon Pinpoint aAmazon Kinesis en la Guía del usuario de Amazon Pinpoint.

Si desea crear el rol de forma manual, conecte las siguientes políticas a ella:

• Una política de permisos que permite a Amazon Pinpoint enviar datos de eventos a su secuencia.• Una política de confianza que permita a Amazon Pinpoint asumir el rol.

Tras crear el rol, puede configurar Amazon Pinpoint para que envíe eventos de forma automática a lasecuencia. Para obtener más información, consulte la sección Transmisión en streaming de eventos deAmazon Pinpoint a Kinesis (p. 234) de esta guía.

Políticas de permisos

Para permitir que Amazon Pinpoint envíe datos de eventos a una secuencia, asocie una de las siguientespolíticas al rol.

Amazon Kinesis Data Streams

La siguiente política permite a Amazon Pinpoint enviar datos de eventos a una secuencia de Kinesis.

{ "Version": "2012-10-17", "Statement": { "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream"

399

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

], "Effect": "Allow", "Resource": [ "arn:aws:kinesis:region:account-id:stream/stream-name" ] }}

Amazon Kinesis Data Firehose

La siguiente política permite a Amazon Pinpoint enviar datos de eventos a una secuencia de entrega deKinesis Data Firehose.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "firehose:PutRecordBatch", "firehose:DescribeDeliveryStream" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name" ] }}

Política de confianza

Para permitir que Amazon Pinpoint asuma el rol de IAM y realice las acciones permitidas por la política depermisos, asocie la siguiente política de confianza al rol:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Creación del rol de IAM (AWS CLI)

Complete los siguientes pasos para crear el rol de IAM mediante la AWS Command Line Interface (AWSCLI). Para aprender a crear el rol mediante la consola de Amazon Pinpoint, consulte Transmisión deeventos de Amazon Pinpoint a Kinesis en la Guía del usuario de Amazon Pinpoint.

Si todavía no ha instalado la AWS CLI, consulte Instalación de la AWS CLI en la AWS Command LineInterface Guía del usuario.

Para crear el rol de IAM mediante la AWS CLI

1. Cree un archivo JSON que contenga la política de confianza correspondiente al rol y guárdelolocalmente. Puede copiar la política de confianza que se proporciona en este tema.

2. Utilice el comando create-role para crear el rol y asociar la política de confianza:

400

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

aws iam create-role --role-name PinpointEventStreamRole --assume-role-policy-document file://PinpointEventStreamTrustPolicy.json

Tras el prefijo file://, especifique la ruta del archivo JSON que contiene la política de confianza.

Cuando se ejecuta este comando, la AWS CLI imprime la siguiente salida en el terminal:

{ "Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" } } ] }, "RoleId": "AIDACKCEVSQ6C2EXAMPLE", "CreateDate": "2017-02-28T18:02:48.220Z", "RoleName": "PinpointEventStreamRole", "Path": "/", "Arn": "arn:aws:iam::111122223333:role/PinpointEventStreamRole" }}

3. Cree un archivo JSON que contenga la política de permisos correspondiente al rol y guárdelolocalmente. Puede copiar una de las políticas proporcionadas en la sección Políticas depermisos (p. 399) de este tema.

4. Utilice el comando put-role-policy para asociar la política de permisos al rol:

aws iam put-role-policy --role-name PinpointEventStreamRole --policy-name PinpointEventStreamPermissionsPolicy --policy-document file://PinpointEventStreamPermissionsPolicy.json

Tras el prefijo file://, especifique la ruta del archivo JSON que contiene la política de permisos.

Rol de IAM para la transmisión de eventos en streaming decorreo electrónico a Kinesis Data FirehoseEn Amazon Pinpoint Email API, puede crear conjuntos de configuración que especifiquen cómo gestionardeterminados eventos de correo electrónico. Por ejemplo, puede crear un conjunto de configuración queenvíe notificaciones de entrega a un destino de evento específico, como, por ejemplo, un tema de AmazonSNS o una secuencia de entrega de Kinesis Data Firehose. Cuando envíe correo electrónico a travésde Amazon Pinpoint Email API con ese conjunto de configuración, Amazon Pinpoint envía informaciónsobre eventos relacionados con correo electrónico al destino de evento que especificó en el conjunto deconfiguración.

La Amazon Pinpoint Email API puede proporcionar información sobre los siguientes tipos de eventos decorreo electrónico en los destinos de evento que especifique:

• Sends (Envíos): la llamada a Amazon Pinpoint ha sido correcta y Amazon Pinpoint intentó entregar elcorreo electrónico.

401

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

• Deliveries (Entregas): Amazon Pinpoint entregó correctamente el correo electrónico al servidor de correodel destinatario.

• Rejections (Rechazos): Amazon Pinpoint aceptó el correo electrónico, determinó que contenía malwarey lo rechazó. Amazon Pinpoint no intentó proporcionar el correo electrónico al servidor de correo deldestinatario.

• Rendering Failures (Errores de representación): el correo electrónico no se envió por un problema derepresentación de la plantilla. Este tipo de evento solo se produce al enviar un correo electrónico queincluye etiquetas de sustitución. Este tipo de evento se puede producir cuando faltan los valores desustitución. También se puede producir cuando hay una falta de coincidencia entre las etiquetas desustitución que utilizó en el correo electrónico y los datos de sustitución que proporcionó.

Note

Si utiliza etiquetas de sustitución en los mensajes de correo electrónico que envíe a través de laAmazon Pinpoint Email API, siempre debe crear un conjunto de configuración que registre loseventos de error de representación.

• Bounces (Rebotes): el servidor de correo del destinatario ha rechazado permanentemente el correoelectrónico.

• Complaints (Reclamaciones): el correo electrónico se ha entregado correctamente al destinatario, peroeste usó la característica "Report Spam" (Marcar como spam) [o equivalente] de su cliente de correoelectrónico para informar del mensaje.

• Opens (Aperturas): el destinatario recibió el mensaje y lo abrió en su cliente de correo electrónico.• Clicks (Clics): el destinatario hizo clic en uno o varios enlaces incluidos en el correo electrónico.

Note

Cada vez que un destinatario abre o hace clic en un correo electrónico, Amazon Pinpointgenera eventos de clic o apertura exclusivos respectivamente. Es decir, si un destinatarioespecífico abre un mensaje cinco veces, Amazon Pinpoint notifica cinco eventos de aperturaindependientes.

Si desea enviar datos sobre estos eventos a una secuencia de Kinesis Data Firehose, tendrá que crear unrol de IAM que disponga de los permisos adecuados. El rol debe utilizar las siguientes políticas:

• Una política de confianza que permita a Amazon Pinpoint asumir el rol.• Una política de permisos que permita a Amazon Pinpoint Email API enviar registros de respuesta y

entrega en la secuencia.

Tras crear el rol, puede configurar Amazon Pinpoint para que envíe eventos de forma automática a lasecuencia. Para obtener más información, consulte Transmisión en streaming de eventos de AmazonPinpoint a Kinesis (p. 234).

Política de confianzaPara permitir que Amazon Pinpoint Email API asuma el rol de IAM y realice las acciones permitidas por lapolítica de permisos, conecte la siguiente política de confianza al rol:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "sts:AssumeRole",

402

Amazon Pinpoint Guía para desarrolladoresRoles de IAM para tareas comunes

"Condition": { "StringEquals": { "sts:ExternalId": "accountId" } } } ]}

En el ejemplo anterior, reemplace accountId por el ID de su cuenta de AWS.

Política de permisosPara permitir que Amazon Pinpoint Email API envíe datos de evento de correo electrónico a una secuenciade entrega de Kinesis Data Firehose, asocie loa siguiente política de permisos a un rol.

La siguiente política permite a Amazon Pinpoint enviar datos de eventos a una secuencia de entrega deKinesis Data Firehose.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "firehose:PutRecordBatch", "firehose:DescribeDeliveryStream" ], "Resource": [ "arn:aws:firehose:region:accountId:deliverystream/deliveryStreamName" ] }}

En el ejemplo anterior, reemplace region por el nombre de la región de AWS que creó en lasecuencia de entrega. Reemplace accountId por el ID de su cuenta de AWS. Por último, reemplacedeliveryStreamName por el nombre de la secuencia de entrega.

Creación del rol de IAM (AWS CLI)Complete los siguientes pasos para crear el rol de IAM mediante la AWS Command Line Interface (AWSCLI). Para obtener más información acerca de cómo instalar y configurar la AWS CLI, consulte Instalaciónde la AWS CLI en la AWS Command Line Interface Guía del usuario.

Para crear el rol de IAM mediante la AWS CLI

1. Cree un archivo JSON que contenga la política de confianza correspondiente al rol y, a continuación,guárdelo localmente. Puede copiar la política de confianza (p. 402) proporcionada anteriormente eneste tema.

2. Utilice el comando create-role para crear el rol y asociar la política de confianza:

aws iam create-role --role-name PinpointEventStreamRole \ --assume-role-policy-document file://PinpointEventStreamTrustPolicy.json

En el ejemplo anterior, reemplace PinpointEventStreamTrustPolicy.json por la ruta completaal archivo que contiene la política de privacidad.

Cuando ejecuta este comando, la AWS CLI devuelve el siguiente resultado:

{

403

Amazon Pinpoint Guía para desarrolladoresSolución de problemas

"Role": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" } } ] }, "RoleId": "AKIAIOSFODNN7EXAMPLE", "CreateDate": "2019-04-10T14:20:42.314Z", "RoleName": "PinpointEventStreamRole", "Path": "/", "Arn": "arn:aws:iam::111122223333:role/PinpointEventStreamRole" }}

3. Cree un archivo JSON que contenga la política de permisos correspondiente a su rol y guarde elarchivo localmente. Puede copiar la política de permisos (p. 403) proporcionada anteriormente eneste tema.

4. Utilice el comando put-role-policy para conectar la política de permisos al rol:

aws iam put-role-policy \--role-name PinpointEventStreamRole \--policy-name PinpointEventStreamPermissionsPolicy --policy-document file://PinpointEventStreamPermissionsPolicy.json

En el ejemplo anterior, reemplace PinpointEventStreamPermissionsPolicy.json por la rutacompleta al archivo que contiene la política de permisos.

Solución de problemas de administración de identidady acceso en Amazon PinpointUtilice la siguiente información para diagnosticar y solucionar los problemas comunes que puedan surgircuando trabaje con Amazon Pinpoint e IAM.

Temas• No tengo autorización para realizar una acción en Amazon Pinpoint (p. 404)• No estoy autorizado a realizar la operación iam:PassRole (p. 405)• Quiero ver mis claves de acceso (p. 405)• Soy administrador y deseo permitir que otros obtengan acceso a Amazon Pinpoint (p. 406)• Quiero permitir a personas externas a mi cuenta de AWS el acceso a mis recursos de Amazon

Pinpoint (p. 406)

No tengo autorización para realizar una acción en AmazonPinpointSi la Consola de administración de AWS le indica que no está autorizado para llevar a cabo una acción,debe ponerse en contacto con su administrador para recibir ayuda. Su administrador es la persona que lefacilitó su nombre de usuario y contraseña.

404

Amazon Pinpoint Guía para desarrolladoresSolución de problemas

En el siguiente ejemplo, el error se produce cuando el usuario de IAM, mateojackson, intenta utilizar laconsola para ver detalles sobre un proyecto pero no tiene permisos mobiletargeting:GetApp:

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: mobiletargeting:GetApp on resource: my-example-project

En este caso, Mateo pide a su administrador que actualice sus políticas de forma que pueda obteneracceso al recurso my-example-project mediante la acción mobiletargeting:GetApp.

No estoy autorizado a realizar la operación iam:PassRoleSi recibe un error que indica que no está autorizado para llevar a cabo la acción iam:PassRole, debeponerse en contacto con su administrador para recibir ayuda. Su administrador es la persona que le facilitósu nombre de usuario y contraseña. Pida a la persona que actualice sus políticas de forma que puedatransferir un rol a Amazon Pinpoint.

Algunos servicios de AWS le permiten transferir un rol existente a dicho servicio en lugar de crear un nuevorol de servicio o uno vinculado al servicio. Para ello, debe tener permisos para transferir el rol al servicio.

En el siguiente ejemplo, el error se produce cuando un usuario de IAM denominado marymajor intentautilizar la consola para realizar una acción en Amazon Pinpoint. Sin embargo, la acción requiere que elservicio cuente con permisos otorgados por un rol de servicio. Mary no tiene permisos para transferir el rolal servicio.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

En este caso, Mary pide a su administrador que actualice sus políticas para que pueda realizar la accióniam:PassRole.

Quiero ver mis claves de accesoDespués de crear sus claves de acceso de usuario de IAM, puede ver su ID de clave de acceso encualquier momento. Sin embargo, no puede volver a ver su clave de acceso secreta. Si pierde la clave deacceso secreta, debe crear un nuevo par de claves de acceso.

Las claves de acceso se componen de dos partes: un ID de clave de acceso (por ejemplo,AKIAIOSFODNN7EXAMPLE) y una clave de acceso secreta (por ejemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). El ID de clave de acceso y la clave de acceso secreta se utilizan juntos, como unnombre de usuario y contraseña, para autenticar sus solicitudes. Administre sus claves de acceso con elmismo nivel de seguridad que para el nombre de usuario y la contraseña.

Important

No proporcione las claves de acceso a terceras personas, ni siquiera para que le ayuden a buscarel ID de usuario canónico. Si lo hace, podría conceder a otra persona acceso permanente a sucuenta.

Cuando cree un par de claves de acceso, se le pide que guarde el ID de clave de acceso y la clave deacceso secreta en un lugar seguro. La clave de acceso secreta solo está disponible en el momento de sucreación. Si pierde la clave de acceso secreta, debe añadir nuevas claves de acceso a su usuario de IAM.Puede tener un máximo de dos claves de acceso. Si ya cuenta con dos, debe eliminar un par de clavesantes de crear uno nuevo. Para ver las instrucciones, consulte Administración de las claves de acceso enla Guía del usuario de IAM.

405

Amazon Pinpoint Guía para desarrolladoresRegistro y monitorización

Soy administrador y deseo permitir que otros obtengan acceso aAmazon PinpointPara permitir que otros obtengan acceso a Amazon Pinpoint, debe crear una entidad de IAM (usuario orol) para la persona o aplicación que necesita acceso. Esta persona utilizará las credenciales de la entidadpara obtener acceso a AWS. A continuación, debe asociar una política a la entidad que le conceda lospermisos correctos en Amazon Pinpoint.

Para comenzar de inmediato, consulte Creación del primer grupo y usuario delegado de IAM en la Guía delusuario de IAM.

Quiero permitir a personas externas a mi cuenta de AWS elacceso a mis recursos de Amazon PinpointPuede crear un rol que los usuarios de otras cuentas o las personas externas a la organización puedanutilizar para acceder a sus recursos. Puede especificar una persona de confianza para que asuma el rol.En el caso de los servicios que admitan las políticas basadas en recursos o las listas de control de acceso(ACL), puede utilizar dichas políticas para conceder a las personas acceso a sus recursos.

Para obtener más información, consulte lo siguiente:

• Para obtener información acerca de si Amazon Pinpoint admite estas características, consulteFuncionamiento de Amazon Pinpoint con IAM (p. 358).

• Para aprender cómo proporcionar acceso a sus recursos en cuentas de AWS de su propiedad, consulteProporcionar acceso a un usuario de IAM a otra cuenta de AWS de la que es propietario en la Guía delusuario de IAM.

• Para obtener información acerca de cómo ofrecer acceso a sus recursos a cuentas de AWS de terceros,consulte Proporcionar acceso a las cuentas de AWS propiedad de terceros en la Guía del usuario deIAM.

• Para obtener información acerca de cómo ofrecer acceso a la identidad federada, consulte Proporcionaracceso a usuarios autenticados externamente (identidad federada) en la Guía del usuario de IAM.

• Para obtener información acerca de la diferencia entre utilizar los roles y las políticas basadas enrecursos para el acceso entre cuentas, consulte Cómo los roles de IAM difieren de las políticas basadasen recursos en la Guía del usuario de IAM.

Registro y monitoreo en Amazon PinpointEl registro y el monitoreo son una parte importante del mantenimiento de la fiabilidad, disponibilidad yrendimiento de sus proyectos de Amazon Pinpoint y otros tipos de recursos de Amazon Pinpoint. Deberegistrar y recopilar datos de monitoreo de todas las partes de sus proyectos y recursos de AmazonPinpoint para depurar más fácilmente un error multipunto si ocurre alguno. AWS proporciona variasherramientas que pueden ayudarlo a registrar y recopilar estos datos, así como a responder a posiblesincidentes:

AWS CloudTrail

Amazon Pinpoint está integrado con AWS CloudTrail, que es un servicio que proporciona un registrode las acciones realizadas en Amazon Pinpoint por un usuario, un rol u otro servicio de AWS. Entreestas se incluyen las acciones realizadas desde la consola de Amazon Pinpoint y las llamadasmediante programación a las operaciones de la API de Amazon Pinpoint. Mediante el uso de lainformación recopilada por CloudTrail, puede determinar qué solicitudes se realizaron en AmazonPinpoint. Para cada solicitud, puede identificar cuándo se realizó, la dirección IP desde la que serealizó, quién la realizó e información adicional. Para obtener más información, consulte la secciónRegistro de llamadas a la API de Amazon Pinpoint con AWS CloudTrail (p. 315) de esta guía.

406

Amazon Pinpoint Guía para desarrolladoresValidación de la conformidad

Amazon CloudWatch

Puede utilizar Amazon CloudWatch para recopilar, ver y analizar varias métricas importantesrelacionadas con la cuenta y los proyectos de Amazon Pinpoint. También puede utilizar CloudWatchpara crear alarmas que lo avisen cuando el valor de una métrica cumpla determinadas condiciones yse encuentre dentro o fuera de un umbral que haya definido. Si crea una alarma, CloudWatch envíauna notificación a un tema de Amazon Simple Notification Service (Amazon SNS) que especifique.Para obtener más información, consulte Monitorización de Amazon Pinpoint con Amazon CloudWatchen la Guía del usuario de Amazon Pinpoint.

Paneles de AWS Health

Con los paneles de AWS Health, puede comprobar y monitorear el estado de su entorno de AmazonPinpoint. Para comprobar el estado del servicio Amazon Pinpoint en general, utilice el panel de estadodel servicio de AWS. Para comprobar, monitorear y ver datos históricos sobre cualquier evento oproblema que pueda afectar más específicamente a su entorno de AWS, utilice el panel de controlde estado personal de AWS. Para obtener más información sobre estos paneles, consulte Guía delusuario de AWS Health.

AWS Trusted Advisor

AWS Trusted Advisor inspecciona su entorno de AWS y ofrece recomendaciones sobre oportunidadesde resolver brechas de seguridad, mejorar la disponibilidad y el rendimiento del sistema y ahorrardinero. Todos los clientes de AWS tienen acceso a un conjunto básico de comprobaciones deTrusted Advisor. Los clientes que tienen un plan de soporte Business o Enterprise tienen acceso acomprobaciones de Trusted Advisor adicionales.

Muchas de estas comprobaciones pueden ayudarlo a evaluar el estado de seguridad de los recursosde Amazon Pinpoint que forman parte de su cuenta de AWS general. Por ejemplo, el conjunto básicode comprobaciones de Trusted Advisor incluye lo siguiente:• Configuraciones de registro para su cuenta de AWS, para cada región de AWS admitida.• Permisos de acceso a los buckets de Amazon Simple Storage Service (Amazon S3), que pueden

contener archivos que importa a Amazon Pinpoint para generar segmentos.• Uso de usuarios, grupos y roles de AWS Identity and Access Management (IAM) para controlar el

acceso a los recursos de Amazon Pinpoint.• Configuraciones y ajustes de políticas de IAM que podrían poner en peligro la seguridad de su

entorno de AWS y los recursos de Amazon Pinpoint.

Para obtener más información, consulte AWS Trusted Advisor en la Guía del usuario de AWS Support.

Validación de conformidad para Amazon PinpointLos auditores externos evalúan la seguridad y la conformidad de Amazon Pinpoint en distintos programasde conformidad de AWS. Estos incluyen AWS System and Organization Controls (SOC), FedRAMP,HIPAA, ISO/IEC 27001:2013 para controles de administración de la seguridad, ISO/IEC 27017:2015 paracontroles específicos de la nube, ISO/IEC 27018:2014 para protección de datos personales e ISO/IEC9001:2015 para sistemas de gestión de calidad, entre otros.

Para obtener una lista de los servicios de AWS que se encuentran en el ámbito de programas deconformidad específicos, consulte Servicios de AWS en el ámbito del programa de conformidad. Paraobtener información general, consulte Programas de conformidad de AWS.

Puede descargar los informes de auditoría de terceros mediante AWS Artifact. Para obtener másinformación, consulte Descarga de informes en AWS Artifact.

Su responsabilidad de conformidad al usar Amazon Pinpoint viene determinada por la confidencialidadde sus datos, los objetivos de conformidad de su empresa y las leyes y regulaciones aplicables.AWSproporciona los siguientes recursos para ayudarlo a cumplir las normativas:

407

Amazon Pinpoint Guía para desarrolladoresResiliencia

• Guías de inicio rápido de seguridad y conformidad– estas guías de implementación tratanconsideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referenciacentrados en la seguridad y la conformidad en AWS.

• Documento técnico sobre arquitectura para seguridad y conformidad de HIPAA– este documento técnicodescribe cómo las empresas pueden utilizar AWS para crear aplicaciones conformes con HIPAA.

• Recursos de conformidad de AWS – este conjunto de manuales y guías podría aplicarse a su sector yubicación.

• Evaluación de recursos con reglas en la Guía para desarrolladores de AWS Config – el servicio AWSConfig evalúa en qué medida las configuraciones de los recursos cumplen con las prácticas internas, lasdirectrices del sector y las normativas.

• AWS Security Hub – este servicio de AWS ofrece una vista integral de su estado de seguridad enAWS que le ayuda a comprobar la conformidad con las normas del sector de seguridad y las prácticasrecomendadas.

Amazon Pinpoint es un servicio de AWS que cumple los requisitos de HIPAA cuando los clientes utilizanlos canales de comunicación adecuados. Si desea utilizar Amazon Pinpoint para ejecutar cargas detrabajo que contengan información médica protegida (PHI) tal como se define en HIPAA y la legislacióny reglamentos asociados, debe utilizar el canal de correo electrónico, el canal de notificaciones push o elcanal de SMS para enviar mensajes que contengan PHI. Si utiliza el canal de SMS para enviar mensajesque contengan PHI, debe enviar esos mensajes a través de un código corto dedicado que debe habersolicitado para su cuenta de AWS con el propósito explícito de enviar mensajes que contengan o puedancontener PHI. El canal de voz no es apto para HIPAA en AWS; no utilice el canal de voz para enviarmensajes que contengan PHI.

Resiliencia en Amazon PinpointLa infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Lasregiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladasque se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, ademásde baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datosque realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas dedisponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructurastradicionales de centros de datos únicos o múltiples.

Para obtener más información sobre zonas de disponibilidad y las regiones de AWS, consulteInfraestructura global de AWS.

Seguridad de la infraestructura en Amazon PinpointComo servicio administrado, Amazon Pinpoint está protegido por los procedimientos de seguridad de redglobales de AWS que se describen en el documento técnico Amazon Web Services - Información generalacerca de los procesos de seguridad.

Puede utilizar las llamadas a la API publicadas en AWS para obtener acceso a Amazon Pinpoint través dela red. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior.Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles conconjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE)o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7 yposteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de accesosecreta que estén asociados a una entidad principal de AWS Identity and Access Management (IAM)

408

Amazon Pinpoint Guía para desarrolladoresConfiguración y análisis de vulnerabilidades

de su cuenta de AWS. También puede utilizar AWS Security Token Service (AWS STS) para generarcredenciales de seguridad temporales para firmar solicitudes.

Aunque puede realizar estas llamadas a la API desde cualquier ubicación de red, Amazon Pinpointadmite políticas de acceso basadas en recursos. Estas política pueden incluir restricciones basadas en ladirección IP de origen. Para obtener más información sobre este tipo de política, consulte Administraciónde acceso mediante políticas (p. 357).

Además, puede configurar y utilizar varias características de seguridad de AWS para controlar el acceso alos recursos de Amazon Pinpoint desde cualquier aplicación móvil o web que integre con Amazon Pinpoint.Esto incluye restricciones en las llamadas a la API para tareas como agregar puntos de enlace, actualizardatos de punto de enlace, enviar datos de eventos y registrar datos de uso.

Para utilizar estas características, le recomendamos que utilice los SDK de AWS para el móvil o lasbibliotecas JavaScript de AWS Amplify para integrar aplicaciones móviles y web con Amazon Pinpoint.Para las aplicaciones de Android o iOS, le recomendamos que use el SDK de AWS Mobile para Androido el AWS Mobile SDK for iOS, respectivamente. Para aplicaciones móviles o web basadas en JavaScript,le recomendamos que utilice la biblioteca JavaScript para la Web de AWS Amplify o la bibliotecaJavaScript de AWS Amplify para React Native. Para obtener más información sobre estos recursos,consulte Introducción a los SDK para el móvil de AWS, Introducción a AWS Amplify Library for the Web eIntroducción a AWS Amplify Library for React Native.

Configuración y análisis de vulnerabilidades enAmazon Pinpoint

Como servicio administrado, Amazon Pinpoint está protegido por los procedimientos de seguridad de redglobales de AWS que se describen en el documento técnico Amazon Web Services - Información generalacerca de los procesos de seguridad. Esto significa que AWS administra y realiza tareas y procedimientosde seguridad básicos para proteger, aplicar parches, actualizar y mantener la infraestructura subyacentede su cuenta y recursos de Amazon Pinpoint. Estos procedimientos han sido revisados y certificados porlos terceros pertinentes.

Para obtener más información, consulte los recursos siguientes:

• Validación de conformidad para Amazon Pinpoint (p. 407)• Modelo de responsabilidad compartida• Amazon Web Services: información general de procesos de seguridad (documento técnico)

409

Amazon Pinpoint Guía para desarrolladoresCuotas generales

Cuotas de Amazon PinpointEn las siguientes secciones se enumeran y describen las cuotas, antes denominadas límites, que seaplican a los recursos y las operaciones de Amazon Pinpoint. Algunas cuotas pueden aumentarse,mientras que otras no. Para determinar si puede solicitar un aumento de una cuota, consulte la columnaEligible for Increase (Es posible aumentarlo) en cada sección.

Temas• Cuotas generales (p. 410)• Cuotas de campaña (p. 410)• Cuotas de correo electrónico (p. 411)• Cuotas de punto de enlace (p. 413)• Cuotas de importación de puntos de enlace (p. 414)• Cuotas de consumo de eventos (p. 414)• Cuotas de recorrido (p. 415)• Cuotas de aprendizaje automático (p. 415)• Cuotas de plantillas de mensajes (p. 416)• Cuotas de notificación push (p. 417)• Cuotas de segmentos (p. 418)• Cuotas de SMS (p. 418)• Cuotas de voz (p. 418)• Solicitud de aumento de cuota (p. 420)

Cuotas generalesLas siguientes cuotas se aplican al uso general de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Tamaño de carga de solicitud deAPI

7 MB por solicitud No

Proyectos 100 por cuenta No

Cuotas de campañaLas siguientes cuotas se aplican al recurso Campañas de la API de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Campañas activas 200 por cuenta

Note

Una campaña activaes una campaña queno se ha completadoo que ha fallado. Lascampañas activas tienen

Sí (p. 420)

410

Amazon Pinpoint Guía para desarrolladoresCuotas de correo electrónico

Recurso Cuota predeterminada Es posible aumentarloun estado SCHEDULED,EXECUTING oPENDING_NEXT_RUN.

Envíos de mensajes 100 millones por actividad decampaña

Sí (p. 420)

Campañas basadas en eventos Cada proyecto puede incluirhasta 10 campañas que seenvían cuando se produceneventos.

Las campañas que utilizandesencadenadores basadosen eventos tienen que utilizarsegmentos dinámicos. Nopueden usar segmentosimportados.

Si integra la aplicación conAmazon Pinpoint medianteun SDK de AWS Mobile, losmensajes de las campañasbasadas en eventos se envíanúnicamente a los clientes cuyasaplicaciones ejecutan SDKde AWS Mobile para Androidversión 2.7.2 o posterior o AWSMobile SDK for iOS versión2.6.30 o posterior.

Si Amazon Pinpoint no puedeentregar un mensaje de unacampaña basada en eventosen el plazo de cinco minutos,descarta el mensaje y no vuelvea intentar entregarlo.

No

Cuotas de correo electrónicoLas cuotas de las siguientes secciones se aplican al canal de correo electrónico.

Cuotas de mensajes de correo electrónico

Recurso Cuota predeterminada Es posible aumentarlo

Tamaño máximo de los mensajes(incluidos los archivos adjuntos)

10 MB por mensaje No

Número de identidadesverificadas

10 000 identidades No

411

Amazon Pinpoint Guía para desarrolladoresCuotas de los remitentes y

destinatarios de correo electrónico

Recurso Cuota predeterminada Es posible aumentarlo

Note

Las identidades son lasdirecciones de correoelectrónico o dominios,o bien una combinaciónde ambos. Todos loscorreos electrónicosque envíe a través deAmazon Pinpoint sedeben hacer desde unaidentidad verificada.

Cuotas de los remitentes y destinatarios de correoelectrónico

Recurso Cuota predeterminada Es posible aumentarlo

Dirección del remitente Es necesario verificar todos losdominios y direcciones de losremitentes.

No

Dirección del destinatario Si su cuenta está en el entornode pruebas, se deben verificartodos los dominios o direccionesde correo electrónico de losdestinatarios.

Si su cuenta no está en elentorno de pruebas, puederealizar envíos a cualquierdirección válida.

Sí (p. 420)

Número de destinatarios pormensaje

50 destinatarios por mensaje No

Número de identidades quepuede verificar

10 000 identidades por región deAWS

Note

Las identidades son lasdirecciones de correoelectrónico o dominios,o bien una combinaciónde ambos. Todos loscorreos electrónicosque envíe a través deAmazon Pinpoint sedeben hacer desde unaidentidad verificada.

No

412

Amazon Pinpoint Guía para desarrolladoresCuotas de envío de correo electrónico

Cuotas de envío de correo electrónico

Recurso Cuota predeterminada Es posible aumentarlo

Número de correos electrónicosque pueden enviarse cada 24horas (cuota de envío)

Si la cuenta está en el entornode pruebas: 200 correoselectrónicos por un período de 24horas.

Si su cuenta está fuera delentorno de pruebas, la cuotavaría en función de su caso deuso específico.

Note

Esta cuota se basa en elnúmero de destinatarios,en lugar de la cantidadde mensajes enviadosúnicos. Un destinatarioes cualquier direcciónde correo electrónico enel campo Para:.

Sí (p. 420)

Número de correos electrónicosque pueden enviarse cadasegundo (tasa detasa de envío)

Si la cuenta está en el entorno depruebas: 1 correo electrónico porsegundo.

Si su cuenta está fuera delentorno de pruebas, la tasa varíaen función de su caso de usoespecífico.

Note

Esta tasa se basa en elnúmero de destinatarios,en lugar de la cantidadde mensajes enviadosúnicos. Un destinatarioes cualquier direcciónde correo electrónico enel campo Para:.

Sí (p. 420)

Cuotas de punto de enlaceLas siguientes cuotas se aplican al recurso Puntos de enlace de la API de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Atributos asignados a losparámetros Attributes,Metrics y UserAttributesconjuntamente

40 por proyecto No

413

Amazon Pinpoint Guía para desarrolladoresCuotas de importación de puntos de enlace

Recurso Cuota predeterminada Es posible aumentarlo

Atributos asignados al parámetroAttributes

40 por proyecto No

Atributos asignados al parámetroMetrics

40 por proyecto No

Atributos asignados al parámetroUserAttributes

40 por proyecto No

Longitud del nombre de atributo 50 caracteres No

Longitud del valor de atributo 100 caracteres No

EndpointBatchItemobjetos en una carga deEndpointBatchRequest

100 por carga. El tamaño de lacarga no puede ser superior a7 MB.

No

Puntos de enlace con el mismoID de usuario

10 puntos de enlace únicos porID de usuario

No

Valores asignados a los atributosde parámetro Attributes

50 por atributo No

Valores asignados a los atributosde parámetro UserAttributes

50 por atributo No

Cuotas de importación de puntos de enlaceLas siguientes cuotas se aplican a la importación de puntos de enlace en Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Trabajos de importaciónsimultáneos

2 por cuenta Sí (p. 420)

Tamaño de importación 1 GB por trabajo de importación

Por ejemplo, si cada punto deenlace es de 4 KB o menos,puede importar 250 000 puntosde enlace.

Sí (p. 420)

Cuotas de consumo de eventosLas siguientes cuotas se aplican al consumo de eventos mediante los SDK de AWS Mobile y el recursoEventos de la API de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de tipos deeventos personalizados

1500 por aplicación No

414

Amazon Pinpoint Guía para desarrolladoresCuotas de recorrido

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de claves deatributos personalizados

500 por aplicación No

Número máximo de valores deatributos personalizados porclave de atributo

100 000 No

Número máximo de caracterespor clave de atributo

50 No

Número máximo de caracterespor valor de atributo

200 No

Número máximo de claves demétrica personalizada

500 por aplicación No

Número máximo de eventos enuna solicitud.

100 por solicitud No

Tamaño máximo de una solicitud 4 MB No

Tamaño máximo de un eventoindividual

1,000 KB No

Número máximo de claves deatributo y claves de métricas paracada evento

40 por solicitud No

Cuotas de recorridoLas siguientes cuotas se aplican a los recorridos.

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de recorridosactivos

50 por cuenta Sí (p. 420)

Número máximo de actividadesde recorrido

40 por recorrido Sí (p. 420)

Tamaño máximo del segmento Para segmentos importados: 5GB por recorrido

Para segmentos dinámicos:ilimitado

No

Cuotas de aprendizaje automáticoLas siguientes cuotas se aplican a las configuraciones de Amazon Pinpoint para recuperar y procesardatos de modelos de aprendizaje automático (ML).

415

Amazon Pinpoint Guía para desarrolladoresCuotas de plantillas de mensajes

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo deconfiguraciones de modelo

1 por plantilla de mensaje No

Número máximo derecomendaciones

5 por mensaje No

Número máximo de atributosrecomendados por punto deenlace o usuario

1, si los valores de atributo noson procesados por una funciónde AWS Lambda

10, si los valores de atributo sonprocesados por una función deAWS Lambda

No

Longitud máxima de un nombrede atributo recomendado

50 caracteres para un nombre deatributo

25 caracteres para un nombrepara mostrar de atributo (elnombre que aparece en laconsola de Amazon Pinpoint)

No

Longitud máxima de un valor deatributo recomendado que serecupera de Amazon Personalize

100 caracteres No

Tamaño máximo de una cargaútil de invocación (solicitud yrespuesta) para una función deLambda

6 MB No

Cantidad máxima de tiempo deespera para que una función deLambda procese los datos

15 segundos No

Número máximo de intentos deinvocar una función de Lambda

3 intentos No

En función de cómo configure Amazon Pinpoint para usar un modelo de ML, pueden aplicarse cuotasadicionales. Para obtener información acerca de las cuotas de Amazon Personalize, consulte Cuotas en laAmazon Personalize Developer Guide. Para obtener más información sobre las cuotas de AWS Lambda,consulte Cuotas en la Guía para desarrolladores de AWS Lambda.

Cuotas de plantillas de mensajesLas siguientes cuotas se aplican a las plantillas de mensajes de su cuenta de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de plantillas demensajes

10 000 por cuenta Sí (p. 420)

Número máximo de versiones 5000 por plantilla No

416

Amazon Pinpoint Guía para desarrolladoresCuotas de notificación push

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de caracteresen una plantilla de correoelectrónico

500 000 caracteres No

Número máximo de caracteresen las partes predeterminadas deuna plantilla de notificación push

2000 caracteres No

Número máximo de caracteresen las partes de la plantillaespecíficas de ADM de unaplantilla de notificación push

4000 caracteres No

Número máximo de caracteresen las partes de la plantillaespecíficas de APNs de unaplantilla de notificación push

2000 caracteres No

Número máximo de caracteresen las partes de la plantillaespecíficas de Baidu de unaplantilla de notificación push

4000 caracteres No

Número máximo de caracteresen las partes de la plantillaespecíficas de FCM de unaplantilla de notificación push

4000 caracteres No

Número máximo de caracteresen una plantilla de SMS

1600 caracteres No

El número máximo de caracteresen una plantilla de voz

10,000 caracteres No

Cuotas de notificación pushLas siguientes cuotas se aplican a los mensajes que envía Amazon Pinpoint a través de canales denotificación push.

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo denotificaciones push que sepueden enviar por segundo

25 000 notificaciones porsegundo

No

Tamaño de carga de mensajesde Amazon Device Messaging(ADM)

6 KB por mensaje No

Tamaño de carga de mensajesde Apple Push Notificationservice (APNs)

4 KB por mensaje No

Tamaño de carga de mensajesde entorno de pruebas de APNs

4 KB por mensaje No

417

Amazon Pinpoint Guía para desarrolladoresCuotas de segmentos

Recurso Cuota predeterminada Es posible aumentarlo

Tamaño de carga de mensajesde Baidu Cloud Push

4 KB por mensaje No

Tamaño de carga de mensajesde Mensajería de la nube deFirebase (FCM)

4 KB por mensaje No

Cuotas de segmentosLas siguientes cuotas se aplican al recurso Segmentos de la API de Amazon Pinpoint.

Recurso Cuota predeterminada Es posible aumentarlo

Número máximo de dimensionesque se pueden utilizar para crearun segmento

100 por segmento No

Cuotas de SMSLas siguientes cuotas se aplican al canal de SMS.

Recurso Cuota predeterminada Es posible aumentarlo

Umbral de gasto 1,00 USD por cuenta Sí (p. 420)

Número de mensajes SMS quepueden enviarse cada segundo(tasa de envío)

20 mensajes por segundo No

Número de mensajes SMS quese puede enviar a un únicodestinatario por segundo

1 mensaje por segundo No

Número de temas de AmazonSNS para SMS bidireccionales

100 000 por cuenta Sí (p. 420)

Cuotas de vozLas siguientes cuotas se aplican al canal de voz.

Note

Cuando su cuenta se quita del entorno de pruebas, se califica de forma automática para lascuotas máximas que se muestran en la tabla siguiente.

Recurso Cuota predeterminada Es posible aumentarlo

Número de mensajes de voz quese pueden enviar durante unperiodo de 24 horas

Si la cuenta está en el entorno depruebas: 20 mensajes

No

418

Amazon Pinpoint Guía para desarrolladoresCuotas de voz

Recurso Cuota predeterminada Es posible aumentarloSi la cuenta está fuera delentorno de pruebas: ilimitado

Número de mensajes de voz quese pueden enviar a un mismodestinatario durante un periodode 24 horas

5 mensajes No

Número de mensajes de voz quese pueden enviar por minuto

Si la cuenta está en el entorno depruebas: 5 llamadas por minuto

Si la cuenta está fuera delentorno de pruebas: 20 llamadaspor minuto

No

Número de mensajes de vozque se pueden enviar desde unmismo número de teléfono deorigen por segundo

1 mensaje por segundo No

Longitud del mensaje de voz Si la cuenta está en el entorno depruebas: 30 segundos

Si la cuenta está fuera delentorno de pruebas: 5 minutos

No

419

Amazon Pinpoint Guía para desarrolladoresSolicitud de aumento de cuota

Recurso Cuota predeterminada Es posible aumentarlo

Capacidad para enviar mensajesde voz a números de teléfonointernacionales

Si la cuenta está en el entornode pruebas, solo puede enviarmensajes a destinatarios de lossiguientes países:

• Australia• Canadá• China• Alemania• Hong Kong• Israel• Japón• México• Singapur• Suecia• Estados Unidos• Reino Unido

Si su cuenta está fuera delentorno de pruebas, puedeenviar mensajes a destinatariosde cualquier país.

Note

Las llamadasinternacionales estánsujetas a tarifasadicionales que varíansegún el país o la regiónde destino.

No

Número de caracteres de unmensaje de voz

3000 caracteres facturables(caracteres en palabrashabladas)

6000 caracteres en total(incluidos los caracteresfacturables y las etiquetas SSML)

No

Número de conjuntos deconfiguración

10 000 conjuntos deconfiguración de voz por regiónde AWS

No

Solicitud de aumento de cuotaSi el valor de la columna Eligible for Increase (Es posible aumentarlo) de cualquiera de las tablasanteriores es Yes (Sí), puede solicitar un cambio de esa cuota.

420

Amazon Pinpoint Guía para desarrolladoresSolicitud de aumento de cuota

Para solicitar un aumento de cuota

1. Inicie sesión en la Consola de administración de AWS en https://console.aws.amazon.com/.2. Cree un nuevo caso de soporte en AWS en https://console.aws.amazon.com/support/home#/case/

create.3. En la página Create case (Crear caso) elija Service quota increase (Aumento de cuota de servicio).4. En Case classification (Clasificación del caso), bajo Quota type (Tipo de cuota), elija una de estas

opciones:

• Para solicitar un aumento de cuota relacionado con el canal de correo electrónico, elija PinpointEmail (Correo electrónico de Pinpoint).

• Para solicitar un aumento de cuota relacionado con el canal SMS, elija Pinpoint SMS (SMS dePinpoint).

• Para solicitar un aumento de cuota relacionado con el canal de voz, elija Pinpoint Voice (Voz dePinpoint).

• Para solicitar un aumento de cuota relacionado con cualquier otra característica de AmazonPinpoint, elija Pinpoint.

5. Dependiendo de la opción que haya elegido en el paso anterior, introduzca la información solicitada enlos campos opcionales y obligatorios para explicar su caso de uso.

6. En Requests (Solicitudes), realice una de las acciones siguientes:

• Si su solicitud está relacionada con el canal SMS, en Resource Type (Tipo de recurso), elija GeneralQuotas (Cuotas generales).

• Si su solicitud está relacionada con otro canal o con cualquier otra característica de AmazonPinpoint, en Region (Región), elija la región de AWS para la que desea solicitar el aumento decuota. Para solicitar un aumento de la misma cuota en una región adicional, elija Add anotherrequest (Agregar otra solicitud) y, a continuación, elija la región adicional.

7. Elija la cuota que desea aumentar y, a continuación, escriba el nuevo valor que desea para la cuota.8. En Case description (Descripción del caso), en Use case description (Descripción del caso de uso),

explique por qué solicita el aumento de cuota.9. En Contact options (Opciones de contacto), en Preferred contact language (Idioma de contacto

preferido), elija el idioma que prefiera utilizar para comunicarse con el equipo de AWS Support.10. En Contact method (Método de contacto), elija el método preferido de contacto para comunicarse con

el equipo de AWS Support.11. Elija Submit.

El equipo de AWS Support proporciona una respuesta inicial a su solicitud antes de las 24 horas.

Para evitar que nuestros sistemas sean utilizados para enviar contenido no solicitado o malicioso, tenemosque considerar cada solicitud detenidamente. Si podemos hacerlo, garantizaremos una solicitud en esteperiodo de 24 horas. Sin embargo, si tenemos que obtener información adicional suya, puede que lasolución de la solicitud lleve más tiempo.

Es posible que no podamos garantizar su solicitud si su caso de uso no está en consonancia con nuestraspolíticas.

421

Amazon Pinpoint Guía para desarrolladores

Historial de la documentación deAmazon Pinpoint

En la siguiente tabla se describen los cambios importantes de cada versión de la Guía paradesarrolladores de Amazon Pinpoint posteriores a diciembre de 2018. Para obtener notificaciones sobrelas actualizaciones de esta documentación, puede suscribirse a una fuente RSS.

• Última actualización de la documentación: 4 de marzo de 2020

update-history-change update-history-description update-history-date

Aprendizajeautomático (p. 422)

Se ha agregado informaciónsobre cómo recuperarrecomendaciones personalizadasde modelos de recomendacióny, opcionalmente, mejorar esasrecomendaciones medianteel uso de funciones de AWSLambda.

March 4, 2020

Seguridad (p. 422) Se ha agregado un capítuloSeguridad, que proporcionainformación acerca de distintoscontroles de seguridad ycaracterísticas de AmazonPinpoint.

February 4, 2020

Recorridos (p. 422) Se ha agregado informaciónsobre el uso de recorridos deAmazon Pinpoint para desarrollarflujos de trabajo automatizadosque realizan actividades demensajería para proyectos.También se ha agregadoinformación sobre la consultade datos analíticos para unsubconjunto de métricas que seaplican a los recorridos.

October 31, 2019

Análisis (p. 422) Se han agregado procedimientosque explican cómo consultardatos de análisis de campañasy mensajes transaccionales,e información adicional sobreel uso de los resultados de lasconsultas.

October 17, 2019

Análisis (p. 422) Se ha añadido informaciónacerca de la consulta de datos de

September 6, 2019

422

Amazon Pinpoint Guía para desarrolladoresActualizaciones anteriores

análisis para un subconjunto demétricas que se aplican al correoelectrónico y a los mensajes SMSde transacciones.

Ejemplos de código (p. 422) Se han añadido ejemplos decódigo que puede utilizar paraenviar notificaciones push paratransacciones utilizando todoslos servicios compatibles conAmazon Pinpoint.

July 30, 2019

Análisis (p. 422) Se ha añadido información sobrecómo consultar datos de análisispara un subconjunto de métricasque se aplican a los proyectos(aplicaciones) y a las campañas.

July 24, 2019

Segmentos (p. 422) Se ha agregado un tutorialque describe una soluciónpara importar los datos de losclientes a Amazon Pinpointdesde sistemas externos, comoSalesforce o Marketo.

May 14, 2019

Disponibilidad en lasregiones (p. 422)

Amazon Pinpoint ya estádisponible en las regiones AsiaPacífico (Mumbai) y Asia Pacífico(Sídney) de AWS.

April 25, 2019

Uso de Postman con AmazonPinpoint (p. 422)

Se ha añadido un tutorial quedescribe cómo utilizar Postmanpara interactuar con la API deAmazon Pinpoint.

April 8, 2019

Registro de SMS (p. 422) Se ha agregado un capítuloTutoriales y se ha agregado untutorial en el que se describecómo crear una solución queadministra el registro de usuariode SMS.

February 27, 2019

Etiquetado (p. 422) Se ha añadido información sobreel etiquetado de recursos deAmazon Pinpoint.

February 27, 2019

Ejemplos de código (p. 422) Se han añadido ejemplos decódigo en varios lenguajes deprogramación que le muestrancómo enviar mensajes de correoelectrónico, SMS y de vozmediante programación.

February 6, 2019

Actualizaciones anterioresEn la siguiente tabla se describen los cambios importantes de cada versión de la Guía paradesarrolladores de Amazon Pinpoint hasta diciembre de 2018.

423

Amazon Pinpoint Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción Fecha

Disponibilidad en las regiones Amazon Pinpoint ya estádisponible en las regionesEE.UU. Oeste (Oregón) y Europa(Fráncfort) de AWS.

21 de diciembre de 2018

Canal de voz Puede utilizar el nuevo canalde voz de Amazon Pinpointpara crear mensajes de voz y,a continuación, entregar esosmensajes a sus clientes porteléfono. Actualmente, solo sepueden enviar mensajes de vozsi se utiliza la API de SMS y vozde Amazon Pinpoint.

15 de noviembre de 2018

Disponibilidad en Europa(Irlanda)

Amazon Pinpoint ya estádisponible en la región Europa(Irlanda) de AWS.

25 de octubre de 2018

API de eventos Utilice la API de Amazon Pinpointpara registrar eventos (p. 139) yasociarlos con puntos de enlace.

7 de agosto de 2018

Ejemplos de código para definir ybuscar puntos de enlace

Se añaden ejemplos decódigo que muestran cómodefinir, actualizar, eliminar ybuscar puntos de enlace. Seproporcionan ejemplos para laAWS CLI, AWS SDK for Javay la API de Amazon Pinpoint.Para obtener más información,consulte Definir el público enAmazon Pinpoint (p. 142) yAcceso a los datos de público enAmazon Pinpoint (p. 168).

7 de agosto de 2018

Permisos de exportación depuntos de enlace

Configuración de una políticade IAM (p. 392) que permiteexportar puntos de enlace deAmazon Pinpoint a un bucket deAmazon S3.

1 de mayo de 2018

Verificación de números deteléfono para SMS

Use la API de Amazon Pinpointpara verificar un número deteléfono (p. 197) y determinar sise trata de un destino válido paralos mensajes SMS.

23 de abril de 2018

Temas actualizados para laintegración con Amazon Pinpoint

Integración de AmazonPinpoint (p. 135) conaplicaciones de Android, iOS oJavaScript mediante los SDK obibliotecas de AWS.

23 de marzo de 2018

Registro de AWS CloudTrail Se ha añadido información sobreel registro de las llamadas a la

6 de febrero de 2018

424

Amazon Pinpoint Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción FechaAPI de Amazon Pinpoint conCloudTrail (p. 315).

Cuotas de servicio actualizadas Se ha actualizado la secciónCuotas (p. 410) con informaciónadicional sobre las cuotas decorreo electrónico.

19 de enero de 2018

Versión beta pública paraextensiones de Amazon Pinpoint

Utilice funciones de AWSLambda para personalizarsegmentos (p. 188) o crearcanales de mensajeríapersonalizados (p. 342).

28 de noviembre de 2017

Se ha eliminado el ID externo delas políticas de confianza de IAM

La clave de ID externo se haeliminado de la política deconfianza (p. 391) y el código deJava (p. 185) de ejemplo paralos segmentos que se van aimportar.

26 de octubre de 2017

Cuotas de carga de lasnotificaciones push

Las cuotas incluyen tamañosde carga para los mensajesde inserción de dispositivosmóviles (p. 417).

25 de octubre de 2017

Cuotas de servicio actualizadas Se ha añadido información decanal de correo electrónico ySMS a Cuotas (p. 410).

9 de octubre de 2017

Inserción en móvil de ADM yBaidu

Actualice el código de laaplicación para admitirnotificaciones push de loscanales push de Baidu y ADMpara móviles.

27 de septiembre de 2017

ID de usuario y autenticacióneventos con grupos de usuariosde Amazon Cognito.

Si utiliza grupos de usuarios deAmazon Cognito para administrarel inicio de sesión de usuarioen sus aplicaciones móviles,Amazon Cognito asigna IDde usuario a los puntos deenlace y notifica los eventos deautenticación a Amazon Pinpoint.

26 de septiembre de 2017

ID de usuario Asigne ID de usuario a los puntosde enlace para monitorizar el usode las aplicaciones de usuariosindividuales. Se proporcionanejemplos para los AWS MobileSDK (p. 137) y SDK paraJava (p. 148).

31 de agosto de 2017

425

Amazon Pinpoint Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción Fecha

Eventos de autenticación Genere informes de los eventosde autenticación para conocerla frecuencia con la que losusuarios se autentican en suaplicación. Se ofrecen ejemplosen Notificación de eventos enuna aplicación (p. 138).

31 de agosto de 2017

Eventos de muestra actualizados Entre los eventos deejemplo (p. 234) se incluyenalgunos que Amazon Pinpointtransmite para la actividad deSMS y correo electrónico.

08 de junio de 2017

Administración de sesiones deAndroid

Administre sesiones en Androidmediante la utilización de unaclase proporcionada por laaplicación de muestra de AWSMobile Hub.

20 de abril de 2017

Muestras de eventos demonetización actualizadas

El código de muestra se haactualizado para la notificaciónde eventos de monetización. .

31 de marzo de 2017

Secuencias de eventos Puede configurar AmazonPinpoint para enviar loseventos de aplicación y decampaña a una secuencia deKinesis (p. 234).

24 de marzo de 2017

Permisos Consulte Funcionamientode Amazon Pinpoint conIAM (p. 358) para obtenerinformación acerca de laconcesión de acceso a AmazonPinpoint para los usuarios deAWS en su cuenta y los usuariosde la aplicación móvil.

12 de enero de 2017

Disponibilidad general deAmazon Pinpoint

Esta versión incorpora AmazonPinpoint.

1 de diciembre de 2016

426

Amazon Pinpoint Guía para desarrolladores

AWS GlossaryFor the latest AWS terminology, see the AWS Glossary in the AWS General Reference.

427