Tài liệu tham khảo cho extensions.yaml

Tệp thông số kỹ thuật của tiện ích (extension.yaml) chứa siêu dữ liệu của tiện ích, khai báo tài nguyên do tiện ích tạo và API cũng như quyền truy cập mà tiện ích yêu cầu, đồng thời xác định mọi tham số do người dùng định cấu hình do tiện ích cung cấp.

Các bảng trên trang này mô tả các trường có sẵn cho tệp extension.yaml.

Thông tin cơ bản và thông tin nhận dạng

name: your-extension-name
version: 1.0.0         # Semantic versioning (semver)
specVersion: v1beta    # Always "v1beta"
license: Apache-2.0    # Always "Apache-2.0" (required to publish on extensions.dev)
billingRequired: true  # Always "true"

displayName: Your extension name
description: >-
  Description of the extension. (One or two
  sentences.)
icon: icon.png
tags: [tag, anothertag]

sourceUrl: https://github.com/your-org/your-repo   # GitHub repo URL
releaseNotesUrl: https://github.com/your-org/your-repo/blob/main/CHANGELOG.md

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Trường cơ bản
Chuỗi name

(bắt buộc)

Giá trị nhận dạng của tiện ích.

Chỉ được chứa chữ cái viết thường, số và dấu gạch ngang; tối đa 40 ký tự.

Lưu ý: Giá trị này được dùng để tạo mã thực thể của tiện ích (sau đó, mã này sẽ được dùng để tạo tên cho tài khoản dịch vụ của tiện ích và tài nguyên dành riêng cho tiện ích).

Chuỗi version

(bắt buộc)

Phiên bản của tiện ích.

Phải tuân theo phiên bản semver (ví dụ: 1.2.0).

Chuỗi specVersion

(bắt buộc)

Phiên bản của thông số kỹ thuật của Tiện ích Firebase.

Giá trị hiện tại: v1beta

license
chuỗi
(không bắt buộc)

Giấy phép của tiện ích.

Tiện ích của bạn phải được cấp phép sử dụng Apache-2.0.

billingRequired
boolean
(không bắt buộc)

Liệu các dịch vụ mà tiện ích sử dụng có bắt buộc phải có tài khoản thanh toán Firebase cấp trả phí hay không.

Luôn đặt thành true.

displayName
chuỗi
(không bắt buộc)

Tên hiển thị dễ hiểu cho phần mở rộng (3-5 từ).

Giới hạn 40 ký tự.

description
chuỗi
(không bắt buộc)
Nội dung mô tả ngắn gọn về việc mà tiện ích thực hiện (khoảng 1 câu).
icon
chuỗi
(không bắt buộc)

Tệp mà bạn dùng làm biểu tượng cho tiện ích trên extensions.dev và bảng điều khiển của Firebase.

Tệp này phải ở định dạng PNG hình vuông có kích thước từ 512x512 đến 1024x1024 pixel. Đặt tệp này vào cùng thư mục với extension.yaml; bạn không thể chỉ định thư mục con.

Hãy lưu ý các nguyên tắc sau khi thiết kế biểu tượng cho tiện ích:

  • Chọn màu nền và hình minh hoạ phù hợp với thương hiệu của bạn.
  • Giữ cho màu biểu tượng đơn giản, chỉ sử dụng 2 màu. Nhiều màu sắc có thể khiến biểu tượng của bạn bị choáng ngợp về mặt hình ảnh.
  • Vì lý do tương tự, không sử dụng hiệu ứng chuyển màu trong biểu tượng. Hiệu ứng chuyển màu khó phân biệt ở kích thước nhỏ và làm cho biểu tượng trở nên phức tạp về mặt hình ảnh.
  • Sử dụng hình ảnh đơn giản, độc đáo để truyền đạt chức năng của tiện ích.
  • Nếu công ty của bạn xây dựng nhiều tiện ích, đừng sử dụng biểu trưng của bạn làm biểu tượng. Người dùng sẽ gặp khó khăn trong việc phân biệt giữa các tiện ích của bạn.
  • Tạo hình minh hoạ sinh động và nổi bật. Đừng sử dụng hình minh hoạ tinh tế hoặc phức tạp vì sẽ không hiển thị tốt ở kích thước nhỏ hơn.
  • Không bao gồm các từ giải thích chức năng của tiện ích. Văn bản thường khó đọc ở các kích thước nhỏ hơn.
