Viết hàm đám mây cho tiện ích mở rộng

Khi tạo một tiện ích mở rộng, bạn viết logic của tiện ích đó bằng cách sử dụng Hàm đám mây, giống như cách bạn viết một hàm mà trước đây chỉ được sử dụng trong dự án của riêng bạn. Bạn khai báo các hàm của mình trong tệp extension.yaml và khi người dùng cài đặt tiện ích mở rộng của bạn, các hàm này sẽ được triển khai vào dự án của họ.

Xem tài liệu về Chức năng đám mây để biết thông tin chung về cách sử dụng Chức năng đám mây.

Chức năng đám mây thế hệ thứ 1 và thứ 2

Firebase hỗ trợ cả Chức năng đám mây thế hệ 1 và thế hệ 2 . Tuy nhiên, Tiện ích mở rộng Firebase hiện có một số hạn chế về thế hệ chức năng đám mây mà bạn có thể sử dụng với một số loại trình kích hoạt nhất định. Vì lý do này, nhiều tiện ích mở rộng bao gồm sự kết hợp của các chức năng thế hệ thứ 1 và thứ 2.

Hỗ trợ tạo chức năng được ghi chú cho từng loại trình kích hoạt bên dưới.

Những cân nhắc đặc biệt

  • Một số định nghĩa hàm yêu cầu bạn chỉ định thông tin cũng được chỉ định trong tệp extension.yaml . Ví dụ: Cloud Firestore có phương thức document() chỉ định mẫu tài liệu cần xem và khai báo tương ứng của nó trong tiện ích extension.yaml có trường resource chỉ định tương tự.

    Trong những trường hợp này, cấu hình được chỉ định trong tệp extension.yaml được sử dụng và cấu hình được chỉ định trong định nghĩa hàm sẽ bị bỏ qua.

    Thực tế thông thường là chỉ định giá trị được cấu hình trong định nghĩa hàm bất kể vì mục đích tài liệu. Các ví dụ trên trang này tuân theo mẫu này.

  • SDK thế hệ 1 của Cloud Functions có phương thức functions.config() và lệnh functions:config:set CLI mà bạn có thể sử dụng để làm việc với các giá trị được tham số hóa trong các hàm thế hệ 1. Kỹ thuật này không được dùng nữa trong Cloud Functions và hoàn toàn không hoạt động trong tiện ích mở rộng. Thay vào đó, hãy sử dụng mô-đun functions.params (được khuyến nghị) hoặc process.env .

Sử dụng TypeScript

Hầu hết tài liệu để phát triển tiện ích mở rộng của riêng bạn đều mô tả quy trình công việc bằng cách sử dụng JavaScript cho Chức năng đám mây cho Firebase. Tuy nhiên, thay vào đó bạn có thể viết các hàm của mình bằng TypeScript.

Trên thực tế, tất cả các tiện ích mở rộng chính thức của Firebase đều được viết bằng TypeScript. Bạn có thể xem lại các tiện ích mở rộng đó để biết một số phương pháp hay nhất để sử dụng TypeScript cho tiện ích mở rộng của mình.

Nếu bạn viết các chức năng của tiện ích mở rộng trong TypeScript, bạn phải thực hiện các bước sau trước khi cài đặt tiện ích mở rộng của mình:

  1. Biên dịch mã nguồn chức năng của tiện ích mở rộng của bạn sang JavaScript.

    Lệnh firebase ext:dev:init cho phép bạn chọn TypeScript để viết các hàm của mình. Lệnh này cung cấp cho bạn một tiện ích mở rộng hoàn chỉnh, có thể cài đặt cũng như tập lệnh xây dựng mà bạn có thể chạy với npm run build .

  2. Trong tệp package.json của bạn, hãy đảm bảo trỏ trường main vào JavaScript được tạo.

  3. Nếu bạn đang cài đặt hoặc tải lên tiện ích mở rộng của mình từ nguồn cục bộ, trước tiên hãy biên dịch các tệp TypeScript của bạn.

