Я пытаюсь использовать Optimizely API в первый раз, используя веб-крючок, который запускается другой платформой отслеживания (WhatConverts). Цель состоит в том, чтобы отслеживать телефонные звонки, так как изначально Optimizely этого не делает.
Я успешно собираю данные из WhatConverts и записываю их в базу данных для последующего использования. У меня просто проблема с отправкой в Optimizely. Я следовал документации по API здесь:
Вот как я строю данные на основе их демонстрации:
$jsonData = array(
'account_id' => '8585984149',
'project_id' => '8585984149',
'visitors' => array(
'session_id' => '',
'visitor_id' => '[email protected]',
'snapshots' => array(
'decisions' => array(
'campaign_id' => '8603360066',
'experiment_id' => '8599910077',
'variation_id' => '8602330084'
),
'events' => array(
'entity_id' => '9560823711',
'type' => 'campaign_activated',
'timestamp' => 1491519130343,
'uuid' => '3a427b02-7ae0-4b20-8f02-32cc8a067be4'
),
),
),
'anonymize_ip' => true,
'client_name' => 'Optimizely/event-api-demo',
'client_version' => '1.0.0'
);
Затем я json_encode()
это и отправить его как ПОЧТА. Однако я получаю следующую ошибкуОтсутствуют обязательные посетители поля [] в пределах полезной нагрузки пакета JSON».
Я тоже пробовал json_encode($jsonData, JSON_PRETTY_PRINT)
что я наткнулся во время исследования, но получил тот же результат.
Наконец, я попробовал эту функцию, которую я нашел до кодирования, потому что я читаю эти строки, поскольку ключи заставят это быть объектом:
function fix_keys($jsonData) {
$numberCheck = false;
foreach ($jsonData as $k => $val) {
if (is_array($val)) $jsonData[$k] = fix_keys($val); //recurse
if (is_numeric($k)) $numberCheck = true;
}
if ($numberCheck === true) {
return array_values($jsonData);
} else {
return $jsonData;
}
}
Опять тот же результат. Кто-нибудь может указать мне правильное направление, чтобы заставить это работать?
Возможно, проблема в том, что вы отправляете неправильные данные посетителям, потому что API ожидает массив массивов. Можете ли вы попробовать отправить что-то подобное?
$jsonData = array(
'account_id' => '8585984149',
'project_id' => '8585984149',
'visitors' =>
array(
array(
'session_id' => '',
'visitor_id' => '[email protected]',
'snapshots' => array(
'decisions' => array(
'campaign_id' => '8603360066',
'experiment_id' => '8599910077',
'variation_id' => '8602330084'
),
'events' => array(
'entity_id' => '9560823711',
'type' => 'campaign_activated',
'timestamp' => 1491519130343,
'uuid' => '3a427b02-7ae0-4b20-8f02-32cc8a067be4'
),
),
)
),
'anonymize_ip' => true,
'client_name' => 'Optimizely/event-api-demo',
'client_version' => '1.0.0'
);
Других решений пока нет …