优化 API - "Missing the required field visitors"

Optimizely API - "Missing the required field visitors"

我第一次尝试使用 Optimizely API 使用由另一个跟踪平台 (WhatConverts) 触发的 webhook。目标是跟踪 phone 调用,因为 Optimizely 本身不会。

我成功地从 WhatConverts 捕获数据并将其写入数据库以备后用。我只是在将它发送到 Optimizely 时遇到问题。我在这里遵循了 API 文档:

Optimizely X API overview

以下是我如何根据他们的演示构建数据:

$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;
    }
}

同样的结果。任何人都可以指出正确的方向来使它正常工作吗?

问题可能是您向访问者发送了错误的数据,因为 API 需要数组数组。你可以尝试发送类似的东西吗?

$jsonData = array(
    'account_id'     => '8585984149',
    'project_id'     => '8585984149',
    'visitors'       =>
        array(
            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'
);