Firebase सूचना के ट्रिगर

Firebase कई तरह के प्रोजेक्ट और ऐप्लिकेशन मैनेजमेंट इवेंट के लिए सूचना देता है. Firebase आपको इस तरह की चेतावनी कब भेज सकता है, इसके लिए यहां इवेंट के कुछ उदाहरण दिए गए हैं:

  • Crashlytics के लिए, आपके ऐप्लिकेशन के क्रैश होने की संख्या में अचानक बढ़ोतरी होने पर हम आपको इसकी सूचना दे सकते हैं.
  • परफ़ॉर्मेंस मॉनिटर करने के लिए, हम आपको चेतावनी दे सकते हैं. ऐसा तब किया जाता है, जब आपका ऐप्लिकेशन शुरू होने में लगने वाला समय, कॉन्फ़िगर की गई सीमा से ज़्यादा हो गया हो.
  • App Distribution के लिए, अगर आपके टेस्टर में से कोई एक नया iOS डिवाइस रजिस्टर करता है, तो हम आपको इसकी सूचना दे सकते हैं.

सूचना और प्रोजेक्ट के सदस्य की सेट की गई प्राथमिकताओं के आधार पर, Firebase, Firebase कंसोल में इस तरह की सूचनाएं दिखाता है या उन्हें ईमेल से भेजता है.

इस पेज पर, Firebase के लिए Cloud Functions (2nd gen) में फ़ंक्शन लिखने का तरीका बताया गया है. ये फ़ंक्शन, सूचना वाले इवेंट को मैनेज करते हैं.

यह कैसे काम करता है?

इन सोर्स से मिलने वाली सूचना इवेंट की वजह से, फ़ंक्शन ट्रिगर किए जा सकते हैं:

किसी सामान्य लाइफ़साइकल में, किसी सूचना इवेंट से ट्रिगर होने वाला फ़ंक्शन ये काम करता है:

  1. Firebase से किसी खास तरह की सूचना के उत्सर्जन की सूचना देता है/इंतज़ार करता है.
  2. सूचना मिलने पर ट्रिगर होता है और इवेंट पेलोड मिलता है. इसमें इवेंट के बारे में खास जानकारी होती है.
  3. इवेंट पेलोड को हैंडल करने के लिए, आपके फ़ंक्शन के कोड को शुरू करता है.

सूचना वाले इवेंट पर कोई फ़ंक्शन ट्रिगर करें

अलर्ट इवेंट को मैनेज करने वाला फ़ंक्शन लिखने के लिए, firebase-functions/v2/alerts सबपैकेज का इस्तेमाल करें. यहां दिए गए प्रॉडक्ट के उदाहरणों में ऐसे वर्कफ़्लो के बारे में बताया गया है जिसमें Firebase से किसी प्रॉडक्ट के लिए सूचना मिलने पर, Discord चैनल पर मैसेज पोस्ट करने के लिए, वेबहुक का इस्तेमाल किया जाता है.

Crashlytics से मिलने वाली चेतावनी से जुड़े इवेंट को मैनेज करना

Crashlytics के यहां दिए गए उदाहरण के लिए, Firebase के लिए Cloud Functions का इस्तेमाल किया जा रहा है, ताकि ऐप्लिकेशन के बंद होने की किसी नई गंभीर समस्या की सूचना से जुड़े इवेंट को मैनेज किया जा सके. यह फ़ंक्शन, 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()

आखिर में, फ़ंक्शन एक एचटीटीपी अनुरोध के ज़रिए, 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(response.error);
}

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 की चेतावनियों से जुड़े रेफ़रंस दस्तावेज़ देखें.

परफ़ॉर्मेंस मॉनिटर करने से जुड़ी सूचना वाले इवेंट को मैनेज करना

यह उदाहरण, परफ़ॉर्मेंस थ्रेशोल्ड की चेतावनी से जुड़े इवेंट का पता लगाने वाला फ़ंक्शन एक्सपोर्ट करता है:

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()

आखिर में, फ़ंक्शन एक एचटीटीपी अनुरोध के ज़रिए, 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(response.error);
}

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()

परफ़ॉर्मेंस की चेतावनियों से जुड़े सभी इवेंट के बारे में जानने के लिए, परफ़ॉर्मेंस मॉनिटर करने से जुड़ी चेतावनियों के रेफ़रंस दस्तावेज़ पर जाएं.

App Distribution से जुड़ी सूचना इवेंट को मैनेज करना

इस सेक्शन में दिए गए उदाहरण में बताया गया है कि नए टेस्टर iOS डिवाइस की सूचनाओं के लिए फ़ंक्शन कैसे लिखा जाए.

इस उदाहरण में, फ़ंक्शन उन इवेंट को सुनता है जिन्हें तब भेजा जाता है, जब टेस्टर जब भी नया iOS डिवाइस रजिस्टर करता है. नया iOS डिवाइस रजिस्टर होने पर, आपको डिवाइस के यूडीआईडी के साथ अपनी प्रावधान प्रोफ़ाइल अपडेट करनी होगी और ऐप्लिकेशन को फिर से डिस्ट्रिब्यूट करना होगा.

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()

आखिर में, फ़ंक्शन एक एचटीटीपी अनुरोध के ज़रिए, 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(response.error);
}

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 से ऐप्लिकेशन में मिलने वाले सुझाव, शिकायत या राय से ट्रिगर होने वाले फ़ंक्शन को इस्तेमाल करने का तरीका जानने के लिए, Jio को ऐप्लिकेशन में मिलने वाले सुझाव भेजना लेख पढ़ें.