כתיבת Cloud Functions לתוסף

כשיוצרים תוסף, כותבים את הלוגיקה שלו באמצעות Cloud Functions, בדומה לכתיבת פונקציה שתשמש רק בפרויקט שלכם. אתם מצהירים על הפונקציות בקובץ extension.yaml, וכשהמשתמשים מתקינים את התוסף, הפונקציות האלה נפרסות בפרויקט שלהם.

במסמכי התיעוד של Cloud Functions מופיע מידע כללי על השימוש ב-Cloud Functions.

‫Cloud Functions דור ראשון ודור שני

‫Firebase תומך בCloud Functions מהדור הראשון ומהדור השני. עם זאת, כרגע יש בתוספים ל-Firebase כמה הגבלות על הדור של פונקציית Cloud Functions שאפשר להשתמש בו עם סוגים מסוימים של טריגרים. לכן, תוספים רבים כוללים שילוב של פונקציות מהדור הראשון ומהדור השני.

התמיכה ביצירת פונקציות מצוינת לכל סוג טריגר, בהמשך.

שיקולים מיוחדים

  • בחלק מהגדרות הפונקציות צריך לציין מידע שצוין גם בקובץ extension.yaml. לדוגמה, ל-Cloud Firestore יש שיטה בשם document() שמציינת את תבנית המסמך שצריך לעקוב אחריה, וההצהרה התואמת שלה ב-extension.yaml כוללת שדה בשם resource שמציין את אותו הדבר.

    במצבים כאלה, המערכת משתמשת בהגדרות שצוינו בקובץ extension.yaml ומתעלמת מההגדרות שצוינו בהגדרת הפונקציה.

    למטרות תיעוד, נהוג לציין את הערך שהוגדר בהגדרת הפונקציה בכל מקרה. הדוגמאות בדף הזה פועלות לפי התבנית הזו.

  • ב-SDK של Cloud Functions דור ראשון יש את ה-method‏ functions.config() ואת הפקודה functions:config:set ב-CLI, שמאפשרות לעבוד עם ערכי פרמטרים בפונקציות של דור ראשון. השיטה הזו הוצאה משימוש ב-Cloud Functions והיא לא תעבוד בכלל בתוסף. במקום זאת, השתמשו במודול functions.params (מומלץ) או ב-process.env.

שימוש ב-TypeScript

רוב התיעוד לפיתוח תוסף משלכם מתאר תהליכי עבודה באמצעות JavaScript ל-Cloud Functions for Firebase. עם זאת, אתם יכולים לכתוב את הפונקציות באמצעות TypeScript.

למעשה, כל התוספים הרשמיים של Firebase כתובים ב-TypeScript. אתם יכולים לעיין בתוספים האלה כדי לראות כמה שיטות מומלצות לשימוש ב-TypeScript בתוסף שלכם.

אם אתם כותבים את הפונקציות של התוסף ב-TypeScript, אתם צריכים לבצע את הפעולות הבאות לפני התקנת התוסף:

  1. ממירים את קוד המקור של הפונקציות של התוסף ל-JavaScript.

    הפקודה firebase ext:dev:init מאפשרת לכם לבחור ב-TypeScript לכתיבת הפונקציות. הפקודה מספקת תוסף מלא שניתן להתקנה וגם סקריפט build שאפשר להריץ באמצעות npm run build.

  2. בקובץ package.json, חשוב לוודא שהשדה main מפנה ל-JavaScript שנוצר.

  3. אם אתם מתקינים או מעלים את התוסף ממקור מקומי, קודם צריך לקמפל את קובצי ה-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, אבל הן מיישמות פרוטוקול שמאפשר להפעיל אותן בקלות מהקוד בצד הלקוח.

במסמכי התיעוד של 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

פונקציה שמופעלת על ידי אימות פועלת כשמשתמש נוצר או נמחק.

במסמכי התיעוד של Cloud Functions, בקטע טריגרים של אימות ב-Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי אימות.

הגדרת פונקציה (דור ראשון בלבד)

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, בקטע טריגרים של מסד נתונים בזמן אמת, מוסבר איך לכתוב פונקציות שמופעלות על ידי טריגרים של 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 פועלת כשמטריצת בדיקה מסיימת את הבדיקות שלה.

במאמר טריגרים של 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 מפרסם התראה.

במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.

הגדרת הפונקציה (דור שני בלבד)

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 מפרסם התראה.

במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.

הגדרת הפונקציה (דור שני בלבד)

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 מפרסם התראה.

במסמכי התיעוד של Cloud Functions, בקטע טריגרים של התראות Firebase, מוסבר איך לכתוב פונקציות שמופעלות על ידי התראות.

הגדרת הפונקציה (דור שני בלבד)

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 פועלת כשסוג אירוע ספציפי מתפרסם בערוץ ספציפי.

במאמר יצירה וטיפול בטריגרים של אירועים בהתאמה אישית שבמסמכי התיעוד של 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}