Saat membuat ekstensi, tulis logikanya menggunakan Cloud Functions, sama
seperti Anda menulis fungsi yang hanya akan digunakan di
project Anda sendiri. Anda mendeklarasikan fungsi di file extension.yaml, dan
saat pengguna menginstal ekstensi Anda, fungsi tersebut akan di-deploy ke project
mereka.
Lihat dokumentasi Cloud Functions untuk mengetahui informasi umum terkait penggunaan Cloud Functions.
Cloud Functions generasi ke-1 dan ke-2
Firebase mendukung keduanya Cloud Functions generasi ke-1 dan ke-2. Namun, Firebase Extensions saat ini memiliki beberapa batasan terkait generasi cloud function mana yang dapat Anda gunakan dengan jenis pemicu tertentu. Karena alasan ini, banyak ekstensi menyertakan campuran fungsi dari generasi ke-1 dan ke-2.
Dukungan untuk generasi fungsi dicatat untuk setiap jenis pemicu, di bawah ini.
Pertimbangan khusus
- Beberapa definisi fungsi mengharuskan Anda menentukan informasi yang juga ditentukan di dalam file - extension.yaml. Misalnya, Cloud Firestore memiliki metode- document()yang menentukan pola dokumen yang akan diamati, dan deklarasi terkaitnya di- extension.yamlmemiliki kolom- resourceyang menentukan pola dokumen yang sama.- Dalam situasi ini, konfigurasi yang ditentukan dalam file - extension.yamldigunakan dan konfigurasi yang ditentukan dalam definisi fungsi diabaikan.- Bagaimanapun juga, menentukan nilai yang dikonfigurasi dalam definisi fungsi merupakan hal yang umum dilakukan, demi dokumentasi. Contoh di halaman ini mengikuti pola ini. 
- Cloud Functions SDK generasi ke-1 memiliki metode - functions.config()dan perintah CLI- functions:config:setyang dapat Anda gunakan untuk bekerja dengan nilai-nilai berparameter dalam fungsi generasi ke-1. Teknik ini tidak digunakan lagi di Cloud Functions dan tidak akan berfungsi sama sekali di ekstensi. Sebagai gantinya, gunakan modul- functions.params(direkomendasikan) atau- process.env.
Menggunakan TypeScript
Sebagian besar dokumentasi untuk mengembangkan ekstensi Anda sendiri menjelaskan alur kerja penggunaan JavaScript untuk Cloud Functions for Firebase. Namun, Anda dapat menulis fungsi menggunakan TypeScript.
Bahkan, semua ekstensi Firebase resmi ditulis dalam TypeScript. Anda dapat meninjau ekstensi tersebut untuk mengetahui beberapa praktik terbaik penggunaan TypeScript untuk ekstensi Anda.
Jika fungsi ekstensi Anda ditulis di TypeScript, Anda harus melakukan hal berikut sebelum menginstal ekstensi:
- Kompilasi kode sumber fungsi ekstensi Anda ke JavaScript. - Perintah - firebase ext:dev:initmemungkinkan Anda memilih TypeScript untuk menulis fungsi. Perintah ini menyediakan ekstensi lengkap dan dapat diinstal serta skrip build yang dapat dijalankan dengan- npm run build.
- Di file - package.jsonAnda, pastikan untuk menunjuk kolom- maindi JavaScript yang dihasilkan.
- Jika Anda menginstal atau mengupload ekstensi dari sumber lokal, kompilasi file TypeScript terlebih dahulu. 
Pemicu fungsi yang didukung
Pemicu HTTP
Fungsi yang dipicu HTTP di-deploy ke endpoint https publik dan dijalankan
saat endpoint diakses.
Baca artikel Memanggil fungsi melalui permintaan HTTP dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang cara menulis fungsi yang dipicu HTTP.
Definisi fungsi (khusus generasi ke-1)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});
Deklarasi resource (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...
Fungsi callable
Fungsi callable mirip dengan fungsi yang dipicu HTTP, tetapi menerapkan protokol yang membuatnya mudah untuk dipanggil dari kode sisi klien Anda.
Baca artikel Memanggil fungsi dari aplikasi dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penggunaan fungsi callable.
Definisi fungsi (khusus generasi ke-1)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});
Deklarasi resource (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...
Pemicu fungsi terjadwal
Fungsi terjadwal dijalankan berulang kali berdasarkan jadwal yang dapat disesuaikan.
Baca artikel Menjadwalkan fungsi dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi terjadwal.
Definisi fungsi (khusus generasi ke-1)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});
Deklarasi resource (extension.yaml)
resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...
Berikut adalah subkolom yang tersedia untuk scheduleTrigger:
| Kolom | Deskripsi | 
|---|---|
| schedule(wajib) | Frekuensi eksekusi fungsi yang diinginkan. Kolom ini dapat menerima string yang menggunakan salah satu sintaksis berikut (harus diapit dengan tanda kutip tunggal): 
 | 
