Optimizely کنیکٹر

تجرباتی نتائج سنک کرنے، feature flag سیگمنٹس کے ذریعے مہمات کو ہدف بنانے، اور A/B test ڈیٹا اور audience بصیرتوں کے ساتھ مارکیٹنگ آٹومیشنز کو بہتر بنانے کے لیے Optimizely Feature Experimentation کو Tajo کے ذریعے Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمOptimizely
زمرہتجربہ (حسب ضرورت)
سیٹ اپ کی پیچیدگیمعتدل
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاتجربات، Audiences، ایونٹس، Feature Flags
توثیقی طریقہPersonal Access Token / OAuth 2.0

خصوصیات

  • تجربہ سنک - A/B test variation assignments کو Brevo رابطہ خصوصیات کی طرف بھیجیں
  • Audience targeting - Brevo مہم سیگمنٹیشن کے لیے Optimizely audiences کا استعمال کریں
  • Conversion ٹریکنگ - Optimizely ایونٹس کو ٹریک کریں اور Brevo ایونٹ ٹریکنگ سے میپ کریں
  • Feature flag سنک - فعال feature flags کے ذریعے رابطوں کو سیگمنٹ کریں
  • نتائج کی رپورٹنگ - پوسٹ-تجزیہ مارکیٹنگ مہمات کے لیے تجرباتی نتائج سنک کریں
  • ملٹی-پروجیکٹ سپورٹ - متعدد Optimizely پروجیکٹس کو ایک واحد Tajo انسٹینس سے منسلک کریں

ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. Optimizely Feature Experimentation اکاؤنٹ
  2. Optimizely App Settings سے Personal Access Token
  3. اپنے Optimizely ماحول کے لیے SDK key
  4. API رسائی کے ساتھ Brevo اکاؤنٹ
  5. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

توثیق

Personal Access Token

Terminal window
# https://app.optimizely.com/v2/accountsettings/tokens پر تخلیق کریں
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
// تمام REST API درخواستیں Bearer token توثیق استعمال کرتی ہیں
const headers = {
'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
};

SDK توثیق

// feature flag evaluation کے لیے، SDK استعمال کریں
const 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_DATE

API اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
https://api.optimizely.com/v2/projectsGETپروجیکٹس کی فہرست
https://api.optimizely.com/v2/experimentsGETتجربات کی فہرست
https://api.optimizely.com/v2/experiments/{id}GETتجربہ تفصیلات حاصل کریں
https://api.optimizely.com/v2/experiments/{id}/resultsGETتجرباتی نتائج حاصل کریں
https://api.optimizely.com/v2/featuresGETfeature flags کی فہرست
https://api.optimizely.com/v2/features/{id}GETfeature flag حاصل کریں
https://api.optimizely.com/v2/audiencesGETaudiences کی فہرست
https://api.optimizely.com/v2/eventsGETٹریک شدہ ایونٹس کی فہرست
https://logx.optimizely.com/v1/eventsPOSTایونٹس ٹریک کریں (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 سے سنک کریں

// تجرباتی فیصلوں کو ٹریک کریں اور Brevo سے سنک کریں
const optimizelyClient = optimizelySDK.createInstance({
sdkKey: process.env.OPTIMIZELY_SDK_KEY
});
await optimizelyClient.onReady();
// فیصلے کی اطلاع کا listener رجسٹر کریں
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()
}
});
}
}
}
);

تجرباتی نتائج سنک کریں

// تجرباتی نتائج حاصل کریں اور جیتنے والے سیگمنٹس سنک کریں
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();
// variations پر عمل کریں اور رابطہ سیگمنٹس اپ ڈیٹ کریں
for (const variation of results.metrics) {
const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;
if (isWinner) {
// جیتنے والی variation میں صارفین کے لیے Brevo سیگمنٹ بنائیں
console.log(`Winning variation: ${variation.variation_name}`);
}
}

Feature Flag پر مبنی سیگمنٹیشن

// صارف سیگمنٹیشن کے لیے feature flags کا جائزہ لیں
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()
}
});
}

ریٹ کی حدود

اینڈ پوائنٹحدنوٹس
REST API50 req/minفی personal access token
Results API10 req/minزیادہ latency، بھاری queries
SDK Event Dispatch10,000 ایونٹس/بیچSDK event processor کے ذریعے
Datafile CDNلامحدودauto-updates کے ساتھ کیشے

Results API Latency

Experiment Results API بڑے ڈیٹا سیٹس پر عمل کرتا ہے اور جواب دینے میں 30+ سیکنڈ لے سکتا ہے۔ اپنی ایپلی کیشن کو بلاک کرنے سے بچنے کے لیے async polling یا کیشنگ کا استعمال کریں۔

مسائل کا سراغ

مسئلہوجہحل
401 Unauthorizedٹوکن میعاد ختم/غیر معتبرPersonal Access Token دوبارہ تخلیق کریں
SDK تیار نہیںDatafile لوڈ نہیںonReady() promise کے حل ہونے کا انتظار کریں
کوئی فیصلے لاگ نہیں ہوئےاطلاع رجسٹر نہیںفیصلے کرنے سے پہلے listener رجسٹر کریں
پرانے feature flagsDatafile cacheauto-refresh کے لیے updateInterval سیٹ کریں
غائب نتائجتجربہ شروع نہیں ہواتصدیق کریں کہ تجربے کی حیثیت “running” ہے

ڈیبگ موڈ

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

بہترین طریقے

  1. فیصلوں کے لیے SDK استعمال کریں - ریئل ٹائم flag evaluation کے لیے SDK، انتظام کے لیے REST API استعمال کریں
  2. Event batching نافذ کریں - نیٹ ورک اوور ہیڈ کو کم کرنے کے لیے SDK ایونٹس کو بیچ کریں
  3. Datafile کیشے کریں - مناسب intervals کے ساتھ auto-update فعال کریں
  4. جیتنے والی variations سنک کریں - تجربات ختم ہونے کے بعد، رابطہ سیگمنٹس اپ ڈیٹ کریں
  5. ہدف بنانے کے لیے خصوصیات استعمال کریں - audience matching کے لیے email اور صارف کی خصوصیات پاس کریں
  6. تجربے کی حیثیت کی نگرانی کریں - صرف چلنے والے یا ختم شدہ تجربات سے ڈیٹا سنک کریں

سیکیورٹی

  • Personal Access Tokens - REST API کے لیے Bearer token توثیق
  • SDK key تنہائی - فی ماحول الگ SDK keys (dev، staging، prod)
  • سرور سائیڈ evaluation - ظاہر ہونے سے روکنے کے لیے feature flags کو سرور سائیڈ evaluate کریں
  • ٹوکن گردش - Personal Access Tokens کو وقتاً فوقتاً گردش دیں
  • کم از کم اجازتیں - جب لکھنے کی رسائی کی ضرورت نہ ہو تو صرف پڑھنے کے ٹوکنز استعمال کریں
  • خفیہ کردہ ٹرانسپورٹ - تمام API اور SDK مواصلات کے لیے TLS 1.2+

متعلقہ وسائل

Subscribe to updates

developer-docs

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

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