Web SDK-তে ফিচার ফ্ল্যাগ
Pushwoosh.featureFlags আপনার ওয়েবসাইটকে সেই ফিচার ফ্ল্যাগগুলো দেয়, যেগুলো কন্ট্রোল প্যানেলে অ্যাপ্লিকেশনের জন্য কনফিগার করা হয়েছে। Pushwoosh বর্তমান ডিভাইস এবং ব্যবহারকারীর জন্য সার্ভারে ফ্ল্যাগের নিয়মগুলো মূল্যায়ন করে, এবং SDK ফলাফল ফেরত দেয়: এই ভিজিটরের জন্য ফ্ল্যাগটি চালু আছে কি না এবং কোন প্রপার্টি মানগুলো প্রযোজ্য।
পূর্বশর্ত
Anchor link to- Web SDK 3.94.1 বা তার পরের সংস্করণ, যা Web SDK 3.0 গাইডে বর্ণিত পদ্ধতিতে Pushwoosh CDN থেকে লোড করা হয়েছে, অথবা
web-push-notificationsnpm প্যাকেজ 3.95.0 বা তার পরের সংস্করণ। - Audience → Feature Flags-এ তৈরি করা অন্তত একটি ফ্ল্যাগ। আপনার এর Key এবং এর প্রপার্টিগুলোর কী ও টাইপ প্রয়োজন। কীগুলো ঠিক সেখানে যেভাবে দেখা যায় সেভাবেই ব্যবহার করুন, অক্ষরের কেস সহ। উদাহরণস্বরূপ,
get('New_Checkout')new_checkoutকী-যুক্ত ফ্ল্যাগ খুঁজে পায় না।
একটি ফ্ল্যাগ পড়ুন
Anchor link toSDK প্রস্তুত হওয়ার পরে ফ্ল্যাগ পড়ুন। সবসময় একটি ডিফল্ট মান পাস করুন: SDK-এর কাছে পেজের জন্য ফ্ল্যাগ না আসা পর্যন্ত এটি প্রযোজ্য থাকে, এবং যখনই ফ্ল্যাগটি বিদ্যমান না থাকে, আর্কাইভ করা থাকে, বা প্ল্যানে ফিচার ফ্ল্যাগ অন্তর্ভুক্ত না থাকে তখনও প্রযোজ্য হয়।
Pushwoosh.push(() => { const flags = Pushwoosh.featureFlags;
const render = () => { const checkout = flags.get('new_checkout'); if (checkout && checkout.enabled) { showNewCheckout({ buttonColor: checkout.getString('button_color', 'blue'), maxItems: checkout.getNumber('max_items', 3), }); } else { showOldCheckout(); } };
render(); flags.addUpdateListener(render);});npm প্যাকেজের ক্ষেত্রে, আপনার তৈরি করা Pushwoosh ইনস্ট্যান্সটি ব্যবহার করুন:
import { Pushwoosh } from 'web-push-notifications';
const pushwoosh = new Pushwoosh();pushwoosh.push(['init', { applicationCode: 'XXXXX-XXXXX' /* ... */ }]);
pushwoosh.push(() => { const isNewCheckout = pushwoosh.featureFlags.isEnabled('new_checkout', false); // ...});আপনার কোড প্রথমবার get(), isEnabled(), refresh() বা addUpdateListener() কল না করা পর্যন্ত SDK পেজে কোনো ফ্ল্যাগ অনুরোধ পাঠায় না, তাই যে পেজগুলো ফ্ল্যাগ ব্যবহার করে না সেগুলো কোনো অতিরিক্ত ট্র্যাফিক পাঠায় না।
একটি ফ্ল্যাগ কী ফেরত দেয়
Anchor link toget(key) একটি FeatureFlag অবজেক্ট ফেরত দেয়, অথবা null ফেরত দেয় যখন SDK-এর কাছে এখনও পেজের জন্য ফ্ল্যাগ নেই বা ফ্ল্যাগটি উত্তরে নেই। আর্কাইভ করা ফ্ল্যাগ উত্তরে থাকে না। অবজেক্টটিতে এই ফিল্ডগুলো রয়েছে:
| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
key | string | ফ্ল্যাগের কী। |
enabled | boolean | এই ভিজিটরের জন্য ফ্ল্যাগটি চালু আছে কি না। |
ruleId | string | যে নিয়মটি ফলাফল নির্ধারণ করেছে, উদাহরণস্বরূপ r_1a2b3c4d। কোনো নিয়ম ভিজিটরের সাথে না মিললে default, এবং ফ্ল্যাগটি কিল (kill) করা হলে একটি খালি স্ট্রিং। |
প্রপার্টির টাইপের সাথে মেলে এমন getter দিয়ে প্রপার্টির মান পড়ুন। প্রপার্টিটি অনুপস্থিত থাকলে বা অন্য টাইপের মান ধারণ করলে প্রতিটি getter আপনার ডিফল্ট মান ফেরত দেয়। ফ্ল্যাগটি বন্ধ থাকলে প্রপার্টিগুলো কন্ট্রোল প্যানেলে সেট করা ডিফল্ট মানগুলো ধারণ করে।
| মেথড | ফেরত দেয় |
|---|---|
getString(property, defaultValue) | একটি String প্রপার্টির মান। |
getNumber(property, defaultValue) | একটি Number প্রপার্টির মান। |
getBool(property, defaultValue) | একটি Boolean প্রপার্টির মান। |
getJson(property, defaultValue) | একটি JSON প্রপার্টির মান, পার্স করা JSON মান হিসেবে। |
getProperties() | ফ্ল্যাগের সমস্ত প্রপার্টি মানের একটি কপি। |
isEnabled(key, defaultValue) হলো get(key)?.enabled-এর একটি শর্টকাট, যা কোনো ফ্ল্যাগ না থাকলে defaultValue ফেরত দেয়।
ফ্ল্যাগগুলো হালনাগাদ রাখুন
Anchor link toSDK সর্বশেষ উত্তরটি ব্রাউজারের IndexedDB-তে সর্বোচ্চ 24 ঘণ্টা পর্যন্ত সংরক্ষণ করে। সংরক্ষিত ফ্ল্যাগগুলো শুধুমাত্র সেই User ID-এর জন্য বৈধ, যার জন্য সেগুলো অনুরোধ করা হয়েছিল। SDK সেগুলো রিফ্রেশ করে:
- পেজে প্রথম ব্যবহারের সময়, যখন সংরক্ষিত ফ্ল্যাগগুলো 15 মিনিটের বেশি পুরোনো বা অনুপস্থিত;
- পেজ খোলা থাকা অবস্থায় প্রতি ঘণ্টায়;
- ডিভাইস রেজিস্টার হওয়ার পরে, যখন ফ্ল্যাগগুলো রেজিস্ট্রেশনের আগে অনুরোধ করা হয়েছিল;
- User ID পরিবর্তনের ঠিক পরে। আগের ব্যবহারকারীর সংরক্ষিত ফ্ল্যাগগুলো বাতিল করা হয়, তাই নতুন ব্যবহারকারী কখনোই সেগুলো দেখেন না।
নতুন মানে সাড়া দিতে একটি listener রেজিস্টার করুন। এটি এমন একটি রিফ্রেশের পরে কল করা হয় যা কোনো ফ্ল্যাগের মান পরিবর্তন করেছে:
const onFlagsChanged = () => render();Pushwoosh.featureFlags.addUpdateListener(onFlagsChanged);// laterPushwoosh.featureFlags.removeUpdateListener(onFlagsChanged);নিজে ফ্ল্যাগ অনুরোধ করতে, উদাহরণস্বরূপ এমন কোনো অ্যাকশনের পরে যা ভিজিটরকে অন্য একটি সেগমেন্টে নিয়ে যেতে পারে, refresh() কল করুন। সংরক্ষিত ফ্ল্যাগগুলো বৈধ থাকা অবস্থায় এটি প্রতি 5 মিনিটে সর্বোচ্চ একটি অনুরোধ পাঠায় এবং সেই সময়সীমার মধ্যে সঙ্গে সঙ্গে রিজলভ হয়। অনুরোধ ব্যর্থ হলে promise রিজেক্ট হয়, এবং সংরক্ষিত ফ্ল্যাগগুলো ব্যবহারে থাকে।
try { await Pushwoosh.featureFlags.refresh();} catch (error) { // the stored flags, or your defaults, stay in effect}render();Pushwoosh যদি সময়মতো ভিজিটরের সেগমেন্টগুলো মেলাতে না পারে, তবে এটি একটি আংশিক উত্তর ফেরত দেয়। SDK এটি শুধুমাত্র বর্তমান পেজে ব্যবহার করে, শুধুমাত্র যখন এর কাছে কোনো বৈধ সংরক্ষিত ফ্ল্যাগ নেই, এবং কখনোই এটি সংরক্ষণ করে না। পরবর্তী রিফ্রেশ সম্পূর্ণ উত্তর নিয়ে আসে।
কন্ট্রোল প্যানেলে কোনো ফ্ল্যাগ কিল (kill) করা হলে, পরবর্তী রিফ্রেশে ভিজিটররা সেটি ডিফল্ট প্রপার্টি মান সহ বন্ধ অবস্থায় পান। SDK সার্ভারে পৌঁছাতে না পারলে, সংরক্ষিত ফ্ল্যাগগুলো 24 ঘণ্টা পুরোনো না হওয়া পর্যন্ত সেগুলো ব্যবহার করতে থাকে, এবং তারপরে আপনার ডিফল্ট মানগুলো ব্যবহার করে।
ইম্প্রেশন লগ করুন
Anchor link toএকটি ইম্প্রেশন Pushwoosh-কে জানায় যে একজন ভিজিটর সত্যিই সেই কোডে পৌঁছেছেন যা একটি ফ্ল্যাগ নিয়ন্ত্রণ করে, যাতে আপনি ফিচারটি পাওয়া ভিজিটরদের সাথে যারা পাননি তাদের তুলনা করতে পারেন। ভিজিটর যে মুহূর্তে ফিচারটি বা এর পুরোনো সংস্করণ দেখেন, সেই মুহূর্তে logImpression(key) কল করুন, চালু এবং বন্ধ উভয় ব্রাঞ্চের জন্যই, কারণ ফ্ল্যাগ বন্ধ থাকা ভিজিটররাই আপনার তুলনামূলক গ্রুপ:
const checkout = Pushwoosh.featureFlags.get('new_checkout');if (checkout) { Pushwoosh.featureFlags.logImpression('new_checkout');}SDK এই অ্যাট্রিবিউটগুলো সহ PW_FeatureFlagImpression ইভেন্ট পাঠায়:
| অ্যাট্রিবিউট | টাইপ | মান |
|---|---|---|
flag_key | string | ফ্ল্যাগের কী। |
rule_id | string | যে নিয়মটি ফলাফল নির্ধারণ করেছে, ruleId-এর মতো। |
enabled | boolean | ফ্ল্যাগটি চালু ছিল কি না। |
আপনাকে আগে থেকে ইভেন্টটি তৈরি করতে হবে না, কারণ প্রথম ইম্প্রেশন আসার পরে Pushwoosh এই অ্যাট্রিবিউটগুলো সহ PW_FeatureFlagImpression-কে Audience → Events-এ যোগ করে। SDK একটি পেজে প্রতিটি ফ্ল্যাগ, নিয়ম এবং অবস্থার জন্য একটি করে ইম্প্রেশন পাঠায়, এবং 30 মিনিট ধরে একই ব্রাউজারের অন্যান্য ট্যাব থেকে আসা পুনরাবৃত্তি এড়িয়ে যায়। logImpression() কখনো রিজেক্ট হয় না, এবং কী-এর জন্য কোনো ফ্ল্যাগ না থাকলে কিছুই পাঠায় না।
ইম্প্রেশনের মাধ্যমে মার্কেটাররা সেই ভিজিটরদের একটি সেগমেন্টও তৈরি করতে পারেন যারা ফিচারটিতে পৌঁছেছেন: ফিচার ফ্ল্যাগ কন্ডিশনের ফিচারটি দেখেছে (৩০ দিন) অবস্থা।
মেথড রেফারেন্স
Anchor link toPushwoosh.featureFlags-এ এই মেথডগুলো রয়েছে:
| মেথড | বিবরণ |
|---|---|
get(key) | কী-এর জন্য FeatureFlag অথবা null ফেরত দেয়। শুধুমাত্র সংরক্ষিত ফ্ল্যাগগুলো পড়ে এবং কখনো নেটওয়ার্কের জন্য অপেক্ষা করে না। |
isEnabled(key, defaultValue) | ফ্ল্যাগটি চালু আছে কি না তা ফেরত দেয়, অথবা কোনো ফ্ল্যাগ না থাকলে defaultValue। |
refresh() | ফ্ল্যাগ অনুরোধ করে, সংরক্ষিত ফ্ল্যাগগুলো বৈধ থাকা অবস্থায় প্রতি 5 মিনিটে একবারে সীমিত। একটি promise ফেরত দেয়। |
addUpdateListener(listener) | প্রতিটি রিফ্রেশের পরে listener কল করে, যা কোনো ফ্ল্যাগের মান পরিবর্তন করেছে। |
removeUpdateListener(listener) | addUpdateListener দিয়ে যোগ করা একটি listener সরিয়ে দেয়। |
logImpression(key) | ফ্ল্যাগের বর্তমান নিয়ম এবং অবস্থার জন্য একটি PW_FeatureFlagImpression ইভেন্ট পাঠায়। একটি promise ফেরত দেয়। |