优化API - "缺少必要的现场访问者"

时间:2018-02-08 21:26:14

标签: php json optimizely

我尝试首次使用Optimizely API,使用由另一个跟踪平台(WhatConverts)触发的webhook。目标是跟踪电话,因为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;
    }
}

同样,结果相同。任何人都可以指出我正确的方向让这个工作吗?

1 个答案:

答案 0 :(得分:1)

问题可能是您在访问者中发送了错误的数据,因为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'
);