我第一次尝试使用由另一个跟踪平台 (WhatConverts) 触发的 webhook 来使用 Optimizely API。目标是跟踪电话,因为 Optimizely 本身没有。
我成功地从 WhatConverts 捕获数据并将其写入数据库以供以后使用。我只是在将其发送到 Optimizely 时遇到问题。我在这里遵循了 API 文档:
以下是我根据他们的演示构建数据的方式:
$jsonData = array(
'account_id' => '8585984149',
'project_id' => '8585984149',
'visitors' => array(
'session_id' => '',
'visitor_id' => 'java-lover@example.com',
'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()
将其作为 POST 发送。但是,我收到以下错误“在批处理 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;
}
}
再次,同样的结果。有人能指出我正确的方向来让这个工作吗?