단일 항목 상호 작용 이벤트 기록
데이터 세트 그룹의 항목 상호 작용 데이터 세트 및 이벤트 트래커를 생성하면 항목 상호 작용 이벤트를 기록할 준비가 된 것입니다. 다음 예제는 하나의 항목 상호 작용 이벤트를 전달하는 PutEvents 작업을 보여줍니다. 항목 상호 작용 데이터 세트의 예제 행과 함께 해당하는 스키마가 표시됩니다.
애플리케이션은 사용자가 웹 사이트를 처음 방문하거나 애플리케이션을 사용할 때 고유한 sessionId을 생성합니다. 세션 전체의 모든 이벤트에서 동일한 sessionId을 사용해야 합니다. 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());
}
}