| timeZone(opsional) | Zona waktu tempat jadwal akan dijalankan. 
 | 
Jika Anda ingin pengguna dapat mengonfigurasi jadwal saat menginstal ekstensi,
tambahkan parameter baru ke file extension.yaml dan rujuk parameter
dalam deklarasi resource fungsi Anda:
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
Pemicu task queue
Fungsi task queue dipicu pada peristiwa siklus proses ekstensi Anda atau saat ditambahkan secara manual ke task queue ekstensi menggunakan metode TaskQueue.enqueue() Admin SDK.
Baca artikel Menangani peristiwa siklus proses ekstensi untuk mengetahui informasi tentang penulisan fungsi yang menangani peristiwa siklus proses.
Baca artikel Mengantrekan fungsi dengan Cloud Tasks dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi task queue.
Definisi fungsi (khusus generasi ke-1)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});
Deklarasi resource (extension.yaml)
resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}
Tetapkan properti taskQueueTrigger ke {} atau peta opsi yang menyesuaikan
batas kapasitas dan perilaku percobaan ulang task queue (baca artikel Menyesuaikan task
queue).
Jika Anda ingin memicu fungsi pada peristiwa siklus proses ekstensi, tambahkan
data lifecycleEvents dengan nama fungsi dan pesan pemrosesan opsional,
yang akan ditampilkan di Firebase console saat
pemrosesan dimulai.
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
Fungsi yang dipicu Analytics dijalankan saat peristiwa Analytics yang ditentukan tercatat dalam log.
Baca artikel Pemicu Google Analytics dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Analytics.
Definisi fungsi (khusus generasi ke-1)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});
Deklarasi resource (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: ...
Jika Anda ingin agar pengguna dapat mengonfigurasi peristiwa Analytics yang akan dideteksi
saat mereka menginstal ekstensi, tambahkan parameter baru ke file extension.yaml Anda
dan rujuk parameter tersebut di deklarasi resource fungsi:
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
Fungsi yang dipicu autentikasi dijalankan saat pengguna dibuat atau dihapus.
Baca artikel Pemicu Firebase Authentication dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu autentikasi.
Definisi fungsi (khusus generasi ke-1)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});
Deklarasi resource (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: ...
Tabel berikut menunjukkan cara menentukan setiap jenis peristiwa Authentication yang didukung:
| Pemicu peristiwa Cloud Functions | eventType | Deskripsi | 
|---|---|---|
| onCreate() | providers/firebase.auth/eventTypes/user.create | Pengguna baru sudah dibuat | 
| onDelete() | providers/firebase.auth/eventTypes/user.delete | Pengguna dihapus | 
Cloud Firestore
Fungsi yang dipicu oleh Cloud Firestore dijalankan saat dokumen dibuat, diperbarui, atau dihapus.
Baca artikel Pemicu Cloud Firestore dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Firestore.
Definisi fungsi (khusus generasi ke-1)
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.
    // ...
  });
Deklarasi resource (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: ...
Tabel berikut menunjukkan cara menentukan setiap jenis peristiwa Cloud Firestore yang didukung:
| Pemicu peristiwa Cloud Functions | eventType | Deskripsi | 
|---|---|---|
| onCreate() | providers/cloud.firestore/eventTypes/document.create | Dokumen baru dibuat | 
| onDelete() | providers/cloud.firestore/eventTypes/document.delete | Dokumen dihapus | 
| onUpdate() | providers/cloud.firestore/eventTypes/document.update | Dokumen diperbarui | 
| onWrite() | providers/cloud.firestore/eventTypes/document.write | Dokumen dibuat, dihapus, atau diperbarui | 
Jika Anda ingin pengguna dapat mengonfigurasi jalur dokumen saat menginstal
ekstensi, tambahkan parameter baru ke file extension.yaml dan rujuk parameter
tersebut dalam deklarasi resource fungsi Anda:
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
Fungsi yang dipicu Pub/Sub dijalankan saat pesan dipublikasikan ke topik tertentu.
Baca artikel Pemicu Pub/Sub dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Pub/Sub.
Definisi fungsi (khusus generasi ke-1)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});
Deklarasi resource (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: ...
Jika Anda ingin pengguna dapat mengonfigurasi topik Pub/Sub saat
menginstal ekstensi, tambahkan parameter baru ke file extension.yaml
dan rujuk parameter tersebut dalam deklarasi resource fungsi Anda:
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
Fungsi yang dipicu Realtime Database dijalankan saat jalur yang cocok dengan pola yang ditentukan dibuat, diperbarui, atau dihapus.
Baca artikel Pemicu Realtime Database dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu RTDB.
Definisi fungsi (khusus generasi ke-1)
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.
    // ...
  });
