エンドポイントのバッチを Amazon Pinpoint に追加する - Amazon Pinpoint

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エンドポイントのバッチを Amazon Pinpoint に追加する

バッチでエンドポイントを送信して、複数のエンドポイントを 1 回のオペレーションで追加または更新することができます。バッチリクエストごとに最大 100 個のエンドポイント定義を含めることができます。

100 を超えるエンドポイントを 1 回のオペレーションで追加または更新するには、「Amazon Pinpoint へエンドポイントをインポートする」を参照してください。

次の例は、2 つのエンドポイントをバッチリクエストに含めて一度に追加する方法を示します。

AWS CLI

Amazon Pinpoint を使用するには、AWS CLI でコマンドを実行します。

例 Update Endpoints Batch コマンド

エンドポイントのバッチリクエストを送信するには、update-endpoints-batch コマンドを使用します。

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

実行する条件は以下のとおりです。

  • application-id は、エンドポイントを追加または更新する Amazon Pinpoint プロジェクトの ID です。

  • endpoint_batch_request_file.json は、--endpoint-batch-request パラメータの入力が含まれているローカル JSON ファイルへのファイルパスです。

例 エンドポイントバッチリクエストファイル

例の update-endpoints-batch コマンドでは、--endpoint-request パラメータの引数として、JSON ファイルを使用します。このファイルには、次のようなエンドポイント定義のバッチが含まれます。

{ "Item": [ { "ChannelType": "EMAIL", "Address": "richard_roe@example.com", "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": { "FirstName": "Richard", "LastName": "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", "UserAttributes": { "FirstName": "Mary", "LastName": "Major" } } } ] }

エンドポイントのバッチの定義に使用する属性については、Amazon Pinpoint API リファレンスのEndpointBatchRequest スキーマ」を参照してください。

AWS SDK for Java

AWS SDK for Java が提供するクライアントにより、Java アプリケーションで Amazon Pinpoint API を使用できます。

例 Code

エンドポイントバッチリクエストを送信するには、EndpointBatchRequest オブジェクトを初期化し、AmazonPinpoint クライアントの updateEndpointsBatch メソッドに渡します。次の例では、EndpointBatchRequest オブジェクトを 2 つの EndpointBatchItem オブジェクトに追加します。

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.pinpoint.PinpointClient; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointsBatchResponse; import software.amazon.awssdk.services.pinpoint.model.EndpointUser; import software.amazon.awssdk.services.pinpoint.model.EndpointBatchItem; import software.amazon.awssdk.services.pinpoint.model.ChannelType; import software.amazon.awssdk.services.pinpoint.model.EndpointBatchRequest; import software.amazon.awssdk.services.pinpoint.model.PinpointException; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointsBatchRequest; import java.util.Map; import java.util.List; import java.util.ArrayList; import java.util.HashMap;
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.pinpoint.PinpointClient; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointsBatchResponse; import software.amazon.awssdk.services.pinpoint.model.EndpointUser; import software.amazon.awssdk.services.pinpoint.model.EndpointBatchItem; import software.amazon.awssdk.services.pinpoint.model.ChannelType; import software.amazon.awssdk.services.pinpoint.model.EndpointBatchRequest; import software.amazon.awssdk.services.pinpoint.model.PinpointException; import software.amazon.awssdk.services.pinpoint.model.UpdateEndpointsBatchRequest; import java.util.Map; import java.util.List; import java.util.ArrayList; import java.util.HashMap; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class AddExampleEndpoints { public static void main(String[] args) { final String usage = """ Usage: <appId> Where: appId - The ID of the application. """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String applicationId = args[0]; PinpointClient pinpoint = PinpointClient.builder() .region(Region.US_EAST_1) .build(); updateEndpointsViaBatch(pinpoint, applicationId); pinpoint.close(); } public static void updateEndpointsViaBatch(PinpointClient pinpoint, String applicationId) { try { List<String> myList = new ArrayList<>(); myList.add("music"); myList.add("books"); Map myMap = new HashMap<String, List>(); myMap.put("attributes", myList); List<String> myNames = new ArrayList<String>(); myList.add("Richard"); myList.add("Roe"); Map myMap2 = new HashMap<String, List>(); myMap2.put("name", myNames); EndpointUser richardRoe = EndpointUser.builder() .userId("example_user_1") .userAttributes(myMap2) .build(); // Create an EndpointBatchItem object for Richard Roe. EndpointBatchItem richardRoesEmailEndpoint = EndpointBatchItem.builder() .channelType(ChannelType.EMAIL) .address("richard_roe@example.com") .id("example_endpoint_1") .attributes(myMap) .user(richardRoe) .build(); List<String> myListMary = new ArrayList<String>(); myListMary.add("cooking"); myListMary.add("politics"); myListMary.add("finance"); Map myMapMary = new HashMap<String, List>(); myMapMary.put("interests", myListMary); List<String> myNameMary = new ArrayList<String>(); myNameMary.add("Mary "); myNameMary.add("Major"); Map maryName = new HashMap<String, List>(); myMapMary.put("name", myNameMary); EndpointUser maryMajor = EndpointUser.builder() .userId("example_user_2") .userAttributes(maryName) .build(); // Create an EndpointBatchItem object for Mary Major. EndpointBatchItem maryMajorsSmsEndpoint = EndpointBatchItem.builder() .channelType(ChannelType.SMS) .address("+16145550100") .id("example_endpoint_2") .attributes(myMapMary) .user(maryMajor) .build(); // Adds multiple endpoint definitions to a single request object. EndpointBatchRequest endpointList = EndpointBatchRequest.builder() .item(richardRoesEmailEndpoint) .item(maryMajorsSmsEndpoint) .build(); // Create the UpdateEndpointsBatchRequest. UpdateEndpointsBatchRequest batchRequest = UpdateEndpointsBatchRequest.builder() .applicationId(applicationId) .endpointBatchRequest(endpointList) .build(); // Updates the endpoints with Amazon Pinpoint. UpdateEndpointsBatchResponse result = pinpoint.updateEndpointsBatch(batchRequest); System.out.format("Update endpoints batch result: %s\n", result.messageBody().message()); } catch (PinpointException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }

SDK の完全な例については、「GitHub」 の「AddExampleEndpoints.java」を参照してください。

HTTP

HTTP リクエストを直接 REST API に送信して Amazon Pinpoint を使用することができます。

例 Put Endpoints リクエスト

エンドポイントバッチリクエストを送信するには、次の URI のPUTEndpoints リソースに対して リクエストを発行します。

/v1/apps/application-id/endpoints

application-id は、エンドポイントを追加または更新する Amazon Pinpoint プロジェクトの ID です。

リクエストに、必要なヘッダーを含め、EndpointBatchRequest JSON を本文として指定します。

PUT /v1/apps/application_id/endpoints HTTP/1.1 Host: pinpoint.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json X-Amz-Date: 20180501T184948Z 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 { "Item": [ { "ChannelType": "EMAIL", "Address": "richard_roe@example.com", "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": { "FirstName": "Richard", "LastName": "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", "UserAttributes": { "FirstName": "Mary", "LastName": "Major" } } } ] }

リクエストが成功すると、次のようなレスポンスが表示されます。

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

Amazon Pinpoint API のエンドポイントリソースに関する詳細 (例: サポートされている HTTP メソッドやリクエストパラメータ) については、Amazon Pinpoint API リファレンスの「エンドポイント」を参照してください。