ไฟล์ข้อกำหนดของส่วนขยาย (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/
| ฟิลด์พื้นฐาน | |||||||||
|---|---|---|---|---|---|---|---|---|---|
        nameสตริง (ต้องระบุ)  | 
      
         ตัวระบุสำหรับส่วนขยาย มีได้เฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข และขีดกลางเท่านั้น โดยจำกัดไว้ที่ 40 อักขระ หมายเหตุ: ระบบจะใช้ค่านี้เพื่อสร้างรหัสอินสแตนซ์ของส่วนขยาย (ซึ่งจะใช้เพื่อสร้างชื่อบัญชีบริการของส่วนขยายและทรัพยากรเฉพาะส่วนขยาย)  | 
    ||||||||
        versionสตริง (ต้องระบุ)  | 
      
         เวอร์ชันของส่วนขยาย ต้องใช้การกำหนดเวอร์ชัน Semver (เช่น 1.2.0)  | 
    ||||||||
        specVersionสตริง (ต้องระบุ)  | 
      
         เวอร์ชันของข้อกำหนด Firebase Extensions ค่าปัจจุบัน:   | 
    ||||||||
        licenseสตริง (ไม่บังคับ)  | 
      
         ใบอนุญาตสำหรับส่วนขยาย ส่วนขยายของคุณต้องได้รับอนุญาตโดยใช้   | 
    ||||||||
        billingRequiredบูลีน (ไม่บังคับ)  | 
      
         ไม่ว่าบริการที่ส่วนขยายใช้จะต้องมีบัญชีสำหรับการเรียกเก็บเงินของ Firebase ในระดับแบบชำระเงินหรือไม่ ตั้งค่าเป็น   | 
    ||||||||
        displayNameสตริง (ไม่บังคับ)  | 
      
         ชื่อที่แสดงที่จำง่ายสำหรับส่วนขยาย (3-5 คำ) จำนวนอักขระสูงสุด 40 ตัว  | 
    ||||||||
        descriptionสตริง (ไม่บังคับ)  | 
      คำอธิบายสั้นๆ ของงานที่ส่วนขยายของคุณทำ (~1 ประโยค) | ||||||||
        iconสตริง (ไม่บังคับ)  | 
      
         ไฟล์ที่จะใช้เป็นไอคอนของส่วนขยายใน
           ไฟล์นี้ต้องเป็น PNG สี่เหลี่ยมจัตุรัสขนาดระหว่าง 512x512 ถึง 1024x1024 พิกเซล
          วางไฟล์ไว้ในไดเรกทอรีเดียวกับ  โปรดคำนึงถึงหลักเกณฑ์ต่อไปนี้เมื่อออกแบบไอคอนสำหรับส่วนขยาย 
  | 
    ||||||||
        tagslist of strings (ไม่บังคับ)  | 
      
        แท็กเพื่อช่วยให้ผู้ใช้ค้นพบส่วนขยายของคุณ
        แท็กต่อไปนี้จะเชื่อมโยงกับหมวดหมู่ในฮับส่วนขยาย
        marketing,
        messaging,
        payments,
        search,
        shipping,
        social,
        utilities,
        ai
       | 
    ||||||||
        sourceUrlสตริง (ไม่บังคับ)  | 
      URL สาธารณะที่เข้าถึงไดเรกทอรีส่วนขยายได้ | ||||||||
        releaseNotesUrlสตริง (ไม่บังคับ)  | 
      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 APIs
ฟิลด์เหล่านี้ระบุ API ของ Firebase และ Google ที่ส่วนขยายใช้ เมื่อผู้ใช้ ติดตั้งส่วนขยายแล้ว ผู้ใช้จะเลือกเปิดใช้ 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 | |
|---|---|
        apiNameสตริง (ต้องระบุ)  | 
      
         ชื่อ Google API ต้องสอดคล้องกับช่องชื่อบริการตามที่ระบุไว้ในหน้าภาพรวมของ API แต่ละรายการ (ตัวอย่าง) ใน คลัง Google Cloud API  | 
    
        reasonสตริง (ต้องระบุ)  | 
      คำอธิบายสั้นๆ เกี่ยวกับเหตุผลที่ส่วนขยายต้องใช้ 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
| ฟิลด์บทบาท | |
|---|---|
        roleสตริง (ต้องระบุ)  | 
      
         ชื่อของบทบาท IAM ที่จำเป็นเพื่อให้ส่วนขยายทำงานได้ ต้องเป็นบทบาทที่รองรับ  | 
    
        reasonสตริง (ต้องระบุ)  | 
      คำอธิบายสั้นๆ ว่าเหตุใดส่วนขยายจึงต้องมีสิทธิ์เข้าถึงที่บทบาทนี้มอบให้ | 
        resourceสตริง (ไม่บังคับ)  | 
      
         จำกัดขอบเขตของบทบาทไว้ที่แหล่งข้อมูลนี้ หากละไว้ ค่าเริ่มต้นจะเป็น   | 
    
บริการภายนอก
ฟิลด์เหล่านี้ระบุบริการที่ไม่ใช่ Firebase และไม่ใช่ของ Google ที่ส่วนขยายใช้ (โดยปกติคือ REST API) แพลตฟอร์มส่วนขยาย Firebase ไม่ได้มีวิธีเปิดใช้หรือให้สิทธิ์สำหรับบริการเหล่านี้โดยอัตโนมัติ
externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
| ฟิลด์บริการภายนอก | |
|---|---|
        nameสตริง (ต้องระบุ)  | 
      ชื่อของบริการภายนอกที่จำเป็นเพื่อให้ส่วนขยายทำงานได้ | 
        pricingUriสตริง (ต้องระบุ)  | 
      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
| ฟิลด์พารามิเตอร์ | |
|---|---|
        paramสตริง (ต้องระบุ)  | 
      ชื่อพารามิเตอร์ คุณใช้ชื่อนี้เพื่ออ้างอิงค่าพารามิเตอร์ในโค้ด | 
        labelสตริง (ต้องระบุ)  | 
      คำอธิบายสั้นๆ สำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ระบุค่าของพารามิเตอร์ | 
        descriptionสตริง (ไม่บังคับ)  | 
      
         คำอธิบายโดยละเอียดสำหรับพารามิเตอร์ แสดงต่อผู้ใช้เมื่อระบบแจ้งให้ระบุค่าของพารามิเตอร์ รองรับมาร์กดาวน์  | 
    
        exampleสตริง (ไม่บังคับ)  | 
      ตัวอย่างค่าของพารามิเตอร์ | 
        defaultสตริง (ไม่บังคับ)  | 
      ค่าเริ่มต้นของพารามิเตอร์หากผู้ใช้ปล่อยให้ค่าของพารามิเตอร์ ว่างไว้ | 
        validationRegexสตริง (ไม่บังคับ)  | 
      นิพจน์ทั่วไปสำหรับการตรวจสอบค่าที่ผู้ใช้กำหนดค่าของพารามิเตอร์ ไวยากรณ์ RE2 ของ Google | 
        validationErrorMessageสตริง (ไม่บังคับ)  | 
      ข้อความแสดงข้อผิดพลาดที่จะแสดงหากการตรวจสอบนิพจน์ทั่วไปไม่สำเร็จ | 
        requiredบูลีน (ไม่บังคับ)  | 
      
        กำหนดว่าผู้ใช้จะส่งสตริงว่างได้หรือไม่เมื่อระบบ
        แจ้งให้ระบุค่าของพารามิเตอร์ ค่าเริ่มต้นคือ true
       | 
    
        immutableบูลีน (ไม่บังคับ)  | 
      
         กำหนดว่าผู้ใช้จะเปลี่ยนค่าของพารามิเตอร์ได้หรือไม่หลังการติดตั้ง (เช่น หากผู้ใช้กำหนดค่าส่วนขยายใหม่) ค่าเริ่มต้นคือ
           หมายเหตุ: หากคุณกำหนดพารามิเตอร์ "location" สำหรับฟังก์ชันที่ติดตั้งใช้งานของส่วนขยาย ให้ตั้งค่าฟิลด์นี้เป็น   | 
    
        typeสตริง (ไม่บังคับ)  | 
      ประเภทพารามิเตอร์ พารามิเตอร์ประเภทพิเศษอาจมีข้อกำหนดเพิ่มเติม หรือการนำเสนอ 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
| ฟิลด์พารามิเตอร์แบบหลายตัวเลือก | |||||||
|---|---|---|---|---|---|---|---|
        typestring  | 
      
         
 ระบุว่าพารามิเตอร์อาจเป็นค่าเดียว (  | 
    ||||||
        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
| ฟิลด์พารามิเตอร์ของทรัพยากร | |
|---|---|
        typestring  | 
      
         
 ระบุว่าพารามิเตอร์แสดงทรัพยากรของโปรเจ็กต์  | 
    
        resourceTypeสตริง (ต้องระบุ)  | 
      
         ประเภทของทรัพยากรที่จะแจ้งให้ผู้ใช้เลือก ค่าที่ถูกต้อง: 
 อย่างไรก็ตาม ปัจจุบันมีเฉพาะที่เก็บข้อมูล Cloud Storage เท่านั้นที่มี UI สำหรับการเลือก (ระบบจะแสดงทรัพยากรประเภทอื่นๆ เป็นช่องป้อนข้อความแบบอิสระ)  | 
    
พารามิเตอร์ลับ
ระบบจะจัดการค่าลับที่ได้จากผู้ใช้ (เช่น คีย์ API) ในลักษณะที่แตกต่างกัน ดังนี้
- ระบบจะจัดเก็บค่าข้อมูลลับโดยใช้ Secret Manager ของ Cloud เฉพาะไคลเอ็นต์ที่ได้รับอนุญาต (เช่น อินสแตนซ์ของส่วนขยายที่ติดตั้ง) เท่านั้นที่เข้าถึงค่าเหล่านี้ได้
 - เมื่อระบบแจ้งให้ผู้ใช้ระบุค่าเหล่านี้ ระบบจะไม่แสดงข้อมูลที่ผู้ใช้ป้อน
 
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
| ฟิลด์พารามิเตอร์ลับ | |
|---|---|
        typestring  | 
      
         
 ระบุว่าพารามิเตอร์เป็นค่าลับ  | 
    
ทรัพยากร 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
| ฟิลด์ทรัพยากร | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
        nameสตริง (ต้องระบุ)  | 
      
         ชื่อที่เรียกง่ายสำหรับฟังก์ชันที่ส่งออก หากไม่ได้ระบุพร็อพเพอร์ตี้  ชื่อสุดท้ายของฟังก์ชันที่ใช้งานแล้วจะอยู่ในรูปแบบต่อไปนี้
            | 
    ||||||||||||||||
        typeสตริง (ต้องระบุ)  | 
      
        สำหรับทรัพยากรฟังก์ชันรุ่นที่ 1 ให้ทำดังนี้
        firebaseextensions.v1beta.function
       | 
    ||||||||||||||||
        descriptionสตริง (ต้องระบุ)  | 
      
         คำอธิบายสั้นๆ ว่าฟังก์ชันนี้ทำหน้าที่อะไรสำหรับส่วนขยาย  | 
    ||||||||||||||||
        properties(ต้องระบุ)  | 
      
         พร็อพเพอร์ตี้ของ Cloud Functions รุ่นที่ 1 คุณสมบัติที่สำคัญที่สุด แสดงอยู่ด้านล่าง แต่คุณดูรายการทั้งหมดได้ในข้อมูลอ้างอิงเกี่ยวกับฟังก์ชันระบบคลาวด์ 
  | 
    ||||||||||||||||
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
| ฟิลด์ทรัพยากร | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
        nameสตริง (ต้องระบุ)  | 
      
         ชื่อที่เรียกง่ายสำหรับฟังก์ชันที่ส่งออก หากไม่ได้ระบุพร็อพเพอร์ตี้  ชื่อสุดท้ายของฟังก์ชันที่ใช้งานแล้วจะอยู่ในรูปแบบต่อไปนี้
            | 
    ||||||||||||||||||||||||||||
        typeสตริง (ต้องระบุ)  | 
      
        สำหรับทรัพยากรฟังก์ชันรุ่นที่ 2 ให้ทำดังนี้
        firebaseextensions.v1beta.v2function
       | 
    ||||||||||||||||||||||||||||
        descriptionสตริง (ต้องระบุ)  | 
      
         คำอธิบายสั้นๆ ว่าฟังก์ชันนี้ทำหน้าที่อะไรสำหรับส่วนขยาย  | 
    ||||||||||||||||||||||||||||
        properties(ต้องระบุ)  | 
      
         พร็อพเพอร์ตี้ Cloud Functions รุ่นที่ 2 คุณสมบัติที่สำคัญที่สุด แสดงอยู่ด้านล่าง แต่คุณดูรายการทั้งหมดได้ในข้อมูลอ้างอิงเกี่ยวกับฟังก์ชันระบบคลาวด์ 
 นอกจากนี้ ยังมีฟิลด์ประเภทออบเจ็กต์ 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 ในเพิ่ม Hook ของผู้ใช้ลงในส่วนขยาย
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
| ฟิลด์เหตุการณ์ที่กำหนดเอง | |
|---|---|
        typeสตริง (ต้องระบุ)  | 
      ตัวระบุประเภทของเหตุการณ์ สร้างตัวระบุจากฟิลด์ที่คั่นด้วยจุด 3-4 ฟิลด์ ต้องระบุฟิลด์รหัสผู้เผยแพร่โฆษณา ชื่อส่วนขยาย และชื่อเหตุการณ์ ขอแนะนําให้ระบุฟิลด์เวอร์ชัน เลือกชื่อกิจกรรมที่ไม่ซ้ำ และสื่อความหมายสำหรับประเภทกิจกรรมแต่ละประเภทที่คุณเผยแพร่ | 
        descriptionสตริง (ต้องระบุ)  | 
      คำอธิบายเหตุการณ์ |