

**支援終止通知：**2026 年 10 月 30 日， AWS 將結束對 Amazon Pinpoint 的支援。2026 年 10 月 30 日之後，您將無法再存取 Amazon Pinpoint 主控台或 Amazon Pinpoint 資源 (端點、區段、行銷活動、旅程和分析)。如需詳細資訊，請參閱 [Amazon Pinpoint 終止支援](https://docs.aws.amazon.com/console/pinpoint/migration-guide)。**注意：**與 SMS、語音、行動推播、OTP 和電話號碼驗證相關的 APIs 不受此變更影響，並受 AWS 最終使用者傳訊支援。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將使用者與 Amazon Pinpoint 端點建立關聯
<a name="audience-define-user"></a>

端點可以包含定義*使用者*的屬性，其代表您的對象中的人員。例如，使用者可能代表安裝您的行動應用程式的人員，或具備您的網站上帳戶的人員。

您可以透過指定唯一的使用者 ID 和選擇性的自訂使用者屬性來定義使用者。如果某個人員在多個裝置上使用您的應用程式，或如果可以透過在多個地址傳送訊息給該人員，則您可以將相同的使用者 ID 指派給多個端點。在這種情況下，Amazon Pinpoint 會同步所有端點的使用者屬性。因此如果您將使用者屬性加入一個端點，Amazon Pinpoint 會將該屬性加入含同一個使用者 ID 的所有端點。

您可以新增使用者屬性以追蹤套用至個人的資料，並且不會因該人員所使用的裝置而不同。例如，您可以新增人員的名稱、年齡或帳戶狀態的屬性。

**提示**  
如果您的應用程式使用 Amazon Cognito 使用者集區處理使用者驗證，Amazon Cognito 會將使用者 ID 和屬性自動加入您的端點。若是使用者 ID 值端點，Amazon Cognito 會指派已指派給使用者集區中使用者的 `sub` 值。若要了解如何使用 Amazon Cognito 加入使用者，請參閱 *Amazon Cognito 開發人員指南*中的[透過 Amazon Cognito 使用者集區使用 amazon pinpoint 分析](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-pinpoint-integration.html)。

新增使用者定義至端點之後，對於如何區隔您的對象，您會有更多選項。您可以根據使用者屬性定義客群，或者您可以透過匯入使用者 ID 的清單來定義客群。當您傳送訊息給根據使用者的客群，可能的目的地會包含該客群中每個使用者相關聯的每個端點。

對於如何傳送訊息給對象，也會有更多的選項。您可以使用行銷活動來傳送訊息給某個客群的使用者，或者您可以直接傳送訊息給使用者 ID 的清單。若要個人化您的訊息，您可以包含將取代為使用者屬性值的訊息變數。

## 範例
<a name="audience-define-user-example"></a>

以下範例說明如何新增使用者定義至端點。

------
#### [ AWS CLI ]

透過 AWS CLI執行命令，可以使用 Amazon Pinpoint。

**Example Update Endpoint 命令**  
若要新增使用者至端點，請使用 [update-endpoint](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/update-endpoint.html) 命令。對於 `--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 檔案的檔案路徑。

**Example 端點請求檔案**  
範例 `update-endpoint` 命令會使用 JSON 檔案做為 `--endpoint-request` 參數的引數。此檔案包含的使用者定義類似以下：  

```
{ 
    "User":{ 
        "UserId":"example_user",
        "UserAttributes":{ 
            "FirstName":["Wang"],
            "LastName":["Xiulan"],
            "Gender":["Female"],
            "Age":["39"]
        }
    }
}
```
如需可用於定義使用者的屬性，請參閱 *Amazon Pinpoint API 參考*中 [EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) 結構描述的 `User` 物件。

------
#### [ 適用於 Java 的 AWS SDK ]

使用 適用於 Java 的 AWS SDK提供的用戶端，可以在 Java 應用程式中使用 Amazon Pinpoint API。

**Example 代碼**  
若要將使用者新增至端點，請初始化 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 範例，請參閱 [GitHub](https://github.com/) 上的 [AddExampleUser.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/pinpoint/src/main/java/com/example/pinpoint/AddExampleUser.java)。

------
#### [ HTTP ]

對 REST API 直接提出 HTTP 請求，可以使用 Amazon Pinpoint。

**Example 使用使用者定義放置端點請求**  
若要將使用者新增至端點，請將 `PUT` 請求發出至位在以下 URI 的 [Endpoint](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html) 資源：  
`/v1/apps/application-id/endpoints/endpoint-id`  
其中：  
+ *application-id* 是您要加入或更新端點的 Amazon Pinpoint 專案的 ID。
+ *endpoint-id* 是您要指派給新端點的 ID，或是您要更新的現有端點的 ID。
在您的請求中，包括所需的標頭，並提供 [EndpointRequest](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html#apps-application-id-endpoints-endpoint-id-schemas) JSON 做為內文。請求內文可以定義一個新的端點，其包括使用者。或者，若要更新現有的端點，您可以只提供您要變更的屬性。以下範例會透過只提供使用者屬性，將使用者新增至現有的端點：  

```
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"
}
```

------

## 相關資訊
<a name="audience-define-user-related"></a>

如需 Amazon Pinpoint API 中端點資源的詳細資訊 (包括支援的 HTTP 方法和請求參數)，請參閱 *Amazon Pinpoint API 參考*中的[端點](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-endpoints-endpoint-id.html)。

如需使用變數將訊息個人化的詳細資訊，請參閱 *Amazon Pinpoint 使用者指南*中的[訊息變數](https://docs.aws.amazon.com/pinpoint/latest/userguide/campaigns-message.html#campaigns-message-variables.html)。

如需了解如何透過匯入使用者 ID 清單來定義客群，請參閱 *Amazon Pinpoint 使用者指南*中的[匯入客群](https://docs.aws.amazon.com/pinpoint/latest/userguide/segments-importing.html)。

如需將私訊傳送給多達 100 個使用者 ID 的相關資訊，請參閱 *Amazon Pinpoint API 參考*中的[使用者訊息](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-users-messages.html)。

如需端點適用之配額的相關資訊，例如您可指派的使用者屬性數量，請參閱 [端點配額](quotas.md#quotas-endpoint)。