كتابة دوال السحابة الإلكترونية للحصول على إضافة

عند إنشاء إضافة، يمكنك كتابة منطقها باستخدام Cloud Functions، بالطريقة نفسها التي تكتب بها دالة لن يتم استخدامها إلا في مشروعك الخاص. يمكنك تحديد وظائفك في ملف extension.yaml، وعند تثبيت المستخدمين لإضافة Chrome، يتم نشر هذه الوظائف في مشروعهم.

راجِع مستندات Cloud Functions للحصول على معلومات عامة حول استخدام Cloud Functions.

الجيل الأول والثاني Cloud Functions

تتوافق Firebase مع كل من Cloud Functions من الجيل الأول والثاني. ومع ذلك، تفرض "إضافات" Firebase حاليًا بعض القيود على الجيل الذي يمكنك استخدامه من وظائف السحابة الإلكترونية مع أنواع محدّدة من عوامل التفعيل. لهذا السبب، تتضمّن العديد من الإضافات مزيجًا من دوالّ الجيل الأول والثاني.

في ما يلي الإشارة إلى مدى توفّر ميزة إنشاء الدوالّ لكل نوع من أنواع المشغّلات.

اعتبارات خاصة

  • تتطلّب بعض تعريفات الدوالّ تحديد معلومات يتم تحديدها أيضًا في ملف extension.yaml. على سبيل المثال، تتضمّن Cloud Firestore document()extension.yamlresource

    في هذه الحالات، يتم استخدام الإعدادات المحدّدة في ملف extension.yaml ويتم تجاهل الإعدادات المحدّدة في تعريف الدالة.

    من الشائع تحديد القيمة التي تم ضبطها في تعريف الدالة بغض النظر عن ذلك، وذلك لأغراض التوثيق. تتّبع الأمثلة الواردة في هذه الصفحة هذا النمط.

  • تحتوي حزمة SDK من الجيل الأول من Cloud Functions على طريقة functions.config() وfunctions:config:setcommand CLI التي يمكنك استخدامها للعمل مع القيم المُعلَمة في الدوالّ من الجيل الأول. تم إيقاف هذه التقنية نهائيًا في Cloud Functions ولن تعمل على الإطلاق في إحدى الإضافات. بدلاً من ذلك، استخدِم وحدة functions.params (إجراء يُنصح به) أو process.env.

استخدام TypeScript

تصف معظم مستندات تطوير الإضافة الخاصة بك عمليات سير العمل باستخدام JavaScript على الموقع Cloud Functions for Firebase. ومع ذلك، يمكنك بدلاً من ذلك كتابة دوالك باستخدام TypeScript.

في الواقع، تمت كتابة جميع الإضافات الرسمية Firebase باستخدام TypeScript. يمكنك مراجعة هذه الإضافات للاطّلاع على بعض أفضل الممارسات المتعلّقة باستخدام TypeScript في إضافتك.

إذا كتبت وظائف الإضافة بلغة TypeScript، عليك تنفيذ الخطوات التالية قبل تثبيت الإضافة:

  1. اجمع رمز الدوال البرمجية في رمز JavaScript.

    يتيح لك firebase ext:dev:init الأمر اختيار TypeScript لكتابة دوالّك. يوفّر لك الأمر إضافة كاملة قابلة للتثبيت بالإضافة إلى ملف برمجي لإنشاء الإصدار يمكنك تشغيله باستخدام npm run build.

  2. في ملف package.json، احرص على توجيه الحقل main إلى ملف JavaScript الذي تم إنشاؤه.

  3. إذا كنت بصدد تثبيت الإضافة أو تحميلها من مصدر محلي، عليك أولاً تجميع ملفات TypeScript.

عوامل تشغيل الدوالّ المتوافقة

عوامل تشغيل HTTP

يتم نشر دالة يتم تنشيطها من خلال HTTP إلى نقطة نهاية https عامة وتعمل عند الوصول إلى نقطة النهاية.

