প্যারামিটার হল সেই প্রক্রিয়া যার মাধ্যমে একজন ব্যবহারকারী একটি এক্সটেনশনের প্রতিটি ইনস্টল করা উদাহরণ কাস্টমাইজ করে। প্যারামিটারগুলি একটি এক্সটেনশনের জন্য পরিবেশের ভেরিয়েবলের মতো। প্যারামিটারগুলির মানগুলি হয় স্বয়ংক্রিয়ভাবে জনবহুল (ইনস্টলেশনের পরে 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 প্রকল্পে এক্সটেনশনটি ইনস্টল করা আছে তার জন্য অনন্য শনাক্তকারী | সাধারণ বিন্যাস: উদাহরণ মান: |
DATABASE_URL | ফায়ারবেস প্রকল্পের ডিফল্ট Realtime Database ইনস্ট্যান্স URL | সাধারণ বিন্যাস: উদাহরণ মান: |
DATABASE_INSTANCE | ফায়ারবেস প্রকল্পের ডিফল্ট Realtime Database ইনস্ট্যান্স নাম সাধারণত, এই মানটি প্রকল্প আইডির মতোই হয়, অথবা | সাধারণ বিন্যাস: উদাহরণ মান: |
STORAGE_BUCKET | ফায়ারবেস প্রকল্পের ডিফল্ট ক্লাউড স্টোরেজ বাকেট নাম | সাধারণ বিন্যাস: উদাহরণ মান: |
| এক্সটেনশন ইনস্টলেশন থেকে ডিফল্ট মান সহ প্যারামিটার | ||
EXT_INSTANCE_ID | ইনস্টল করা এক্সটেনশন ইনস্ট্যান্সের জন্য অনন্য শনাক্তকারী এই মানটি | প্রথম ইনস্টল করা ইনস্ট্যান্সের জন্য সাধারণ বিন্যাস (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী-পরিবর্তন করা যাবে না ): উদাহরণ মান: দ্বিতীয়-ইনস্টল করা এবং তার পরবর্তী উদাহরণের জন্য সাধারণ বিন্যাস (ফায়ারবেস দ্বারা স্বয়ংক্রিয়ভাবে নির্ধারিত; ইনস্টলেশনের সময় ব্যবহারকারী-পরিবর্তন করা যেতে পারে ): উদাহরণ মান: |
ব্যবহারকারী-কনফিগার করা প্যারামিটার
ব্যবহারকারীকে প্রতিটি ইনস্টল করা এক্সটেনশনের উদাহরণ কাস্টমাইজ করতে সক্ষম করার জন্য, আপনি ইনস্টলেশনের সময় ব্যবহারকারীকে প্যারামিটার মান নির্দিষ্ট করতে বলতে পারেন। এই মানগুলি অনুরোধ করার জন্য, আপনি আপনার 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(ঐচ্ছিক) | স্ট্রিং | ব্যবহারকারী কীভাবে প্যারামিটারের মান সেট করে তার ইনপুট প্রক্রিয়া (উদাহরণস্বরূপ, সরাসরি টেক্সট লিখুন অথবা ড্রপডাউন তালিকা থেকে নির্বাচন করুন) বৈধ মানগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
যদি এই ক্ষেত্রটি বাদ দেওয়া হয়, তাহলে প্যারামিটারটি ডিফল্টভাবে | ||||
options(প্যারামিটার type select অথবা multiSelect হলে প্রয়োজনীয়) | তালিকা | ব্যবহারকারী যে মানগুলি থেকে নির্বাচন করতে পারেন তার তালিকা
| ||||
resourceType(প্যারামিটার type selectResource হলে প্রয়োজন) | স্ট্রিং | ব্যবহারকারীকে নির্বাচন করতে অনুরোধ করার জন্য Firebase রিসোর্সের ধরণ। বর্তমানে, শুধুমাত্র Cloud Storage বাকেট রিসোর্স নির্বাচকদের সমর্থন করে:
অজানা | ||||
example(ঐচ্ছিক) | স্ট্রিং | প্যারামিটারের উদাহরণ মান | ||||
validationRegex(ঐচ্ছিক) (শুধুমাত্র তখনই প্রযোজ্য যখন প্যারামিটারের type string হয়) | স্ট্রিং | প্যারামিটারের ব্যবহারকারী-কনফিগার করা মানের যাচাইকরণের জন্য রেজেক্স স্ট্রিং রেজেক্স গো লাইব্রেরি ব্যবহার করে কম্পাইল করা হয়েছে: RE2 যাচাইকরণ সম্পর্কে বিস্তারিত জানার জন্য, নীচে যাচাইকরণ এবং ত্রুটি বার্তা দেখুন। | ||||
validationErrorMessage(ঐচ্ছিক) | স্ট্রিং | ত্রুটি বার্তা সম্পর্কে বিস্তারিত জানার জন্য, নীচের যাচাইকরণ এবং ত্রুটি বার্তা দেখুন। | ||||
default(ঐচ্ছিক) | স্ট্রিং | ব্যবহারকারী যদি প্যারামিটারের মান খালি রাখে, তাহলে প্যারামিটারের ডিফল্ট মান প্রযোজ্য হলে, আপনি | ||||
required(ঐচ্ছিক) | বুলিয়ান | ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তারা খালি স্ট্রিং জমা দিতে পারবে কিনা তা নির্ধারণ করে। যদি | ||||
immutable(ঐচ্ছিক) | বুলিয়ান | ইনস্টলেশনের পরে ব্যবহারকারী প্যারামিটারের মান পরিবর্তন করতে পারবে কিনা তা নির্ধারণ করে (উদাহরণস্বরূপ, যদি তারা এক্সটেনশনটি পুনরায় কনফিগার করে ) যদি দ্রষ্টব্য: যদি আপনি আপনার এক্সটেনশনের ডিপ্লয়েড ফাংশনের জন্য একটি "location" প্যারামিটার সংজ্ঞায়িত করেন, তাহলে আপনার এই |
ব্যবহারকারী-কনফিগার করা মানগুলির জন্য বৈধতা এবং ত্রুটি বার্তা
যখন আপনি 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 | এক্সটেনশনের সমস্ত রিসোর্সে প্রয়োগ করার জন্য লেবেল |