Проблема с фильтром Facebook Graph API «time_created», который не сравнивает интересы за секунды

У меня возникла проблема с API Facebook Graph при фильтрации потенциальных клиентов на основе поля time_created с использованием временных меток UNIX. Кажется, что фильтрация времени API не точна до секунды.

Например, если я фильтрую интересы, созданные в 06-07-2024 11:58:00 AM (на самом деле в метке времени UNIX), и у интереса есть значение time_created 06-07-2024 11:58:12 AM, лид все равно будет включен в ответ, что приведет к появлению дубликатов в моих данных.

Кто-нибудь еще сталкивался с этой проблемой или нашел способ обеспечить точность фильтрации до секунды?

Мой код:

$currentDateTime = Carbon::now(); //At Very Start of Code.
$lastestDate = Carbon::parse(LeadData::latest()->first()->last_processed_time)->getTimestamp();
.
.
.
.
$newUrl2 = "https://graph.facebook.com/v20.0/{$adId}/leads";

$paramsNew2 = [
    //'since' => $lastestDate,
    'filtering' => json_encode([
        [
            'field' => 'time_created',
            'operator' => 'GREATER_THAN', //_OR_EQUAL
            'value' => $latestDate, // 1720247400, getting it from DB as last_processed_time.
        ]
    ]),
    'fields' => "id,form_id,platform,partner_name,field_data,ad_id,adset_id,campaign_id,ad_name,adset_name,campaign_name,created_time,post",
    'access_token' => $accessToken,
];

$response2 = Http::get($newUrl2, $paramsNew2);
$data3 = $response2->json();

$leadDatas = $data3['data'] ?? null;
foreach ($leadDatas as $leadData) 
{
    try 
    {
        LeadData::create([
                'account_id' => $adAccountId ?? null,
                'account_name' => null, ///$accountName,
                'campaign_id' => $leadData['campaign_id'],
                'campaign_name' => $leadData['campaign_name'],
                'adset_id' => $leadData['adset_id'],
                'adset_name' => $leadData['adset_name'],
                'ad_id' => $leadData['ad_id'],
                'ad_name' => $leadData['ad_name'],
                'ad_status' => $adStatus,
                'lead_id' => $leadData['id'],
                'lead_created_time' => $leadData['created_time'],
                'platform' => $leadData['platform'],
                'form_id' => $leadData['form_id'],
                'field_data' => json_encode($leadData['field_data'], JSON_UNESCAPED_UNICODE),
                'last_processed_time' => $currentDateTime,
            ]);

    } catch (\Exception $e) {
        echo "Data entry in database failed: " . $e->getMessage() ."\n";
        Log::error($e->getMessage());
    }
}

Затем сохраняю лиды в БД.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил ответ после некоторых исследований и помощи от моего друга. Очевидно, вы можете использовать 2 параметра для сравнения данных в API Graphs:

'filtering' => json_encode([
    [
        'field' => 'time_created',
        'operator' => 'GREATER_THAN',
        'value' => $lastestDate,
    ],
    [
        'field' => 'time_created',
        'operator' => 'LESS_THAN',
        'value' => $currentDateTime
    ]
]),

И моя проблема заключалась не в сравнении в секундах, а в том, что после запуска планировщика нужно было войти в базу данных $currentDateTimein. Также currentDateTime должен быть в метке времени.

$currentDateTime = Carbon::now()->timestamp;

Другие вопросы по теме