tags
danh sách chuỗi
(không bắt buộc)
Các thẻ giúp người dùng khám phá tiện ích của bạn. Các thẻ sau liên kết với các danh mục trên Trung tâm tiện ích: marketing, messaging, payments, search, shipping, social, utilities, ai
sourceUrl
chuỗi
(không bắt buộc)
URL công khai nơi có thể truy cập vào thư mục tiện ích.
releaseNotesUrl
chuỗi
(không bắt buộc)
URL công khai nơi bạn có thể truy cập vào ghi chú phát hành cho tiện ích.
author
một đối tượng tác giả
(không bắt buộc)

Tác giả chính và đầu mối liên hệ cho tiện ích.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Trường tác giả
Chuỗi authorName

(bắt buộc)

Tên tác giả.

Có thể là một cá nhân, công ty, tổ chức, v.v.

email
chuỗi
(không bắt buộc)
Địa chỉ email của tác giả.
url
chuỗi
(không bắt buộc)
URL công khai nơi bạn có thể truy cập vào thông tin về tác giả.
contributors
danh sách đối tượng tác giả
(không bắt buộc)

Mọi tác giả đóng góp khác cho tiện ích.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Trường tác giả
Chuỗi authorName

(bắt buộc)

Tên tác giả.

Có thể là một cá nhân, công ty, tổ chức, v.v.

email
chuỗi
(không bắt buộc)
Địa chỉ email của tác giả.
url
chuỗi
(không bắt buộc)
URL công khai nơi bạn có thể truy cập vào thông tin về tác giả.

Firebase và API Google Cloud

Các trường này chỉ định API của Firebase và Google mà tiện ích sử dụng. Khi cài đặt tiện ích này, người dùng có thể chọn tự động bật các API này trong dự án của mình.

apis:
  - apiName: apiname.googleapis.com
    reason: Explanation of why the extension uses this API
  - apiName: anotherapiname.googleapis.com
    reason: Explanation of why the extension uses this API
Trường API
Chuỗi apiName

(bắt buộc)

Tên của Google API

Phải tương ứng với trường Tên dịch vụ như liệt kê trên trang tổng quan của từng API (ví dụ) trong Thư viện API Google Cloud

Chuỗi reason

(bắt buộc)
Nội dung mô tả ngắn gọn về lý do tiện ích cần sử dụng API này

Các vai trò quản lý danh tính và quyền truy cập (IAM)

Các trường này chỉ định vai trò Cloud IAM mà tiện ích yêu cầu. Tài khoản dịch vụ được cung cấp cho tiện ích sẽ được cấp các vai trò này.

Bạn chỉ có thể chỉ định một trong các vai trò được hỗ trợ.

