

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

# 使用印模資料記錄項目互動事件
<a name="putevents-including-impressions-data"></a>

如果您使用[使用者個人化](native-recipe-new-item-USER_PERSONALIZATION.md)配方或將 IMPRESSIONS 欄位新增至網域資料集群組中資料集的結構描述，您可以在 PutEvents 操作中記錄曝光資料。印模是使用者與特定項目互動 （例如，點按或觀看） 時可見的項目清單。Amazon Personalize 使用曝光資料來引導探勘，其中的建議包括互動資料較少或相關性較低的項目。如需 Amazon Personalize 可建立模型之*隱含*和*明確*印象的相關資訊，請參閱 [印象資料](interactions-datasets.md#interactions-impressions-data)。

**重要**  
如果您在`PutEvents`請求中提供衝突的隱含和明確印模資料，Amazon Personalize 預設會使用明確印模。

若要記錄將使用者顯示為曝光資料的 Amazon Personalize 建議，請在[PutEvents](API_UBS_PutEvents.md)請求`recommendationId`中包含 ，Amazon Personalize 會根據您的建議資料衍生隱含曝光。

若要手動記錄事件的曝光資料，請在[PutEvents](API_UBS_PutEvents.md)命令的`impression`輸入參數中列出曝光。下列程式碼範例示範如何使用適用於 Python 的 SDK (Boto3) 或適用於 Java 的 SDK 2.x，在 PutEvents 操作`impression`中包含 `recommendationId`和 。如果您同時包含兩者，Amazon 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 ]

使用下列`putEvents`方法記錄具有曝光資料和 recommendationId 的事件。對於印模參數，傳遞 itemIds 清單做為 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());
    }
}
```

------