Optimizely Bağlayıcısı

Deney sonuçlarını senkronize etmek, özellik bayrağı segmentlerine göre kampanya hedeflemek ve pazarlama otomasyonlarını A/B test verileri ve kitle öngörüleriyle zenginleştirmek için Optimizely Feature Experimentation’ı Tajo üzerinden Brevo’ya bağlayın.

Genel Bakış

ÖzellikDeğer
PlatformOptimizely
KategoriDeneme (Özel)
Kurulum KarmaşıklığıOrta
Resmi EntegrasyonHayır
Senkronize Edilen VeriDeneyler, Kitleler, Olaylar, Özellik Bayrakları
Kimlik Doğrulama YöntemiKişisel Erişim Belirteci / OAuth 2.0

Özellikler

  • Deney senkronizasyonu - A/B test varyasyon atamalarını Brevo kişi özniteliklerine aktarın
  • Kitle hedefleme - Brevo kampanya segmentasyonu için Optimizely kitlelerini kullanın
  • Dönüşüm takibi - Optimizely olaylarını izleyin ve Brevo olay takibine eşleyin
  • Özellik bayrağı senkronizasyonu - Kişileri etkinleştirilmiş özellik bayraklarına göre segmentlere ayırın
  • Sonuç raporlama - Sonraki analiz pazarlama kampanyaları için deney sonuçlarını senkronize edin
  • Çoklu proje desteği - Tek bir Tajo örneğine birden fazla Optimizely projesi bağlayın

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  1. Bir Optimizely Feature Experimentation hesabı
  2. Optimizely Uygulama Ayarlarından bir Kişisel Erişim Belirteci
  3. Optimizely ortamınız için bir SDK anahtarı
  4. API erişimi olan bir Brevo hesabı
  5. Bağlayıcı izinlerine sahip bir Tajo hesabı

Kimlik Doğrulama

Kişisel Erişim Belirteci

Terminal window
# https://app.optimizely.com/v2/accountsettings/tokens adresinde oluşturun
export OPTIMIZELY_ACCESS_TOKEN=your_personal_access_token
export OPTIMIZELY_SDK_KEY=your_sdk_key
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// Tüm REST API istekleri Bearer belirteç kimlik doğrulaması kullanır
const headers = {
'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
};

SDK Kimlik Doğrulaması

// Özellik bayrağı değerlendirmesi için SDK'yı kullanın
const optimizelySDK = require('@optimizely/optimizely-sdk');
const optimizelyClient = optimizelySDK.createInstance({
sdkKey: process.env.OPTIMIZELY_SDK_KEY,
datafileOptions: {
autoUpdate: true,
updateInterval: 60000 // 1 dakika
}
});
await optimizelyClient.onReady();

Yapılandırma

Temel Kurulum

connectors:
optimizely:
enabled: true
access_token: "${OPTIMIZELY_ACCESS_TOKEN}"
sdk_key: "${OPTIMIZELY_SDK_KEY}"
project_id: "12345678"
sync:
experiments: true
audiences: true
events: true
feature_flags: true
schedule: "0 */2 * * *" # Her 2 saatte bir
mapping:
experiment_variation: EXPERIMENT_VARIATION
feature_flags: ENABLED_FEATURES
audience_segments: OPT_SEGMENTS

Alan Eşleştirme

field_mapping:
user_id: email
experiment_key: EXPERIMENT_NAME
variation_key: VARIATION_NAME
feature_key: FEATURE_FLAG
enabled: FEATURE_ENABLED
audience_name: AUDIENCE_SEGMENT
decision_timestamp: EXPERIMENT_DATE

API Uç Noktaları

Uç NoktaYöntemAçıklama
https://api.optimizely.com/v2/projectsGETProjeleri listele
https://api.optimizely.com/v2/experimentsGETDeneyleri listele
https://api.optimizely.com/v2/experiments/{id}GETDeney ayrıntılarını al
https://api.optimizely.com/v2/experiments/{id}/resultsGETDeney sonuçlarını al
https://api.optimizely.com/v2/featuresGETÖzellik bayraklarını listele
https://api.optimizely.com/v2/features/{id}GETÖzellik bayrağını al
https://api.optimizely.com/v2/audiencesGETKitleleri listele
https://api.optimizely.com/v2/eventsGETİzlenen olayları listele
https://logx.optimizely.com/v1/eventsPOSTOlayları izle (SDK uç noktası)

Kod Örnekleri

Bağlayıcıyı Başlatma

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('optimizely', {
accessToken: process.env.OPTIMIZELY_ACCESS_TOKEN,
sdkKey: process.env.OPTIMIZELY_SDK_KEY,
projectId: '12345678'
});

Deney Kararlarını Brevo’ya Senkronize Etme

