مرجع extension.yaml

فایل مشخصات برنامه افزودنی شما ( 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.

مقدار فعلی: v1beta

license
رشته
(اختیاری)

مجوز برای تمدید.

برنامه افزودنی شما باید با استفاده از Apache-2.0 مجوز داشته باشد.

billingRequired
بولی
(اختیاری)

آیا خدمات مورد استفاده توسط برنامه افزودنی نیاز به یک حساب صورت‌حساب Firebase سطح پولی دارد.

همیشه روی true تنظیم شده است.

displayName
رشته
(اختیاری)

نام نمایشی دوستانه برای پسوند (3-5 کلمه).

محدودیت 40 کاراکتر

description
رشته
(اختیاری)
شرح مختصری از کاری که برنامه افزودنی شما انجام می دهد (~1 جمله).
icon
رشته
(اختیاری)

فایلی برای استفاده به عنوان نماد برنامه افزودنی خود در extensions.dev و کنسول Firebase.

این فایل باید یک PNG مربع بین 512x512 و 1024x1024 پیکسل باشد. فایل را در همان دایرکتوری extension.yaml قرار دهید. شما نمی توانید یک زیر شاخه را مشخص کنید.

هنگام طراحی نماد برای برنامه افزودنی خود، دستورالعمل های زیر را در نظر داشته باشید:

  • رنگ های پس زمینه و آثار هنری را که برای برند شما مناسب هستند انتخاب کنید.
  • رنگ های نماد خود را ساده نگه دارید و فقط از 2 رنگ استفاده کنید. رنگ های متعدد می تواند نماد شما را از نظر بصری فراگیر کند.
  • به همین دلیل، از شیب در نماد خود استفاده نکنید. تشخیص گرادیان ها در اندازه های کوچک دشوار است و نماد را از نظر بصری پیچیده می کند.
  • از تصاویر ساده و منحصربه‌فرد استفاده کنید که عملکرد برنامه افزودنی شما را نشان می‌دهد.
  • اگر شرکت شما چندین افزونه ایجاد می کند، از لوگوی خود به عنوان نماد استفاده نکنید. کاربران در تمایز بین افزونه های شما مشکل خواهند داشت.
  • اثر هنری را گرافیکی و جسورانه کنید. از هنر ظریف یا پیچیده استفاده نکنید، که در اندازه های کوچکتر به خوبی ارائه نمی شود.
  • کلماتی که توضیح می دهند که برنامه افزودنی شما چه می کند، وارد نکنید. متن اغلب در اندازه های کوچکتر ناخوانا است.
tags
لیست رشته ها
(اختیاری)
برچسب هایی برای کمک به کاربران برای کشف افزونه شما. برچسب‌های زیر به دسته‌های موجود در Extensions Hub نگاشت می‌شوند: marketing ، messaging ، payments ، search ، shipping ، social ، utilities ، ai
sourceUrl
رشته
(اختیاری)
URL عمومی که در آن دایرکتوری برنامه افزودنی قابل دسترسی است.
releaseNotesUrl
رشته
(اختیاری)
URL عمومی که در آن می توان به یادداشت های انتشار برای برنامه افزودنی دسترسی داشت.
author
یک نویسنده شی
(اختیاری)

نویسنده اصلی و نقطه تماس برای برنامه افزودنی.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
فیلدهای نویسنده
authorName
رشته
(ضروری)

نام نویسنده.

می تواند یک شخص، شرکت، سازمان و غیره باشد.

email
رشته
(اختیاری)
آدرس ایمیل نویسنده.
url
رشته
(اختیاری)
URL عمومی که در آن می توان به اطلاعات مربوط به نویسنده دسترسی داشت.
contributors
فهرست اشیاء نویسنده
(اختیاری)

هر نویسنده دیگری که برای برنامه افزودنی مشارکت دارد.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
فیلدهای نویسنده
authorName
رشته
(ضروری)

نام نویسنده.

می تواند یک شخص، شرکت، سازمان و غیره باشد.

email
رشته
(اختیاری)
آدرس ایمیل نویسنده.
url
رشته
(اختیاری)
URL عمومی که در آن می توان به اطلاعات مربوط به نویسنده دسترسی داشت.

Firebase و APIهای Google Cloud

این فیلدها 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
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
رشته
(اختیاری)

دامنه نقش را به این منبع محدود کنید.

اگر حذف شود، به طور پیش‌فرض روی projects/${project_id} قرار می‌گیرد. به کاهش دامنه نقش ها رجوع کنید.

خدمات خارجی

این فیلدها خدمات غیر 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
زمینه های خدمات خارجی
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
رشته
(اختیاری)

توضیحات دقیق برای پارامتر هنگامی که از کاربر برای مقدار پارامتر خواسته می شود به کاربر نمایش داده می شود.

از Markdown پشتیبانی می کند.

example
رشته
(اختیاری)
مقدار مثال برای پارامتر.
default
رشته
(اختیاری)
اگر کاربر مقدار پارامتر را خالی بگذارد، مقدار پیش‌فرض برای پارامتر.
validationRegex
رشته
(اختیاری)
عبارت منظم برای اعتبارسنجی مقدار پیکربندی شده توسط کاربر پارامتر. نحو گوگل RE2
validationErrorMessage
رشته
(اختیاری)
در صورت عدم موفقیت در تأیید اعتبار regex، پیام خطا نمایش داده می شود.
required
بولی
(اختیاری)
تعیین می کند که آیا کاربر می تواند یک رشته خالی را زمانی که از او برای مقدار پارامتر خواسته می شود ارسال کند یا خیر. پیش فرض ها به true
immutable
بولی
(اختیاری)

تعیین می کند که آیا کاربر می تواند مقدار پارامتر را پس از نصب تغییر دهد (مثلاً اگر برنامه افزودنی را دوباره پیکربندی کند). پیش فرض ها به false .

توجه: اگر یک پارامتر "مکان" برای توابع مستقر در برنامه افزودنی خود تعریف می کنید، این فیلد را روی true تنظیم کنید.

type
رشته
(اختیاری)
نوع پارامتر انواع پارامترهای خاص ممکن است الزامات اضافی یا ارائه رابط کاربری متفاوتی داشته باشند. بخش های زیر را ببینید.

پارامترهای قابل انتخاب و چند انتخابی

پارامترهای قابل انتخاب و چند انتخابی، کاربران را به انتخاب از بین یک لیست از گزینه های از پیش تعریف شده ترغیب می کند.

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
رشته

select یا multiselect

مشخص می کند که پارامتر می تواند یک مقدار ( select ) یا چندین مقدار ( multiselect ) انتخاب شده از مجموعه ای از انتخاب های از پیش تعریف شده باشد.

options
لیست گزینه ها
(ضروری)

گزینه هایی که کاربر می تواند از بین آنها انتخاب کند

فیلدهای گزینه
value
رشته
(ضروری)
یکی از مقادیری که کاربر می تواند انتخاب کند. این مقداری است که هنگام خواندن مقدار پارامتر در کد دریافت می کنید.
label
رشته
(اختیاری)
شرح مختصری از گزینه قابل انتخاب در صورت حذف، value پیش‌فرض می‌شود.

پارامترهای منبع قابل انتخاب

پارامترهای منبع قابل انتخاب، کاربران را به انتخاب یک منبع (نمونه پایگاه داده، سطل ذخیره سازی، و غیره) از پروژه خود تشویق می کند.

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
رشته

selectresource

مشخص می کند که پارامتر یک منبع پروژه را نشان می دهد

resourceType
رشته
(ضروری)

نوع منبعی که کاربر را وادار به انتخاب می کند.

مقادیر معتبر:

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

با این حال، در حال حاضر تنها سطل‌های ذخیره‌سازی ابری دارای رابط کاربری انتخابی هستند (سایر انواع منابع به عنوان فیلدهای ورودی متن آزاد ارائه می‌شوند).

پارامترهای مخفی

مقادیر مخفی ارائه شده توسط کاربر (مانند کلیدهای API) به طور متفاوتی مدیریت می شوند:

  • مقادیر مخفی با استفاده از Cloud Secret Manager ذخیره می شوند. فقط مشتریان مجاز (مانند یک نمونه نصب شده از یک برنامه افزودنی) می توانند به این مقادیر دسترسی داشته باشند.
  • هنگامی که از کاربران خواسته می شود این مقادیر را ارائه کنند، ورودی آنها نمایش داده نمی شود.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
فیلدهای پارامتر مخفی
type
رشته

secret

مشخص می کند که پارامتر یک مقدار مخفی است

منابع تابع ابر

این فیلدها توابع Cloud را که در یک برنامه افزودنی گنجانده شده است، اعلام می کنند. نحو اعلان منبع بین توابع نسل اول و نسل دوم کمی متفاوت به نظر می رسد که می توانند در یک پسوند همزیستی داشته باشند.

توابع ابری نسل اول

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
رشته
(ضروری)

نام کاربر پسند برای تابع صادر شده.

اگر ویژگی entryPoint را مشخص نکنید (به زیر مراجعه کنید)، این مقدار باید با نام تابع در کد منبع توابع شما مطابقت داشته باشد.

نام نهایی تابع مستقر شده در قالب زیر خواهد بود: ext- extension-instance-id - name .

type
رشته
(ضروری)
برای یک منبع تابع نسل اول: firebaseextensions.v1beta.function
description
رشته
(ضروری)

شرح مختصری از وظایفی که تابع برای برنامه افزودنی انجام می دهد.

properties
(ضروری)

ویژگی‌های عملکردهای ابری نسل اول. مهم‌ترین ویژگی‌ها در زیر فهرست شده‌اند، اما می‌توانید فهرست کامل را در مرجع Cloud Functions پیدا کنید.

خواص
location
(اختیاری)

مکانی که تابع در آن مستقر می شود. پیش‌فرض‌ها به us-central1

entryPoint
(اختیاری)
نام تابع صادر شده در کد منبع توابع شما که برنامه افزودنی باید به دنبال آن باشد. پیش‌فرض مقدار name ، در بالا.
sourceDirectory
(اختیاری)

دایرکتوری که حاوی package.json شما در ریشه است. فایل کد منبع توابع شما باید در این دایرکتوری باشد. به طور پیش فرض functions

توجه: فیلد main package.json فایل را برای کد منبع توابع شما (مانند index.js ) مشخص می کند.

timeout
(اختیاری)

حداکثر زمان اجرای تابع

  • پیش فرض: 60s
  • حداکثر ارزش: 540s
availableMemoryMb
(اختیاری)

مقدار حافظه در مگابایت موجود برای عملکرد.

  • پیش فرض: 256
  • مقادیر معتبر: 128 ، 256 ، 512 ، 1024 ، و 2048
runtime
(توصیه شده)

محیط زمان اجرا برای تابع.

httpsTrigger
یا
eventTrigger
یا
scheduleTrigger
یا
taskQueueTrigger
(یکی از این انواع ماشه عملکرد مورد نیاز است)
برای اطلاعات خاص در مورد هر نوع محرک ، برای یک برنامه افزودنی به نوشتن توابع ابری مراجعه کنید.

توابع ابری نسل دوم

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
رشته
(ضروری)

نام کاربر پسند برای تابع صادر شده.

اگر ویژگی entryPoint را مشخص نکنید (به زیر مراجعه کنید)، این مقدار باید با نام تابع در کد منبع توابع شما مطابقت داشته باشد.

نام نهایی تابع مستقر شده در قالب زیر خواهد بود: ext- extension-instance-id - name .

type
رشته
(ضروری)
برای یک منبع تابع نسل دوم: firebaseextensions.v1beta.v2function
description
رشته
(ضروری)

شرح مختصری از وظایفی که تابع برای برنامه افزودنی انجام می دهد.

properties
(ضروری)

ویژگی‌های عملکردهای ابری نسل دوم. مهم‌ترین ویژگی‌ها در زیر فهرست شده‌اند، اما می‌توانید فهرست کامل را در مرجع Cloud Functions پیدا کنید.

خواص
location
(اختیاری)

مکانی که تابع در آن مستقر می شود. پیش‌فرض‌ها به us-central1

sourceDirectory
(اختیاری)

دایرکتوری که حاوی package.json شما در ریشه است. فایل کد منبع توابع شما باید در این دایرکتوری باشد. به طور پیش فرض functions

توجه: فیلد main package.json فایل را برای کد منبع توابع شما (مانند index.js ) مشخص می کند.

همچنین سه فیلد از نوع شی با ویژگی های خاص خود وجود دارد:

خواص buildConfig
buildConfig.runtime
(توصیه شده)

محیط زمان اجرا برای تابع.

buildConfig.entryPoint
(اختیاری)
نام تابع صادر شده در کد منبع توابع شما که برنامه افزودنی باید به دنبال آن باشد. پیش‌فرض مقدار name ، در بالا.
ویژگی های serviceConfig
serviceConfig.timeoutSeconds
(اختیاری)

حداکثر زمان اجرای تابع

  • پیش فرض: 60
  • حداکثر ارزش: 540
serviceConfig.availableMemory
(اختیاری)
مقدار حافظه موجود برای یک تابع. پیش‌فرض 256M است. واحدهای پشتیبانی شده k , M , G , Mi , Gi هستند. اگر واحدی ارائه نشود، مقدار به عنوان بایت تفسیر می شود.
ویژگی های eventTrigger
eventTrigger.eventType
(ضروری)
نوع رویداد برای گوش دادن برای انواع رویدادهای موجود برای هر محصول، به Write Cloud Functions مراجعه کنید.
eventTrigger.eventFilters
(اختیاری)
فیلترهایی که بیشتر رویدادها را برای گوش دادن محدود می کنند. به عنوان مثال، شما فقط می توانید به رویدادهایی گوش دهید که با یک الگوی منبع خاص مطابقت دارند. برای اطلاعات در مورد فیلتر کردن هر نوع رویداد ، برای یک برنامه افزودنی به Write Cloud Functions مراجعه کنید.
eventTrigger.channel
(اختیاری)
نام کانال مرتبط با راه‌انداز در projects/{project}/locations/{location}/channels/{channel} . اگر این ویژگی را حذف کنید، تابع به رویدادها در کانال پیش فرض پروژه گوش می دهد.
eventTrigger.triggerRegion
(اختیاری)
ماشه فقط رویدادهایی را دریافت می کند که از این منطقه منشا می گیرند. این می تواند همان منطقه تابع، یک منطقه متفاوت یا چند منطقه ای یا منطقه جهانی باشد. اگر ارائه نشده باشد، به طور پیش‌فرض روی همان منطقه تابع قرار می‌گیرد.

رویدادهای چرخه حیات

رویدادهای چرخه حیات به شما امکان می‌دهند توابعی را مشخص کنید که هنگام نصب، به‌روزرسانی یا پیکربندی نمونه برنامه افزودنی توسط کاربر اجرا شوند. به مدیریت رویدادهای چرخه عمر برنامه افزودنی خود مراجعه کنید.

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
(اختیاری)

عملکردی را مشخص می کند که هنگام نصب برنامه افزودنی توسط کاربر اجرا شود.

مشخصات عملکرد
function
رشته
(ضروری)

نام تابعی که توسط صف راه اندازی شده است و رویداد را مدیریت می کند.

این تابع باید در قسمت resources اعلام شود و داشته باشد taskQueue تعریف شده است.

processingMessage
رشته
(ضروری)
پیامی برای نمایش در کنسول Firebase در حالی که کار در حال انجام است.
onUpdate
(اختیاری)

عملکردی را مشخص می کند که وقتی کاربر افزونه را به روز می کند اجرا می شود.

مشخصات عملکرد
function
رشته
(ضروری)

نام تابعی که توسط صف راه اندازی شده است و رویداد را مدیریت می کند.

این تابع باید در قسمت resources اعلام شود و داشته باشد taskQueue تعریف شده است.

processingMessage
رشته
(ضروری)
پیامی برای نمایش در کنسول Firebase در حالی که کار در حال انجام است.
onConfigure
(اختیاری)

عملکردی را مشخص می کند که وقتی کاربر برنامه افزودنی را دوباره پیکربندی می کند اجرا می شود.

مشخصات عملکرد
function
رشته
(ضروری)

نام تابعی که توسط صف راه اندازی شده است و رویداد را مدیریت می کند.

این تابع باید در قسمت resources اعلام شود و داشته باشد taskQueue تعریف شده است.

processingMessage
رشته
(ضروری)
پیامی برای نمایش در کنسول Firebase در حالی که کار در حال انجام است.

رویدادهای سفارشی (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
فیلدهای رویداد سفارشی
type
رشته
(ضروری)
شناسه نوع رویداد. شناسه را از بین 3-4 فیلد با نقطه مشخص بسازید: فیلدهای شناسه ناشر، نام برنامه افزودنی و نام رویداد مورد نیاز است. قسمت نسخه توصیه می شود. برای هر نوع رویدادی که منتشر می کنید، یک نام رویداد منحصر به فرد و توصیفی انتخاب کنید.
description
رشته
(ضروری)
شرح رویداد.