

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 记录包含展示数据的物品交互事件
<a name="putevents-including-impressions-data"></a>

如果您使用[User-Personalization](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 `impression` 在 PutEvents 操作中包含`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 的事件。对于 impressions 参数，将 itemID 列表作为。 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());
    }
}
```

------