اطّلِع على استدعاء الدوالّ من خلال طلبات HTTP في Cloud Functions المستندات للحصول على معلومات عن كتابة الدوالّ التي يتم تشغيلها من خلال HTTP.

تعريف الدالة (الجيل الأول فقط)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

ملف بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

الدوال التي يمكن استدعاؤها

تتشابه الدوال القابلة للاستدعاء مع الدوال التي يتم تشغيلها من خلال HTTP، ولكنها تنفِّذ protocolly مما يجعل من السهل استدعاؤها من التعليمات البرمجية على جانب العميل.

راجِع وظائف الاتصال من تطبيقك في مستندات Cloud Functions للحصول على معلومات عن استخدام الدوال القابلة للاستدعاء.

تعريف الدالة (الجيل الأول فقط)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

عوامل تشغيل الدوالّ المجدوَلة

يتم تنفيذ الدالة المُجدوَلة بشكل متكرّر استنادًا إلى جدول زمني قابل للتخصيص.

اطّلِع على جدولة الدوال في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال المُجدوَلة.

تعريف الدالة (الجيل الأول فقط)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

في ما يلي الحقول الفرعية المتاحة لسمة scheduleTrigger:

الحقل الوصف
schedule
(مطلوب)

معدّل تكرار تنفيذ الدالة

يمكن أن يقبل هذا الحقل سلاسل تستخدم أيًا من البنيتَين (يجب استخدام علامات الاقتباس المفردة):

timeZone
(اختياري)

المنطقة الزمنية التي سيتم تنفيذ الجدول الزمني فيها

إذا كنت تريد أن يتمكّن المستخدمون من ضبط الجدول الزمني عند تثبيت الإضافة، أضِف مَعلمة جديدة إلى ملف extension.yaml واستخدم المَعلمة في بيان resource للدالة:

يتيح
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: ${SCHEDULE_FREQUENCY}
  - name: anotherFunction
    type: ...

params:
  - param: SCHEDULE_FREQUENCY
    label: Schedule
    description: How often do you want to run yourFunctionName()?
    type: string
    default: 'every 5 minutes'  # Specifying a default is optional.
    required: true

عوامل تشغيل قائمة انتظار المهام

يتم تشغيل وظيفة قائمة المهام إما عند أحداث مراحل نشاط الإضافة أو عند إضافتها يدويًا إلى قائمة انتظار مهام الإضافة باستخدام طريقة TaskQueue.enqueue() في SDK للمشرف.

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

اطّلِع على إضافة الدوال إلى قائمة الانتظار باستخدام Cloud Tasks في مستندات Cloud Functions للحصول على معلومات عن كتابة دوال قوائم انتظار المهام.

تعريف الدالة (الجيل الأول فقط)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