// Deney kararlarını izle ve Brevo'ya senkronize et
const optimizelyClient = optimizelySDK.createInstance({
sdkKey: process.env.OPTIMIZELY_SDK_KEY
});
await optimizelyClient.onReady();
// Bir karar bildirim dinleyicisi kaydet
optimizelyClient.notificationCenter.addNotificationListener(
optimizelySDK.enums.NOTIFICATION_TYPES.DECISION,
async (decisionObject) => {
const { type, userId, attributes, decisionInfo } = decisionObject;
if (type === 'feature' || type === 'ab-test') {
const email = attributes.email;
if (email) {
await tajo.contacts.update(email, {
attributes: {
EXPERIMENT_NAME: decisionInfo.experimentKey || decisionInfo.featureKey,
VARIATION_NAME: decisionInfo.variationKey,
FEATURE_ENABLED: decisionInfo.featureEnabled || false,
EXPERIMENT_DATE: new Date().toISOString()
}
});
}
}
}
);

Deney Sonuçlarını Senkronize Etme

// Deney sonuçlarını getir ve kazanan segmentleri senkronize et
const resultsResponse = await fetch(
`https://api.optimizely.com/v2/experiments/${experimentId}/results`,
{
headers: {
'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`
}
}
);
const results = await resultsResponse.json();
// Varyasyonları işle ve kişi segmentlerini güncelle
for (const variation of results.metrics) {
const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;
if (isWinner) {
// Kazanan varyasyondaki kullanıcılar için bir Brevo segmenti oluştur
console.log(`Winning variation: ${variation.variation_name}`);
}
}

Özellik Bayrağı Tabanlı Segmentasyon

// Kullanıcı segmentasyonu için özellik bayraklarını değerlendir
async function syncFeatureFlags(userEmail, userId) {
const features = ['new_checkout', 'loyalty_program', 'ai_recommendations'];
const enabledFeatures = [];
for (const feature of features) {
const user = optimizelyClient.createUserContext(userId, {
email: userEmail
});
const decision = user.decide(feature);
if (decision.enabled) {
enabledFeatures.push(feature);
}
}
await tajo.contacts.update(userEmail, {
attributes: {
ENABLED_FEATURES: enabledFeatures.join(', '),
FEATURE_FLAGS_SYNCED: new Date().toISOString()
}
});
}

Hız Sınırları

Uç NoktaSınırNotlar
REST API50 istek/dkKişisel erişim belirteci başına
Sonuçlar API10 istek/dkDaha yüksek gecikme, daha ağır sorgular
SDK Olay GönderimiToplu iş başına 10.000 olaySDK olay işlemcisi aracılığıyla
Datafile CDNSınırsızOtomatik güncellemelerle önbelleğe alınır

Sonuçlar API Gecikmesi

Deney Sonuçları API’si büyük veri kümelerini işler ve yanıt vermesi 30+ saniye sürebilir. Uygulamanızı engellememek için eşzamansız yoklama veya önbelleğe alma kullanın.

Sorun Giderme

SorunNedenÇözüm
401 UnauthorizedSüresi dolmuş/geçersiz belirteçKişisel Erişim Belirtecini yeniden oluşturun
SDK hazır değilDatafile yüklenmedionReady() sözünün çözülmesini bekleyin
Karar kaydedilmiyorBildirim kaydedilmemişKararlar vermeden önce dinleyiciyi kaydedin
Eski özellik bayraklarıDatafile önbelleğiOtomatik yenileme için updateInterval ayarlayın
Eksik sonuçlarDeney başlamadıDeney durumunun “running” olduğunu doğrulayın

Hata Ayıklama Modu

connectors:
optimizely:
debug: true
log_level: verbose
log_decisions: true
log_events: true

En İyi Uygulamalar

  1. Kararlar için SDK kullanın - Gerçek zamanlı bayrak değerlendirmesi için SDK, yönetim için REST API kullanın
  2. Olay toplu işleme uygulayın - Ağ yükünü azaltmak için SDK olaylarını toplu işleyin
  3. Datafile’ı önbelleğe alın - Uygun aralıklarla otomatik güncellemeyi etkinleştirin
  4. Kazanan varyasyonları senkronize edin - Deneyler sona erdikten sonra kişi segmentlerini güncelleyin
  5. Hedefleme için öznitelikleri kullanın - Kitle eşleştirmesi için e-posta ve kullanıcı öznitelikleri iletin
  6. Deney durumunu izleyin - Yalnızca çalışan veya sonuçlanmış deneylerden veri senkronize edin

Güvenlik

  • Kişisel Erişim Belirteçleri - REST API için Bearer belirteç kimlik doğrulaması
  • SDK anahtar izolasyonu - Ortam başına ayrı SDK anahtarları (dev, staging, prod)
  • Sunucu tarafı değerlendirme - İfşayı önlemek için özellik bayraklarını sunucu tarafında değerlendirin
  • Belirteç rotasyonu - Kişisel Erişim Belirteçlerini periyodik olarak döndürün
  • Minimum izinler - Yazma erişimine gerek olmadığında yalnızca okuma belirteçleri kullanın
  • Şifreli taşıma - Tüm API ve SDK iletişimleri için TLS 1.2+

İlgili Kaynaklar

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.