مشغلات Firebase Alerts

يوفر Firebase تنبيهات لمجموعة كبيرة من أحداث إدارة المشاريع والتطبيقات. في ما يلي بعض الأمثلة على الأحداث التي يمكن أن يرسل فيها Firebase هذا النوع من التنبيهات إليك:

  • بالنسبة إلى Crashlytics ، يمكننا تنبيهك إذا كان تطبيقك يحتوي على زيادة كبيرة في عدد الأعطال.
  • لمراقبة الأداء ، يمكننا تنبيهك إذا تجاوز وقت بدء تشغيل تطبيقك الحد الذي تم تكوينه.
  • بالنسبة لتوزيع التطبيقات ، يمكننا تنبيهك إذا قام أحد المختبرين بتسجيل جهاز iOS جديد.

بناءً على التنبيه والتفضيلات التي حددها عضو المشروع ، يعرض Firebase هذه الأنواع من التنبيهات في وحدة تحكم Firebase أو يرسلها عبر البريد الإلكتروني.

تصف هذه الصفحة كيفية كتابة الوظائف التي تتعامل مع أحداث التنبيه.

كيف يعمل؟

يمكنك تشغيل الوظائف استجابةً لأحداث التنبيه الصادرة عن هذه المصادر:

في دورة حياة نموذجية ، تقوم الوظيفة التي يتم تشغيلها بواسطة حدث تنبيه بما يلي:

  1. يستمع / ينتظر نوع تنبيه معين يصدر من Firebase.
  2. يتم تشغيله عند إصدار التنبيه ، واستلام حمولة الحدث التي تحتوي على معلومات محددة حول الحدث.
  3. استدعاء رمز وظيفتك للتعامل مع حمولة الحدث.

تشغيل وظيفة في أحداث التنبيه

استخدم الحزمة الفرعية firebase-functions/v2/alerts لكتابة وظيفة تتعامل مع أحداث التنبيهات. توضح الأمثلة التالية الخاصة بالمنتج سير عمل حيث تستخدم إحدى الوظائف خطاف ويب لنشر رسالة إلى قناة Discord عند إصدار تنبيه لهذا المنتج من Firebase.

التعامل مع حدث تنبيه Crashlytics

بالنسبة لمثال Crashlytics التالي ، يمكنك استخدام Cloud Functions لـ Firebase للتعامل مع حدث تنبيه لمشكلة عطل فادح جديدة. تنشر هذه الوظيفة معلومات التنبيه في رسالة إلى قناة Discord.

مثال على إخطار التعطل في Discord

مثال على إشعار بخصوص مشكلة تعطل فادح جديدة

تستمع الوظيفة إلى حدث onNewFatalIssuePublished :

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

تقوم الوظيفة بعد ذلك بتوزيع كائن الحدث الذي تم إرجاعه ، وإنشاء رسالة لنشرها على قناة Discord:

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

أخيرًا ، ترسل الوظيفة الرسالة المُنشأة إلى Discord:

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

للتعرف على جميع أحداث تنبيه Crashlytics التي يمكنك التقاطها ، انتقل إلى الوثائق المرجعية لتنبيهات Crashlytics .

التعامل مع حدث تنبيه مراقبة الأداء

يوضح لك المثال في هذا القسم كيفية كتابة دالة لتنبيهات عتبة الأداء.

في هذا المثال ، في الدالة onThresholdAlertPublished تصدر دالة سحابية تستمع إلى أحداث من النوع PerformanceEvent<ThresholdAlertPayload> ، والتي يتم إرسالها في كل مرة ينطلق فيها تنبيه عتبة الأداء:

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

تقوم الوظيفة بعد ذلك بتحليل كائن الحدث المرتجع ، وتحليل المعلومات المفيدة من حمولة الحدث وإنشاء رسالة لنشرها على قناة Discord:

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

أخيرًا ، ترسل الوظيفة الرسالة المُنشأة إلى Discord من خلال طلب 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);
        }

للتعرف على جميع أحداث تنبيهات الأداء التي يمكنك التقاطها ، انتقل إلى الوثائق المرجعية لتنبيهات مراقبة الأداء .

التعامل مع حدث تنبيه توزيع التطبيق

يوضح لك المثال في هذا القسم كيفية كتابة وظيفة لتنبيهات جهاز iOS المختبِر الجديد.

في هذا المثال ، تصدر الدالة onNewTesterIosDevicePublished وظيفة سحابية تستمع إلى أحداث من النوع AppDistributionEvent<NewTesterDevicePayload> ، والتي يتم إرسالها في كل مرة يسجل فيها أحد المختبرين جهاز iOS جديد. عندما يتم تسجيل جهاز iOS جديد ، فأنت بحاجة إلى تحديث ملف التوفير الخاص بك باستخدام UDID الخاص بهذا الجهاز ثم إعادة توزيع التطبيق.

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

تقوم الوظيفة بعد ذلك بتحليل ما تم إرجاعه ، وتحليل المعلومات المفيدة من حمولة الحدث وإنشاء رسالة لنشرها على قناة Discord:

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

أخيرًا ، ترسل الوظيفة الرسالة المُنشأة إلى Discord من خلال طلب 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);
    }

للتعرف على جميع أحداث تنبيهات توزيع التطبيقات التي يمكنك التقاطها ، انتقل إلى الوثائق المرجعية لتنبيهات توزيع التطبيق .

لمعرفة كيفية استخدام وظيفة يتم تشغيلها بواسطة تنبيه Firebase للتعليقات داخل التطبيق من App Distribution ، راجع إرسال تعليقات داخل التطبيق إلى Jira .