پارامترها را در برنامه افزودنی خود تنظیم و استفاده کنید

پارامترها مکانیزمی هستند که از طریق آن کاربر هر نمونه نصب شده از یک افزونه را سفارشی می‌کند. پارامترها مانند متغیرهای محیطی برای یک افزونه هستند. مقادیر پارامترها می‌توانند به صورت خودکار (توسط Firebase پس از نصب ارائه می‌شوند) یا توسط کاربر پیکربندی شوند (توسط کاربر در حین نصب مشخص می‌شوند).

این پارامترها برای ارجاع شما در کد منبع توابع افزونه، فایل extension.yaml و فایل POSTINSTALL.md در دسترس هستند. در اینجا سینتکس نحوه ارجاع به پارامتری به نام PARAMETER_NAME آمده است:

  • درون کد منبع توابع خود، از ماژول params (برای مثال، params.defineInt(" PARAMETER_NAME ") ) یا process.env. PARAMETER_NAME استفاده کنید.

  • درون extension.yaml و POSTINSTALL.md ، از ${param: PARAMETER_NAME } استفاده کنید.

    پس از نصب، کنسول Firebase محتویات فایل POSTINSTALL.md را نمایش می‌دهد و هرگونه ارجاع پارامتر را با مقادیر واقعی برای نمونه نصب شده پر می‌کند.

پارامترهای پر شده خودکار

هر نمونه نصب‌شده از یک افزونه به‌طور خودکار به چندین پارامتر پیش‌فرضِ خودکارِ ارائه‌شده توسط Firebase دسترسی دارد (به جدول زیر مراجعه کنید). این مقادیر پارامتر یا مقادیر پیش‌فرض برای پروژه Firebase هستند (مانند سطل ذخیره‌سازی پیش‌فرض ) یا مختص افزونه هستند (مانند شناسه نمونه افزونه).

تمام مقادیر پارامترهایی که به صورت خودکار وارد می‌شوند، تغییرناپذیر هستند. آن‌ها در زمان ایجاد پروژه یا نصب افزونه تنظیم می‌شوند.

اگرچه فایربیس به طور خودکار این مقادیر پارامتر را برای افزونه وارد می‌کند، اما فایربیس در حین نصب، محصولات مرتبط را به طور خودکار برای کاربر فراهم نمی‌کند . کاربری که افزونه را نصب می‌کند، باید قبل از نصب، محصول(های) مرتبط و قابل اجرا را در پروژه خود فعال کند. به عنوان مثال، اگر افزونه شما شامل Cloud Firestore است، کاربر باید Cloud Firestore در پروژه خود راه‌اندازی کند . توصیه می‌کنیم کاربران خود را در مورد این الزامات در فایل PREINSTALL.md مطلع کنید.

مرجع پارامتر با قابلیت پر شدن خودکار توضیحات مقدار پارامتر (ارائه شده توسط Firebase)
پارامترهایی با مقادیر پیش‌فرض از پروژه Firebase
PROJECT_ID شناسه منحصر به فرد برای پروژه Firebase که افزونه در آن نصب شده است

قالب کلی:
project-id

مقدار مثال:
project-123

DATABASE_URL آدرس اینترنتی پیش‌فرض Realtime Database پروژه Firebase

قالب کلی:
https:// project-id -default-rtdb.firebaseio.com
(موارد ایالات متحده)
یا
https:// project-id -default-rtdb. region-code .firebasedatabase.app
(موارد غیر آمریکایی)

مقدار مثال:
https://project-123-default-rtdb.firebaseio.com

DATABASE_INSTANCE

نام نمونه پیش‌فرض Realtime Database پروژه Firebase

معمولاً این مقدار با شناسه پروژه یکسان است یا به -default-rtdb ختم می‌شود.

قالب کلی:
project-id

مقدار مثال:
project-123

STORAGE_BUCKET نام پیش‌فرض فضای ذخیره‌سازی ابری پروژه فایربیس

قالب کلی:
PROJECT_ID .firebasestorage.app

