将用户与 Amazon Pinpoint 端点关联 - Amazon Pinpoint

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将用户与 Amazon Pinpoint 端点关联

端点可以包含定义用户(表示您的受众中的一个人)的属性。例如,用户可能表示已安装您的移动应用程序的某个人,或在您的网站上具有账户的某个人。

可以通过指定一个唯一用户 ID 并(可选)自定义用户属性来定义用户。如果某个人在多台设备上使用您的应用程序,或者可通过多个地址为此人发送消息,则可将同一用户 ID 分配给多个端点。在此情况下,Amazon Pinpoint 跨端点同步用户属性。因此,如果您将一个用户属性添加到一个端点,则 Amazon Pinpoint 会将该属性添加到包含相同用户 ID 的每个端点。

可以添加用户属性来跟踪适用于个人且不会因此人所用设备而变化的数据。例如,可以添加人员的姓名、年龄或账户状态属性。

提示

如果您的应用程序使用 Amazon Cognito 用户池来处理用户身份验证,则 Amazon Cognito 可以将用户 ID 和属性自动添加到您的端点。对于端点用户 ID 值,Amazon Cognito 将分配已在用户池中分配给用户的 sub 值。要了解如何使用 Amazon Cognito 添加用户,请参阅《Amazon Cognito 开发人员指南》中的将 Amazon Pinpoint 分析用于 Amazon Cognito 用户池

将用户定义添加到端点之后,细分受众的方式有了更多选择。可以基于用户属性定义分段,也可以通过导入用户 ID 列表来定义分段。当您向基于用户的分段发送消息时,可能的目标地址包括与分段中的每个用户关联的每个端点。

为受众发送消息的方式也有更多选择。可以使用活动为用户分段发送消息,也可以将消息直接发送到用户 ID 的列表。要个性化设置消息,可以包括将替换为用户属性值的消息变量。

示例

以下示例演示如何将用户定义添加到端点。

AWS CLI

可以通过在 AWS CLI中运行命令来使用 Amazon Pinpoint。

例 更新端点命令

要将用户添加到端点,请使用 update-endpoint 命令。对于 --endpoint-request 参数,可以定义一个包含用户的新端点。或者,要更新现有端点,可以只提供要更改的属性。以下示例通过仅提供用户属性来将用户添加到现有端点:

$ aws pinpoint update-endpoint \ > --application-id application-id \ > --endpoint-id endpoint-id \ > --endpoint-request file://endpoint-request-file.json

其中:

  • application-id 是要在其中添加或更新端点的 Amazon Pinpoint 项目的 ID。

  • endpoint-id 是要分配给新端点的 ID,或者是要更新的现有端点的 ID。

  • endpoint-request-file.json 是包含--endpoint-request参数输入的本地 JSON 文件的文件路径。

例 端点请求文件

示例 update-endpoint 命令使用 JSON 文件作为 --endpoint-request 形参 (parameter) 的实参 (argument)。此文件包含与下类似的用户定义:

{ "User":{ "UserId":"example_user", "UserAttributes":{ "FirstName":["Wang"], "LastName":["Xiulan"], "Gender":["Female"], "Age":["39"] } } }

有关可用于定义用户的属性,请参阅《Amazon Pinpoint API 参考》中EndpointRequest架构中的User对象。

AWS SDK for Java

您可以通过使用 AWS SDK for Java提供的客户端在您的 Java 应用程序中使用 Amazon Pinpoint API。

例 代码

要将用户添加到端点,请初始化一个 EndpointRequest 对象,然后将其传递给AmazonPinpoint客户端updateEndpoint的方法。可以使用此对象定义一个可以包含用户的新端点。或者,要更新现有端点,可以只更新要更改的属性。以下示例通过向现有终端节点添加 EndpointUser 对象将用户添加到该 EndpointRequest 对象:

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.pinpoint.PinpointClient; import software.amazon.awssdk.services.pinpoint.model.EndpointRequest; import software.amazon.awssdk.services.pinpoint.model.EndpointUser; import software.amazon.awssdk.services.pinpoint.model.ChannelType; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointRequest; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointResponse; import software.amazon.awssdk.services.pinpoint.model.PinpointException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
public static void updatePinpointEndpoint(PinpointClient pinpoint, String applicationId, String endPointId) { try { List<String> wangXiList = new ArrayList<>(); wangXiList.add("cooking"); wangXiList.add("running"); wangXiList.add("swimming"); Map myMapWang = new HashMap<>(); myMapWang.put("interests", wangXiList); List<String> myNameWang = new ArrayList<>(); myNameWang.add("Wang "); myNameWang.add("Xiulan"); Map wangName = new HashMap<>(); wangName.put("name", myNameWang); EndpointUser wangMajor = EndpointUser.builder() .userId("example_user_10") .userAttributes(wangName) .build(); // Create an EndpointBatchItem object for Mary Major. EndpointRequest wangXiulanEndpoint = EndpointRequest.builder() .channelType(ChannelType.EMAIL) .address("wang_xiulan@example.com") .attributes(myMapWang) .user(wangMajor) .build(); // Adds multiple endpoint definitions to a single request object. UpdateEndpointRequest endpointList = UpdateEndpointRequest.builder() .applicationId(applicationId) .endpointRequest(wangXiulanEndpoint) .endpointId(endPointId) .build(); UpdateEndpointResponse result = pinpoint.updateEndpoint(endpointList); System.out.format("Update endpoint result: %s\n", result.messageBody().message()); } catch (PinpointException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

有关完整的 SDK 示例,请参阅上GitHubAddExampleUser.java。

HTTP

可以通过直接向 REST API 发出 HTTP 请求来使用 Amazon Pinpoint。

例 Put 包含用户定义的端点请求

要将用户添加到端点,请向位于以下 URI 的端点资源发出 PUT 请求:

/v1/apps/application-id/endpoints/endpoint-id

其中:

  • application-id 是要在其中添加或更新端点的 Amazon Pinpoint 项目的 ID。

  • endpoint-id 是要分配给新端点的 ID,或者是要更新的现有端点的 ID。

在您的请求中,包含所需的标头,并提供 EndpointRequestJSON 作为正文。请求正文可以定义一个可以包含用户的新端点。或者,要更新现有端点,可以只提供要更改的属性。以下示例通过仅提供用户属性来将用户添加到现有端点:

PUT /v1/apps/application_id/endpoints/example_endpoint HTTP/1.1 Host: pinpoint.us-east-1.amazonaws.com X-Amz-Date: 20180415T182538Z Content-Type: application/json Accept: application/json Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180501/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;content-length;content-type;host;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170 Cache-Control: no-cache { "User":{ "UserId":"example_user", "UserAttributes":{ "FirstName":"Wang", "LastName":"Xiulan", "Gender":"Female", "Age":"39" } } }

如果请求成功,将收到与下类似的响应:

{ "RequestID": "67e572ed-41d5-11e8-9dc5-db288f3cbb72", "Message": "Accepted" }

有关 Amazon Pinpoint API 中的端点资源的更多信息,包括支持的 HTTP 方法和请求参数,请参阅《Amazon Pinpoint API 参考》中的端点

有关使用变量个性化设置消息的更多信息,请参阅《Amazon Pinpoint 用户指南》中的消息变量

要通过导入用户 ID 列表来定义分段,请参阅《Amazon Pinpoint 用户指南》中的导入分段

有关向最多 100 个用户 ID 发送直接消息的信息,请参阅《Amazon Pinpoint API 参考》中的用户消息

有关应用于端点的限额的信息(包括可分配的用户属性数),请参阅端点限额