مشغلات Firebase Alerts

يوفر Firebase تنبيهات لمجموعة كبيرة من الأحداث ، مثل تغييرات الفواتير أو تنبيهات سرعة Crashlytics. اعتمادًا على التنبيه والتفضيلات التي حددها عضو المشروع ، يمكن عرض التنبيه في وحدة تحكم Firebase أو إرساله عبر البريد الإلكتروني أو إرساله عبر أحد تكاملات الجهات الخارجية المتاحة ( Slack و Jira و PagerDuty ). يتم تكوين كل من هذه التنبيهات وتفضيلاته في وحدة تحكم Firebase.

بالإضافة إلى ذلك ، يوفر Firebase وصولاً برمجيًا قابلًا للتخصيص إلى بعض أنواع التنبيهات من خلال وظائف السحابة.

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

  • كراشليتيك
  • توزيع التطبيق
  • فوترة Firebase

على سبيل المثال ، يمكنك التقاط تنبيه Crashlytics وإرسال إشعارات الأعطال إلى Discord. أو يمكنك تسجيل حدث فوترة (مثل تغيير في خطة الفوترة للمشروع) ، وتشغيل وظيفة ترسل إشعارًا إلى مالك المشروع.

في دورة حياة نموذجية ، تقوم وظيفة Firebase Alert بما يلي:

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

راجع الوثائق المرجعية لأنواع التنبيهات والحمولات الخاصة بـ Crashlytics و App Distribution و Billing .

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

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

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

تستمع دالة العينة إلى حدث onNewFatalIssuePublished كما هو موضح:

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

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

  // construct a helpful message to send to Discord
  const {id, title, subtitle, appVersion} = event.data.payload.issue;
  const message = `
🚨 New fatal issue 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} to Discord`,
          event.data.payload,
      );
    } else {
      throw new Error(response.error);
    }

بهذه الطريقة ، يمكنك الاستفادة من وظائف السحابة لـ Firebase للرد على أحداث Firebase Alerts باستخدام منطق مخصص يكون أكثر فائدة لفريقك. بالإضافة إلى التكامل مع خدمات مثل Discord ، يمكنك كتابة وظائف لتتجاوز عمليات التكامل المكونة لوحدة التحكم مع مزودي الخدمة مثل Jira أو Slack أو PagerDuty. على سبيل المثال ، يمكنك إضافة حقول مخصصة أو وظائف أخرى غير مدعومة بالفعل.