ไฟล์ข้อกำหนดเฉพาะของส่วนขยาย (extension.yaml) มีข้อมูลเมตาของส่วนขยาย ประกาศทรัพยากรที่สร้างโดยส่วนขยาย รวมถึง API และสิทธิ์เข้าถึงที่ส่วนขยายต้องการ และกำหนดพารามิเตอร์ที่ผู้ใช้กำหนดค่าซึ่งส่วนขยายมีให้
ตารางในหน้านี้อธิบายช่องที่มีให้สำหรับไฟล์ extension.yaml
ข้อมูลพื้นฐานและข้อมูลระบุตัวบุคคล
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/
| ช่องพื้นฐาน | |||||||||
|---|---|---|---|---|---|---|---|---|---|
namestring (ต้องระบุ) |
ตัวระบุสำหรับส่วนขยาย มีได้เฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข และขีดกลาง โดยมีจำนวนอักขระสูงสุด 40 ตัว หมายเหตุ: ระบบจะใช้ค่านี้เพื่อสร้างรหัสอินสแตนซ์ของส่วนขยาย (ซึ่งจะใช้เพื่อสร้างชื่อบัญชีบริการของส่วนขยายและทรัพยากรเฉพาะส่วนขยาย) |
||||||||
versionstring (ต้องระบุ) |
เวอร์ชันของส่วนขยาย ต้องเป็นไปตามการกำหนดเวอร์ชัน semver (เช่น 1.2.0) |
||||||||
specVersionstring (ต้องระบุ) |
เวอร์ชันของข้อกำหนดเฉพาะของ Firebase Extensions ค่าปัจจุบัน: |
||||||||
licensestring (ไม่บังคับ) |
ใบอนุญาตสำหรับส่วนขยาย ส่วนขยายของคุณต้องได้รับอนุญาตให้ใช้สิทธิโดยใช้ |
||||||||
billingRequiredboolean (ไม่บังคับ) |
บริการที่ส่วนขยายใช้ต้องใช้บัญชีสำหรับการเรียกเก็บเงิน Firebase ระดับที่ต้องชำระเงินหรือไม่ ตั้งค่าเป็น |
||||||||
displayNamestring (ไม่บังคับ) |
ชื่อที่แสดงที่จำง่ายสำหรับส่วนขยาย (3-5 คำ) จำนวนอักขระสูงสุด 40 ตัว |
||||||||
descriptionstring (ไม่บังคับ) |
คำอธิบายสั้นๆ เกี่ยวกับงานที่ส่วนขยายของคุณทำ (ประมาณ 1 ประโยค) | ||||||||
iconstring (ไม่บังคับ) |
ไฟล์ที่จะใช้เป็นไอคอนของส่วนขยายใน ไฟล์นี้ต้องเป็น PNG สี่เหลี่ยมจัตุรัสขนาดระหว่าง 512x512 ถึง 1024x1024 พิกเซล
วางไฟล์ในไดเรกทอรีเดียวกับ โปรดคำนึงถึงหลักเกณฑ์ต่อไปนี้เมื่อออกแบบไอคอนสำหรับส่วนขยาย
|
||||||||
tagsรายการสตริง (ไม่บังคับ) |
แท็กเพื่อช่วยให้ผู้ใช้ค้นพบส่วนขยายของคุณ
แท็กต่อไปนี้จะแมปกับหมวดหมู่ในฮับส่วนขยาย
marketing,
messaging,
payments,
search,
shipping,
social,
utilities,
ai
|
||||||||
sourceUrlstring (ไม่บังคับ) |
URL สาธารณะที่เข้าถึงไดเรกทอรีส่วนขยายได้ | ||||||||
releaseNotesUrlstring (ไม่บังคับ) |
URL สาธารณะที่เข้าถึงบันทึกประจำรุ่นของส่วนขยายได้ | ||||||||
authorออบเจ็กต์ผู้เขียน 1 รายการ (ไม่บังคับ) |
ผู้เขียนหลักและผู้ติดต่อสำหรับส่วนขยาย author: authorName: Your Company email: extensions@example.com url: https://example.com/
|
||||||||
contributorsรายการออบเจ็กต์ผู้เขียน (ไม่บังคับ) |
ผู้เขียนร่วมเพิ่มเติมสำหรับส่วนขยาย contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
|
||||||||
Firebase และ Google Cloud API
ช่องเหล่านี้จะระบุ Firebase และ Google API ที่ส่วนขยายใช้ เมื่อผู้ใช้ติดตั้งส่วนขยาย ผู้ใช้จะเลือกเปิดใช้ API เหล่านี้ในโปรเจ็กต์โดยอัตโนมัติได้
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
| ฟิลด์ API | |
|---|---|
apiNamestring (ต้องระบุ) |
ชื่อของ Google API ต้องตรงกับช่องชื่อบริการตามที่แสดงในหน้าภาพรวมของ API แต่ละรายการ (ตัวอย่าง) ในคลัง Google Cloud API |
reasonstring (ต้องระบุ) |
คำอธิบายสั้นๆ เกี่ยวกับสาเหตุที่ส่วนขยายต้องใช้ API นี้ |
บทบาท IAM
ช่องเหล่านี้ระบุบทบาท Cloud IAM ที่ส่วนขยายต้องการ บัญชีบริการที่จัดสรรไว้สำหรับส่วนขยายจะได้รับบทบาทเหล่านี้
คุณระบุได้เฉพาะบทบาทที่รองรับเท่านั้น
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
| ช่องบทบาท | |
|---|---|
rolestring (ต้องระบุ) |
ชื่อของบทบาท IAM ที่จำเป็นเพื่อให้ส่วนขยายทำงานได้ ต้องเป็นบทบาทที่รองรับบทบาทใดบทบาทหนึ่ง |
reasonstring (ต้องระบุ) |
คำอธิบายสั้นๆ เกี่ยวกับสาเหตุที่ส่วนขยายต้องการสิทธิ์เข้าถึงที่ได้รับจากบทบาทนี้ |
resourcestring (ไม่บังคับ) |
จำกัดขอบเขตของบทบาทไว้ที่ทรัพยากรนี้ หากไม่ระบุ ระบบจะใช้ค่าเริ่มต้นเป็น |
บริการภายนอก
ช่องเหล่านี้ระบุบริการที่ไม่ใช่ Firebase และไม่ใช่ Google ที่ส่วนขยายใช้ (โดยทั่วไปคือ REST API) แพลตฟอร์ม Firebase Extensions ไม่มีวิธีเปิดใช้หรือให้สิทธิ์สำหรับบริการเหล่านี้โดยอัตโนมัติ
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| ช่องบริการภายนอก | |
|---|---|
namestring (ต้องระบุ) |
ชื่อบริการภายนอกที่จำเป็นเพื่อให้ส่วนขยายทำงานได้ |
pricingUristring (ต้องระบุ) |
URI ไปยังข้อมูลราคาสำหรับบริการ |
พารามิเตอร์ที่ผู้ใช้กำหนดค่าได้
ช่องเหล่านี้จะกำหนดพารามิเตอร์ที่ส่วนขยายทำให้ผู้ใช้กำหนดค่าได้
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
| ฟิลด์พารามิเตอร์ | |
|---|---|
paramstring (ต้องระบุ) |
ชื่อพารามิเตอร์ คุณใช้ชื่อนี้เพื่ออ้างอิงค่าพารามิเตอร์ในโค้ด |
labelstring (ต้องระบุ) |
คำอธิบายสั้นๆ สำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ |
descriptionstring (ไม่บังคับ) |
คำอธิบายโดยละเอียดสำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ รองรับมาร์กดาวน์ |
examplestring (ไม่บังคับ) |
ค่าตัวอย่างสำหรับพารามิเตอร์ |
defaultstring (ไม่บังคับ) |
ค่าเริ่มต้นของพารามิเตอร์หากผู้ใช้เว้นค่าของพารามิเตอร์ไว้ว่างเปล่า |
validationRegexstring (ไม่บังคับ) |
นิพจน์ทั่วไปสําหรับการตรวจสอบค่าที่ผู้ใช้กําหนดค่าของพารามิเตอร์ ไวยากรณ์ Google RE2 |
validationErrorMessagestring (ไม่บังคับ) |
ข้อความแสดงข้อผิดพลาดที่จะแสดงหากการตรวจสอบความถูกต้องของนิพจน์ทั่วไปไม่สำเร็จ |
requiredboolean (ไม่บังคับ) |
กำหนดว่าผู้ใช้จะส่งสตริงเปล่าได้หรือไม่เมื่อระบบแจ้งให้ป้อนค่าของพารามิเตอร์ ค่าเริ่มต้นคือ true
|
immutableboolean (ไม่บังคับ) |
กำหนดว่าผู้ใช้จะเปลี่ยนค่าของพารามิเตอร์หลังการติดตั้งได้หรือไม่ (เช่น หากผู้ใช้กำหนดค่าส่วนขยายใหม่) ค่าเริ่มต้นคือ หมายเหตุ: หากคุณกำหนดพารามิเตอร์ "location" สำหรับฟังก์ชันที่ติดตั้งใช้งานของส่วนขยาย ให้ตั้งค่าช่องนี้เป็น |
typestring (ไม่บังคับ) |
ประเภทพารามิเตอร์ พารามิเตอร์ประเภทพิเศษอาจมีข้อกำหนดเพิ่มเติมหรือการนำเสนอ UI ที่แตกต่างกัน โปรดดูส่วนต่อไปนี้ |
พารามิเตอร์ที่เลือกได้และเลือกได้หลายรายการ
พารามิเตอร์ที่เลือกได้และเลือกได้หลายรายการจะแจ้งให้ผู้ใช้เลือกจากรายการตัวเลือกที่กำหนดไว้ล่วงหน้า
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
| ฟิลด์พารามิเตอร์แบบหลายตัวเลือก | |||||||
|---|---|---|---|---|---|---|---|
typeสตริง |
ระบุว่าพารามิเตอร์สามารถเป็นค่าเดียว ( |
||||||
optionsรายการตัวเลือก (ต้องระบุ) |
ตัวเลือกที่ผู้ใช้เลือกได้
|
||||||
พารามิเตอร์ทรัพยากรที่เลือกได้
พารามิเตอร์ทรัพยากรที่เลือกได้จะแจ้งให้ผู้ใช้เลือกทรัพยากร (อินสแตนซ์ฐานข้อมูล, บัケットพื้นที่เก็บข้อมูล ฯลฯ) จากโปรเจ็กต์
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
| ช่องพารามิเตอร์ทรัพยากร | |
|---|---|
typeสตริง |
ระบุว่าพารามิเตอร์แสดงถึงทรัพยากรโปรเจ็กต์ |
resourceTypestring (ต้องระบุ) |
ประเภทของทรัพยากรที่จะแจ้งให้ผู้ใช้เลือก ค่าที่ถูกต้อง:
อย่างไรก็ตาม ปัจจุบันมีเพียงที่เก็บข้อมูล Cloud Storage เท่านั้นที่มี UI การเลือก (ประเภททรัพยากรอื่นๆ จะแสดงเป็นช่องป้อนข้อความรูปแบบอิสระ) |
พารามิเตอร์ข้อมูลลับ
ระบบจะจัดการค่าลับที่ผู้ใช้ระบุ (เช่น คีย์ API) แตกต่างกัน ดังนี้
- ระบบจะจัดเก็บค่าข้อมูลลับโดยใช้ Cloud Secret Manager เฉพาะไคลเอ็นต์ที่ได้รับอนุญาต (เช่น อินสแตนซ์ที่ติดตั้งของส่วนขยาย) เท่านั้นที่เข้าถึงค่าเหล่านี้ได้
- เมื่อระบบแจ้งให้ผู้ใช้ระบุค่าเหล่านี้ ระบบจะไม่แสดงข้อมูลที่ผู้ใช้ป้อน
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| ฟิลด์พารามิเตอร์ลับ | |
|---|---|
typeสตริง |
ระบุว่าพารามิเตอร์เป็นค่าข้อมูลลับ |
ทรัพยากร Cloud Function
ช่องเหล่านี้จะประกาศ Cloud Functions ที่รวมอยู่ในส่วนขยาย ไวยากรณ์การประกาศทรัพยากรจะดูแตกต่างกันเล็กน้อยระหว่างฟังก์ชันรุ่นที่ 1 และรุ่นที่ 2 ซึ่งสามารถอยู่ร่วมกันในส่วนขยายได้
Cloud Functions รุ่นที่ 1
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
| ช่องทรัพยากร | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring (ต้องระบุ) |
ชื่อที่ใช้ง่ายสำหรับฟังก์ชันที่ส่งออก หากคุณไม่ได้ระบุพร็อพเพอร์ตี้ ชื่อสุดท้ายของฟังก์ชันที่ติดตั้งใช้งานจะอยู่ในรูปแบบต่อไปนี้
|
||||||||||||||||
typestring (ต้องระบุ) |
สำหรับทรัพยากรฟังก์ชันรุ่นที่ 1 ให้ใช้คำสั่งต่อไปนี้
firebaseextensions.v1beta.function
|
||||||||||||||||
descriptionstring (ต้องระบุ) |
คำอธิบายสั้นๆ เกี่ยวกับงานที่ฟังก์ชันดำเนินการสำหรับส่วนขยาย |
||||||||||||||||
properties(ต้องระบุ) |
พร็อพเพอร์ตี้ Cloud Functions รุ่นที่ 1 พร็อพเพอร์ตี้ที่สำคัญที่สุดแสดงอยู่ด้านล่าง แต่คุณสามารถดูรายการทั้งหมดได้ในข้อมูลอ้างอิงของ Cloud Functions
|
||||||||||||||||
Cloud Functions รุ่นที่ 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
| ช่องทรัพยากร | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring (ต้องระบุ) |
ชื่อที่ใช้ง่ายสำหรับฟังก์ชันที่ส่งออก หากคุณไม่ได้ระบุพร็อพเพอร์ตี้ ชื่อสุดท้ายของฟังก์ชันที่ติดตั้งใช้งานจะอยู่ในรูปแบบต่อไปนี้
|
||||||||||||||||||||||||||||
typestring (ต้องระบุ) |
สำหรับทรัพยากรฟังก์ชันรุ่นที่ 2 ให้ทำดังนี้
firebaseextensions.v1beta.v2function
|
||||||||||||||||||||||||||||
descriptionstring (ต้องระบุ) |
คำอธิบายสั้นๆ เกี่ยวกับงานที่ฟังก์ชันดำเนินการสำหรับส่วนขยาย |
||||||||||||||||||||||||||||
properties(ต้องระบุ) |
พร็อพเพอร์ตี้ Cloud Functions รุ่นที่ 2 พร็อพเพอร์ตี้ที่สำคัญที่สุดแสดงอยู่ด้านล่าง แต่คุณสามารถดูรายการทั้งหมดได้ในข้อมูลอ้างอิงของ Cloud Functions
นอกจากนี้ยังมีฟิลด์ประเภทออบเจ็กต์ 3 ฟิลด์ที่มีพร็อพเพอร์ตี้ของตัวเอง ดังนี้
|
||||||||||||||||||||||||||||
เหตุการณ์ในวงจร
เหตุการณ์ในวงจรช่วยให้คุณระบุฟังก์ชันที่จะทำงานเมื่อผู้ใช้ติดตั้ง อัปเดต หรือกำหนดค่าอินสแตนซ์ของส่วนขยายได้ ดูจัดการเหตุการณ์ในวงจรของส่วนขยาย
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
| ฟิลด์เหตุการณ์ในวงจร | |||||||
|---|---|---|---|---|---|---|---|
onInstall(ไม่บังคับ) |
ระบุฟังก์ชันที่จะทำงานเมื่อผู้ใช้ติดตั้งส่วนขยาย
|
||||||
onUpdate(ไม่บังคับ) |
ระบุฟังก์ชันที่จะทำงานเมื่อผู้ใช้อัปเดตส่วนขยาย
|
||||||
onConfigure(ไม่บังคับ) |
ระบุฟังก์ชันที่จะทำงานเมื่อผู้ใช้กำหนดค่าส่วนขยายใหม่
|
||||||
เหตุการณ์ที่กำหนดเอง (Eventarc)
เหตุการณ์ที่กำหนดเองคือเหตุการณ์ที่ส่วนขยายของคุณส่งออกมาเพื่อให้ผู้ใช้แทรกตรรกะของตนเองลงในส่วนขยายได้ ดูส่วน Eventarc ในหัวข้อเพิ่มฮุกของผู้ใช้ลงในส่วนขยาย
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
| ช่องเหตุการณ์ที่กำหนดเอง | |
|---|---|
typestring (ต้องระบุ) |
ตัวระบุประเภทของเหตุการณ์ สร้างตัวระบุจากฟิลด์ที่คั่นด้วยจุด 3-4 ฟิลด์ ได้แก่ ฟิลด์รหัสผู้เผยแพร่โฆษณา ชื่อส่วนขยาย และชื่อเหตุการณ์ ซึ่งเป็นฟิลด์ที่ต้องกรอก และขอแนะนำให้กรอกฟิลด์เวอร์ชันด้วย เลือกชื่อเหตุการณ์ที่ไม่ซ้ำกันและสื่อความหมายสำหรับเหตุการณ์แต่ละประเภทที่คุณเผยแพร่ |
descriptionstring (ต้องระบุ) |
คำอธิบายเหตุการณ์ |