כשיוצרים תוסף, צריך לכתוב את הלוגיקה שלו באמצעות Cloud Functions, בדיוק כמו שכותבים פונקציה שתהיה בשימוש רק בפרויקט שלכם. אתם מצהירים על הפונקציות בקובץ extension.yaml
, וכשהמשתמשים מתקינים את התוסף, הפונקציות האלה פרוסות בפרויקט שלהם.
למידע כללי על השימוש ב-Cloud Functions, אפשר לעיין במסמכי העזרה של Cloud Functions.
דור ראשון ודור שני Cloud Functions
Firebase תומך גם ב-Cloud Functions מדור ראשון וגם ב-Cloud Functions מדור שני. עם זאת, בשלב הזה יש הגבלות מסוימות על דור הפונקציה בענן שאפשר להשתמש בו עם סוגים מסוימים של טריגרים ב-Firebase Extensions. לכן, הרבה תוספים כוללים שילוב של פונקציות מדור ראשון ומדור שני.
בהמשך מפורטת התמיכה ביצירת פונקציות לכל סוג של טריגר.
שיקולים מיוחדים
בהגדרות של פונקציות מסוימות צריך לציין מידע שמצוין גם בקובץ
extension.yaml
. לדוגמה, ב-Cloud Firestore יש methoddocument()
שמציינת את תבנית המסמך למעקב, וההצהרה התואמת ב-extension.yaml
כוללת שדהresource
שמציין את אותה.במקרים כאלה, המערכת משתמשת בתצורה שצוינה בקובץ
extension.yaml
ומתעלם מהתצורה שצוינה בהגדרת הפונקציה.עם זאת, מומלץ לציין את הערך שהוגדר בהגדרת הפונקציה למטרות תיעוד. הדוגמאות בדף בנויות לפי הדפוס הזה.
ל-SDK מדור ראשון Cloud Functions יש שיטת
functions.config()
ופקודת CLIfunctions:config:set
, שבעזרתם אפשר לעבוד עם ערכים לפי פרמטרים בפונקציות מדור ראשון. הטכניקה הזו הוצאה משימוש ב-Cloud Functions, והיא לא תפעל בכלל בתוסף. במקום זאת, צריך להשתמש במודולfunctions.params
(מומלץ) או ב-process.env
.
שימוש ב-TypeScript
רוב המסמכים בנושא פיתוח תוספים מתארים תהליכי עבודה באמצעות JavaScript ל-Cloud Functions for Firebase. עם זאת, אפשר לכתוב את הפונקציות באמצעות TypeScript.
למעשה, כל התוספים הרשמיים של Firebase נכתבים ב-TypeScript. בתוספים האלה תוכלו למצוא שיטות מומלצות לשימוש ב-TypeScript לתוסף.
אם כן כתבתם את הפונקציות של התוסף ב-TypeScript, עליכם לבצע את הפעולות הבאות לפני שתתקינו את התוסף:
מעתיקים את קוד המקור של הפונקציות של התוסף ל-JavaScript.
הפקודה
firebase ext:dev:init
מאפשרת לבחור ב-TypeScript לכתיבה של הפונקציות. הפקודה מספקת תוסף מלא שניתן להתקנה וגם סקריפט build שאפשר להריץ באמצעותnpm run build
.בקובץ
package.json
, חשוב להפנות את השדהmain
אל קוד ה-JavaScript שנוצר.אם מתקינים או מעלים את התוסף ממקור מקומי, קודם צריך לקמפל את קובצי TypeScript.
טריגרים של פונקציות נתמכות
טריגרים של HTTP
פונקציה שמופעל על ידי HTTP נפרסת בנקודת קצה https
ציבורית ופועלת כשמתבצעת גישה לנקודת הקצה.
במאמרי העזרה של Cloud Functions בנושא פונקציות קריאה באמצעות בקשות HTTP מוסבר על כתיבת פונקציות שמופעלות על ידי HTTP.
הגדרת הפונקציה (דור ראשון בלבד)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
הצהרת משאב (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
פונקציות שניתן להפעיל
פונקציות שניתן להפעיל הן דומות לפונקציות שמופעלות על ידי HTTP, אבל הן מיישמות פרוטוקול שמאפשר להפעיל אותן בקלות מהקוד בצד הלקוח.
במאמר קריאה לפונקציות מהאפליקציה במסמכי העזרה של Cloud Functions מוסבר איך משתמשים בפונקציות שניתן לקרוא להן.
הגדרת פונקציה (דור ראשון בלבד)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
הצהרה לגבי משאבים (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
טריגרים של פונקציות מתוזמנות
פונקציה מתוזמנת פועלת שוב ושוב על סמך לוח זמנים שניתן להתאים אישית.
במאמר תזמון פונקציות במסמכי העזרה של Cloud Functions מוסבר איך לכתוב פונקציות מתוזמנות.
הגדרת הפונקציה (דור ראשון בלבד)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
הצהרת משאב (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
אלה שדות המשנה הזמינים של scheduleTrigger
:
שדה | תיאור |
---|---|
schedule (חובה) |
התדירות שבה רוצים שהפונקציה תפעל. השדה הזה יכול לקבל מחרוזות שמשתמשות בכל אחד מהתחבירים (נדרשת גלישה במירכאות יחידות):
|
timeZone (אופציונלי) |
אזור הזמן שבו לוח הזמנים יפעל.
|
אם אתם רוצים שהמשתמשים יוכלו להגדיר את התזמון כשהם מתקינים את התוסף, מוסיפים פרמטר חדש לקובץ extension.yaml
ומפנים אל הפרמטר בהצהרה resource
של הפונקציה:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
טריגרים של תור משימות
פונקציה של תור משימות מופעלת באירועי מחזור החיים של התוסף, או כשמוסיפים אותה באופן ידני לתור המשימות של התוסף באמצעות השיטה TaskQueue.enqueue()
של 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 פועלת כאשר נוצר, מתעדכן או נמחק נתיב שתואם לדפוס מסוים.
מידע על כתיבת פונקציות שמופעלות על ידי RTDB מופיע במאמר טריגרים של מסד נתונים בזמן אמת בחומרי העזר של 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
פונקציה שמופעל על ידי Remote Config פועלת כשתבנית הפרמטרים של הפרויקט מתעדכנת.
במאמר טריגרים של Remote Config במסמכי העזרה של Cloud Functions מוסבר איך לכתוב פונקציות שמופעל בהן טריגר של Remote Config.
הגדרת הפונקציה (דור ראשון בלבד)
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 מוסבר איך לכתוב פונקציות שמופעל בהן טריגר של 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 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 פועלת כשסוג אירוע ספציפי מתפרסם בערוץ ספציפי.
למידע על כתיבת פונקציות שמופעלות על ידי Eventarc, ראו איך יוצרים טריגרים של אירועים מותאמים אישית ואיך מטפלים בהם במאמרי העזרה של Cloud Functions.
אתם יכולים גם לפרסם אירועים מהתוספים כדי לתת למשתמשים דרך להוסיף לוגיקה מותאמת אישית לתוסף. שימוש בלוגיקה מותאמת אישית שסופקו על ידי המפתח בתוסף
הגדרת פונקציה (דור שני בלבד)
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}