כשיוצרים תוסף, כותבים את הלוגיקה שלו באמצעות Cloud Functions, בדומה לכתיבת פונקציה שתשמש רק בפרויקט שלכם. מצהירים על הפונקציות בקובץ extension.yaml, וכשהמשתמשים מתקינים את התוסף, הפונקציות האלה נפרסות בפרויקט שלהם.
מידע כללי על השימוש ב-Cloud Functions זמין במאמרי העזרה בנושא Cloud Functions.
דור ראשון ודור שני של Cloud Functions
פלטפורמת Firebase תומכת ב-1st-generation וב-2nd-generation Cloud Functions. עם זאת, יש כרגע הגבלות מסוימות על השימוש בתוספים של Firebase, שקובעות באיזה דור של פונקציות בענן אפשר להשתמש עם סוגים מסוימים של טריגרים. לכן, תוספים רבים כוללים שילוב של פונקציות מהדור הראשון ומהדור השני.
בהמשך מפורטות תכונות יצירת הפונקציות לכל סוג טריגר.
שיקולים מיוחדים
חלק מהגדרות הפונקציות מחייבות לציין מידע שמופיע גם בקובץ
extension.yaml. לדוגמה, ל-Cloud Firestore יש שיטהdocument()שמציינת את תבנית המסמך למעקב, וההצהרה התואמת שלה ב-extension.yamlכוללת שדהresourceשמציין את אותה תבנית.במקרים כאלה, נעשה שימוש בהגדרה שצוינה בקובץ
extension.yaml, וההגדרה שצוינה בהגדרת הפונקציה מתעלמת.מקובל לציין את הערך שהוגדר בהגדרת הפונקציה בכל מקרה, לצורך תיעוד. הדוגמאות בדף הזה פועלות לפי התבנית הזו.
ב-Cloud Functions SDK מדור ראשון יש מתודה
functions.config()ופקודת CLIfunctions:config:setשאפשר להשתמש בהן כדי לעבוד עם ערכים עם פרמטרים בפונקציות מדור ראשון. הטכניקה הזו הוצאה משימוש ב-Cloud Functions ולא תפעל בכלל בתוסף. במקום זאת, אפשר להשתמש במודולfunctions.params(מומלץ) או ב-process.env.
שימוש ב-TypeScript
רוב התיעוד לפיתוח תוסף משלכם מתאר תהליכי עבודה באמצעות JavaScript ל-Cloud Functions for Firebase. עם זאת, אפשר לכתוב את הפונקציות באמצעות TypeScript.
למעשה, כל התוספים הרשמיים כתובים ב-TypeScript.Firebase כדאי לעיין בתוספים האלה כדי לקבל כמה שיטות מומלצות לשימוש ב-TypeScript בתוסף.
אם אתם כותבים את הפונקציות של התוסף ב-TypeScript, אתם צריכים לבצע את הפעולות הבאות לפני התקנת התוסף:
קומפילציה של קוד המקור של הפונקציות של התוסף ל-JavaScript.
התג
firebase ext:dev:initcommand מאפשר לכם לבחור ב-TypeScript כדי לכתוב את הפונקציות. הפקודה מספקת תוסף מלא שניתן להתקנה וכן סקריפט build שאפשר להריץ באמצעותnpm run build.בקובץ
package.json, מוודאים שהשדהmainמצביע על קובץ ה-JavaScript שנוצר.אם אתם מתקינים או מעלים את התוסף ממקור מקומי, צריך קודם לקמפל את קובצי ה-TypeScript.
טריגרים נתמכים של פונקציות
טריגרים של HTTP
פונקציה שמופעלת על ידי HTTP נפרסת בנקודת קצה (endpoint) ציבורית 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, אבל הן מיישמות פרוטוקול שמאפשר להפעיל אותן בקלות מקוד בצד הלקוח.
מידע על שימוש בפונקציות שאפשר להפעיל מתוך האפליקציה זמין במאמר Call functions from your app במסמכי התיעוד של 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() של Admin 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
פונקציה שמופעלת על ידי Analytics פועלת כשאירוע ספציפי ב-Analytics נרשם ביומן.
במאמר בנושא טריגרים של Google Analytics במסמכי התיעוד של 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 פועלת כשמסמך נוצר, מעודכן או נמחק.
מידע על כתיבת פונקציות שמופעלות על ידי 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 במסמכי התיעוד של 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 פועלת כשנוצר, מתעדכן או נמחק נתיב שתואם לתבנית שצוינה.
במאמר בנושא טריגרים של 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 מוסבר איך לכתוב פונקציות שמופעלות על ידי 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 פועלת כשמטריצת בדיקות מסיימת את הבדיקות שלה.
מידע על כתיבת פונקציות שמופעלות על ידי Test Lab זמין במאמר טריגרים של Firebase Test Lab במסמכי התיעוד של 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.newFatalIssuecrashlytics.newNonfatalIssuecrashlytics.regressioncrashlytics.stabilityDigestcrashlytics.velocitycrashlytics.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.newTesterIosDeviceappDistribution.inAppFeedback
טריגרים מותאמים אישית לאירועים (Eventarc)
פונקציה שמופעלת על ידי Eventarc פועלת כשסוג אירוע ספציפי מתפרסם בערוץ ספציפי.
במאמר יצירה וטיפול בטריגרים מותאמים אישית של אירועים במסמכי התיעוד של Cloud Functions אפשר לקרוא מידע על כתיבת פונקציות שמופעלות על ידי Eventarc.
אפשר גם לפרסם אירועים מהתוספים כדי לאפשר למשתמשים להוסיף לוגיקה מותאמת אישית לתוסף. מידע נוסף זמין במאמר בנושא שימוש בלוגיקה מותאמת אישית שסופקה על ידי מפתח בתוסף.
הגדרת הפונקציה (רק בדור השני)
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}