Разработчики Facebook — Управление рекламой — Лид-объявления — Чтение ведет — Массовое чтение

я пытаюсь получить данные в режиме реального времени, используя событие Leadgen
я использую SDK для рекламы в Facebook для php
мне удалось настроить конечную точку для приема пинга в реальном времени
вот мой файл error_log

(
[entry] => Array
(
[0] => Array
(
[changes] => Array
(
[0] => Array
(
[field] => leadgen
[value] => Array
(
[ad_id] => 0
[form_id] => 1602570684541170
[leadgen_id] => 1629665456004730
[created_time] => 148036545636
[page_id] => 1870793756647618
[adgroup_id] => 0
)

)

)

[id] => 1870793717274654
[time] => 14803464737
)

)

[object] => page

)

я пытаюсь получить такие данные

    {
"data": [
{
"created_time": "2015-02-28T08:49:14+0000",
"id": "<LEAD_ID>",
"ad_id": "<AD_ID>",
"form_id": "<FORM_ID>",
"field_data": [
{
"name": "car_make",
"values": [
"Honda"]
},
{
"name": "full_name",
"values": [
"Joe Example"]
},
{
"name": "email",
"values": [
"[email protected]"]
},
]
}
],
"paging": {
"cursors": {
"before": "OTc2Nz3M5MTgyMzU1NDMy",
"after": "OTcxNjcyOTg5ANTI4NzE4"}
}
}

вот мой код webhook

<?php
require_once 'facebook-php-ads-sdk-master/vendor/autoload.php';use FacebookAds\Object\LeadgenForm;
use FacebookAds\Api;
use FacebookAds\Object\Ad;
use FacebookAds\Object\Lead;$app_id='148247344564502719';
$app_secret='17489f3e0f8235645413f5dd593e67787';
$access_token='1482473465452719';

// Initialize a new Session and instanciate an Api object
Api::init($app_id, $app_secret, $access_token);

// The Api object is now available trough singleton
$api = Api::instance();$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'abc123') {
echo $challenge;
}

$input = json_decode(file_get_contents('php://input'), true);
error_log(print_r($input, true));

$form_id = $input['entry'][0]['changes'][0]['value']['form_id'];
$ad_id = $input['entry'][0]['changes'][0]['value']['ad_id'];
$leadgen_id = $input['entry'][0]['changes'][0]['value']['leadgen_id'];

/*$form = new Lead($leadgen_id);
$form->read();

$ad = new Ad($ad_id);
$leads = $ad->getLeads();*/

$form = new LeadgenForm($form_id);
$leads = $form->getLeads();

error_log(print_r($leads, true));
?>

вот ошибка:

Неустранимая ошибка: необязательное исключение ‘Исключение’ с сообщением ‘поле’ id ‘обязательно.’ в /www/wibonus/public_html/facebook-php-ads-sdk-master/src/FacebookAds/Object/AbstractCrudObject.php:123 Трассировка стека: # 0 / www / wibonus / public_html / facebook-php-ads-sdk-master /src/FacebookAds/Object/Ad.php(290): FacebookAds \ Object \ AbstractCrudObject-> assureId () # 1 /www/wibonus/public_html/webhook.php(38): FacebookAds \ Object \ Ad-> getLeads () # 2 {main} добавлено в /www/wibonus/public_html/facebook-php-ads-sdk-master/src/FacebookAds/Object/AbstractCrudObject.php в строке 123

0

Решение

Вместо того, чтобы использовать Facebook SDK, вы можете сделать простой запрос CURL из вашего PHP-кода, чтобы получить данные формы заказа.

Вот код

    $challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'abc123') {
echo $challenge;
}

$input = json_decode(file_get_contents('php://input'), true);
error_log(print_r($input, true));

$form_id = $input['entry'][0]['changes'][0]['value']['form_id'];
$ad_id = $input['entry'][0]['changes'][0]['value']['ad_id'];
$leadgen_id = $input['entry'][0]['changes'][0]['value']['leadgen_id'];

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'abc123') {
echo $challenge;
}

$input = json_decode(file_get_contents('php://input'), true);
error_log(print_r($input, true));

$form_id = $input['entry'][0]['changes'][0]['value']['form_id'];
$ad_id = $input['entry'][0]['changes'][0]['value']['ad_id'];
$leadgen_id = $input['entry'][0]['changes'][0]['value']['leadgen_id'];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/v2.8/" . $leadGenId . "?access_token={ACCESS_TOKEN}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

$leadData = json_decode($result, true);

$lead = [];
for($i = 0; $i < count($leadData); $i++)
{
$lead[$leadData[$i]['name']] = $leadData[$i]['values'][0];
}

print_r($lead);

Вы должны вернуть $ challenge в URL вашего обратного вызова. (Примечание: если вы работаете над webhook)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]