首页 > 解决方案 > 使用 aws/aws-sdk-php 的“Amazon Personalize”PutItems、PutEvents、PutUsers

问题描述

我正在使用以下方法在我的 Laravel 应用程序和 Amazon Personalize 之间构建一个集成:

aws/aws-sdk-php 

一切正常,但是当我研究如何使用新用户、交互和项目更新数据集时,我找不到正确的方法/方法来做到这一点,或者甚至没有可能。

我已经创建了事件跟踪器,但我找不到如何将此 Python 代码复制到 PHP 中:

    # Configure Properties:
    event = {
    "itemId": str(ITEM_ID),
    }
    event_json = json.dumps(event)
        
    # Make Call
    personalize_events.put_events(
    trackingId = TRACKING_ID,
    userId= USER_ID,
    sessionId = session_ID,
    eventList = [{
        'sentAt': int(time.time()),
        'eventType': 'EVENT_TYPE',
        'properties': event_json
        }] 

上面的代码是从这里提取的一部分https://github.com/aws-samples/amazon-personalize-samples/blob/master/getting_started/notebooks/1.Building_Your_First_Campaign.ipynb

这将用于跟踪新事件: https ://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html

如果有机会更好地避免执行额外的 Python 脚本,如果没有,我会选择该选项。

提前致谢!

标签: phpamazon-web-servicesamazon-personalize

解决方案


我发现我需要为此目的使用PersonalizeEventsClient而不是PersonalizeClient,如下所述:

https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-personalize-events-2018-03-22.html#putevents

该链接是 AWS Personalize 文档的一部分,我之前错过了,他们解释了如何使用 AWS SDK PHP 放置事件、项目和用户,例如:

$client = AWS::createClient('personalizeevents');
$result = $client->putEvents([
    'eventList' => [ // REQUIRED
        [
            'eventId' => '<string>',
            'eventType' => '<string>', // REQUIRED
            'eventValue' => <float>,
            'impression' => ['<string>', ...],
            'itemId' => '<string>',
            'properties' => '<string>',
            'recommendationId' => '<string>',
            'sentAt' => <integer || string || DateTime>, // REQUIRED
        ],
        // ...
    ],
    'sessionId' => '<string>', // REQUIRED
    'trackingId' => '<string>', // REQUIRED
    'userId' => '<string>',
]);

我也在为 Laravel 使用这个服务提供者:

https://github.com/aws/aws-sdk-php-laravel


推荐阅读