roles:
  - role: product.role
    reason: Explanation of why the extension needs this level of access
  - role: anotherproduct.role
    resource: projects/${project_id}/resource_type/*
    reason: Explanation of why the extension needs this level of access
Trường vai trò
Chuỗi role

(bắt buộc)

Tên vai trò IAM cần thiết để tiện ích hoạt động

Phải là một trong các vai trò được hỗ trợ

Chuỗi reason

(bắt buộc)
Nội dung mô tả ngắn gọn về lý do vai trò này cần cấp quyền truy cập cho tiện ích
resource
chuỗi
(không bắt buộc)

Giới hạn phạm vi của vai trò đối với tài nguyên này.

Nếu bỏ qua, giá trị mặc định sẽ là projects/${project_id}. Xem bài viết Giảm phạm vi của vai trò.

Dịch vụ bên ngoài

Các trường này chỉ định các dịch vụ không phải của Firebase và không phải của Google mà tiện ích sử dụng (thường là API REST). Nền tảng Tiện ích Firebase không cung cấp bất kỳ phương tiện nào để tự động bật hoặc thực hiện uỷ quyền cho các dịch vụ này.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Trường dịch vụ bên ngoài
Chuỗi name

(bắt buộc)
Tên của dịch vụ bên ngoài cần thiết để tiện ích hoạt động
Chuỗi pricingUri

(bắt buộc)
URI đến thông tin giá của dịch vụ

Thông số mà người dùng có thể định cấu hình

Các trường này xác định các tham số mà tiện ích cung cấp cho người dùng để định cấu hình.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What do you want to set PARAM_ID to?
      This is a longer description of the parameter, often phrased as a prompt
      to the user.
  - param: ANOTHER_PARAM_ID
    label: Short description of the parameter
    description: >
      What do you want to set ANOTHER_PARAM_ID to?
      This is a longer description of the parameter.
    example: example-input
    validationRegex: "^[a-zA-Z][a-zA-Z-]*[a-zA-Z]?$"
    validationErrorMessage:
      Must be a hyphen-delimited string of alphabetic characters
    default: default-value
    required: false
    immutable: true
Trường thông số
Chuỗi param

(bắt buộc)
Tên của thông số. Bạn sử dụng tên này để tham chiếu giá trị tham số trong mã.
Chuỗi label

(bắt buộc)
Nội dung mô tả ngắn về thông số này. Được hiển thị cho người dùng khi họ được nhắc nhập giá trị của thông số.
description
chuỗi
(không bắt buộc)

Nội dung mô tả chi tiết về tham số. Được hiển thị cho người dùng khi họ được nhắc nhập giá trị của thông số.

Hỗ trợ Markdown.

example
chuỗi
(không bắt buộc)
Giá trị mẫu cho thông số.
default
chuỗi
(không bắt buộc)
Giá trị mặc định của thông số nếu người dùng để trống giá trị của thông số đó.
validationRegex
chuỗi
(không bắt buộc)
Biểu thức chính quy để xác thực giá trị do người dùng định cấu hình của thông số. Cú pháp RE2 của Google.
validationErrorMessage
chuỗi
(không bắt buộc)
Thông báo lỗi sẽ xuất hiện nếu xác thực biểu thức chính quy không thành công.
required
boolean
(không bắt buộc)
Xác định xem người dùng có thể gửi một chuỗi trống khi được nhắc về giá trị của tham số hay không. Giá trị mặc định là true.
immutable
boolean
(không bắt buộc)

Xác định xem người dùng có thể thay đổi giá trị của tham số sau khi cài đặt hay không (chẳng hạn như họ có định cấu hình lại tiện ích hay không). Giá trị mặc định là false.

Lưu ý: Nếu bạn xác định tham số "location" cho các hàm đã triển khai của tiện ích, hãy đặt trường này thành true.

type
chuỗi
(không bắt buộc)
Loại thông số. Các loại tham số đặc biệt có thể có các yêu cầu bổ sung hoặc cách trình bày giao diện người dùng khác. Hãy xem các phần sau đây.

Tham số có thể chọn và có thể chọn nhiều

Các thông số có thể chọn và nhiều lựa chọn sẽ nhắc người dùng chọn trong danh sách các lựa chọn được xác định trước.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      Do you want to enable the option?
    type: select
    options:
      - label: Yes
        value: true
      - label: No
        value: false
  - param: ANOTHER_PARAM_ID
    label: Short description of the parameter
    description: >-
      Which options do you want to enable?
    type: multiselect
    options:
      - value: red
      - value: green
      - value: blue
Trường thông số trắc nghiệm
Chuỗi type

select hoặc multiselect

Chỉ định rằng tham số có thể là một giá trị (select) hoặc một vài giá trị (multiselect) được chọn từ một tập hợp các lựa chọn tạo sẵn

options
danh sách các lựa chọn
(bắt buộc)

Các tuỳ chọn mà người dùng có thể chọn

Trường lựa chọn
Chuỗi value

(bắt buộc)
Một trong những giá trị mà người dùng có thể chọn. Đây là giá trị bạn nhận được khi đọc giá trị thông số trong mã.
label
chuỗi
(không bắt buộc)
Nội dung mô tả ngắn về tuỳ chọn có thể chọn. Nếu bỏ qua, giá trị mặc định sẽ là value.

Tham số tài nguyên có thể chọn

Các tham số tài nguyên có thể chọn sẽ nhắc người dùng chọn một tài nguyên (phiên bản cơ sở dữ liệu, bộ chứa lưu trữ, v.v.) từ dự án của họ.

params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      Which resource do you want to use?
    type: selectresource
    resourceType: product.googleapis.com/ResourceType
Trường thông số tài nguyên
Chuỗi type

selectresource

Chỉ định rằng tham số đại diện cho một tài nguyên dự án

Chuỗi resourceType

(bắt buộc)

Loại tài nguyên để nhắc người dùng chọn.

Giá trị hợp lệ:

  • storage.googleapis.com/Bucket
  • firestore.googleapis.com/Database
  • firebasedatabase.googleapis.com/DatabaseInstance

Tuy nhiên, hiện tại, chỉ các bộ chứa trong Cloud Storage mới có giao diện người dùng lựa chọn (các loại tài nguyên khác được trình bày ở dạng trường nhập dữ liệu văn bản dạng tự do).

Tham số bí mật

Giá trị bí mật do người dùng cung cấp (chẳng hạn như khoá API) được xử lý theo cách khác:

  • Giá trị bí mật được lưu trữ bằng Cloud Secret Manager. Chỉ những ứng dụng được uỷ quyền (chẳng hạn như bản sao đã cài đặt của một tiện ích) mới có thể truy cập vào các giá trị này.
  • Khi người dùng được nhắc cung cấp các giá trị này, thông tin họ nhập sẽ không hiển thị.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Trường thông số bí mật
Chuỗi type

secret

Chỉ định tham số này là giá trị bí mật

Tài nguyên của Hàm đám mây

Các trường này khai báo các Hàm đám mây có trong tiện ích. Cú pháp khai báo tài nguyên có vẻ hơi khác nhau giữa hàm thế hệ 1 và thế hệ 2, có thể cùng tồn tại trong một tiện ích.

Hàm đám mây thế hệ thứ nhất

resources:
  - name: functionName
    type: firebaseextensions.v1beta.function
    description: >-
      Description of what the function does. (One or two
      sentences.)
    properties:
      runtime: runtime-version
      eventTrigger:
        eventType: google.product.event
        resource: projects/_/resource/specifier
Trường tài nguyên
Chuỗi name

(bắt buộc)

Tên thân thiện với người dùng của hàm đã xuất.

Nếu bạn không chỉ định thuộc tính entryPoint (xem bên dưới), thì giá trị này phải khớp với tên của hàm trong mã nguồn hàm của bạn.

Tên cuối cùng của hàm triển khai sẽ có định dạng sau: ext-extension-instance-id-name.

Chuỗi type

(bắt buộc)
Đối với tài nguyên hàm thế hệ 1: firebaseextensions.v1beta.function
Chuỗi description

(bắt buộc)

Mô tả ngắn gọn về tác vụ mà hàm thực hiện cho tiện ích.

properties
(bắt buộc)

Thuộc tính Cloud Functions thế hệ thứ nhất. Các thuộc tính quan trọng nhất được liệt kê bên dưới, nhưng bạn có thể tìm thấy danh sách đầy đủ trong tài liệu tham khảo về Hàm đám mây.

Tài sản
location
(không bắt buộc)

Vị trí để triển khai hàm. Giá trị mặc định là us-central1

entryPoint
(không bắt buộc)
Tên của hàm đã xuất trong mã nguồn của hàm mà tiện ích sẽ tìm. Giá trị mặc định là giá trị của name ở trên.
sourceDirectory
(không bắt buộc)

Thư mục chứa package.json ở gốc. Tệp cho mã nguồn của hàm phải nằm trong thư mục này. Mặc định là functions

Lưu ý: Trường main của package.json chỉ định tệp cho mã nguồn hàm (chẳng hạn như index.js).

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

Thời gian thực thi tối đa của hàm.

  • Mặc định: 60s
  • Giá trị tối đa: 540s
availableMemoryMb
(không bắt buộc)

Dung lượng bộ nhớ tính bằng MB còn trống cho hàm.

  • Mặc định: 256
  • Các giá trị hợp lệ: 128, 256, 512, 10242048
runtime
(đề xuất)

Môi trường thời gian chạy cho hàm.

httpsTrigger
hoặc
eventTrigger
hoặc
scheduleTrigger
hoặc
taskQueueTrigger
(bắt buộc phải có một trong các loại điều kiện kích hoạt hàm này)
Xem bài viết Viết Hàm đám mây cho tiện ích để biết thông tin cụ thể về từng loại điều kiện kích hoạt.

Hàm đám mây thế hệ thứ 2

resources:
  - name: functionName
    type: firebaseextensions.v1beta.v2function
    description: >-
      Description of what the function does. (One or two
      sentences.)
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: crashlytics.newFatalIssue

Trường tài nguyên
Chuỗi name

(bắt buộc)

Tên thân thiện với người dùng của hàm đã xuất.

Nếu bạn không chỉ định thuộc tính entryPoint (xem bên dưới), thì giá trị này phải khớp với tên của hàm trong mã nguồn hàm của bạn.

Tên cuối cùng của hàm triển khai sẽ có định dạng sau: ext-extension-instance-id-name.

Chuỗi type

(bắt buộc)
Đối với tài nguyên hàm thế hệ 2: firebaseextensions.v1beta.v2function
Chuỗi description

(bắt buộc)

Mô tả ngắn gọn về tác vụ mà hàm thực hiện cho tiện ích.

properties
(bắt buộc)

Thuộc tính Cloud Functions thế hệ thứ 2. Các thuộc tính quan trọng nhất được liệt kê bên dưới, nhưng bạn có thể tìm thấy danh sách đầy đủ trong tài liệu tham khảo về Hàm đám mây.

Tài sản
location
(không bắt buộc)

Vị trí để triển khai hàm. Giá trị mặc định là us-central1

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

Thư mục chứa package.json ở gốc. Tệp cho mã nguồn của hàm phải nằm trong thư mục này. Mặc định là functions

Lưu ý: Trường main của package.json chỉ định tệp cho mã nguồn hàm (chẳng hạn như index.js).

Ngoài ra còn có 3 trường loại đối tượng với các thuộc tính riêng:

thuộc tính buildConfig
buildConfig.runtime
(đề xuất)

Môi trường thời gian chạy cho hàm.

buildConfig.entryPoint
(không bắt buộc)
Tên của hàm đã xuất trong mã nguồn của hàm mà tiện ích sẽ tìm. Giá trị mặc định là giá trị của name ở trên.
Thuộc tính serviceConfig
serviceConfig.timeoutSeconds
(không bắt buộc)

Thời gian thực thi tối đa của hàm.

  • Mặc định: 60
  • Giá trị tối đa: 540
serviceConfig.availableMemory
(không bắt buộc)
Dung lượng bộ nhớ còn trống cho một hàm. Giá trị mặc định là 256M. Các đơn vị được hỗ trợ là k, M, G, Mi, Gi. Nếu không có đơn vị nào được cung cấp, giá trị được hiểu là byte.
Thuộc tính eventTrigger
eventTrigger.eventType
(bắt buộc)
Loại sự kiện để nghe. Hãy xem bài viết Viết Hàm đám mây cho tiện ích để biết các loại sự kiện có sẵn cho từng sản phẩm.
eventTrigger.eventFilters
(không bắt buộc)
Các bộ lọc giới hạn thêm sự kiện cần nghe. Ví dụ: bạn chỉ có thể theo dõi các sự kiện khớp với một mẫu tài nguyên cụ thể. Hãy xem bài viết Viết Hàm đám mây cho tiện ích để biết thông tin về cách lọc từng loại sự kiện.
eventTrigger.channel
(không bắt buộc)
Tên của kênh liên kết với điều kiện kích hoạt ở định dạng projects/{project}/locations/{location}/channels/{channel}. Nếu bạn bỏ qua thuộc tính này, hàm sẽ theo dõi các sự kiện trên kênh mặc định của dự án.
eventTrigger.triggerRegion
(không bắt buộc)
Điều kiện kích hoạt này sẽ chỉ nhận những sự kiện bắt nguồn từ khu vực này. Nó có thể ở cùng khu vực với hàm, một khu vực khác, nhiều khu vực hoặc khu vực toàn cầu. Nếu không được cung cấp, giá trị mặc định sẽ là cùng khu vực với hàm.

Sự kiện trong vòng đời

Các sự kiện trong vòng đời cho phép bạn chỉ định các hàm sẽ chạy khi người dùng cài đặt, cập nhật hoặc định cấu hình một phiên bản của tiện ích. Hãy xem bài viết Xử lý các sự kiện trong vòng đời của tiện ích.

lifecycleEvents:
  onInstall:
    function: myTaskFunction
    processingMessage: Describes the task being completed
  onUpdate:
    function: myOtherTaskFunction
    processingMessage: Describes the task being completed
  onConfigure:
    function: myOtherTaskFunction
    processingMessage: Describes the task being completed
Trường sự kiện trong vòng đời
onInstall
(không bắt buộc)

Chỉ định một hàm sẽ chạy khi người dùng cài đặt tiện ích.

Quy cách của hàm
Chuỗi function

(bắt buộc)

Tên của hàm được kích hoạt hàng đợi tác vụ sẽ xử lý sự kiện.

Bạn phải khai báo hàm này trong phần resources và xác định taskQueue.

Chuỗi processingMessage

(bắt buộc)
Thông báo sẽ xuất hiện trong bảng điều khiển của Firebase khi nhiệm vụ đang diễn ra.
onUpdate
(không bắt buộc)

Chỉ định một hàm sẽ chạy khi người dùng cập nhật tiện ích.

Quy cách của hàm
Chuỗi function

(bắt buộc)

Tên của hàm được kích hoạt hàng đợi tác vụ sẽ xử lý sự kiện.

Bạn phải khai báo hàm này trong phần resources và xác định taskQueue.

Chuỗi processingMessage

(bắt buộc)
Thông báo sẽ xuất hiện trong bảng điều khiển của Firebase khi nhiệm vụ đang diễn ra.
onConfigure
(không bắt buộc)

Chỉ định một hàm sẽ chạy khi người dùng định cấu hình lại tiện ích.

Quy cách của hàm
Chuỗi function

(bắt buộc)

Tên của hàm được kích hoạt hàng đợi tác vụ sẽ xử lý sự kiện.

Bạn phải khai báo hàm này trong phần resources và xác định taskQueue.

Chuỗi processingMessage

(bắt buộc)
Thông báo sẽ xuất hiện trong bảng điều khiển của Firebase khi nhiệm vụ đang diễn ra.

Sự kiện tuỳ chỉnh (Eventarc)

Sự kiện tuỳ chỉnh là những sự kiện mà tiện ích của bạn tạo ra để cho phép người dùng chèn logic của riêng họ vào tiện ích. Hãy xem phần Eventarc trong bài viết Thêm nội dung hấp dẫn người dùng vào một tiện ích.

events:
  - type: publisher-id.extension-name.version.event-name
    description: Description of the event
  - type: publisher-id.extension-name.version.another-event-name
    description: Description of the other event
Trường sự kiện tuỳ chỉnh
Chuỗi type

(bắt buộc)
Giá trị nhận dạng loại của sự kiện. Tạo giá trị nhận dạng từ các trường được phân tách bằng 3 đến 4 dấu chấm: bắt buộc phải nhập mã nhà xuất bản, tên tiện ích và trường tên sự kiện; nên nhập trường phiên bản. Chọn một tên sự kiện riêng biệt và có tính mô tả cho từng loại sự kiện mà bạn xuất bản.
Chuỗi description

(bắt buộc)
Nội dung mô tả về sự kiện.