Deklarasi resource (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: ...
Tabel berikut menunjukkan cara menentukan setiap jenis peristiwa Cloud Firestore yang didukung:
| Pemicu peristiwa Cloud Functions | eventType | Deskripsi | 
|---|---|---|
| onCreate() | providers/google.firebase.database/eventTypes/ref.create | Data dibuat | 
| onDelete() | providers/google.firebase.database/eventTypes/ref.delete | Data dihapus | 
| onUpdate() | providers/google.firebase.database/eventTypes/ref.update | Data diperbarui | 
| onWrite() | providers/google.firebase.database/eventTypes/ref.write | Data dibuat, dihapus, atau diperbarui | 
Jika Anda ingin pengguna dapat mengonfigurasi jalur yang akan dipantau saat menginstal
ekstensi, tambahkan parameter baru ke file extension.yaml dan rujuk parameter tersebut
dalam deklarasi resource fungsi Anda:
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
Fungsi yang dipicu Remote Config dijalankan saat template parameter project diperbarui.
Baca artikel Pemicu Remote Config dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Remote Config.
Definisi fungsi (khusus generasi ke-1)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});
Deklarasi resource (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
Fungsi yang dipicu oleh Cloud Storage dijalankan saat objek dibuat, diarsipkan, atau dihapus, atau saat metadatanya berubah.
Baca artikel Pemicu Cloud Storage dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Storage.
Definisi fungsi (khusus generasi ke-1)
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) => {
  // ...
});
Deklarasi resource (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: ...
Tabel berikut menunjukkan cara menentukan setiap jenis peristiwa Cloud Storage yang didukung:
| Pemicu peristiwa Cloud Functions | eventType | Deskripsi | 
|---|---|---|
| onFinalize() | google.storage.object.finalize | Objek dibuat | 
| onMetadataUpdate() | google.storage.object.metadataUpdate | Metadata objek diperbarui | 
| onArchive() | google.storage.object.archive | Objek diarsipkan | 
| onDelete() | google.storage.object.delete | Objek telah dihapus | 
Jika Anda ingin pengguna dapat mengonfigurasi bucket penyimpanan saat mereka menginstal
ekstensi, tambahkan parameter baru ke file extension.yaml dan rujuk parameter tersebut
dalam deklarasi resource fungsi:
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
Fungsi yang dipicu Test Lab dijalankan saat matriks uji menyelesaikan pengujiannya.
Baca artikel Pemicu Firebase Test Lab dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Test Lab.
Definisi fungsi (khusus generasi ke-1)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});
Deklarasi resource (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: ...
Pemicu pemberitahuanCrashlytics
Fungsi yang dipicu Crashlytics dijalankan saat Crashlytics memublikasikan pemberitahuan.
Baca artikel Pemicu Firebase Alerts dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu pemberitahuan.
Definisi fungsi (khusus generasi ke-2)
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) => {
  // ...
});
Deklarasi resource (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: ...
Anda dapat menggunakan nilai berikut untuk alerttype
- crashlytics.newFatalIssue
- crashlytics.newNonfatalIssue
- crashlytics.regression
- crashlytics.stabilityDigest
- crashlytics.velocity
- crashlytics.newAnrIssue
Pemicu pemberitahuanPerformance Monitoring
Fungsi yang dipicu Performance Monitoring dijalankan saat Performance Monitoring memublikasikan pemberitahuan.
Baca artikel Pemicu Firebase Alerts dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu pemberitahuan.
Definisi fungsi (khusus generasi ke-2)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});
Deklarasi resource (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: ...
Pemicu pemberitahuanApp Distribution
Fungsi yang dipicu App Distribution dijalankan saat App Distribution memublikasikan pemberitahuan.
Baca artikel Pemicu Firebase Alerts dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu pemberitahuan.
Definisi fungsi (khusus generasi ke-2)
import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});
Deklarasi resource (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: ...
Anda dapat menggunakan nilai berikut untuk alerttype
- appDistribution.newTesterIosDevice
- appDistribution.inAppFeedback
Pemicu peristiwa kustom (Eventarc)
Fungsi yang dipicu Eventarc dijalankan saat jenis peristiwa tertentu dipublikasikan ke saluran tertentu.
Baca artikel Membuat dan menangani pemicu peristiwa kustom dalam dokumentasi Cloud Functions untuk mengetahui informasi tentang penulisan fungsi yang dipicu Eventarc.
Anda juga dapat memublikasikan peristiwa dari ekstensi untuk memberi pengguna cara menyisipkan logika kustom ke dalam ekstensi. Baca artikel Menggunakan logika kustom yang disediakan developer di dalam ekstensi.
Definisi fungsi (khusus generasi ke-2)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});
Deklarasi resource (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: ...
Saluran harus sudah ada saat ekstensi Anda diinstal. Misalnya, jika Anda bergantung pada peristiwa kustom dari ekstensi lain yang membuat saluran, instruksikan pengguna untuk menginstal ekstensi tersebut terlebih dahulu.
Contoh di atas akan membuat pemicu peristiwa kustom untuk saluran Firebase "default" di region us-central1. Anda dapat membuat nama saluran dan region yang dapat disesuaikan menggunakan parameter. Contoh:
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}