Firebase, প্রোজেক্ট ও অ্যাপ ম্যানেজমেন্ট সংক্রান্ত বিভিন্ন ইভেন্টের জন্য সতর্কতা প্রদান করে। Firebase আপনাকে এই ধরনের সতর্কতা পাঠাতে পারে এমন কিছু ইভেন্টের উদাহরণ এখানে দেওয়া হল:
- Crashlytics-এর জন্য, আপনার অ্যাপে ক্র্যাশ হওয়ার ঘটনা নাটকীয়ভাবে বৃদ্ধি পেলে আমরা আপনাকে সতর্ক করতে পারি।
- Performance Monitoring-এর জন্য, আপনার অ্যাপের স্টার্ট-আপ টাইম কনফিগার করা থ্রেশহোল্ড অতিক্রম করলে আমরা আপনাকে সতর্ক করতে পারি।
- App Distribution-এর জন্য, আপনার কোনও টেস্টার নতুন iOS ডিভাইস রেজিস্টার করলে, আমরা আপনাকে সতর্ক করতে পারি।
সতর্কতা এবং প্রোজেক্ট মেম্বারের সেট করা পছন্দ অনুযায়ী, Firebase এই ধরনের সতর্কতা Firebase কনসোলে দেখায় অথবা ইমেলের মাধ্যমে পাঠায়।
এই পৃষ্ঠায় Cloud Functions for Firebase (২য় জেনারেশন)-এ কীভাবে ফাংশন লিখতে হয় তা বর্ণনা করা হয়েছে যা সতর্কতা ইভেন্ট ম্যানেজ করে।
এটি কীভাবে কাজ করে?
এইসব সোর্স থেকে নির্গত অ্যালার্ট ইভেন্টের উত্তরে আপনি ফাংশন ট্রিগার করতে পারবেন:
- App Distribution সতর্কতা ইভেন্ট ম্যানেজ করা
- Crashlytics সতর্কতা ইভেন্ট ম্যানেজ করা
- Performance Monitoring সতর্কতা ইভেন্ট ম্যানেজ করা
একটি সাধারণ লাইফসাইকেলে, সতর্কতা ইভেন্ট দ্বারা ট্রিগার করা একটি ফাংশন নিম্নলিখিত কাজগুলি করে:
- Firebase থেকে নির্দিষ্ট ধরনের সতর্কতা নির্গত হওয়ার জন্য অপেক্ষা করে/শোনে।
- অ্যালার্ট নির্গত হলে ট্রিগার করে এবং ইভেন্ট পেলোড গ্রহণ করে যার মধ্যে ইভেন্ট সম্পর্কে নির্দিষ্ট তথ্য থাকে।
- ইভেন্ট পেলোড ম্যানেজ করার জন্য আপনার ফাংশনের কোড ইনভোক করে।
সতর্কতা ইভেন্টে একটি ফাংশন ট্রিগার করুন
সতর্কতা ইভেন্ট ম্যানেজ করে এমন ফাংশন লিখতে firebase-functions/v2/alerts সাবপ্যাকেজ ব্যবহার করুন। নিম্নলিখিত প্রোডাক্ট-নির্দিষ্ট উদাহরণগুলি একটি ওয়ার্কফ্লো প্রদর্শন করে যেখানে একটি ফাংশন একটি ডিসকর্ড চ্যানেলে একটি বার্তা পোস্ট করতে একটি ওয়েবহুক ব্যবহার করে যখন সেই প্রোডাক্টের জন্য একটি সতর্কতা Firebase থেকে নির্গত হয়।
Crashlytics সতর্কতা ইভেন্ট ম্যানেজ করা
নিম্নলিখিত Crashlytics উদাহরণের জন্য, আপনি Cloud Functions for Firebase ব্যবহার করে নতুন মারাত্মক ক্র্যাশ সমস্যার অ্যালার্ট ইভেন্ট ম্যানেজ করেন। এই ফাংশনটি Discord চ্যানেলে একটি মেসেজে সতর্কতা তথ্য পোস্ট করে।
ফাংশনটি Firebase-এর সাথে সম্পর্কিত ইভেন্টটি শোনে একটি নতুন মারাত্মক সমস্যা প্রকাশ করা হচ্ছে:
Node.js
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
Python
@crashlytics_fn.on_new_fatal_issue_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_fatal_issue_to_discord(event: crashlytics_fn.CrashlyticsNewFatalIssueEvent) -> None:
"""Publishes a message to Discord whenever a new Crashlytics fatal issue occurs."""
ফাংশনটি তারপর রিটার্ন করা ইভেন্ট অবজেক্ট পার্স করে, ইভেন্ট পেলোড থেকে প্রয়োজনীয় তথ্য পার্স করে এবং Discord চ্যানেলে পোস্ট করার জন্য একটি মেসেজ তৈরি করে:
Node.js
// construct a helpful message to send to Discord
const appId = event.appId;
const {id, title, subtitle, appVersion} = event.data.payload.issue;
const message = `
🚨 New fatal issue for ${appId} in version ${appVersion} 🚨
**${title}**
${subtitle}
id: \`${id}\`
`;
Python
# Construct a helpful message to send to Discord.
app_id = event.app_id
issue = event.data.payload.issue
message = f"""
🚨 New fatal issue for {app_id} in version {issue.app_version} 🚨
# {issue.title}
{issue.subtitle}
ID: `{issue.id}`
""".strip()
শেষে, ফাংশনটি HTTP অনুরোধের মাধ্যমে তৈরি করা মেসেজ Discord-এ পাঠায়:
Node.js
const response = await postMessageToDiscord("Crashlytics Bot", message);
if (response.ok) {
logger.info(
`Posted fatal Crashlytics alert ${id} for ${appId} to Discord`,
event.data.payload,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
Python
response = post_message_to_discord("Crashlytics Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
print(f"Posted fatal Crashlytics alert {issue.id} for {app_id} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
আপনি ক্যাপচার করতে পারেন এমন সব Crashlytics সতর্কতা ইভেন্ট সম্পর্কে জানতে, Crashlytics সতর্কতা-এর জন্য রেফারেন্স ডকুমেন্টেশনে যান।
Performance Monitoring সতর্কতা ইভেন্ট ম্যানেজ করা
এই উদাহরণটি এমন একটি ফাংশন এক্সপোর্ট করে যা পারফর্ম্যান্স থ্রেশহোল্ড অ্যালার্ট ইভেন্ট শোনে:
Node.js
exports.postperformancealerttodiscord = onThresholdAlertPublished(
async (event) => {
Python
@performance_fn.on_threshold_alert_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_performance_alert_to_discord(event: performance_fn.PerformanceThresholdAlertEvent) -> None:
"""Publishes a message to Discord whenever a performance threshold alert is fired."""
ফাংশনটি তখন রিটার্ন করা ইভেন্ট অবজেক্ট পার্স করে, ইভেন্ট পেলোড থেকে দরকারী তথ্য পার্স করে এবং Discord চ্যানেলে পোস্ট করার জন্য একটি মেসেজ তৈরি করে:
Node.js
// construct a helpful message to send to Discord
const appId = event.appId;
const {
eventName,
metricType,
eventType,
numSamples,
thresholdValue,
thresholdUnit,
conditionPercentile,
appVersion,
violationValue,
violationUnit,
investigateUri,
} = event.data.payload;
const message = `
⚠️ Performance Alert for ${metricType} of ${eventType}: **${eventName}** ⚠️
App id: ${appId}
Alert condition: ${thresholdValue} ${thresholdUnit}
Percentile (if applicable): ${conditionPercentile}
App version (if applicable): ${appVersion}
Violation: ${violationValue} ${violationUnit}
Number of samples checked: ${numSamples}
**Investigate more:** ${investigateUri}
`;
Python
# Construct a helpful message to send to Discord.
app_id = event.app_id
perf = event.data.payload
message = f"""
⚠️ Performance Alert for {perf.metric_type} of {perf.event_type}: **{perf.event_name}** ⚠️
App ID: {app_id}
Alert condition: {perf.threshold_value} {perf.threshold_unit}
Percentile (if applicable): {perf.condition_percentile}
App version (if applicable): {perf.app_version}
Violation: {perf.violation_value} {perf.violation_unit}
Number of samples checked: {perf.num_samples}
**Investigate more:** {perf.investigate_uri}
""".strip()
অবশেষে, ফাংশনটি HTTP অনুরোধের মাধ্যমে Discord-এ তৈরি করা মেসেজ পাঠায়:
Node.js
const response = await postMessageToDiscord(
"Firebase Performance Bot", message);
if (response.ok) {
logger.info(
`Posted Firebase Performance alert ${eventName} to Discord`,
event.data.payload,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
Python
response = post_message_to_discord(
"App Performance Bot", message, DISCORD_WEBHOOK_URL.value
)
if response.ok:
print(f"Posted Firebase Performance alert {perf.event_name} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
আপনি ক্যাপচার করতে পারেন এমন সব পারফর্ম্যান্স অ্যালার্ট ইভেন্ট সম্পর্কে জানতে, Performance Monitoring অ্যালার্ট-এর জন্য রেফারেন্স ডকুমেন্টেশন দেখুন।
App Distribution সতর্কতা ইভেন্ট ম্যানেজ করা
এই বিভাগে দেওয়া উদাহরণ থেকে আপনি জানতে পারবেন যে নতুন টেস্টার iOS ডিভাইস সতর্কতার জন্য কীভাবে ফাংশন লিখতে হয়।
এই উদাহরণে, ফাংশনটি এমন ইভেন্ট শোনে যা প্রতিবার একজন টেস্টার নতুন iOS ডিভাইস রেজিস্টার করার সময় পাঠানো হয়। নতুন iOS ডিভাইস রেজিস্টার করা হলে, আপনাকে সেই ডিভাইসের UDID দিয়ে আপনার প্রোভিশনিং প্রোফাইল আপডেট করতে হবে এবং তারপর অ্যাপটি আবার ডিস্ট্রিবিউট করতে হবে।
Node.js
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
Python
@app_distribution_fn.on_new_tester_ios_device_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_new_udid_to_discord(event: app_distribution_fn.NewTesterDeviceEvent) -> None:
"""Publishes a message to Discord whenever someone registers a new iOS test device."""
ফাংশনটি তখন ফেরত আসা অবজেক্ট পার্স করে, ইভেন্ট পেলোড থেকে দরকারী তথ্য পার্স করে এবং Discord চ্যানেলে পোস্ট করার জন্য একটি মেসেজ তৈরি করে:
Node.js
// construct a helpful message to send to Discord
const appId = event.appId;
const {
testerDeviceIdentifier,
testerDeviceModelName,
testerEmail,
testerName,
} = event.data.payload;
const message = `
📱 New iOS device registered by ${testerName} <${testerEmail}> for ${appId}
UDID **${testerDeviceIdentifier}** for ${testerDeviceModelName}
`;
Python
# Construct a helpful message to send to Discord.
app_id = event.app_id
app_dist = event.data.payload
message = f"""
📱 New iOS device registered by {app_dist.tester_name} <{app_dist.tester_email}> for {app_id}
UDID **{app_dist.tester_device_identifier}** for {app_dist.tester_device_model_name}
""".strip()
অবশেষে, ফাংশনটি HTTP অনুরোধের মাধ্যমে Discord-এ তৈরি করা মেসেজ পাঠায়:
Node.js
const response = await postMessageToDiscord("AppDistribution Bot", message);
if (response.ok) {
logger.info(
`Posted iOS device registration alert for ${testerEmail} to Discord`,
);
} else {
throw new Error(`Discord returned status code ${response.status}`);
}
Python
response = post_message_to_discord("App Distro Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
print(f"Posted iOS device registration alert for {app_dist.tester_email} to Discord.")
pprint.pp(event.data.payload)
else:
response.raise_for_status()
আপনি ক্যাপচার করতে পারেন এমন সব App Distribution সতর্কতা ইভেন্ট সম্পর্কে জানতে, App Distribution সতর্কতা-এর জন্য রেফারেন্স ডকুমেন্টেশন দেখুন।
App Distribution থেকে অ্যাপ-মধ্যস্থ মতামত Firebase অ্যালার্ট দ্বারা ট্রিগার করা ফাংশন কীভাবে ব্যবহার করতে হয় তা জানতে, Jira-তে অ্যাপ-মধ্যস্থ মতামত পাঠান দেখুন।