本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄單一項目互動事件
在您為資料集群組建立項目互動資料集和事件追蹤器之後,您就可以記錄項目互動事件。下列範例顯示傳遞一個項目互動事件PutEvents的操作。隨即顯示對應的結構描述,以及項目互動資料集的範例資料列。
 當使用者第一次造訪您的網站或使用應用程式sessionId時,您的應用程式會產生唯一的 。您必須在整個工作階段的所有事件sessionId中使用相同的 。Amazon Personalize 使用 sessionId將事件與使用者建立關聯,然後再登入 (匿名)。如需詳細資訊,請參閱記錄匿名使用者的事件。
事件清單是 Event 物件的陣列。每個事件eventType都需要 。如果您沒有事件類型資料,您可以提供預留位置值以滿足需求。
trackingId 來自您在 中建立的事件追蹤器建立項目互動事件追蹤器。userId、itemId 和 sentAt 參數對應到相應歷史 Interactions 資料集的 USER_ID、ITEM_ID 和 TIMESTAMP 欄位。如需詳細資訊,請參閱為 Amazon Personalize 結構描述建立結構描述 JSON 檔案。
對應的資料集資料欄
Dataset columns: USER_ID, ITEM_ID, TIMESTAMP, EVENT_TYPE
Example data: user123, item-xyz, 1543631760, click
程式碼範例
        - SDK for Python (Boto3)
 - 
            
import boto3
personalize_events = boto3.client(service_name='personalize-events')
personalize_events.put_events(
    trackingId = 'tracking_id',
    userId= 'USER_ID',
    sessionId = 'session_id',
    eventList = [{
        'sentAt': 1719511760,
        'eventType': 'click',
        'itemId': 'ITEM_ID'
        }]
)
           
        - SDK for JavaScript v3
 - 
            
// Get service clients module and commands using ES6 syntax.
import { PutEventsCommand } from "@aws-sdk/client-personalize-events";
import { personalizeEventsClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeEventsClient = new PersonalizeEventsClient({ region: "REGION"});
// Convert your UNIX timestamp to a Date.
const sentAtDate = new Date(1613443801 * 1000); // 1613443801 is a testing value. Replace it with your sentAt timestamp in UNIX format.
// Set put events parameters.
const putEventsParam = {
  eventList: [
    /* required */
    {
      eventType: "EVENT_TYPE" /* required */,
      sentAt: sentAtDate /* required, must be a Date with js */,
      eventId: "EVENT_ID" /* optional */,
      itemId: "ITEM_ID" /* optional */,
    },
  ],
  sessionId: "SESSION_ID" /* required */,
  trackingId: "TRACKING_ID" /* required */,
  userId: "USER_ID" /* required */,
};
export const run = async () => {
  try {
    const response = await personalizeEventsClient.send(
      new PutEventsCommand(putEventsParam),
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
           
        - AWS CLI
 - 
            
aws personalize-events put-events \
    --tracking-id tracking_id \
    --user-id USER_ID \
    --session-id session_id \
    --event-list '[{
        "sentAt": 1719511760,
        "eventType": "click",
        "itemId": "ITEM_ID"
      }]'
           
        - SDK for Java 2.x
 - 
            
public static void putEvents(PersonalizeEventsClient personalizeEventsClient, 
                            String trackingId, 
                            String sessionId, 
                            String userId, 
                            String itemId,
                            String eventType) {
    
    try { 
        Event event = Event.builder()
            .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000))
            .itemId(itemId)
            .eventType(eventType)
            .build();
        PutEventsRequest putEventsRequest = PutEventsRequest.builder()
            .trackingId(trackingId)
            .userId(userId)
            .sessionId(sessionId)
            .eventList(event)
            .build();
        int responseCode = personalizeEventsClient.putEvents(putEventsRequest)
            .sdkHttpResponse()
            .statusCode();
        System.out.println("Response code: " + responseCode);
        } catch (PersonalizeEventsException e) {
            System.out.println(e.awsErrorDetails().errorMessage());
        }
}