Optimizely کنیکٹر
کنیکٹر کی حیثیت: منصوبہ بند ابھی تیار نہیں ہوا۔ Tajo آج یہ کنیکٹر نہیں چلاتا۔
وضاحتی خاکہ · نمونہ ڈیٹا
سنک کی مثال
ماخذ
Optimizely
کنیکٹر کی حیثیت: منصوبہ بند
منزل
آپ کا دوسرا ٹول
کنیکٹر کی حیثیت: اپنی مرضی کا ٹول
فیلڈ میپنگ
| ماخذ فیلڈ | منزل فیلڈ | نمونہ قدر |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- مسودہ
- ایک ریکارڈ کا جائزہ لیں
- یہ ورژن منظور کریں
حیثیت ہر کنیکٹر کی الگ ہے؛ اس سے یہ سنک تیار ہونے کی ضمانت نہیں ملتی۔ یہ فیلڈز صرف مثال ہیں۔ سنک چلنے سے پہلے اصل اسکیما اور اجازتیں چیک کریں۔
تجرباتی نتائج سنک کرنے، 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 انسٹینس سے منسلک کریں
ضروریات
شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:
- Optimizely Feature Experimentation اکاؤنٹ
- Optimizely App Settings سے Personal Access Token
- اپنے Optimizely ماحول کے لیے SDK key
- API رسائی کے ساتھ Brevo اکاؤنٹ
- کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ
توثیق
Personal Access Token
# https://app.optimizely.com/v2/accountsettings/tokens پر تخلیق کریںexport 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// تمام 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_DATEAPI اینڈ پوائنٹس
| اینڈ پوائنٹ | طریقہ | تفصیل |
|---|---|---|
https://api.optimizely.com/v2/projects | GET | پروجیکٹس کی فہرست |
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 | audiences کی فہرست |
https://api.optimizely.com/v2/events | GET | ٹریک شدہ ایونٹس کی فہرست |
https://logx.optimizely.com/v1/events | POST | ایونٹس ٹریک کریں (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 API | 50 req/min | فی personal access token |
| Results API | 10 req/min | زیادہ latency، بھاری queries |
| SDK Event Dispatch | 10,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 flags | Datafile cache | auto-refresh کے لیے updateInterval سیٹ کریں |
| غائب نتائج | تجربہ شروع نہیں ہوا | تصدیق کریں کہ تجربے کی حیثیت “running” ہے |
ڈیبگ موڈ
connectors: optimizely: debug: true log_level: verbose log_decisions: true log_events: trueبہترین طریقے
- فیصلوں کے لیے SDK استعمال کریں - ریئل ٹائم flag evaluation کے لیے SDK، انتظام کے لیے REST API استعمال کریں
- Event batching نافذ کریں - نیٹ ورک اوور ہیڈ کو کم کرنے کے لیے SDK ایونٹس کو بیچ کریں
- Datafile کیشے کریں - مناسب intervals کے ساتھ auto-update فعال کریں
- جیتنے والی variations سنک کریں - تجربات ختم ہونے کے بعد، رابطہ سیگمنٹس اپ ڈیٹ کریں
- ہدف بنانے کے لیے خصوصیات استعمال کریں - audience matching کے لیے email اور صارف کی خصوصیات پاس کریں
- تجربے کی حیثیت کی نگرانی کریں - صرف چلنے والے یا ختم شدہ تجربات سے ڈیٹا سنک کریں
سیکیورٹی
- 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+