مقدار مثال:
project-123.firebasestorage.app

پارامتر با مقدار پیش‌فرض از نصب افزونه
EXT_INSTANCE_ID

شناسه منحصر به فرد برای نمونه افزونه نصب شده

این مقدار از فیلد name مشخص شده در فایل extension.yaml تولید می‌شود.

قالب کلی برای اولین نمونه نصب شده (به طور خودکار توسط Firebase اختصاص داده شده است؛ در حین نصب قابل تغییر توسط کاربر نیست ):
name-from-extension.yaml

مقدار مثال:
my-awesome-extension


قالب عمومی برای نمونه نصب شده دوم و بالاتر (به طور خودکار توسط Firebase اختصاص داده شده است؛ می‌تواند در حین نصب توسط کاربر تغییر داده شود):
name-from-extension.yaml - 4-digit-alphanumeric-hash

مقدار مثال:
my-awesome-extension-6m31

پارامترهای پیکربندی شده توسط کاربر

برای اینکه کاربر بتواند هر نمونه نصب شده از یک افزونه را سفارشی کند، می‌توانید از کاربر بخواهید که در حین نصب، مقادیر پارامترها را مشخص کند. برای درخواست این مقادیر، باید دستورات را در بخش params فایل extension.yaml خود تنظیم کنید.

در اینجا یک مثال از بخش params آورده شده است، و به دنبال آن جدولی که تمام فیلدهای پارامتر موجود را شرح می‌دهد.

# extension.yaml
...

# Parameters (environment variables) for which the user specifies values during installation
params:
  - param: DB_PATH
    label: Realtime Database path
    description: >-
      What is the Realtime Database path where you will write new text
      for sentiment analysis?
    type: string
    validationRegex: ^\S+$
    validationErrorMessage: Realtime Database path cannot contain spaces.
    example: path/to/posts
    required: true

  - param: TEXT_KEY
    label: Key for text
    description: What is the name of the key that will contain text to be analyzed?
    type: string
    default: textToAnalyze
    required: true

در بخش params فایل extension.yaml خود، از فیلدهای زیر برای تعریف پارامتر پیکربندی شده توسط کاربر استفاده کنید:

میدان نوع توضیحات
param
(الزامی)
رشته نام پارامتر
label
(الزامی)
رشته

توضیح مختصر برای پارامتر

وقتی از کاربر مقدار پارامتر خواسته می‌شود، به او نمایش داده می‌شود

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

شرح مفصلی برای پارامتر

وقتی از کاربر مقدار پارامتر خواسته می‌شود، به او نمایش داده می‌شود

پشتیبانی از نشانه‌گذاری

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

مکانیزم ورودی برای نحوه تنظیم مقدار پارامتر توسط کاربر (برای مثال، وارد کردن متن به طور مستقیم یا انتخاب از لیست کشویی)

مقادیر معتبر شامل موارد زیر است:

  • string : امکان ورود متن به صورت آزاد را فراهم می‌کند (محدود شده توسط validationRegex شما)
  • select : امکان انتخاب یک ورودی از لیست از پیش تعریف‌شده‌ی گزینه‌ها را فراهم می‌کند. اگر این مقدار را تعیین کنید، باید فیلد options را نیز تعریف کنید.
  • multiSelect : امکان انتخاب یک یا چند ورودی از یک لیست از پیش تعریف شده از گزینه‌ها را فراهم می‌کند. اگر این مقدار را تعیین کنید، باید فیلد options را نیز تعریف کنید.
  • selectResource : امکان انتخاب نوع خاصی از منبع Firebase (مانند یک مخزن Cloud Storage ) را از پروژه کاربر فراهم می‌کند.

    وقتی پارامتری از این نوع را مشخص می‌کنید، کاربران در رابط کاربری نصب، ویجت انتخاب کاربرپسندتری دریافت می‌کنند؛ به همین دلیل، هر زمان که ممکن است از پارامترهای selectResource استفاده کنید.

    اگر این مقدار را مشخص کنید، باید فیلد resourceType را نیز تعریف کنید.

  • secret : امکان ذخیره رشته‌های حساس، مانند کلیدهای API برای سرویس‌های شخص ثالث را فراهم می‌کند. این مقادیر در Cloud Secret Manager ذخیره خواهند شد.

    Cloud Secret Manager یک سرویس پولی است که استفاده از آن ممکن است برای کاربرانی که افزونه شما را نصب می‌کنند، هزینه‌هایی داشته باشد. اگر از نوع پارامتر secret استفاده می‌کنید، حتماً در فایل PREINSTALL خود مستند کنید که افزونه شما از Cloud Secret Manager استفاده می‌کند.

