শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ব্যবহার করার জন্য এই ডকুমেন্টটি একটি কুইকস্টার্ট গাইড। আপনার উভয় API-এর বোঝার প্রয়োজন হবে কারণ শেয়ার্ড স্টোরেজ মান সঞ্চয় করে এবং ব্যক্তিগত একত্রীকরণ সমষ্টিগত প্রতিবেদন তৈরি করে।
লক্ষ্য শ্রোতা: বিজ্ঞাপন প্রযুক্তি এবং পরিমাপ প্রদানকারী।
ডেমো চেষ্টা করুন
লাইভ ডেমো চেষ্টা করে দেখুন. গোপনীয়তা স্যান্ডবক্স API সক্রিয় করতে ডেমো নির্দেশাবলীর ধাপগুলি অনুসরণ করুন৷ Chrome DevTools খোলা আপনাকে বিভিন্ন ব্যবহারের ক্ষেত্রে ফলাফল কল্পনা করতে সাহায্য করে৷ ডেমোতে উপলব্ধ কেসগুলি ব্যবহার করুন:
- প্রাইভেট অ্যাগ্রিগেশন
- অনন্য নাগালের পরিমাপ
- জনসংখ্যার পরিমাপ
- K+ ফ্রিকোয়েন্সি পরিমাপ
- সাধারণ ব্যবহার
- বেড়াযুক্ত ফ্রেমের ভিতরে হোভার-ওভার ইভেন্ট পরিমাপ করুন
- শীর্ষ-স্তরের নেভিগেশন
- তৃতীয় পক্ষগুলি কোথায় লিখতে পারে তা নিয়ন্ত্রণ করা
শেয়ার্ড স্টোরেজ কিভাবে দেখতে হয়
শেয়ার্ড স্টোরেজে কী সংরক্ষিত আছে তা দেখতে, Chrome DevTools ব্যবহার করুন। সংরক্ষিত ডেটা Application -> Shared Storage
এ পাওয়া যাবে।
ব্যক্তিগত সমষ্টির জন্য প্রতিবেদন দেখুন
পাঠানো সমষ্টিগত প্রতিবেদনগুলি দেখতে, chrome://private-aggregation-internals
এ নেভিগেট করুন। যখন ডিবাগ মোড সক্ষম করা হয়, তখন একটি প্রতিবেদন অবিলম্বে (বিলম্ব না করে) [[YOUR_ORIGIN]]/.well-known/private-aggregation/debug/report-shared-storage
পাঠানো হয় এবং সময়-বিলম্বিত প্রতিবেদন পাঠানো হয় [[YOUR_ORIGIN]]/.well-known/private-aggregation/report-shared-storage
ডিবাগিং সক্ষম করতে, ডিবাগিং বিভাগে নির্দেশাবলী অনুসরণ করুন।
শেয়ার্ড স্টোরেজ API
ক্রস-সাইট ট্র্যাকিং প্রতিরোধ করার জন্য, ব্রাউজারগুলি স্থানীয় স্টোরেজ, কুকিজ ইত্যাদি সহ সমস্ত ধরণের স্টোরেজ বিভাজন করা শুরু করেছে। কিন্তু এমন কিছু ব্যবহারের ক্ষেত্রে রয়েছে যেখানে পার্টিশনবিহীন স্টোরেজ প্রয়োজন। শেয়ার্ড স্টোরেজ API গোপনীয়তা-সংরক্ষিত পঠন অ্যাক্সেস সহ বিভিন্ন শীর্ষ-স্তরের সাইট জুড়ে সীমাহীন লেখার অ্যাক্সেস সরবরাহ করে।
শেয়ার্ড স্টোরেজ প্রসঙ্গ মূলে সীমাবদ্ধ ( sharedStorage
কলার)।
শেয়ার্ড স্টোরেজের মূল প্রতি একটি ক্ষমতা সীমা রয়েছে, প্রতিটি এন্ট্রি সর্বাধিক সংখ্যক অক্ষরের মধ্যে সীমাবদ্ধ। সীমা পৌঁছে গেলে, আর কোনো ইনপুট সংরক্ষণ করা হয় না। শেয়ার্ড স্টোরেজ এক্সপ্লেনারে ডেটা সঞ্চয়ের সীমারেখা দেওয়া আছে।
শেয়ার্ড স্টোরেজ আহ্বান করা হচ্ছে
বিজ্ঞাপন প্রযুক্তিগুলি জাভাস্ক্রিপ্ট বা প্রতিক্রিয়া শিরোনাম ব্যবহার করে শেয়ার্ড স্টোরেজে লিখতে পারে। শেয়ার্ড স্টোরেজ থেকে পড়া শুধুমাত্র একটি বিচ্ছিন্ন জাভাস্ক্রিপ্ট পরিবেশের মধ্যে ঘটে যাকে ওয়ার্কলেট বলা হয়।
জাভাস্ক্রিপ্ট অ্যাড টেক ব্যবহার করে নির্দিষ্ট শেয়ার্ড স্টোরেজ ফাংশন যেমন জাভাস্ক্রিপ্ট ওয়ার্কলেটের বাইরে মান সেট করা, যুক্ত করা এবং মুছে ফেলার মতো কাজ করতে পারে। যাইহোক, শেয়ার্ড স্টোরেজ পড়া এবং প্রাইভেট অ্যাগ্রিগেশন করার মতো কাজগুলি জাভাস্ক্রিপ্ট ওয়ার্কলেটের মাধ্যমে সম্পন্ন করতে হবে। একটি জাভাস্ক্রিপ্ট ওয়ার্কলেটের বাইরে ব্যবহার করা যেতে পারে এমন পদ্ধতিগুলি প্রস্তাবিত API সারফেস - ওয়ার্কলেটের বাইরে পাওয়া যাবে।
একটি অপারেশন চলাকালীন ওয়ার্কলেটে ব্যবহৃত পদ্ধতিগুলি প্রস্তাবিত API সারফেস - ওয়ার্কলেটে পাওয়া যাবে।
প্রতিক্রিয়া শিরোনাম ব্যবহার করে
জাভাস্ক্রিপ্টের মতো, শুধুমাত্র নির্দিষ্ট ফাংশনগুলি যেমন শেয়ার করা স্টোরেজে মান নির্ধারণ, সংযুক্ত করা এবং মুছে ফেলা প্রতিক্রিয়া শিরোনাম ব্যবহার করে করা যেতে পারে। একটি প্রতিক্রিয়া শিরোনামে শেয়ার্ড স্টোরেজের সাথে কাজ করতে,
Shared-Storage-Writable: ?1
অনুরোধ শিরোনামে অন্তর্ভুক্ত করতে হবে।ক্লায়েন্ট থেকে একটি অনুরোধ শুরু করতে, আপনার নির্বাচিত পদ্ধতির উপর নির্ভর করে নিম্নলিখিত কোডটি চালান:
fetch()
ব্যবহার করেfetch("https://a.example/path/for/updates", {sharedStorageWritable: true});
একটি
iframe
বাimg
ট্যাগ ব্যবহার করা<iframe src="https://a.example/path/for/updates" sharedstoragewritable></iframe>
একটি
iframe
বাimg
ট্যাগের সাথে একটি IDL বৈশিষ্ট্য ব্যবহার করাlet iframe = document.getElementById("my-iframe"); iframe.sharedStorageWritable = true; iframe.src = "https://a.example/path/for/updates";
শেয়ার্ড স্টোরেজ: রেসপন্স হেডারে আরও তথ্য পাওয়া যাবে।
শেয়ার্ড স্টোরেজে লেখা
শেয়ার্ড স্টোরেজে লিখতে, জাভাস্ক্রিপ্ট ওয়ার্কলেটের ভিতর বা বাইরে থেকে sharedStorage.set()
কল করুন। যদি ওয়ার্কলেটের বাইরে থেকে কল করা হয়, তবে ডেটাটি ব্রাউজিং প্রসঙ্গের মূলে লেখা হয় যেখান থেকে কলটি করা হয়েছিল। ওয়ার্কলেটের ভিতর থেকে কল করা হলে, ডাটাটি ব্রাউজিং প্রসঙ্গটির মূলে লেখা হয় যা ওয়ার্কলেট লোড করেছে। সেট করা কীগুলির শেষ আপডেট থেকে 30 দিনের মেয়াদ শেষ হওয়ার তারিখ রয়েছে।
ignoreIfPresent
ক্ষেত্রটি ঐচ্ছিক। উপস্থিত থাকলে এবং true
সেট করা হলে, কীটি ইতিমধ্যেই বিদ্যমান থাকলে আপডেট করা হয় না। কী আপডেট না হলেও set()
কল থেকে কী মেয়াদ 30 দিনে পুনর্নবীকরণ করা হয়।
শেয়ার্ড স্টোরেজ একই কী দিয়ে একই পৃষ্ঠা লোডে একাধিকবার অ্যাক্সেস করা হলে, কীটির মান ওভাররাইট করা হয়। যদি পূর্ববর্তী মান বজায় রাখার প্রয়োজন হয় তাহলে sharedStorage.append()
ব্যবহার করা ভালো।
জাভাস্ক্রিপ্ট ব্যবহার করে
ওয়ার্কলেটের বাইরে:
window.sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true }); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: true }); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: false }); // Shared Storage: {'myKey': 'myValue2'}
একইভাবে, ওয়ার্কলেটের ভিতরে:
sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });
প্রতিক্রিয়া শিরোনাম ব্যবহার করে
আপনি প্রতিক্রিয়া শিরোনাম ব্যবহার করে শেয়ার্ড স্টোরেজেও লিখতে পারেন। এটি করার জন্য, নিম্নলিখিত কমান্ডগুলির সাথে প্রতিক্রিয়া শিরোনামে
Shared-Storage-Write
ব্যবহার করুন:Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present
Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present=?0
একাধিক আইটেম কমা দ্বারা পৃথক করা যেতে পারে এবং
set
,append
,delete
এবংclear
একত্রিত করতে পারে।Shared-Storage-Write : set;key="hello";value="world";ignore_if_present, set;key="good";value="bye"
একটি মান যুক্ত করা হচ্ছে
আপনি append পদ্ধতি ব্যবহার করে বিদ্যমান কী-তে একটি মান যোগ করতে পারেন। যদি কী বিদ্যমান না থাকে, কলিং append()
কী তৈরি করে এবং মান সেট করে। এটি জাভাস্ক্রিপ্ট বা প্রতিক্রিয়া শিরোনাম ব্যবহার করে সম্পন্ন করা যেতে পারে।
জাভাস্ক্রিপ্ট ব্যবহার করে
বিদ্যমান কীগুলির মান আপডেট করতে, ওয়ার্কলেটের ভিতরে বা বাইরে থেকে
sharedStorage.append()
ব্যবহার করুন।window.sharedStorage.append('myKey', 'myValue1'); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.append('myKey', 'myValue2'); // Shared Storage: {'myKey': 'myValue1myValue2'} window.sharedStorage.append('anotherKey', 'hello'); // Shared Storage: {'myKey': 'myValue1myValue2', 'anotherKey': 'hello'}
ওয়ার্কলেটের ভিতরে যুক্ত করতে:
sharedStorage.append('myKey', 'myValue1');
প্রতিক্রিয়া শিরোনাম ব্যবহার করে
ভাগ করা সঞ্চয়স্থানে একটি মান সেট করার অনুরূপ, আপনি কী-মান জুড়িতে পাস করতে প্রতিক্রিয়া শিরোনামে
Shared-Storage-Write
ব্যবহার করতে পারেন।Shared-Storage-Write : append;key="myKey";value="myValue2"
শেয়ার্ড স্টোরেজ থেকে পড়া
আপনি শুধুমাত্র একটি ওয়ার্কলেট থেকে শেয়ার্ড স্টোরেজ থেকে পড়তে পারেন।
await sharedStorage.get('mykey');
ওয়ার্কলেট মডিউলটি যে ব্রাউজিং প্রেক্ষাপট থেকে লোড করা হয়েছিল তা নির্ধারণ করে কার শেয়ার করা স্টোরেজ পড়া হয়েছে।
শেয়ার্ড স্টোরেজ থেকে মুছে ফেলা হচ্ছে
আপনি ওয়ার্কলেটের ভিতরে বা বাইরে থেকে জাভাস্ক্রিপ্ট ব্যবহার করে শেয়ার্ড স্টোরেজ থেকে মুছে ফেলতে পারেন অথবা delete()
সহ প্রতিক্রিয়া শিরোনাম ব্যবহার করে। একবারে সমস্ত কী মুছে ফেলতে, উভয় থেকে clear()
ব্যবহার করুন।
জাভাস্ক্রিপ্ট ব্যবহার করে
ওয়ার্কলেটের বাইরে থেকে শেয়ার্ড স্টোরেজ থেকে মুছে ফেলতে:
window.sharedStorage.delete('myKey');
ওয়ার্কলেটের ভিতর থেকে শেয়ার্ড স্টোরেজ থেকে মুছে ফেলতে:
sharedStorage.delete('myKey');
ওয়ার্কলেটের বাইরে থেকে একবারে সমস্ত কী মুছে ফেলতে:
window.sharedStorage.clear();
ওয়ার্কলেটের ভিতর থেকে একবারে সমস্ত কী মুছে ফেলতে:
sharedStorage.clear();
প্রতিক্রিয়া শিরোনাম ব্যবহার করে
প্রতিক্রিয়া শিরোনাম ব্যবহার করে মান মুছে ফেলার জন্য, আপনি মোছার কী পাস করতে প্রতিক্রিয়া শিরোনামে
Shared-Storage-Write
ব্যবহার করতে পারেন।delete;key="myKey"
প্রতিক্রিয়া শিরোনাম ব্যবহার করে সমস্ত কী মুছে ফেলতে:
clear;
প্রসঙ্গ স্যুইচিং
শেয়ার্ড স্টোরেজ ডেটা ব্রাউজিং প্রসঙ্গের মূলে (উদাহরণস্বরূপ, https://example.adtech.com) লেখা হয় যেখান থেকে কলটি এসেছে।
যখন আপনি একটি <script>
ট্যাগ ব্যবহার করে তৃতীয় পক্ষের কোড লোড করেন, কোডটি এমবেডারের ব্রাউজিং প্রসঙ্গে কার্যকর করা হয়। অতএব, যখন তৃতীয় পক্ষের কোড sharedStorage.set()
কল করে, তখন ডেটা এমবেডারের শেয়ার্ড স্টোরেজে লেখা হয়। আপনি যখন একটি আইফ্রেমের মধ্যে তৃতীয় পক্ষের কোডটি লোড করেন, কোডটি একটি নতুন ব্রাউজিং প্রসঙ্গ পায় এবং এর উত্সটি আইফ্রেমের উত্স। তাই, iframe থেকে করা sharedStorage.set()
কল আইফ্রেম মূলের শেয়ার্ড স্টোরেজে ডেটা সঞ্চয় করে।
প্রথম পক্ষের প্রসঙ্গ
যদি কোনো প্রথম-পক্ষের পৃষ্ঠায় তৃতীয়-পক্ষের জাভাস্ক্রিপ্ট কোড এমবেড করা থাকে যা sharedStorage.set()
বা sharedStorage.delete()
কল করে, তাহলে মূল-মান জোড়া প্রথম-পক্ষের প্রসঙ্গে সংরক্ষণ করা হয়।
তৃতীয় পক্ষের প্রসঙ্গ
আইফ্রেমের মধ্যে থেকে জাভাস্ক্রিপ্ট কোডে একটি আইফ্রেম এবং কলিং set()
বা delete()
তৈরি করে কী-মানের জুটি বিজ্ঞাপন প্রযুক্তি বা তৃতীয়-পক্ষের প্রসঙ্গে সংরক্ষণ করা যেতে পারে।
প্রাইভেট অ্যাগ্রিগেশন API
শেয়ার্ড স্টোরেজে সংরক্ষিত সমষ্টিগত ডেটা পরিমাপ করতে, আপনি ব্যক্তিগত একত্রীকরণ API ব্যবহার করতে পারেন।
একটি প্রতিবেদন তৈরি করতে, একটি বালতি এবং মান সহ একটি ওয়ার্কলেটের ভিতরে contributeToHistogram()
কল করুন। বালতিটি একটি স্বাক্ষরবিহীন 128-বিট পূর্ণসংখ্যা দ্বারা উপস্থাপিত হয় যা একটি BigInt
হিসাবে ফাংশনে পাস করতে হবে। মান একটি ধনাত্মক পূর্ণসংখ্যা।
গোপনীয়তা রক্ষা করার জন্য, রিপোর্টের পেলোড, যা বালতি এবং মান ধারণ করে, ট্রানজিটে এনক্রিপ্ট করা হয় এবং এটি শুধুমাত্র অ্যাগ্রিগেশন পরিষেবা ব্যবহার করে ডিক্রিপ্ট করা এবং একত্রিত করা যায়।
ব্রাউজারটি একটি আউটপুট ক্যোয়ারীতে একটি সাইট যে অবদান রাখতে পারে তা সীমিত করবে। বিশেষভাবে, অবদান বাজেট সমস্ত বালতি জুড়ে একটি নির্দিষ্ট সময় উইন্ডোতে একটি প্রদত্ত ব্রাউজারের জন্য একটি একক সাইট থেকে সমস্ত প্রতিবেদনের মোট সীমাবদ্ধ করে। বর্তমান বাজেট অতিক্রম করা হলে, একটি প্রতিবেদন তৈরি করা হবে না.
privateAggregation.contributeToHistogram({
bucket: BigInt(myBucket),
value: parseInt(myBucketValue)
});
শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন নির্বাহ করা
বিজ্ঞাপনের আইফ্রেমে, addModule()
কল করে ওয়ার্কলেট মডিউলটি লোড করুন। sharedStorageWorklet.js
ওয়ার্কলেট ফাইলে নিবন্ধিত পদ্ধতিটি চালানোর জন্য, একই বিজ্ঞাপন iframe JavaScript-এ, sharedStorage.run()
কল করুন।
await window.sharedStorage.worklet.addModule('modules/sharedStorageWorklet.js');
await window.sharedStorage.worklet.run('shared-storage-report', {
data: { campaignId: '1234' },
});
ওয়ার্কলেট স্ক্রিপ্টে, আপনাকে একটি async run
পদ্ধতি সহ একটি ক্লাস তৈরি করতে হবে। এবং বিজ্ঞাপনের আইফ্রেমে চালানোর জন্য এই ক্লাসটি register
। sharedStorageWorklet.js
এর ভিতরে :
class SharedStorageReportOperation {
async run(data) {
// Other code goes here.
bucket = getBucket(...);
value = getValue(...);
privateAggregation.contributeToHistogram({
bucket: bucket,
value: value
});
}
}
register('shared-storage-report',
SharedStorageReportOperation);
ডিবাগিং
ডিবাগিং সক্ষম করতে, একই প্রসঙ্গে enableDebugMode()
JavaScript পদ্ধতিতে কল করুন যেখানে শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ব্যবহার করা হয়। এটি একই প্রসঙ্গে ভবিষ্যতের প্রতিবেদনের জন্য প্রয়োগ করা হবে।
privateAggregation.enableDebugMode();
প্রতিবেদনগুলিকে যে প্রেক্ষাপটগুলি ট্রিগার করেছে তার সাথে যুক্ত করতে, আপনি একটি 64-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা ডিবাগ কী সেট করতে পারেন যা জাভাস্ক্রিপ্ট কলে পাস করা হয়৷ debugKey
হল একটি BigInt
।
privateAggregation.enableDebugMode({debugKey: 1234});
শেয়ার্ড স্টোরেজ ডিবাগ করা হচ্ছে
শেয়ার্ড স্টোরেজ একটি সাধারণ ত্রুটি বার্তা প্রদান করে:
Promise is rejected without and explicit error message
আপনি ট্রাই-ক্যাচ ব্লক দিয়ে কলগুলি মোড়ানোর মাধ্যমে শেয়ার্ড স্টোরেজ ডিবাগ করতে পারেন।
try {
privateAggregation.contributeToHistogram({bucket, value});
} catch (e){
console.log(e);
}
ডিবাগিং প্রাইভেট অ্যাগ্রিগেশন
প্রতিবেদনগুলি /.well-known/private-aggregation/report-shared-storage
এবং /.well-known/private-aggregation/debug/report-shared-storage
এ পাঠানো হয়। ডিবাগ রিপোর্ট নিম্নলিখিত JSON অনুরূপ একটি পেলোড গ্রহণ. এই পেলোড api
ক্ষেত্রটিকে "শেয়ারড-স্টোরেজ" হিসাবে সংজ্ঞায়িত করে।
{
"aggregation_coordinator_identifier": "aws-cloud",
"aggregation_service_payloads": [ {
"debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAgGZidWNrZXRQAAAAAAAAAAAAAAEfV32BFWlvcGVyYXRpb25paGlzdG9ncmFt",
"key_id": "9bc4afa7-2934-4779-99ff-999d91b137ec",
"payload": "bqOFO/cHCdwefU2W4FjMYRMSLoGHPWwZbgVF4aa/ji2YtwFz+jb6v2XCwQUdmvYcZSRPKosGRpKELJ0xAFv+VBYvCiv3FXP6jjAHQD+XAJUz17A39aXijk6JnEAu86+DfTSbXYn1fWhGzIG9xH/Y"
} ],
"debug_key": "1234",
"shared_info": "{\"api\":\"shared-storage\",\"debug_mode\":\"enabled\",\"report_id\":\"93f86829-cdf7-4ecd-b16d-4e415a3ee063\",\"reporting_origin\":\"https://small-free-wealth.glitch.me\",\"scheduled_report_time\":\"1681319668\",\"version\":\"0.1\"}"
}
ক্লিয়ারটেক্সট পেলোড ডিবাগ করুন
debug_cleartext_payload
হল Base64 CBOR -এনকোডেড। আপনি ডিকোডার ব্যবহার করে বালতি এবং মান দেখতে পারেন বা শেয়ার্ড স্টোরেজ ডিকোডারে পাওয়া জাভাস্ক্রিপ্ট কোড ব্যবহার করতে পারেন।
পরবর্তী পদক্ষেপ
নিম্নলিখিত পৃষ্ঠাগুলি শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন API-এর গুরুত্বপূর্ণ দিকগুলি ব্যাখ্যা করে৷
- শেয়ার্ড স্টোরেজের ভূমিকা (ডেভেলপার ক্রোম)
- শেয়ার্ড স্টোরেজ ব্যবহারের ক্ষেত্রে (ডেভেলপার ক্রোম)
- ব্যক্তিগত সমষ্টির ভূমিকা (ডেভেলপার ক্রোম)
- শেয়ার্ড স্টোরেজ এক্সপ্লেনার (GitHub)
- ব্যক্তিগত সমষ্টি ব্যাখ্যাকারী (GitHub)
- শেয়ার্ড স্টোরেজ এবং প্রাইভেট অ্যাগ্রিগেশন ডেমো
একবার আপনি এপিআইগুলির সাথে পরিচিত হয়ে গেলে, আপনি প্রতিবেদনগুলি সংগ্রহ করা শুরু করতে পারেন, যেগুলি অনুরোধের অংশে JSON হিসাবে নিম্নলিখিত শেষ পয়েন্টগুলিতে একটি POST অনুরোধ হিসাবে পাঠানো হয়৷
- ডিবাগ রিপোর্ট -
context-origin/.well-known/private-aggregation/debug/report-shared-storage
- রিপোর্ট -
context-origin/.well-known/private-aggregation/report-shared-storage
একবার রিপোর্ট সংগ্রহ করা হলে, আপনি স্থানীয় টেস্টিং টুল ব্যবহার করে পরীক্ষা করতে পারেন বা সমষ্টিগত রিপোর্ট পেতে বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট সেট আপ করতে পারেন।
আপনার মতামত শেয়ার করুন
আপনি এপিআই এবং গিটহাবে ডকুমেন্টেশনে আপনার প্রতিক্রিয়া শেয়ার করতে পারেন।