फायरबेस अलर्ट ट्रिगर

फायरबेस परियोजना और ऐप प्रबंधन घटनाओं की एक विस्तृत श्रृंखला के लिए अलर्ट प्रदान करता है। यहां कुछ उदाहरण दिए गए हैं जब फायरबेस आपको इस प्रकार का अलर्ट भेज सकता है:

  • क्रैशलिटिक्स के लिए, यदि आपके ऐप में क्रैश की संख्या में नाटकीय वृद्धि हुई है तो हम आपको सचेत कर सकते हैं।
  • प्रदर्शन निगरानी के लिए, यदि आपके ऐप का स्टार्ट-अप समय आपकी कॉन्फ़िगर की गई सीमा को पार कर जाता है तो हम आपको सचेत कर सकते हैं।
  • ऐप वितरण के लिए, यदि आपका कोई परीक्षक एक नया iOS डिवाइस पंजीकृत करता है तो हम आपको सचेत कर सकते हैं।

प्रोजेक्ट सदस्य द्वारा निर्धारित अलर्ट और प्राथमिकताओं के आधार पर, फायरबेस इस प्रकार के अलर्ट फायरबेस कंसोल में दिखाता है या उन्हें ईमेल के माध्यम से भेजता है।

यह पृष्ठ बताता है कि फायरबेस (दूसरी पीढ़ी) के लिए क्लाउड फ़ंक्शंस में फ़ंक्शंस कैसे लिखें जो अलर्ट घटनाओं को संभालते हैं।

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

आप इन स्रोतों द्वारा उत्सर्जित चेतावनी घटनाओं के जवाब में फ़ंक्शन ट्रिगर कर सकते हैं:

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

  1. फायरबेस से उत्सर्जित होने वाले एक विशिष्ट अलर्ट प्रकार को सुनता/प्रतीक्षा करता है।
  2. अलर्ट उत्सर्जित होने पर ट्रिगर होता है, और ईवेंट पेलोड प्राप्त करता है जिसमें ईवेंट के बारे में विशिष्ट जानकारी होती है।
  3. ईवेंट पेलोड को संभालने के लिए आपके फ़ंक्शन के कोड को आमंत्रित करता है।

अलर्ट इवेंट पर फ़ंक्शन ट्रिगर करें

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

क्रैशलिटिक्स अलर्ट इवेंट को संभालें

निम्नलिखित क्रैशलिटिक्स उदाहरण के लिए, आप एक नए घातक क्रैश मुद्दे की चेतावनी घटना को संभालने के लिए फायरबेस के लिए क्लाउड फ़ंक्शंस का उपयोग करते हैं। यह फ़ंक्शन एक संदेश में अलर्ट जानकारी को डिस्कॉर्ड चैनल पर पोस्ट करता है।

डिस्कॉर्ड में उदाहरण क्रैश अधिसूचना

एक नई घातक दुर्घटना समस्या के लिए उदाहरण अधिसूचना

फ़ंक्शन फ़ायरबेस द्वारा एक नई घातक समस्या प्रकाशित करने से संबंधित ईवेंट को सुनता है:

नोड.जे.एस

exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {

पायथन (पूर्वावलोकन)

@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."""

फिर फ़ंक्शन लौटाए गए ईवेंट ऑब्जेक्ट को पार्स करता है, ईवेंट पेलोड से उपयोगी जानकारी पार्स करता है और डिस्कॉर्ड चैनल पर पोस्ट करने के लिए एक संदेश बनाता है:

नोड.जे.एस

  // 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}\`
`;

पायथन (पूर्वावलोकन)

    # 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 अनुरोध के माध्यम से निर्मित संदेश को डिस्कॉर्ड को भेजता है:

नोड.जे.एस

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);
}

पायथन (पूर्वावलोकन)

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

उन सभी क्रैशलिटिक्स अलर्ट ईवेंट के बारे में जानने के लिए जिन्हें आप कैप्चर कर सकते हैं, क्रैशलाइटिक्स अलर्ट के संदर्भ दस्तावेज़ पर जाएं।

एक प्रदर्शन निगरानी चेतावनी घटना को संभालें

यह उदाहरण एक फ़ंक्शन निर्यात करता है जो प्रदर्शन सीमा चेतावनी घटनाओं को सुनता है:

नोड.जे.एस

exports.postperformancealerttodiscord = onThresholdAlertPublished(
    async (event) => {

पायथन (पूर्वावलोकन)

@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."""

फिर फ़ंक्शन लौटाए गए ईवेंट ऑब्जेक्ट को पार्स करता है, ईवेंट पेलोड से उपयोगी जानकारी पार्स करता है और डिस्कॉर्ड चैनल पर पोस्ट करने के लिए एक संदेश बनाता है:

नोड.जे.एस

      // 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}
    `;

पायथन (पूर्वावलोकन)

    # 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 अनुरोध के माध्यम से निर्मित संदेश को डिस्कॉर्ड को भेजता है:

नोड.जे.एस

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);
}

पायथन (पूर्वावलोकन)

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

उन सभी प्रदर्शन चेतावनी घटनाओं के बारे में जानने के लिए जिन्हें आप कैप्चर कर सकते हैं, प्रदर्शन निगरानी अलर्ट के संदर्भ दस्तावेज़ पर जाएँ।

ऐप डिस्ट्रीब्यूशन अलर्ट इवेंट को संभालें

इस अनुभाग का उदाहरण आपको दिखाता है कि नए परीक्षक iOS डिवाइस अलर्ट के लिए फ़ंक्शन कैसे लिखें।

इस उदाहरण में, फ़ंक्शन उन घटनाओं को सुनता है जो हर बार एक परीक्षक द्वारा एक नए iOS डिवाइस को पंजीकृत करने पर भेजी जाती हैं। जब एक नया iOS डिवाइस पंजीकृत होता है, तो आपको उस डिवाइस के UDID के साथ अपनी प्रोविज़निंग प्रोफ़ाइल को अपडेट करना होगा और फिर ऐप को फिर से वितरित करना होगा।

नोड.जे.एस

exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {

पायथन (पूर्वावलोकन)

@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."""

फिर फ़ंक्शन लौटाए गए ऑब्जेक्ट को पार्स करता है, इवेंट पेलोड से उपयोगी जानकारी पार्स करता है और डिस्कॉर्ड चैनल पर पोस्ट करने के लिए एक संदेश बनाता है:

नोड.जे.एस

  // 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}
`;

पायथन (पूर्वावलोकन)

    # 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 अनुरोध के माध्यम से निर्मित संदेश को डिस्कॉर्ड को भेजता है:

नोड.जे.एस

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);
}

पायथन (पूर्वावलोकन)

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

उन सभी ऐप वितरण अलर्ट ईवेंट के बारे में जानने के लिए जिन्हें आप कैप्चर कर सकते हैं, ऐप वितरण अलर्ट के संदर्भ दस्तावेज़ पर जाएं।

ऐप डिस्ट्रीब्यूशन से इन-ऐप फीडबैक फायरबेस अलर्ट द्वारा ट्रिगर किए गए फ़ंक्शन का उपयोग करने का तरीका जानने के लिए, जीरा को इन-ऐप फीडबैक भेजें देखें।