فایل مشخصات افزونه شما ( 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رشته (الزامی) | شناسه برای افزونه. فقط میتواند شامل حروف کوچک، اعداد و خط تیره باشد؛ محدودیت ۴۰ کاراکتری. نکته: این مقدار برای تولید شناسه نمونه افزونه (که سپس برای تولید نام حساب سرویس افزونه و منابع مختص افزونه استفاده میشود) استفاده میشود. | ||||||||
versionرشته (الزامی) | نسخه افزونه. باید از نسخهبندی semver (مثلاً ۱.۲.۰) پیروی کند. | ||||||||
specVersionرشته (الزامی) | نسخهای از مشخصات افزونههای فایربیس. مقدار فعلی: | ||||||||
licenseرشته (اختیاری) | مجوز برای تمدید. افزونه شما باید با استفاده از | ||||||||
billingRequiredبولی (اختیاری) | اینکه آیا سرویسهای مورد استفاده توسط افزونه به حساب پرداخت Firebase نیاز دارند یا خیر. همیشه روی | ||||||||
displayNameرشته (اختیاری) | نام نمایشی کاربرپسند برای افزونه (۳ تا ۵ کلمه). محدودیت ۴۰ کاراکتری. | ||||||||
descriptionرشته (اختیاری) | شرح مختصری از وظیفهای که افزونه شما انجام میدهد (حدود ۱ جمله). | ||||||||
iconرشته (اختیاری) | فایلی که قرار است به عنوان آیکون افزونه شما در این فایل باید یک PNG مربعی با ابعاد بین ۵۱۲x۵۱۲ و ۱۰۲۴x۱۰۲۴ پیکسل باشد. فایل را در همان دایرکتوری هنگام طراحی آیکون برای افزونه خود، دستورالعملهای زیر را در نظر داشته باشید:
| ||||||||
tagsفهرست رشتهها (اختیاری) | برچسبها برای کمک به کاربران در کشف افزونه شما. برچسبها زیر به دستههای موجود در Extensions Hub مرتبط هستند: marketing ، messaging ، payments ، search ، shipping ، social ، utilities ، ai | ||||||||
sourceUrlرشته (اختیاری) | URL عمومی که در آن میتوان به دایرکتوری افزونه دسترسی داشت. | ||||||||
releaseNotesUrlرشته (اختیاری) | آدرس اینترنتی عمومی که در آن میتوان به یادداشتهای انتشار افزونه دسترسی داشت. | ||||||||
authorیک شیء نویسنده (اختیاری) | نویسنده اصلی و مسئول تماس برای تمدید. 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/
| ||||||||
رابطهای برنامهنویسی کاربردی فایربیس و گوگل کلود
این فیلدها 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رشته (الزامی) | نام 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رشته (اختیاری) | دامنه نقش را به این منبع محدود کنید. در صورت حذف، پیشفرض |
خدمات خارجی
این فیلدها سرویسهای غیر فایربیس و غیر گوگلی که افزونه از آنها استفاده میکند (معمولاً REST APIها) را مشخص میکنند. پلتفرم افزونههای فایربیس هیچ راهی برای فعالسازی یا انجام خودکار مجوز برای این سرویسها ارائه نمیدهد.
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رشته (اختیاری) | عبارت منظم برای اعتبارسنجی مقدار پارامتر که توسط کاربر پیکربندی شده است. سینتکس Google RE2 . |
validationErrorMessageرشته (اختیاری) | پیام خطایی که در صورت عدم موفقیت اعتبارسنجی regex نمایش داده میشود. |
requiredبولی (اختیاری) | تعریف میکند که آیا کاربر میتواند هنگام درخواست مقدار پارامتر، یک رشته خالی ارسال کند یا خیر. مقدار پیشفرض true است. |
immutableبولی (اختیاری) | تعریف میکند که آیا کاربر میتواند مقدار پارامتر را پس از نصب تغییر دهد یا خیر (مثلاً اگر افزونه را دوباره پیکربندی کند). مقدار پیشفرض نکته: اگر برای توابع پیادهسازیشدهی افزونهی خود پارامتر «مکان» تعریف میکنید، این فیلد را روی |
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رشته | مشخص میکند که پارامتر میتواند یک مقدار ( | ||||||
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رشته | مشخص میکند که پارامتر نشان دهنده یک منبع پروژه است |
resourceTypeرشته (الزامی) | نوع منبعی که کاربر را به انتخاب آن ترغیب میکند. مقادیر معتبر:
با این حال، فقط سطلهای ذخیرهسازی ابری در حال حاضر رابط کاربری انتخاب دارند (سایر انواع منابع به صورت فیلدهای ورودی متن با فرم آزاد ارائه میشوند). |
پارامترهای مخفی
مقادیر مخفی ارائه شده توسط کاربر (مانند کلیدهای API) به طور متفاوتی مدیریت میشوند:
- مقادیر مخفی با استفاده از Cloud Secret Manager ذخیره میشوند. فقط کلاینتهای مجاز (مانند یک نمونه نصبشده از یک افزونه) میتوانند به این مقادیر دسترسی داشته باشند.
- وقتی از کاربران خواسته میشود این مقادیر را ارائه دهند، ورودی آنها نمایش داده نمیشود.
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| فیلدهای پارامتر مخفی | |
|---|---|
typeرشته | مشخص میکند که پارامتر یک مقدار مخفی است |
منابع عملکرد ابری
این فیلدها توابع ابری موجود در یک افزونه را اعلام میکنند. سینتکس اعلام منابع بین توابع نسل اول و نسل دوم که میتوانند همزمان در یک افزونه وجود داشته باشند، کمی متفاوت به نظر میرسد.
توابع ابری نسل اول
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رشته (الزامی) | برای یک منبع تابع نسل اول: firebaseextensions.v1beta.function | ||||||||||||||||
descriptionرشته (الزامی) | شرح مختصری از وظیفهای که تابع برای افزونه انجام میدهد. | ||||||||||||||||
properties(الزامی) | ویژگیهای توابع ابری نسل اول. مهمترین ویژگیها در زیر فهرست شدهاند، اما میتوانید لیست کامل را در مرجع توابع ابری پیدا کنید.
| ||||||||||||||||
توابع ابری نسل دوم
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رشته (الزامی) | برای یک منبع تابع نسل دوم: firebaseextensions.v1beta.v2function | ||||||||||||||||||||||||||||
descriptionرشته (الزامی) | شرح مختصری از وظیفهای که تابع برای افزونه انجام میدهد. | ||||||||||||||||||||||||||||
properties(الزامی) | ویژگیهای توابع ابری نسل دوم. مهمترین ویژگیها در زیر فهرست شدهاند، اما میتوانید لیست کامل را در مرجع توابع ابری پیدا کنید.
همچنین سه فیلد از نوع شیء با ویژگیهای خاص خود وجود دارد:
| ||||||||||||||||||||||||||||
رویدادهای چرخه حیات
رویدادهای چرخه عمر به شما امکان میدهند توابعی را مشخص کنید که هنگام نصب، بهروزرسانی یا پیکربندی نمونهای از افزونه شما توسط کاربر، اجرا شوند. به بخش مدیریت رویدادهای چرخه عمر افزونه خود مراجعه کنید.
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
| فیلدهای رویداد سفارشی | |
|---|---|
typeرشته (الزامی) | شناسه نوع رویداد. شناسه را از ۳-۴ فیلد جدا شده با نقطه بسازید: فیلدهای شناسه ناشر، نام افزونه و نام رویداد الزامی هستند؛ فیلد نسخه توصیه میشود. برای هر نوع رویدادی که منتشر میکنید، یک نام رویداد منحصر به فرد و توصیفی انتخاب کنید. |
descriptionرشته (الزامی) | شرح رویداد. |