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

প্যারামিটার হলো এমন একটি ব্যবস্থা যার মাধ্যমে একজন ব্যবহারকারী কোনো এক্সটেনশনের ইনস্টল করা প্রতিটি ইনস্ট্যান্সকে নিজের মতো করে সাজিয়ে নিতে পারেন। প্যারামিটারগুলো একটি এক্সটেনশনের এনভায়রনমেন্ট ভেরিয়েবলের মতো। প্যারামিটারের মানগুলো হয় স্বয়ংক্রিয়ভাবে পূরণ হয়ে যেতে পারে (যা ইনস্টলেশনের পর ফায়ারবেস সরবরাহ করে) অথবা ব্যবহারকারী কর্তৃক কনফিগার করা যেতে পারে (যা ইনস্টলেশনের সময় ব্যবহারকারী নির্দিষ্ট করে দেন)।

এই প্যারামিটারগুলো আপনি আপনার এক্সটেনশনের ফাংশন সোর্স কোড, 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 ফাইলের বিষয়বস্তু প্রদর্শন করে এবং ইনস্টল করা ইনস্ট্যান্সের প্রকৃত মান দিয়ে যেকোনো প্যারামিটার রেফারেন্স পূরণ করে।

স্বয়ংক্রিয়ভাবে পূরণ করা প্যারামিটার

একটি এক্সটেনশনের প্রতিটি ইনস্টল করা ইনস্ট্যান্স স্বয়ংক্রিয়ভাবে ফায়ারবেস দ্বারা প্রদত্ত বেশ কিছু ডিফল্ট প্যারামিটার অ্যাক্সেস করতে পারে (নীচের টেবিলটি দেখুন)। এই প্যারামিটার মানগুলি হয় ফায়ারবেস প্রকল্পের ডিফল্ট মান (যেমন ডিফল্ট স্টোরেজ বাকেট) অথবা এক্সটেনশন-নির্দিষ্ট (যেমন এক্সটেনশনটির ইনস্ট্যান্স আইডি)।

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

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

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

সাধারণ বিন্যাস:
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 : ব্যবহারকারীর প্রজেক্ট থেকে একটি নির্দিষ্ট ধরনের ফায়ারবেস রিসোর্স (যেমন Cloud Storage বাকেট) নির্বাচন করার সুযোগ দেয়।

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

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

  • secret : এটি তৃতীয় পক্ষের পরিষেবাগুলির API কী-এর মতো সংবেদনশীল স্ট্রিং সংরক্ষণের অনুমতি দেয়। এই মানগুলি Cloud Secret Manager- এ সংরক্ষিত হবে।

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

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

options
(প্যারামিটারের type select বা multiSelect হলে আবশ্যক)
তালিকা

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

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

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

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

resourceType
(প্যারামিটার type selectResource হলে আবশ্যক)
স্ট্রিং

ব্যবহারকারীকে কোন ধরনের ফায়ারবেস রিসোর্স বেছে নিতে বলা হবে। বর্তমানে, শুধুমাত্র Cloud Storage বাকেটগুলোই রিসোর্স সিলেক্টর সমর্থন করে:

সম্পদের ধরণ টাইপ আইডি
Cloud Storage বালতি storage.googleapis.com/Bucket

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

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

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

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

প্যারামিটারের ব্যবহারকারী-নির্ধারিত মান যাচাই করার জন্য রেজেক্স স্ট্রিং।

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

ভ্যালিডেশন সম্পর্কে বিস্তারিত জানতে, নিচে দেওয়া ভ্যালিডেশন এবং এরর মেসেজিং অংশটি দেখুন।

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

validationRegex ব্যর্থ হলে প্রদর্শিত হওয়ার জন্য ত্রুটি বার্তা।

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

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

ব্যবহারকারী প্যারামিটারের মান খালি রাখলে, প্যারামিটারটির জন্য এটিই হবে ডিফল্ট মান।

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

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

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

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

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

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

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

দ্রষ্টব্য: যদি আপনি আপনার এক্সটেনশনের ডেপ্লয় করা ফাংশনগুলির জন্য একটি 'location' প্যারামিটার নির্ধারণ করেন, তাহলে আপনাকে এর param অবজেক্টে এই immutable ফিল্ডটি অন্তর্ভুক্ত করতে হবে।

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

যখন আপনি string type কোনো প্যারামিটার সেট আপ করেন, তখন আপনাকে প্যারামিটারটির validationRegex ফিল্ডের মাধ্যমে উপযুক্ত রেজেক্স ভ্যালিডেশন সংজ্ঞায়িত করতে হবে।

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

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

তবে, এক্সটেনশনটি যখন তার রিসোর্সগুলো ডেপ্লয় করে, তখন যদি প্রজেক্টে উল্লেখিত ডাটাবেস বা 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.function/location অবস্থান location ক্লাউড ফাংশনগুলো কোন অঞ্চলে স্থাপন করা উচিত?
firebaseextensions.v1beta.function/memory ফাংশন মেমরি memory প্রতিটি ফাংশনের জন্য কত মেগাবাইট মেমরি বরাদ্দ করা উচিত?
firebaseextensions.v1beta.function/timeoutSeconds ফাংশন টাইমআউট 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 এক্সটেনশনের সমস্ত রিসোর্সে প্রয়োগ করার জন্য লেবেল