Firebase Alerts ট্রিগার

Firebase, বিভিন্ন ধরনের প্রোজেক্ট ও অ্যাপ ম্যানেজমেন্ট ইভেন্টের জন্য অ্যালার্ট প্রদান করে। Firebase আপনাকে এই ধরনের সতর্কতা পাঠাতে পারে এমন কিছু ইভেন্টের উদাহরণ এখানে দেওয়া হল:

  • Crashlytics-এর জন্য, আপনার অ্যাপে ক্র্যাশ হওয়ার ঘটনা নাটকীয়ভাবে বেড়ে গেলে আমরা আপনাকে সতর্ক করতে পারি।
  • Performance Monitoring-এর জন্য, আপনার অ্যাপের স্টার্ট-আপ টাইম আপনার কনফিগার করা থ্রেশহোল্ড অতিক্রম করলে, আমরা আপনাকে সতর্ক করতে পারি।
  • App Distribution-এর জন্য, আপনার কোনও পরীক্ষক নতুন iOS ডিভাইস রেজিস্টার করলে আমরা আপনাকে সতর্ক করতে পারি।

প্রোজেক্ট মেম্বারের সেট করা পছন্দ অনুসারে, Firebase এই ধরনের অ্যালার্ট Firebase কনসোলে দেখায় অথবা ইমেলের মাধ্যমে পাঠায়।

এই পৃষ্ঠায় কীভাবে Cloud Functions for Firebase (2nd gen) তে ফাংশন লিখতে হয় তা বর্ণনা করা হয়েছে যা অ্যালার্ট ইভেন্ট ম্যানেজ করে।

এটি কীভাবে কাজ করে?

এইসব সোর্স থেকে নির্গত অ্যালার্ট ইভেন্টের উত্তরে আপনি ফাংশন ট্রিগার করতে পারবেন:

সাধারণ লাইফসাইকেলে, কোনও সতর্কতা ইভেন্ট দ্বারা ট্রিগার করা ফাংশন নিম্নলিখিত কাজগুলি করে:

  1. Firebase থেকে নির্দিষ্ট ধরনের সতর্কতা নির্গমন করার জন্য শোনে/অপেক্ষা করে।
  2. অ্যালার্ট নির্গমন করা হলে ট্রিগার হয় এবং ইভেন্ট পে-লোড পায়, যার মধ্যে ইভেন্ট সম্পর্কে নির্দিষ্ট তথ্য থাকে।
  3. ইভেন্ট পেলোড ম্যানেজ করার জন্য আপনার ফাংশনের কোড ইনভোক করে।

সতর্কতা ইভেন্টে ফাংশন ট্রিগার করা

firebase-functions/v2/alerts সাবপ্যাকেজ ব্যবহার করে এমন একটি ফাংশন লিখুন যা সতর্কতা ইভেন্ট ম্যানেজ করে। নিচে দেওয়া প্রোডাক্ট-নির্দিষ্ট উদাহরণে এমন একটি ওয়ার্কফ্লো দেখানো হয়েছে যেখানে Firebase থেকে কোনও প্রোডাক্টের জন্য অ্যালার্ট এমিট করা হলে একটি ফাংশন Discord চ্যানেলে মেসেজ পোস্ট করার জন্য ওয়েব হুক ব্যবহার করে।

Crashlytics সতর্কতা ইভেন্ট ম্যানেজ করা

নিচে দেওয়া Crashlytics উদাহরণের জন্য, নতুন মারাত্মক ক্র্যাশ সংক্রান্ত সমস্যার অ্যালার্ট ইভেন্ট ম্যানেজ করতে আপনি Cloud Functions for Firebase ব্যবহার করেন। এই ফাংশনটি Discord চ্যানেলে একটি মেসেজে সতর্কতা সম্পর্কিত তথ্য পোস্ট করে।

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-তে অ্যাপ-মধ্যস্থ মতামত পাঠান লিঙ্কে দেখুন।