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

عند إنشاء إضافة، يمكنك كتابة منطقها باستخدام 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 اللذين يمكنك استخدامهما للتعامل مع القيم المحدّدة في الدوال من الجيل الأول. تم إيقاف هذه الطريقة نهائيًا في Cloud Functions ولن تعمل على الإطلاق في إضافة. بدلاً من ذلك، استخدِم الوحدة functions.params (ننصح بها) أو process.env.

استخدام TypeScript

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

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

إذا كتبت دوال الإضافة بلغة TypeScript، عليك إجراء ما يلي قبل تثبيت الإضافة:

  1. تجميع رمز مصدر الدوال في الإضافة إلى JavaScript

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

  2. في ملف package.json، تأكَّد من توجيه الحقل main إلى JavaScript الذي تم إنشاؤه.

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

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

مشغّلات HTTP

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

للحصول على معلومات حول كتابة الدوال التي يتم تشغيلها باستخدام بروتوكول HTTP، يُرجى الاطّلاع على مقالة استدعاء الدوال من خلال طلبات HTTP في Cloud Functions مستندات "وظائف السحابة الإلكترونية".

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

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 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 سجلات باسم الدالة ورسالة معالجة اختيارية ، والتي ستظهر في وحدة تحكّم FirebaseFirebase عند بدء المعالجة.

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

يتم تشغيل دالة يتم تشغيلها باستخدام Analytics عند تسجيل حدث محدّد في Analytics.

للحصول على معلومات حول كتابة الدوال التي يتم تشغيلها باستخدام Analytics، يُرجى الاطّلاع على مقالة مشغّلات "إحصاءات Google" في مستندات Cloud Functions للحصول على معلومات.

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

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 عند إنشاء مستند أو تعديله أو حذفه.

للحصول على معلومات حول كتابة الدوال التي يتم تشغيلها باستخدام Firestore، يُرجى الاطّلاع على مقالة مشغّلات Cloud Firestore في المستندات Cloud Functions للحصول على معلومات.

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

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، يُرجى الاطّلاع على مقالة مشغّلات 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

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

يتم تشغيل دالة يتم تشغيلها باستخدام 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)

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)

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)

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 عند نشر نوع حدث معيّن في قناة معيّنة.

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

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

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

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

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

الإعلان عن المرجع (extension.yaml)

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}