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 metodedocument()
yang menentukan pola dokumen yang akan diamati, dan deklarasi terkaitnya diextension.yaml
memiliki kolomresource
yang menentukan pola dokumen yang sama.Dalam situasi ini, konfigurasi yang ditentukan dalam file
extension.yaml
digunakan 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 CLIfunctions:config:set
yang 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 modulfunctions.params
(direkomendasikan) atauprocess.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:init
memungkinkan Anda memilih TypeScript untuk menulis fungsi. Perintah ini menyediakan ekstensi lengkap dan dapat diinstal serta skrip build yang dapat dijalankan dengannpm run build
.Di file
package.json
Anda, pastikan untuk menunjuk kolommain
di 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)
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: ...
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)
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: ...
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)
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: ...
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)
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: ...
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}