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

عند إنشاء إضافة، يمكنك كتابة منطقها باستخدام 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 للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال Storage.

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

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 Test Lab في مستندات Cloud Functions للحصول على معلومات عن كتابة الدوال التي يتم تشغيلها من خلال Test Lab.

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

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}