عند إنشاء إضافة، يمكنك كتابة منطقها باستخدام Cloud Functions،
بالطريقة نفسها التي تكتب بها دالة لن يتم استخدامها إلا في
مشروعك الخاص. يمكنك تحديد وظائفك في ملف extension.yaml
، وعند تثبيت المستخدمين لإضافة Chrome، يتم نشر هذه الوظائف في
مشروعهم.
راجِع مستندات Cloud Functions للحصول على معلومات عامة حول استخدام Cloud Functions.
الجيل الأول والثاني Cloud Functions
تتوافق Firebase مع كلاً من Cloud Functions من الجيل الأول والثاني. ومع ذلك، تفرض "إضافات" Firebase حاليًا بعض القيود على الجيل الذي يمكنك استخدامه من وظائف السحابة الإلكترونية مع أنواع محدّدة من عوامل التفعيل. لهذا السبب، تتضمّن العديد من الإضافات مزيجًا من دوالّ الجيل الأول والثاني.
في ما يلي الإشارة إلى مدى توفّر ميزة إنشاء الدوالّ لكل نوع من أنواع المشغّلات.
اعتبارات خاصة
تتطلّب بعض تعريفات الدوالّ تحديد معلومات يتم تحديدها أيضًا في ملف
extension.yaml
. على سبيل المثال، تتضمّن Cloud Firestoredocument()
�extension.yaml
resource
في هذه الحالات، يتم استخدام الإعدادات المحدّدة في ملف
extension.yaml
ويتم تجاهل الإعدادات المحدّدة في تعريف الدالة.من الشائع تحديد القيمة التي تم ضبطها في تعريف الدالة بغض النظر عن ذلك، وذلك لأغراض التوثيق. تتّبع الأمثلة الواردة في هذه الصفحة هذا النمط.
تحتوي حزمة تطوير البرامج (SDK) من الجيل الأول من Cloud Functions على طريقة
functions.config()
وfunctions:config:set
command CLI التي يمكنك استخدامها للعمل مع القيم المُعلَمة في الدوالّ من الجيل الأول. تم إيقاف هذه التقنية نهائيًا في Cloud Functions ولن تعمل على الإطلاق في إحدى الإضافات. بدلاً من ذلك، استخدِم وحدةfunctions.params
(إجراء يُنصح به) أوprocess.env
.
استخدام TypeScript
توضّح معظم مستندات تطوير الإضافة الخاصة بك سير العمل باستخدام JavaScript في Cloud Functions for Firebase. ومع ذلك، يمكنك بدلاً من ذلك كتابة دوالك باستخدام TypeScript.
في الواقع، تمت كتابة جميع الإضافات الرسمية Firebase باستخدام TypeScript. يمكنك مراجعة هذه الإضافات للاطّلاع على بعض أفضل الممارسات المتعلّقة باستخدام TypeScript في إضافتك.
إذا كتبت وظائف الإضافة بلغة TypeScript، عليك تنفيذ الخطوات التالية قبل تثبيت الإضافة:
اجمع رمز الدوال البرمجية في رمز JavaScript.
يتيح لك
firebase ext:dev:init
الأمر اختيار TypeScript لكتابة دوالّك. يوفّر لك الأمر إضافة كاملة قابلة للتثبيت بالإضافة إلى ملف برمجي لإنشاء الإصدار يمكنك تشغيله باستخدامnpm run build
.في ملف
package.json
، احرص على توجيه الحقلmain
إلى ملف JavaScript الذي تم إنشاؤه.إذا كنت بصدد تثبيت الإضافة أو تحميلها من مصدر محلي، عليك أولاً تجميع ملفات 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}