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

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

এই প্যারামিটারগুলি আপনার এক্সটেনশনের ফাংশন সোর্স কোড, আপনার extension.yaml ফাইল এবং আপনার POSTINSTALL.md ফাইলে উল্লেখ করার জন্য উপলব্ধ। PARAMETER_NAME নামক একটি প্যারামিটারকে কীভাবে উল্লেখ করা যায় তার জন্য এখানে সিনট্যাক্স রয়েছে:

  • আপনার ফাংশন সোর্স কোডের মধ্যে, params মডিউল ব্যবহার করুন (উদাহরণস্বরূপ, params.defineInt(" PARAMETER_NAME ") ) বা process.env. PARAMETER_NAME

  • extension.yaml এবং POSTINSTALL.md এর মধ্যে, ${param: PARAMETER_NAME } ব্যবহার করুন।

    ইনস্টলেশনের পরে, ফায়ারবেস কনসোল POSTINSTALL.md ফাইলের বিষয়বস্তু প্রদর্শন করে এবং ইনস্টল করা উদাহরণের জন্য প্রকৃত মান সহ যেকোনো পরামিতি রেফারেন্স পূরণ করে।

স্বয়ংক্রিয় জনবহুল পরামিতি

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

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

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

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

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

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

DATABASE_URL Firebase প্রকল্পের ডিফল্ট রিয়েলটাইম ডেটাবেস ইনস্ট্যান্স 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

Firebase প্রকল্পের ডিফল্ট রিয়েলটাইম ডেটাবেস উদাহরণের নাম

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

options ক্ষেত্রের মধ্যে label এবং value ক্ষেত্র অন্তর্ভুক্ত করুন:

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

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

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

Firebase রিসোর্সের ধরন যা ব্যবহারকারীকে নির্বাচন করতে প্রম্পট করে। বর্তমানে, শুধুমাত্র ক্লাউড স্টোরেজ বালতি সম্পদ নির্বাচকদের সমর্থন করে:

সম্পদের ধরন আইডি টাইপ করুন
ক্লাউড স্টোরেজ বালতি storage.googleapis.com/Bucket

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

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

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

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

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

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

বৈধতা সম্পর্কে বিশদ বিবরণের জন্য, নীচের বৈধতা এবং ত্রুটি বার্তা পড়ুন।

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

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

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

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

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

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

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

প্যারামিটারের মানের জন্য অনুরোধ করা হলে ব্যবহারকারী একটি খালি স্ট্রিং জমা দিতে পারে কিনা তা নির্ধারণ করে

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

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

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

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

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

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

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

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

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

যাইহোক, যখন এক্সটেনশনটি প্রকৃতপক্ষে তার সংস্থানগুলি স্থাপন করছে, তখন 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 এক্সটেনশনের সমস্ত সংস্থানে প্রযোজ্য লেবেল৷