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

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

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

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

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

تتم ملاحظة دعم إنشاء الدوال لكل نوع من أنواع المشغِّلات، أدناه.

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

  • تتطلب منك بعض تعريفات الدوال تحديد معلومات المحدد في ملف extension.yaml. على سبيل المثال، تضم Cloud Firestore document() التي تحدد نمط المستند المراد مشاهدته، يتضمن البيان المقابل في extension.yaml حقل resource يحدد نفس الشيء.

    في هذه الحالات، سيتم ضبط الإعدادات المحدّدة في extension.yaml يتم استخدام الملف وتكون التهيئة المحددة في تعريف الدالة وتجاهل.

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

  • تتضمّن حزمة تطوير البرامج (SDK) من الجيل الأول من "Cloud Functions" طريقة functions.config() functions:config:set أمر 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، ولكنها تنفّذ بروتوكول يسهِّل الاتصال من خلال الرمز من جهة العميل.

اطَّلِع على وظائف الاتصال من تطبيقك في مستندات 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" في 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 حول معلومات حول كتابة الدوال التي يتم تشغيلها في Analytics.

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

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-قيد التشغيل عند نشر رسالة إلى مجموعة الموضوع.

اطّلِع على مشغلات النشر/الاشتراك في مستندات 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 للحصول على معلومات حول كتابة الدوال التي يشغّلها RTDB.

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

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: ...

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

سيؤدي المثال أعلاه إلى إنشاء عامل تشغيل حدث مخصّص للخيار "تلقائي" الإعداد عن بُعد قناة في منطقة واحدة (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}