Σύνδεσμος Optimizely
Κατάσταση συνδέσμου: Προγραμματισμένο Δεν έχει κατασκευαστεί ακόμη. Το Tajo δεν εκτελεί σήμερα αυτόν τον σύνδεσμο.
Απεικόνιση · δείγμα δεδομένων
Παράδειγμα συγχρονισμού
Πηγή
Optimizely
Κατάσταση συνδέσμου: Προγραμματισμένο
Προορισμός
Το άλλο σας εργαλείο
Κατάσταση συνδέσμου: Προσαρμοσμένο εργαλείο
Αντιστοίχιση πεδίων
| Πεδίο πηγής | Πεδίο προορισμού | Ενδεικτική τιμή |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Σχέδιο
- Ελέγξτε μία εγγραφή
- Εγκρίνετε αυτή την έκδοση
Οι καταστάσεις αφορούν μεμονωμένους συνδέσμους και δεν εγγυώνται ότι αυτός ο συγχρονισμός είναι έτοιμος. Ενδεικτικά πεδία. Ελέγξτε το πραγματικό σχήμα και τα δικαιώματα πριν εκτελεστεί συγχρονισμός.
Συνδέστε το Optimizely Feature Experimentation με το Brevo μέσω Tajo για συγχρονισμό αποτελεσμάτων πειραμάτων, στόχευση καμπανιών βάσει τμημάτων feature flag και εμπλουτισμό αυτοματισμών marketing με δεδομένα δοκιμών A/B και πληροφορίες κοινού.
Επισκόπηση
| Ιδιότητα | Τιμή |
|---|---|
| Πλατφόρμα | Optimizely |
| Κατηγορία | Πειραματισμός (Προσαρμοσμένο) |
| Πολυπλοκότητα Ρύθμισης | Μεσαία |
| Επίσημη Ενσωμάτωση | Όχι |
| Δεδομένα που Συγχρονίζονται | Πειράματα, Κοινά, Εκδηλώσεις, Feature Flags |
| Μέθοδος Πιστοποίησης | Personal Access Token / OAuth 2.0 |
Χαρακτηριστικά
- Συγχρονισμός πειράματος - Μεταφόρτωση αναθέσεων παραλλαγής δοκιμών A/B σε χαρακτηριστικά επαφών Brevo
- Στόχευση κοινού - Χρήση κοινών Optimizely για τμηματοποίηση καμπανιών Brevo
- Παρακολούθηση μετατροπών - Παρακολούθηση εκδηλώσεων Optimizely και αντιστοίχιση σε παρακολούθηση εκδηλώσεων Brevo
- Συγχρονισμός feature flag - Τμηματοποίηση επαφών βάσει ενεργοποιημένων feature flags
- Αναφορά αποτελεσμάτων - Συγχρονισμός αποτελεσμάτων πειράματος για καμπάνιες marketing μετά-ανάλυσης
- Υποστήριξη πολλαπλών projects - Σύνδεση πολλαπλών projects Optimizely σε μεμονωμένη περίπτωση Tajo
Προαπαιτούμενα
Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:
- Λογαριασμό Optimizely Feature Experimentation
- Personal Access Token από τις Ρυθμίσεις Εφαρμογής Optimizely
- Κλειδί SDK για το περιβάλλον Optimizely σας
- Λογαριασμό Brevo με πρόσβαση API
- Λογαριασμό Tajo με δικαιώματα συνδέσμου
Πιστοποίηση
Personal Access Token
# Generate at https://app.optimizely.com/v2/accountsettings/tokensexport OPTIMIZELY_ACCESS_TOKEN=your_personal_access_tokenexport OPTIMIZELY_SDK_KEY=your_sdk_keyexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// All REST API requests use Bearer token authconst headers = { 'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`, 'Content-Type': 'application/json'};Πιστοποίηση SDK
// For feature flag evaluation, use the SDKconst optimizelySDK = require('@optimizely/optimizely-sdk');
const optimizelyClient = optimizelySDK.createInstance({ sdkKey: process.env.OPTIMIZELY_SDK_KEY, datafileOptions: { autoUpdate: true, updateInterval: 60000 // 1 minute }});
await optimizelyClient.onReady();Διαμόρφωση
Βασική Ρύθμιση
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 * * *" # Every 2 hours
mapping: experiment_variation: EXPERIMENT_VARIATION feature_flags: ENABLED_FEATURES audience_segments: OPT_SEGMENTSΑντιστοίχιση Πεδίων
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_DATEEndpoints API
| Endpoint | Μέθοδος | Περιγραφή |
|---|---|---|
https://api.optimizely.com/v2/projects | GET | Λίστα projects |
https://api.optimizely.com/v2/experiments | GET | Λίστα πειραμάτων |
https://api.optimizely.com/v2/experiments/{id} | GET | Λήψη λεπτομερειών πειράματος |
https://api.optimizely.com/v2/experiments/{id}/results | GET | Λήψη αποτελεσμάτων πειράματος |
https://api.optimizely.com/v2/features | GET | Λίστα feature flags |
https://api.optimizely.com/v2/features/{id} | GET | Λήψη feature flag |
https://api.optimizely.com/v2/audiences | GET | Λίστα κοινών |
https://api.optimizely.com/v2/events | GET | Λίστα παρακολουθούμενων εκδηλώσεων |
https://logx.optimizely.com/v1/events | POST | Παρακολούθηση εκδηλώσεων (endpoint SDK) |
Παραδείγματα Κώδικα
Αρχικοποίηση Συνδέσμου
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'});Συγχρονισμός Αποφάσεων Πειράματος στο Brevo
// Track experiment decisions and sync to Brevoconst optimizelyClient = optimizelySDK.createInstance({ sdkKey: process.env.OPTIMIZELY_SDK_KEY});
await optimizelyClient.onReady();
// Register a decision notification listeneroptimizelyClient.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() } }); } } });Συγχρονισμός Αποτελεσμάτων Πειράματος
// Fetch experiment results and sync winning segmentsconst resultsResponse = await fetch( `https://api.optimizely.com/v2/experiments/${experimentId}/results`, { headers: { 'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}` } });
const results = await resultsResponse.json();
// Process variations and update contact segmentsfor (const variation of results.metrics) { const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;
if (isWinner) { // Create a Brevo segment for users in the winning variation console.log(`Winning variation: ${variation.variation_name}`); }}Τμηματοποίηση Βάσει Feature Flag
// Evaluate feature flags for user segmentationasync 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() } });}Όρια Ρυθμού
| Endpoint | Όριο | Σημειώσεις |
|---|---|---|
| REST API | 50 αιτ./λεπτό | Ανά personal access token |
| Results API | 10 αιτ./λεπτό | Υψηλότερη καθυστέρηση, βαρύτερα ερωτήματα |
| Αποστολή εκδηλώσεων SDK | 10.000 εκδηλώσεις/batch | Μέσω επεξεργαστή εκδηλώσεων SDK |
| Datafile CDN | Απεριόριστο | Αποθηκευμένο στη cache με αυτόματες ενημερώσεις |
Καθυστέρηση Results API
Το Results API Πειράματος επεξεργάζεται μεγάλα σύνολα δεδομένων και μπορεί να χρειαστεί 30+ δευτερόλεπτα για απόκριση. Χρησιμοποιήστε ασύγχρονο polling ή αποθήκευση στη cache για αποφυγή αποκλεισμού της εφαρμογής σας.
Αντιμετώπιση Προβλημάτων
| Πρόβλημα | Αιτία | Λύση |
|---|---|---|
| 401 Unauthorized | Token ληγμένο/μη έγκυρο | Αναγέννηση Personal Access Token |
| SDK δεν είναι έτοιμο | Το datafile δεν έχει φορτωθεί | Αναμείνετε επίλυση της υπόσχεσης onReady() |
| Δεν καταγράφονται αποφάσεις | Η ειδοποίηση δεν εγγράφηκε | Εγγράψτε ακροατή πριν τη λήψη αποφάσεων |
| Παλαιά feature flags | Cache datafile | Ορίστε updateInterval για αυτόματη ανανέωση |
| Λείπουν αποτελέσματα | Το πείραμα δεν ξεκίνησε | Επαληθεύστε ότι η κατάσταση πειράματος είναι “running” |
Λειτουργία Εντοπισμού Σφαλμάτων
connectors: optimizely: debug: true log_level: verbose log_decisions: true log_events: trueΒέλτιστες Πρακτικές
- Χρησιμοποιήστε SDK για αποφάσεις - Χρησιμοποιήστε SDK για αξιολόγηση flag σε πραγματικό χρόνο, REST API για διαχείριση
- Εφαρμόστε ομαδοποίηση εκδηλώσεων - Ομαδοποιήστε εκδηλώσεις SDK για μείωση overhead δικτύου
- Αποθηκεύστε datafile στη cache - Ενεργοποιήστε αυτόματη ενημέρωση με κατάλληλα διαστήματα
- Συγχρονίστε νικητές παραλλαγές - Μετά την ολοκλήρωση πειραμάτων, ενημερώστε τμήματα επαφών
- Χρησιμοποιήστε χαρακτηριστικά για στόχευση - Μεταβιβάστε email και χαρακτηριστικά χρήστη για αντιστοίχιση κοινού
- Παρακολουθήστε κατάσταση πειράματος - Συγχρονίζετε μόνο δεδομένα από εκτελούμενα ή ολοκληρωμένα πειράματα
Ασφάλεια
- Personal Access Tokens - Πιστοποίηση Bearer token για REST API
- Απομόνωση κλειδιού SDK - Ξεχωριστά κλειδιά SDK ανά περιβάλλον (dev, staging, prod)
- Αξιολόγηση πλευράς server - Αξιολογείτε feature flags πλευρά server για αποτροπή έκθεσης
- Εναλλαγή token - Εναλλάσσετε Personal Access Tokens περιοδικά
- Ελάχιστα δικαιώματα - Χρησιμοποιήστε tokens μόνο ανάγνωσης όταν δεν απαιτείται πρόσβαση εγγραφής
- Κρυπτογραφημένη μεταφορά - TLS 1.2+ για όλες τις επικοινωνίες API και SDK