اگر این فیلد حذف شود، پارامتر به طور پیش‌فرض از type string در نظر گرفته می‌شود.

options
(در صورتی که type پارامتر select یا multiSelect باشد، الزامی است)
فهرست

فهرست مقادیری که کاربر می‌تواند از بین آنها انتخاب کند

فیلدهای label و value را در فیلد options قرار دهید:

  • label (رشته) : شرح مختصری از گزینه قابل انتخاب
  • value (رشته) : مقدار واقعی گزینه قابل انتخاب

فیلد value برای فیلد options الزامی است.
اگر label حذف شود، گزینه لیست به طور پیش‌فرض روی نمایش value (show value) تنظیم می‌شود.

resourceType
(در صورتی که type پارامتر selectResource باشد، الزامی است)
رشته

نوع منبع فایربیس که کاربر باید انتخاب کند. در حال حاضر، فقط مخازن Cloud Storage از انتخابگرهای منبع پشتیبانی می‌کنند:

نوع منبع شناسه نوع
سطل Cloud Storage storage.googleapis.com/Bucket

مقادیر نامشخص resourceType نادیده گرفته می‌شوند و رابط کاربری، پارامتر را به عنوان یک فیلد ورودی string آزاد رندر می‌کند.

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

مقدار مثال برای پارامتر

validationRegex
(اختیاری)
(فقط زمانی قابل اجرا است که type پارامتر string باشد)
رشته

رشته‌ی Regex برای اعتبارسنجی مقدار پیکربندی‌شده توسط کاربر برای پارامتر

Regex با استفاده از کتابخانه go کامپایل می‌شود: RE2

برای جزئیات بیشتر در مورد اعتبارسنجی، به اعتبارسنجی و پیام‌رسانی خطا در زیر مراجعه کنید.

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

پیام خطایی که در صورت عدم موفقیت validationRegex نمایش داده می‌شود

برای جزئیات بیشتر در مورد پیام‌های خطا، به اعتبارسنجی و پیام‌های خطا در زیر مراجعه کنید.

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

مقدار پیش‌فرض برای پارامتر در صورتی که کاربر مقدار پارامتر را خالی بگذارد

در صورت لزوم، می‌توانید یک مقدار پارامتر با قابلیت پر شدن خودکار را برای مقدار default تعیین کنید (برای مثال، به پارامتر IMG_BUCKET از افزونه‌ی Resize Images مراجعه کنید).

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

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

اگر required حذف شود، این مقدار به طور پیش‌فرض برابر با true (یعنی یک پارامتر الزامی) است.

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

تعریف می‌کند که آیا کاربر می‌تواند مقدار پارامتر را پس از نصب تغییر دهد یا خیر (برای مثال، اگر افزونه را دوباره پیکربندی کند )

اگر immutable حذف شود، این مقدار به طور پیش‌فرض برابر با false خواهد بود.

نکته: اگر برای توابع پیاده‌سازی‌شده‌ی افزونه‌ی خود پارامتر "location" تعریف می‌کنید، باید این فیلد immutable را در شیء param آن قرار دهید.

اعتبارسنجی و پیام‌رسانی خطا برای مقادیر پیکربندی‌شده توسط کاربر

وقتی پارامتری با type string تنظیم می‌کنید، باید اعتبارسنجی regex مناسب را از طریق فیلد validationRegex پارامتر تعریف کنید.

