

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 노출 데이터를 사용하여 항목 상호 작용 이벤트 기록
<a name="putevents-including-impressions-data"></a>

도메인 데이터세트 그룹의 데이터세트에 대한 스키마에 [사용자-개인 맞춤](native-recipe-new-item-USER_PERSONALIZATION.md)레시피를 사용하거나 IMPRESSIONS 필드를 추가하는 경우 PutEvents 작업에서 노출 데이터를 기록할 수 있습니다. 노출은 사용자가 특정 항목과 상호작용(예: 클릭 또는 시청)했을 때 볼 수 있었던 항목의 목록입니다. Personalize는 노출 데이터를 사용하여 탐색을 안내합니다. 이때 상호작용 데이터 또는 관련성이 낮은 항목이 추천에 포함됩니다. Personalize가 모델링할 수 있는 암시적 및 명시적 노출에 대한 자세한 내용은 [노출 데이터](interactions-datasets.md#interactions-impressions-data)단원을 참조하세요.****

**중요**  
`PutEvents` 요청에서 암시적 및 명시적 노출 데이터가 충돌하는 경우 Personalize는 기본적으로 명시적 노출을 사용합니다.

Personalize 추천을 기록하려면 사용자에게 노출 데이터로 표시하고 [PutEvents](API_UBS_PutEvents.md)요청에 `recommendationId`을 포함시킵니다. 그러면 Personalize가 추천 데이터를 기반으로 암시적 노출을 도출합니다.

이벤트의 노출 데이터를 수동으로 기록하려면 [PutEvents](API_UBS_PutEvents.md)명령의 `impression`입력 파라미터에 노출을 나열합니다. 다음 코드 샘플은 Python용 SDK(Boto3) 또는 Java 2.x용 SDK를 사용하여 PutEvents 작업에 `recommendationId`과 `impression`을 포함시키는 방법을 보여줍니다. 둘 다 포함시킬 경우 Personalize는 기본적으로 명시적 노출을 사용합니다.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize_events = boto3.client(service_name='personalize-events')

personalize_events.put_events(
    trackingId = '{{tracking_id}}',
    userId= '{{userId}}',
    sessionId = '{{sessionId}}',
    eventList = [{
        'eventId': '{{event1}}',
        'eventType': '{{rating}}',
        'sentAt': {{1553631760}},
        'itemId': '{{item id}}',
        'recommendationId': '{{recommendation id}}',
        'impression': ['{{itemId1}}', '{{itemId2}}', '{{itemId3}}']
        }]
)
```

------
#### [ SDK for Java 2.x ]

노출 데이터 및 추천 ID를 사용하여 이벤트를 기록하러면 다음 `putEvents`메서드를 사용합니다. 노출 파라미터의 경우 항목 ID 목록을 ArrayList로 전달합니다.

```
public static void putEvents(PersonalizeEventsClient personalizeEventsClient, 
                                String trackingId, 
                                String sessionId, 
                                String userId, 
                                String eventType, 
                                Float eventValue, 
                                String itemId,
                                ArrayList<String> impressions,
                                String recommendationId) {

    try { 
        Event event = Event.builder()
            .eventType(eventType)
            .sentAt(Instant.ofEpochMilli(System.currentTimeMillis() + 10 * 60 * 1000))
            .itemId(itemId)
            .eventValue(eventValue)
            .impression(impressions)
            .recommendationId(recommendationId)
            .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());
    }
}
```

------