আপনার এক্সটেনশনে প্যারামিটার সেট আপ করুন এবং ব্যবহার করুন

প্যারামিটার হল সেই প্রক্রিয়া যার মাধ্যমে একজন ব্যবহারকারী একটি এক্সটেনশনের প্রতিটি ইনস্টল করা উদাহরণ কাস্টমাইজ করে। প্যারামিটারগুলি একটি এক্সটেনশনের জন্য পরিবেশের ভেরিয়েবলের মতো। প্যারামিটারগুলির মানগুলি হয় স্বয়ংক্রিয়ভাবে জনবহুল (ইনস্টলেশনের পরে 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 প্রকল্পের জন্য ডিফল্ট মান ( ডিফল্ট স্টোরেজ বাকেটের মতো) অথবা এগুলি এক্সটেনশন-নির্দিষ্ট (এক্সটেনশনের ইনস্ট্যান্স আইডির মতো)।

সমস্ত স্বয়ংক্রিয়ভাবে জনবহুল প্যারামিটার মান অপরিবর্তনীয়। প্রকল্প তৈরি বা এক্সটেনশন ইনস্টলেশনের সময় এগুলি সেট করা হয়।

যদিও Firebase এক্সটেনশনের জন্য এই প্যারামিটার মানগুলি স্বয়ংক্রিয়ভাবে পূরণ করে, Firebase ইনস্টলেশনের সময় ব্যবহারকারীর জন্য সংশ্লিষ্ট পণ্যগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করে না । এক্সটেনশন ইনস্টলকারী ব্যবহারকারীকে ইনস্টলেশনের আগে তাদের প্রকল্পে সংশ্লিষ্ট এবং প্রযোজ্য পণ্য(গুলি) সক্ষম করতে হবে। উদাহরণস্বরূপ, যদি আপনার এক্সটেনশনে Cloud Firestore জড়িত থাকে, তাহলে ব্যবহারকারীকে তাদের প্রকল্পে Cloud Firestore সেট আপ করতে হবে। আমরা আপনার ব্যবহারকারীদের PREINSTALL.md ফাইলে এই প্রয়োজনীয়তাগুলি সম্পর্কে অবহিত করার পরামর্শ দিচ্ছি।

স্বয়ংক্রিয়ভাবে জনবহুল প্যারামিটারের রেফারেন্স বিবরণ প্যারামিটার মান (ফায়ারবেস দ্বারা সরবরাহিত)
Firebase প্রকল্প থেকে ডিফল্ট মান সহ প্যারামিটার
PROJECT_ID যে Firebase প্রকল্পে এক্সটেনশনটি ইনস্টল করা আছে তার জন্য অনন্য শনাক্তকারী

সাধারণ বিন্যাস:
project-id

উদাহরণ মান:
project-123

DATABASE_URL ফায়ারবেস প্রকল্পের ডিফল্ট Realtime Database ইনস্ট্যান্স URL

সাধারণ বিন্যাস:
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 ইনস্ট্যান্স নাম

সাধারণত, এই মানটি প্রকল্প আইডির মতোই হয়, অথবা -default-rtdb দিয়ে শেষ হয়।

সাধারণ বিন্যাস:
project-id

উদাহরণ মান:
project-123

STORAGE_BUCKET ফায়ারবেস প্রকল্পের ডিফল্ট ক্লাউড স্টোরেজ বাকেট নাম

সাধারণ বিন্যাস:
PROJECT_ID .firebasestorage.app

উদাহরণ মান:
project-123.firebasestorage.app

এক্সটেনশন ইনস্টলেশন থেকে ডিফল্ট মান সহ প্যারামিটার
EXT_INSTANCE_ID

ইনস্টল করা এক্সটেনশন ইনস্ট্যান্সের জন্য অনন্য শনাক্তকারী

এই মানটি extension.yaml ফাইলে নির্দিষ্ট করা name ক্ষেত্র থেকে তৈরি করা হয়।

প্রথম ইনস্টল করা ইনস্ট্যান্সের জন্য সাধারণ বিন্যাস (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী-পরিবর্তন করা যাবে না ):
name-from-extension.yaml

উদাহরণ মান:
my-awesome-extension


দ্বিতীয়-ইনস্টল করা এবং তার পরবর্তী উদাহরণের জন্য সাধারণ বিন্যাস (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী-পরিবর্তন করা যেতে পারে ):
name-from-extension.yaml - 4-digit-alphanumeric-hash

উদাহরণ মান:
my-awesome-extension-6m31

ব্যবহারকারী-কনফিগার করা প্যারামিটার

ব্যবহারকারীকে প্রতিটি ইনস্টল করা এক্সটেনশনের উদাহরণ কাস্টমাইজ করতে সক্ষম করার জন্য, আপনি ইনস্টলেশনের সময় ব্যবহারকারীকে প্যারামিটার মান নির্দিষ্ট করতে বলতে পারেন। এই মানগুলি অনুরোধ করার জন্য, আপনি আপনার extension.yaml ফাইলের params বিভাগে প্রম্পটগুলি সেট আপ করুন।

এখানে একটি উদাহরণ 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

আপনার extension.yaml ফাইলের params বিভাগে, ব্যবহারকারী-কনফিগার করা প্যারামিটার সংজ্ঞায়িত করতে নিম্নলিখিত ক্ষেত্রগুলি ব্যবহার করুন:

মাঠ আদর্শ বিবরণ
param
(প্রয়োজনীয়)
স্ট্রিং প্যারামিটারের নাম
label
(প্রয়োজনীয়)
স্ট্রিং

প্যারামিটারের সংক্ষিপ্ত বিবরণ

ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তা প্রদর্শিত হয়

description
(ঐচ্ছিক)
স্ট্রিং

প্যারামিটারের বিস্তারিত বিবরণ

ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তা প্রদর্শিত হয়

মার্কডাউন সমর্থন করে

type
(ঐচ্ছিক)
স্ট্রিং

ব্যবহারকারী কীভাবে প্যারামিটারের মান সেট করে তার ইনপুট প্রক্রিয়া (উদাহরণস্বরূপ, সরাসরি টেক্সট লিখুন অথবা ড্রপডাউন তালিকা থেকে নির্বাচন করুন)

বৈধ মানগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • string : ফ্রি-ফর্ম টেক্সট এন্ট্রির অনুমতি দেয় (আপনার বৈধতা দ্বারা সীমাবদ্ধ validationRegex )
  • select : বিকল্পগুলির পূর্ব-নির্ধারিত তালিকা থেকে একটি এন্ট্রি নির্বাচন করার অনুমতি দেয়। যদি আপনি এই মানটি নির্দিষ্ট করেন, তাহলে আপনাকে options ক্ষেত্রটিও সংজ্ঞায়িত করতে হবে।
  • multiSelect : পূর্বনির্ধারিত বিকল্প তালিকা থেকে এক বা একাধিক এন্ট্রি নির্বাচন করার অনুমতি দেয়। যদি আপনি এই মানটি নির্দিষ্ট করেন, তাহলে আপনাকে options ক্ষেত্রটিও নির্ধারণ করতে হবে।
  • selectResource : ব্যবহারকারীর প্রকল্প থেকে একটি নির্দিষ্ট ধরণের Firebase রিসোর্স (যেমন একটি Cloud Storage বাকেট) নির্বাচন করার অনুমতি দেয়।

    যখন আপনি এই ধরণের একটি প্যারামিটার নির্দিষ্ট করবেন, ব্যবহারকারীরা ইনস্টলেশন UI-তে আরও ব্যবহারকারী-বান্ধব নির্বাচন উইজেট পাবেন; এই কারণে, যখনই সম্ভব selectResource প্যারামিটার ব্যবহার করুন।

    যদি আপনি এই মানটি নির্দিষ্ট করেন, তাহলে আপনাকে resourceType ক্ষেত্রটিও সংজ্ঞায়িত করতে হবে।

  • secret : সংবেদনশীল স্ট্রিং সংরক্ষণের অনুমতি দেয়, যেমন তৃতীয় পক্ষের পরিষেবার জন্য API কী। এই মানগুলি ক্লাউড সিক্রেট ম্যানেজারে সংরক্ষণ করা হবে।

    ক্লাউড সিক্রেট ম্যানেজার একটি পেইড পরিষেবা, যার ব্যবহারের ফলে আপনার এক্সটেনশন ইনস্টল করা ব্যবহারকারীদের চার্জ করা হতে পারে। আপনি যদি secret প্যারামিটার টাইপ ব্যবহার করেন, তাহলে আপনার PREINSTALL ফাইলে নিশ্চিত করুন যে আপনার এক্সটেনশনটি ক্লাউড সিক্রেট ম্যানেজার ব্যবহার করে।

যদি এই ক্ষেত্রটি বাদ দেওয়া হয়, তাহলে প্যারামিটারটি ডিফল্টভাবে string type হয়।

options
(প্যারামিটার type select অথবা multiSelect হলে প্রয়োজনীয়)
তালিকা

ব্যবহারকারী যে মানগুলি থেকে নির্বাচন করতে পারেন তার তালিকা

options ফিল্ডের মধ্যে label এবং value ফিল্ড অন্তর্ভুক্ত করুন:

  • label (স্ট্রিং) : নির্বাচনযোগ্য বিকল্পের সংক্ষিপ্ত বিবরণ
  • value (স্ট্রিং) : নির্বাচনযোগ্য বিকল্পের প্রকৃত মান

options ফিল্ডের জন্য value ফিল্ডটি প্রয়োজন।
যদি label বাদ দেওয়া হয়, তাহলে তালিকা বিকল্পটি ডিফল্টভাবে value প্রদর্শন করে।

resourceType
(প্যারামিটার type selectResource হলে প্রয়োজন)
স্ট্রিং

ব্যবহারকারীকে নির্বাচন করতে অনুরোধ করার জন্য Firebase রিসোর্সের ধরণ। বর্তমানে, শুধুমাত্র Cloud Storage বাকেট রিসোর্স নির্বাচকদের সমর্থন করে:

রিসোর্সের ধরণ টাইপ আইডি
Cloud Storage বাকেট storage.googleapis.com/Bucket

অজানা resourceType মানগুলি উপেক্ষা করা হবে এবং UI প্যারামিটারটিকে একটি ফ্রি-ফর্ম string ইনপুট ক্ষেত্র হিসাবে রেন্ডার করবে।

example
(ঐচ্ছিক)
স্ট্রিং

প্যারামিটারের উদাহরণ মান

validationRegex
(ঐচ্ছিক)
(শুধুমাত্র তখনই প্রযোজ্য যখন প্যারামিটারের type string হয়)
স্ট্রিং

প্যারামিটারের ব্যবহারকারী-কনফিগার করা মানের যাচাইকরণের জন্য রেজেক্স স্ট্রিং

রেজেক্স গো লাইব্রেরি ব্যবহার করে কম্পাইল করা হয়েছে: RE2

যাচাইকরণ সম্পর্কে বিস্তারিত জানার জন্য, নীচে যাচাইকরণ এবং ত্রুটি বার্তা দেখুন।

validationErrorMessage
(ঐচ্ছিক)
স্ট্রিং

validationRegex

ত্রুটি বার্তা সম্পর্কে বিস্তারিত জানার জন্য, নীচের যাচাইকরণ এবং ত্রুটি বার্তা দেখুন।

default
(ঐচ্ছিক)
স্ট্রিং

ব্যবহারকারী যদি প্যারামিটারের মান খালি রাখে, তাহলে প্যারামিটারের ডিফল্ট মান

প্রযোজ্য হলে, আপনি default মানের জন্য একটি স্বয়ংক্রিয়ভাবে জনবহুল প্যারামিটার মান নির্দিষ্ট করতে পারেন (উদাহরণস্বরূপ, Resize Images এক্সটেনশনের IMG_BUCKET প্যারামিটারটি দেখুন)।

required
(ঐচ্ছিক)
বুলিয়ান

ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তারা খালি স্ট্রিং জমা দিতে পারবে কিনা তা নির্ধারণ করে।

যদি required বাদ দেওয়া হয়, তাহলে এই মানটি ডিফল্টভাবে true (অর্থাৎ, একটি প্রয়োজনীয় প্যারামিটার) হয়।

immutable
(ঐচ্ছিক)
বুলিয়ান

ইনস্টলেশনের পরে ব্যবহারকারী প্যারামিটারের মান পরিবর্তন করতে পারবে কিনা তা নির্ধারণ করে (উদাহরণস্বরূপ, যদি তারা এক্সটেনশনটি পুনরায় কনফিগার করে )

যদি immutable বাদ দেওয়া হয়, তাহলে এই মানটি ডিফল্টভাবে false হয়ে যাবে।

দ্রষ্টব্য: যদি আপনি আপনার এক্সটেনশনের ডিপ্লয়েড ফাংশনের জন্য একটি "location" প্যারামিটার সংজ্ঞায়িত করেন, তাহলে আপনার এই immutable ক্ষেত্রটি এর প্যারাম অবজেক্টে অন্তর্ভুক্ত করা উচিত।

ব্যবহারকারী-কনফিগার করা মানগুলির জন্য বৈধতা এবং ত্রুটি বার্তা

যখন আপনি string এর type দিয়ে একটি প্যারামিটার সেট আপ করেন, তখন আপনাকে প্যারামিটারের validationRegex ক্ষেত্রের মাধ্যমে উপযুক্ত regex বৈধতা নির্ধারণ করতে হবে।

এছাড়াও, অনেক এক্সটেনশনের জন্য, সাধারণত অনুরোধ করা প্যারামিটার মান হল একটি ডাটাবেস পাথ বা Cloud Storage বাকেট। মনে রাখবেন যে ইনস্টল, পুনর্গঠন বা আপডেটের সময়, Extensions পরিষেবা প্যারামিটার মান এন্ট্রির সময় নিম্নলিখিতগুলি যাচাই করে না :

  • নির্দিষ্ট ডাটাবেস বা Cloud Storage বাকেট ব্যবহারকারীর ফায়ারবেস প্রকল্পের মধ্যে সেট আপ করা আছে কিনা
  • নির্দিষ্ট ডাটাবেস পাথটি ব্যবহারকারীর ডাটাবেসের মধ্যে বিদ্যমান কিনা

তবে, যখন এক্সটেনশনটি আসলে তার রিসোর্স স্থাপন করছে, তখন যদি প্রকল্পে রেফারেন্সড ডাটাবেস বা Cloud Storage বাকেট এখনও সেট আপ না করা থাকে তবে Firebase কনসোল বা Firebase সিএলআই একটি ত্রুটি বার্তা প্রদর্শন করবে।

আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি 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.function/location সম্পর্কে স্থান location ক্লাউড ফাংশন কোন অঞ্চলে স্থাপন করা উচিত?
firebaseextensions.v1beta.function/memory সম্পর্কে ফাংশন মেমোরি memory প্রতিটি ফাংশনের জন্য কত মেগাবাইট মেমোরি বরাদ্দ করা উচিত?
firebaseextensions.v1beta.function/timeoutসেকেন্ড ফাংশন টাইমআউট timeout টাইমিং আউট হওয়ার আগে ফাংশনগুলি কত সেকেন্ড চালানো উচিত?
firebaseextensions.v1beta.function/vpcConnectorEgressSettings ভিপিসি সংযোগকারী এগ্রেস vpcConnectorEgressSettings যখন একটি VPC সংযোগকারী কনফিগার করা হয় তখন বহির্গামী ট্র্যাফিক নিয়ন্ত্রণ করে
firebaseextensions.v1beta.function/vpcConnector সম্পর্কে ভিপিসি সংযোগকারী vpcConnector নির্দিষ্ট VPC সংযোগকারীর সাথে ক্লাউড ফাংশন সংযুক্ত করে।
firebaseextensions.v1beta.function/minInstances সম্পর্কে ন্যূনতম ফাংশন উদাহরণ minInstances এই ফাংশনের সর্বনিম্ন কতগুলি উদাহরণ একবারে চালানো হবে
firebaseextensions.v1beta.function/maxInstances সম্পর্কে সর্বাধিক ফাংশন উদাহরণ maxInstances এই ফাংশনের সর্বোচ্চ কতটি উদাহরণ একসাথে চালানো হবে
firebaseextensions.v1beta.function/ingressSettings প্রবেশ সেটিংস ingressSettings কোথা থেকে আগত ট্র্যাফিক গ্রহণ করা হবে তা নিয়ন্ত্রণ করে
firebaseextensions.v1beta.function/labels সম্পর্কে লেবেল labels এক্সটেনশনের সমস্ত রিসোর্সে প্রয়োগ করার জন্য লেবেল