2017-02-06 14 views
1

Я очень доволен инструментом для создания объявлений в Facebook, который я создал.Как получить идентификатор сообщения Facebook из рекламы с использованием API?

В нем перечислены все кампании в учетной записи объявления, а также все объявления в каждой кампании и все объявления в каждом рекламном объявлении.

И это показывает показатели, которые меня волнуют.

Но я не смог выяснить, как получить идентификатор сообщения из объявления.

кажется, что это поле не упоминается в Insights края (не доступен в InsightsFields), так что, может быть, я должен сделать «присоединиться» на другой вызов API.

Мой основной код для получения прозрений является:

public function getInsights($levelType, $id, $aggLevel, $start, $end) { 
    if ($levelType) { 
     if ($id == null) { 
      abort(500, 'You must provide the ID for the object you want to retrieve.'); 
     } 
    } else { 
     $levelType = \AdAccount::class; 
     $id = ACT_PREPEND . $this->fbConfig['account_id']; 
     $aggLevel = AdsInsightsLevelValues::CAMPAIGN; 
    } 
    $variableClassWithNamespace = '\FacebookAds\Object\\' . $levelType; 
    $level = new $variableClassWithNamespace($id); 
    $fields = [ 
     InsightsFields::CAMPAIGN_ID, 
     InsightsFields::CAMPAIGN_NAME, 
     InsightsFields::ADSET_ID, 
     InsightsFields::ADSET_NAME, 
     InsightsFields::AD_ID, 
     InsightsFields::AD_NAME, 
     InsightsFields::SPEND, 
     InsightsFields::UNIQUE_IMPRESSIONS, 
     InsightsFields::INLINE_LINK_CLICKS, 
     InsightsFields::INLINE_LINK_CLICK_CTR, 
     InsightsFields::COST_PER_INLINE_LINK_CLICK, 
     InsightsFields::ACTIONS, 
     InsightsFields::COST_PER_ACTION_TYPE, 
     InsightsFields::CPM, 
    ]; 
    $params = [ 
     AdReportRunFields::LEVEL => $aggLevel, 
    ]; 
    if ($start) { 
     $params[AdReportRunFields::TIME_RANGE]['since'] = $start; 
     if (!$end) { 
      $params[AdReportRunFields::TIME_RANGE]['until'] = (new \DateTime("+2 year"))->format('Y-m-d'); 
     } 
    } 
    if ($end) { 
     $params[AdReportRunFields::TIME_RANGE]['until'] = $end; 
     if (!$start) { 
      $params[AdReportRunFields::TIME_RANGE]['since'] = (new \DateTime("-1 year"))->format('Y-m-d'); 
     } 
    } 
    if (!$start && !$end) { 
     $params[AdReportRunFields::DATE_PRESET] = InsightsPresets::LIFETIME; 
    } 
    $insights = $level->getInsights($fields, $params); 
    return $insights->getResponse()->getBody(); 
} 

Таким образом, на минимум, я хотел бы ответить на этот простой вопрос: если предположить у меня есть все необходимые разрешения API (который, конечно, Я), учитывая идентификатор объявления, как я могу получить идентификатор «сообщения», отображаемого в этом объявлении?

И в идеале, что я хотел бы ответить: как я могу получить этот идентификатор сообщения только в одном запросе API, поскольку я извлекаю все идеи, которые я хочу (показано выше)?

Спасибо!

ответ

2

Дело в том, что post ID - это базовый параметр объявления, а не ежедневное значение, которое вы получили бы от информации. Вот почему он не может быть найден нигде на конечных точках доступа.

Предполагая, что вы знаете все идентификаторы объявлений, вы можете запросить их все сразу (там могут быть некоторые недокументированные ограничения на количество в одном запросе), как это:

/v2.8/?ids=6068303632680,6074066638080&fields=creative{effective_object_story_id} 

Что на самом деле ярлык для выполнения этих двух запросов

/v2.8/6068303632680?fields=creative{effective_object_story_id} 
/v2.8/6074066638080?fields=creative{effective_object_story_id} 

Вы можете узнать больше о расширенном использовании API here in FB docs в разделе Multiple ID пользователя просит

+0

Спасибо! Затем я узнал об этом: http://stackoverflow.com/a/40423552/470749 – Ryan

+0

Это тоже полезно: https://stackoverflow.com/a/31354218/470749 – Ryan

0

Если вы хотите связать Facebook Ad ID с Facebook Video Id, вы можете использовать аналогичный запрос.

/v2.9/6087224935451?fields=creative{ name, title, video_id, status } 

Результат:

{ 
    "creative": { 
    "name": "Ad from a Page post 24", 
    "video_id": "745639641594227", 
    "status": "ACTIVE", 
    "id": "6087045300251" 
    }, 
    "id": "6087224935451" 
}