ملف بيان المورد (extension.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

اضبط مجموعة السمات taskQueueTrigger على {} أو خريطة للخيارات التي تُعدّل حدود معدّل تكرار المحاولة وسلوك إعادة المحاولة في قائمة انتظار المهام (راجِع ضبط قائمة انتظار المهام).

إذا كنت تريد تنشيط الدالة في أحداث دورة حياة الإضافة، أضِف سجلّات lifecycleEvents تتضمّن اسم الدالة ورسالة معالجة اختيارية، والتي سيتم عرضها في وحدة تحكّم Firebase عند بدء المعالجة.

lifecycleEvents:
  onInstall:
    function: myTaskFunction
    processingMessage: Resizing your existing images
  onUpdate:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension
  onConfigure:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension

Analytics

يتمّ تشغيل دالة يتمّ تشغيلها من خلال "إحصاءات Google" عند تسجيل حدث محدّد في "إحصاءات Google".

اطّلِع على عوامل تشغيل "إحصاءات Google" في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها في "إحصاءات Google".

تعريف الدالة (الجيل الأول فقط)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

ملف بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/ga_event
  - name: anotherFunction
    type: ...

إذا كنت تريد أن يتمكّن المستخدمون من ضبط الحدث Analytics للاستماع إليه عند تثبيت الإضافة، أضِف مَعلمة جديدة إلى ملف extension.yaml وأشِر إلى المَعلمة في بيان resource لوظيفتك:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
  - name: anotherFunction
    type: ...

params:
  - param: EVENT_NAME
    label: Analytics event
    description: What event do you want to respond to?
    type: string
    default: ga_event  # Specifying a default is optional.
    required: true

Authentication

يتم تشغيل وظيفة يتم تنشيطها من خلال المصادقة عند إنشاء مستخدم أو حذفه.

اطّلِع على عوامل تشغيل مصادقة Firebase في Cloud Functions المستندات للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال المصادقة.

تعريف الدالة (الجيل الأول فقط)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/firebase.auth/eventTypes/user.create
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

يوضّح الجدول التالي كيفية تحديد كلّ نوع من أنواع Authentication الأحداث المتوافقة:

مشغِّل حدث "Cloud Functions" eventType الوصف
onCreate() providers/firebase.auth/eventTypes/user.create تم إنشاء مستخدم جديد
onDelete() providers/firebase.auth/eventTypes/user.delete تم حذف المستخدم

Cloud Firestore

يتم تشغيل دالة يتم تشغيلها من خلال Cloud Firestore عند إنشاء مستند أو تعديله أو حذفه.

راجِع مشغلات Cloud Firestore في مستندات Cloud Functions للحصول على معلومات حول كتابة الدوال التي يتم تشغيلها في Firestore.

تعريف الدالة (الجيل الأول فقط)

import { firestore } from "firebase-functions/v1";

export const yourFunctionName = firestore.document("collection/{doc_id}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = firestore.document("collection/{doc_id}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = firestore.document("collection/{doc_id}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = firestore.document("collection/{doc_id}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

ملف بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
  - name: anotherFunction
    type: ...

يوضّح الجدول التالي كيفية تحديد كلّ نوع من أنواع Cloud Firestore الأحداث المتوافقة:

مشغِّل الحدث Cloud Functions eventType الوصف
onCreate() providers/cloud.firestore/eventTypes/document.create تم إنشاء مستند جديد
onDelete() providers/cloud.firestore/eventTypes/document.delete تم حذف المستند
onUpdate() providers/cloud.firestore/eventTypes/document.update تم تعديل المستند
onWrite() providers/cloud.firestore/eventTypes/document.write مستند تم إنشاؤه أو حذفه أو تعديله

إذا كنت تريد أن يتمكّن المستخدمون من ضبط مسار المستند عند تثبيت إضافتك، أضِف مَعلمة جديدة إلى ملف extension.yaml واستخدم هذه المَعلمة في تعريف resource للدالة:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_DOCUMENT_PATH
    label: Cloud Firestore path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{documentID}  # Specifying a default is optional.
    required: true

Pub/Sub

يتم تشغيل دالة يتم تنشيطها من خلال Pub/Sub عند نشر رسالة في موضوع معيّن.

اطّلِع على عوامل تشغيل Pub/Sub في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال Pub/Sub.

تعريف الدالة (الجيل الأول فقط)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

ملف بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/topic-name
  - name: anotherFunction
    type: ...

إذا كنت تريد أن يتمكّن المستخدمون من ضبط موضوع Pub/Sub عند تثبيت إضافتك، أضِف مَعلمة جديدة إلى ملف extension.yaml وأشِر إلى المَعلمة في بيان resource للدالة:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
  - name: anotherFunction
    type: ...

params:
  - param: PUBSUB_TOPIC
    label: Pub/Sub topic
    description: Which Pub/Sub topic do you want to watch for messages?
    type: string
    default: topic-name  # Specifying a default is optional.
    required: true

Realtime Database

يتم تشغيل دالة يتم تنشيطها من خلال "قاعدة بيانات في الوقت الفعلي" عند إنشاء مسار يتطابق مع ملف شخصي محدد أو تعديله أو حذفه.

اطّلِع على عوامل تشغيل "قاعدة بيانات في الوقت الفعلي" في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال "قاعدة بيانات في الوقت الفعلي".

تعريف الدالة (الجيل الأول فقط)

import { database } from "firebase-functions/v1";

export const yourFunctionName = database.ref("path/to/{item}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = database.ref("path/to/{item}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = database.ref("path/to/{item}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = database.ref("path/to/{item}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

ملف بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
  - name: anotherFunction
    type: ...

يوضّح الجدول التالي كيفية تحديد كلّ نوع من أنواع Cloud Firestore الأحداث المتوافقة:

مشغِّل الحدث Cloud Functions eventType الوصف
onCreate() providers/google.firebase.database/eventTypes/ref.create البيانات التي تم إنشاؤها
onDelete() providers/google.firebase.database/eventTypes/ref.delete تم حذف البيانات
onUpdate() providers/google.firebase.database/eventTypes/ref.update تم تعديل البيانات
onWrite() providers/google.firebase.database/eventTypes/ref.write البيانات التي تم إنشاؤها أو حذفها أو تعديلها

إذا كنت تريد أن يتمكّن المستخدمون من ضبط المسار المطلوب مراقبته عند تثبيت إضافتك، أضِف مَعلمة جديدة إلى ملف extension.yaml واستخدم هذه المَعلمة في بيان resource للدالة:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: DB_PATH
    label: Realtime Database path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{itemId}  # Specifying a default is optional.
    required: true

Remote Config

يتم تشغيل دالة يتم تنشيطها من خلال ميزة "الإعداد عن بُعد" عند تعديل ملف نموذج المَعلمات في المشروع.

اطّلِع على عوامل تشغيل "الإعداد عن بُعد" في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال "الإعداد عن بُعد".

تعريف الدالة (الجيل الأول فقط)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

Cloud Storage

يتم تشغيل دالة يتم تشغيلها من خلال Cloud Storage عند إنشاء عنصر أو أرشفته أو حذفه، أو عند تغيير بياناته الوصفية.

راجِع عوامل التشغيل في Cloud Storage ضمن مستندات Cloud Functions للحصول على معلومات حول كتابة الدوال التي تظهر في مساحة التخزين.

تعريف الدالة (الجيل الأول فقط)

import { storage } from "firebase-functions/v1";

export const yourFunctionName = storage.object().onFinalize((object, context) => {
  // ...
});

export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
  // ...
});

export const yourFunctionName3 = storage.object().onArchive((object, context) => {
  // ...
});

export const yourFunctionName4 = storage.object().onDelete((object, context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        # STORAGE_BUCKET (project's default bucket) is an auto-populated
        # parameter. You can also specify a bucket.
        resource: projects/_/buckets/${STORAGE_BUCKET}
  - name: anotherFunction
    type: ...

يوضّح الجدول التالي كيفية تحديد كلّ نوع من أنواع Cloud Storage الأحداث المتوافقة:

مشغِّل الحدث Cloud Functions eventType الوصف
onFinalize() google.storage.object.finalize تم إنشاء العنصر
onMetadataUpdate() google.storage.object.metadataUpdate تم تعديل البيانات الوصفية للعنصر.
onArchive() google.storage.object.archive تم وضع العنصر في الأرشيف
onDelete() google.storage.object.delete تم حذف العنصر

إذا كنت تريد أن يتمكّن المستخدمون من ضبط حزمة التخزين عند تثبيت إضافتك، أضِف مَعلمة جديدة إلى ملف extension.yaml واستخدم هذه المَعلمة في تعريف resource للدالة:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        resource: projects/_/buckets/${YOUR_BUCKET}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_BUCKET
    label: Cloud Storage bucket
    description: Which bucket do you want to watch for changes?
    type: selectResource
    resourceType: storage.googleapis.com/Bucket
    default: ${STORAGE_BUCKET}  # Specifying a default is optional.
    required: true

Test Lab

يتم تشغيل دالة يتم تشغيلها في مركز الاختبار الافتراضي عندما تنتهي مصفوفة الاختبار من اختباراتها.

اطّلِع على العوامل المشغِّلة في مركز الاختبار الافتراضي لمنصة Firebase في مستندات Cloud Functions للحصول على معلومات حول كتابة الدوال التي يتم تشغيلها في مركز الاختبار الافتراضي.

تعريف الدالة (الجيل الأول فقط)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

بيان المورد (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.testing.testMatrix.complete
        resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
  - name: anotherFunction
    type: ...

Crashlytics عوامل تشغيل التنبيهات

يتم تشغيل دالة يتم تنشيطها من خلال Crashlytics عندما ينشر Crashlytics تنبيهًا.

اطّلِع على عوامل تشغيل تنبيهات Firebase في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال التنبيهات.

تعريف الدالة (الجيل الثاني فقط)

import {
  onNewFatalIssuePublished,
  onNewNonfatalIssuePublished,
  onNewAnrIssuePublished,
  onRegressionAlertPublished,
  onVelocityAlertPublished,
  onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";

export const yourFunctionName = onNewFatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
  // ...
});

export const yourFunctionName4 = onRegressionAlertPublished((event) => {
  // ...
});

export const yourFunctionName5 = onVelocityAlertPublished((event) => {
  // ...
});

export const yourFunctionName6 = onStabilityDigestPublished((event) => {
  // ...
});

ملف بيان المورد (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: crashlytics.newFatalIssue
  - name: anotherFunction
    type: ...

يمكنك استخدام القيم التالية لسمة alerttype:

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Performance Monitoring عوامل تشغيل التنبيهات

يتم تشغيل دالة يتم تنشيطها من خلال Performance Monitoring عند نشر Performance Monitoring تنبيهًا.

اطّلِع على عوامل تشغيل تنبيهات Firebase في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال التنبيهات.

تعريف الدالة (الجيل الثاني فقط)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

ملف بيان المورد (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: performance.threshold
  - name: anotherFunction
    type: ...

App Distribution عامل تشغيل للتنبيه

يتم تشغيل دالة يتم تشغيلها App Distribution عندما ينشر App Distribution تنبيهًا.

اطّلِع على عوامل تشغيل تنبيهات Firebase في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال التنبيهات.

تعريف الدالة (الجيل الثاني فقط)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

ملف بيان المورد (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: appDistribution.inAppFeedback
  - name: anotherFunction
    type: ...

يمكنك استخدام القيم التالية لسمة alerttype:

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

عوامل تشغيل الأحداث المخصّصة (Eventarc)

يتم تشغيل دالة يتم تنشيطها من خلال Eventarc عند نشر نوع حدث معيّن في قناة معيّنة.

اطّلِع على إنشاء مشغلات أحداث مخصّصة ومعالجتها في Cloud Functions المستندات للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال Eventarc.

يمكنك أيضًا نشر الأحداث من إضافاتك لمنح المستخدمين طريقة لإدراج قاعدة منطق مخصّصة في إضافتك. راجِع استخدام المنطق المخصّص الذي يوفّره المطوّر في إحدى الإضافات.

تعريف الدالة (الجيل الثاني فقط)

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

ملف بيان المورد (extension.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      # LOCATION is a user-configured parameter value specified by the user
      # during installation.
      location: ${param:LOCATION}
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
        timeoutSeconds: 60
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
  - name: anotherFunction
    type: ...

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

سيؤدّي المثال أعلاه إلى إنشاء عامل تشغيل حدث مخصّص لقناة Firebase "التلقائية" في منطقة us-central1. يمكنك جعل اسم القناة والمنطقة قابلَين للتخصيص باستخدام المَعلمات. على سبيل المثال:


params:
  - param: EVENTARC_CHANNEL_NAME
    label: Eventarc channel name
    description: What is the name of the Eventarc channel.
    default: firebase
    type: string
    required: true

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      location: ${param:LOCATION}
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}