Trình kích hoạt chức năng được hỗ trợ

Trình kích hoạt HTTP

Hàm kích hoạt HTTP được triển khai tới điểm cuối https công khai và chạy khi điểm cuối được truy cập.

Xem Gọi các hàm thông qua yêu cầu HTTP trong tài liệu về Hàm đám mây để biết thông tin về cách viết các hàm được kích hoạt HTTP.

Định nghĩa hàm (chỉ thế hệ 1)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

Khai báo tài nguyên (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Các hàm có thể gọi được

Các hàm có thể gọi tương tự như các hàm được kích hoạt HTTP nhưng chúng triển khai một giao thức giúp việc gọi từ mã phía máy khách của bạn trở nên thuận tiện.

Xem Chức năng gọi từ ứng dụng của bạn trong tài liệu Chức năng đám mây để biết thông tin về cách sử dụng các chức năng có thể gọi.

Định nghĩa hàm (chỉ thế hệ 1)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

Khai báo tài nguyên (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Trình kích hoạt chức năng theo lịch trình

Chức năng được lên lịch chạy lặp đi lặp lại dựa trên lịch trình có thể tùy chỉnh.

Xem Chức năng lập lịch trong tài liệu Chức năng đám mây để biết thông tin về cách viết các chức năng được lập lịch.

Định nghĩa hàm (chỉ thế hệ 1)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

Khai báo tài nguyên (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

Dưới đây là các trường con có sẵn cho scheduleTrigger :

Cánh đồng Sự miêu tả
schedule
(yêu cầu)

Tần suất mà bạn muốn chức năng này chạy.

Trường này có thể chấp nhận các chuỗi sử dụng một trong hai cú pháp (bắt buộc phải gói trong dấu ngoặc đơn ):

timeZone
(không bắt buộc)

Múi giờ mà lịch trình sẽ chạy.

Nếu bạn muốn người dùng có thể định cấu hình lịch khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Trình kích hoạt hàng đợi tác vụ

Chức năng hàng đợi tác vụ được kích hoạt trong các sự kiện trong vòng đời của tiện ích mở rộng của bạn hoặc khi được thêm thủ công vào hàng đợi tác vụ của tiện ích mở rộng bằng phương thức TaskQueue.enqueue() của SDK quản trị.

Xem Xử lý các sự kiện trong vòng đời của tiện ích mở rộng của bạn để biết thông tin về cách viết các hàm xử lý các sự kiện trong vòng đời.

Xem các hàm Enqueue với Nhiệm vụ trên đám mây trong tài liệu về Hàm đám mây để biết thông tin về cách viết các hàm xếp hàng nhiệm vụ.

Định nghĩa hàm (chỉ thế hệ 1)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

Khai báo tài nguyên (extension.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

Đặt thuộc tính taskQueueTrigger được đặt thành {} hoặc bản đồ các tùy chọn điều chỉnh giới hạn tốc độ và thử lại hành vi của hàng đợi tác vụ (xem Điều chỉnh hàng đợi tác vụ ).

Nếu bạn muốn kích hoạt hàm của mình trên các sự kiện trong vòng đời của tiện ích, hãy thêm bản ghi lifecycleEvents với tên của hàm và thông báo xử lý tùy chọn. Thông báo này sẽ được hiển thị trong bảng điều khiển Firebase khi quá trình xử lý bắt đầu.

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

phân tích

Hàm do Analytics kích hoạt sẽ chạy khi một sự kiện Analytics được chỉ định được ghi lại.

Xem trình kích hoạt Google Analytics trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm do Analytics kích hoạt.

Định nghĩa hàm (chỉ thế hệ 1)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

Khai báo tài nguyên (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: ...

Nếu bạn muốn người dùng có thể định cấu hình sự kiện Analytics để theo dõi khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Xác thực

Chức năng kích hoạt xác thực sẽ chạy khi người dùng được tạo hoặc xóa.

Xem Trình kích hoạt xác thực Firebase trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt xác thực.

Định nghĩa hàm (chỉ thế hệ 1)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

Khai báo tài nguyên (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: ...

Bảng sau đây cho biết cách chỉ định từng loại sự kiện Xác thực được hỗ trợ:

Trình kích hoạt sự kiện Cloud Function eventType Sự miêu tả
onCreate() providers/firebase.auth/eventTypes/user.create Người dùng mới được tạo
onDelete() providers/firebase.auth/eventTypes/user.delete Người dùng đã xóa

Cửa hàng đám mây

Chức năng được kích hoạt bởi Cloud Firestore sẽ chạy khi tài liệu được tạo, cập nhật hoặc xóa.

Xem trình kích hoạt Cloud Firestore trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm được kích hoạt Firestore.

Định nghĩa hàm (chỉ thế hệ 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.
    // ...
  });

Khai báo tài nguyên (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: ...

Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Firestore được hỗ trợ:

Trình kích hoạt sự kiện Cloud Function eventType Sự miêu tả
onCreate() providers/cloud.firestore/eventTypes/document.create Đã tạo tài liệu mới
onDelete() providers/cloud.firestore/eventTypes/document.delete Đã xóa tài liệu
onUpdate() providers/cloud.firestore/eventTypes/document.update Đã cập nhật tài liệu
onWrite() providers/cloud.firestore/eventTypes/document.write Tài liệu được tạo, xóa hoặc cập nhật

Nếu bạn muốn người dùng có thể định cấu hình đường dẫn tài liệu khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Quán rượu/Phụ

Chức năng Pub/Sub-kích hoạt chạy khi tin nhắn được xuất bản lên một chủ đề cụ thể.

Xem trình kích hoạt Pub/Sub trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt Pub/Sub.

Định nghĩa hàm (chỉ thế hệ 1)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

Khai báo tài nguyên (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: ...

Nếu bạn muốn người dùng có thể định cấu hình chủ đề Pub/Sub khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Cơ sở dữ liệu thời gian thực

Hàm kích hoạt Cơ sở dữ liệu thời gian thực chạy khi đường dẫn khớp với mẫu đã chỉ định được tạo, cập nhật hoặc xóa.

Xem Trình kích hoạt cơ sở dữ liệu thời gian thực trong tài liệu Chức năng đám mây để biết thông tin về cách ghi các hàm kích hoạt RTDB.

Định nghĩa hàm (chỉ thế hệ 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.
    // ...
  });

Khai báo tài nguyên (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: ...

Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Firestore được hỗ trợ:

Trình kích hoạt sự kiện Cloud Function eventType Sự miêu tả
onCreate() providers/google.firebase.database/eventTypes/ref.create Dữ liệu được tạo
onDelete() providers/google.firebase.database/eventTypes/ref.delete Đã xóa dữ liệu
onUpdate() providers/google.firebase.database/eventTypes/ref.update Đã cập nhật dữ liệu
onWrite() providers/google.firebase.database/eventTypes/ref.write Dữ liệu được tạo, xóa hoặc cập nhật

Nếu bạn muốn người dùng có thể định cấu hình đường dẫn để xem khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Cấu hình từ xa

Chức năng kích hoạt Cấu hình từ xa chạy khi mẫu tham số của dự án được cập nhật.

Xem Trình kích hoạt cấu hình từ xa trong tài liệu Chức năng đám mây để biết thông tin về cách ghi các hàm kích hoạt Cấu hình từ xa.

Định nghĩa hàm (chỉ thế hệ 1)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

Khai báo tài nguyên (extension.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

Lưu trữ đám mây

Hàm được kích hoạt bởi Cloud Storage sẽ chạy khi một đối tượng được tạo, lưu trữ hoặc xóa hoặc khi siêu dữ liệu của đối tượng đó thay đổi.

Xem Trình kích hoạt lưu trữ đám mây trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt lưu trữ.

Định nghĩa hàm (chỉ thế hệ 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) => {
  // ...
});

Khai báo tài nguyên (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: ...

Bảng sau đây cho biết cách chỉ định từng loại sự kiện Cloud Storage được hỗ trợ:

Trình kích hoạt sự kiện Cloud Function eventType Sự miêu tả
onFinalize() google.storage.object.finalize Đối tượng được tạo
onMetadataUpdate() google.storage.object.metadataUpdate Đã cập nhật siêu dữ liệu đối tượng
onArchive() google.storage.object.archive Đối tượng đã được lưu trữ
onDelete() google.storage.object.delete Đối tượng đã bị xóa

Nếu bạn muốn người dùng có thể định cấu hình bộ nhớ lưu trữ khi họ cài đặt tiện ích mở rộng của bạn, hãy thêm tham số mới vào tệp extension.yaml và tham chiếu tham số đó trong phần khai báo resource của hàm:

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

Phòng thử nghiệm

Chức năng do Test Lab kích hoạt sẽ chạy khi ma trận thử nghiệm hoàn thành các thử nghiệm của nó.

Xem trình kích hoạt Phòng thí nghiệm kiểm tra Firebase trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm do Phòng thí nghiệm kiểm tra kích hoạt.

Định nghĩa hàm (chỉ thế hệ 1)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

Khai báo tài nguyên (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: ...

Trình kích hoạt cảnh báo Crashlytics

Hàm do Crashlytics kích hoạt sẽ chạy khi Crashlytics xuất bản cảnh báo.

Xem trình kích hoạt Cảnh báo Firebase trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt cảnh báo.

Định nghĩa hàm (chỉ thế hệ 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) => {
  // ...
});

Khai báo tài nguyên (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: ...

Bạn có thể sử dụng các giá trị sau cho alerttype

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Trình kích hoạt cảnh báo Giám sát hiệu suất

Chức năng được kích hoạt Giám sát hiệu suất sẽ chạy khi Giám sát hiệu suất xuất bản cảnh báo.

Xem trình kích hoạt Cảnh báo Firebase trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt cảnh báo.

Định nghĩa hàm (chỉ thế hệ 2)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

Khai báo tài nguyên (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: ...

Trình kích hoạt cảnh báo phân phối ứng dụng

Chức năng kích hoạt Phân phối ứng dụng sẽ chạy khi Phân phối ứng dụng xuất bản cảnh báo.

Xem trình kích hoạt Cảnh báo Firebase trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt cảnh báo.

Định nghĩa hàm (chỉ thế hệ 2)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

Khai báo tài nguyên (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: ...

Bạn có thể sử dụng các giá trị sau cho alerttype

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Trình kích hoạt sự kiện tùy chỉnh (Eventarc)

Hàm được kích hoạt Eventarc chạy khi một loại sự kiện cụ thể được xuất bản lên một kênh cụ thể.

Xem Tạo và xử lý trình kích hoạt sự kiện tùy chỉnh trong tài liệu Chức năng đám mây để biết thông tin về cách viết các hàm kích hoạt Eventarc.

Bạn cũng có thể xuất bản các sự kiện từ tiện ích mở rộng của mình để cung cấp cho người dùng cách chèn logic tùy chỉnh vào tiện ích mở rộng của bạn. Xem Sử dụng logic tùy chỉnh do nhà phát triển cung cấp trong tiện ích mở rộng .

Định nghĩa hàm (chỉ thế hệ 2)

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

Khai báo tài nguyên (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: ...

Kênh phải tồn tại khi tiện ích mở rộng của bạn được cài đặt. Ví dụ: nếu bạn phụ thuộc vào các sự kiện tùy chỉnh từ một tiện ích mở rộng khác tạo kênh, trước tiên hãy hướng dẫn người dùng cài đặt tiện ích mở rộng đó.

Ví dụ trên sẽ tạo trình kích hoạt sự kiện tùy chỉnh cho kênh Firebase "mặc định" trong khu vực us-central1 . Bạn có thể tùy chỉnh tên kênh và vùng bằng cách sử dụng các tham số. Ví dụ:


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}