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