0

別のトラッキング プラットフォーム (WhatConverts) によってトリガーされる Webhook を使用して、Optimizely API を初めて使用しようとしています。Optimizely はネイティブではないので、目標は通話を追跡することです。

WhatConverts からデータを正常にキャプチャし、後で使用するためにデータベースに書き込んでいます。Optimizely への送信で問題が発生しています。ここでAPIドキュメントに従いました:

Optimizely X 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()それをポストとして送ります。ただし、「バッチ json ペイロード内に必要なフィールドの Visitor[] がありません」というエラーが表示されます。

調べているうちに出てきたものも試し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;
    }
}

繰り返しますが、同じ結果です。これを機能させるための正しい方向に誰かが私を向けることができますか?

4

1 に答える 1