همچنین، برای بسیاری از افزونه‌ها، یک مقدار پارامتر که معمولاً درخواست می‌شود، یک مسیر پایگاه داده یا مخزن Cloud Storage است. توجه داشته باشید که در طول نصب، پیکربندی مجدد یا به‌روزرسانی، سرویس Extensions موارد زیر را در زمان ورود مقدار پارامتر اعتبارسنجی نمی‌کند :

  • اینکه آیا پایگاه داده یا مخزن Cloud Storage مشخص‌شده در پروژه Firebase کاربر تنظیم شده است یا خیر.
  • آیا مسیر پایگاه داده مشخص شده در پایگاه داده کاربر وجود دارد یا خیر

با این حال، هنگامی که افزونه در واقع منابع خود را مستقر می‌کند، اگر پایگاه داده یا مخزن Cloud Storage ارجاع‌شده هنوز در پروژه راه‌اندازی نشده باشد، کنسول Firebase یا Firebase CLI یک پیام خطا نمایش می‌دهند.

اکیداً توصیه می‌کنیم که در فایل PREINSTALL به کاربران در مورد این الزامات اطلاع دهید تا وقتی افزونه شما را نصب می‌کنند، با موفقیت نصب شود و طبق انتظار کار کند.

پارامترهای سیستم

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

معمولاً نیازی نیست چیزی برای این پارامترها در extension.yaml تعریف کنید. آن‌ها به‌طور خودکار برای هر نمونه افزونه تعریف می‌شوند و کاربران می‌توانند هنگام نصب افزونه، مقادیر سفارشی خود را تنظیم کنند.

با این حال، اگر افزونه شما نیازهای منابع خاصی دارد، می‌توانید مقادیر خاصی را در سطح هر منبع در extension.yaml تنظیم کنید. این تنظیمات پیکربندی هر منبع، تنظیمات سراسری افزونه کاربر را لغو می‌کند. برای مثال:

resources:
- name: high_memory_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function needs at least 1GB of memory!
  properties:
    httpsTrigger: {}
    runtime: nodejs18
    availableMemoryMb: 1024
- name: normal_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function has no special memory requirements. It will use the
    default value, or the value of `firebaseextension.v1beta.function/memory`
  properties:
    httpsTrigger: {}
    runtime: nodejs18

پارامترهای سیستم موجود عبارتند از:

نام برچسب (مناسب برای انسان) فیلد مربوطه در properties توضیحات
تابع/مکان firebaseextensions.v1beta مکان location توابع ابری باید در کدام منطقه مستقر شوند؟
تابع/حافظه‌ی firebaseextensions.v1beta حافظه عملکرد memory به هر تابع چند مگابایت حافظه اختصاص داده شود؟
تابع/timeoutSeconds در firebaseextensions.v1beta زمان انقضای تابع timeout توابع قبل از اتمام زمان‌بندی، چند ثانیه باید اجرا شوند؟
تنظیمات خروجی firebaseextensions.v1beta.function/vpcConnectorEgress خروجی کانکتور VPC vpcConnectorEgressSettings کنترل ترافیک خروجی هنگام پیکربندی کانکتور VPC
firebaseextensions.v1beta.function/vpcConnector کانکتور VPC vpcConnector توابع ابری را به کانکتور VPC مشخص شده متصل می‌کند.
تابع/minInstances در firebaseextensions.v1beta حداقل نمونه‌های تابع minInstances حداقل تعداد نمونه‌های این تابع برای اجرا همزمان
firebaseextensions.v1beta.function/maxInstances حداکثر نمونه‌های تابع maxInstances حداکثر تعداد نمونه‌هایی از این تابع که می‌توانند همزمان اجرا شوند
firebaseextensions.v1beta.function/ingressSettings تنظیمات ورودی ingressSettings کنترل می‌کند که ترافیک ورودی از کجا پذیرفته می‌شود
تابع/برچسب‌های firebaseextensions.v1beta برچسب‌ها labels برچسب‌هایی که باید روی همه منابع موجود در افزونه اعمال شوند