API Optimizely — & quot; Пропущено обязательное поле посетителей & quot;

Я пытаюсь использовать Optimizely API в первый раз, используя веб-крючок, который запускается другой платформой отслеживания (WhatConverts). Цель состоит в том, чтобы отслеживать телефонные звонки, так как изначально Optimizely этого не делает.

Я успешно собираю данные из WhatConverts и записываю их в базу данных для последующего использования. У меня просто проблема с отправкой в ​​Optimizely. Я следовал документации по API здесь:

Обзор Optimizely X 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;
}
}

Опять тот же результат. Кто-нибудь может указать мне правильное направление, чтобы заставить это работать?

0

Решение

Возможно, проблема в том, что вы отправляете неправильные данные посетителям, потому что 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'
);
1

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

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

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