আপনার এক্সটেনশনের স্পেসিফিকেশন ফাইলে (extension.yaml) আপনার এক্সটেনশনের
মেটাডেটা থাকে, এক্সটেনশন দ্বারা তৈরি রিসোর্স এবং এক্সটেনশনের জন্য প্রয়োজনীয় API এবং
অ্যাক্সেস ঘোষণা করে এবং এক্সটেনশন দ্বারা প্রদত্ত যেকোনও ব্যবহারকারী-কনফিগার করা প্যারামিটার
সংজ্ঞায়িত করে।
এই পৃষ্ঠার সারণীতে extension.yaml
ফাইলের জন্য উপলভ্য ফিল্ডের বিবরণ দেওয়া আছে।
প্রাথমিক ও শনাক্তকরণ তথ্য
name: your-extension-name
version: 1.0.0 # Semantic versioning (semver)
specVersion: v1beta # Always "v1beta"
license: Apache-2.0 # Always "Apache-2.0" (required to publish on extensions.dev)
billingRequired: true # Always "true"
displayName: Your extension name
description: >-
Description of the extension. (One or two
sentences.)
icon: icon.png
tags: [tag, anothertag]
sourceUrl: https://github.com/your-org/your-repo # GitHub repo URL
releaseNotesUrl: https://github.com/your-org/your-repo/blob/main/CHANGELOG.md
author:
authorName: Your Company
email: extensions@example.com
url: https://example.com/
contributors:
- authorName: Your Name
- authorName: Another Contributor
email: colleague@example.net
url: https://github.com/their-org/
| প্রাথমিক ফিল্ড | |||||||||
|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশনের জন্য শনাক্তকারী। শুধু ছোট হাতের অক্ষর, সংখ্যা ও ড্যাশ থাকতে পারে; ৪০টি অক্ষরের সীমা। মনে রাখবেন: এই ভ্যালু এক্সটেনশনের ইনস্ট্যান্স আইডি তৈরি করতে ব্যবহার করা হয় (যা পরে এক্সটেনশনের পরিষেবা অ্যাকাউন্ট এবং এক্সটেনশন-নির্দিষ্ট রিসোর্সের নাম তৈরি করতে ব্যবহার করা হয়)। |
||||||||
versionস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশনের ভার্সন। সেমভার ভার্সনিং (যেমন, ১.২.০) অনুসরণ করতে হবে। |
||||||||
specVersionস্ট্রিং (প্রয়োজনীয়) |
Firebase এক্সটেনশন স্পেসিফিকেশনের ভার্সন। বর্তমান মান: |
||||||||
licenseস্ট্রিং (ঐচ্ছিক) |
এক্সটেনশনের জন্য লাইসেন্স। আপনার এক্সটেনশন অবশ্যই |
||||||||
billingRequiredবুলিয়ান (ঐচ্ছিক) |
এক্সটেনশনের মাধ্যমে ব্যবহার করা পরিষেবার জন্য পেড-টিয়ার Firebase বিলিং অ্যাকাউন্ট প্রয়োজন কিনা। সবসময় |
||||||||
displayNameস্ট্রিং (ঐচ্ছিক) |
এক্সটেনশনের জন্য পছন্দসই ডিসপ্লে নাম (৩-৫টি শব্দ)। ৪০টি অক্ষরের সীমা। |
||||||||
descriptionস্ট্রিং (ঐচ্ছিক) |
আপনার এক্সটেনশন যে টাস্কটি করে তার সংক্ষিপ্ত বিবরণ (~১টি বাক্য)। | ||||||||
iconস্ট্রিং (ঐচ্ছিক) |
এই ফাইলটি অবশ্যই ৫১২x৫১২ এবং ১০২৪x১০২৪ পিক্সেলের মধ্যে একটি বর্গাকার PNG হতে হবে।
আপনার এক্সটেনশনের জন্য আইকন ডিজাইন করার সময় নিম্নলিখিত নির্দেশিকা মনে রাখবেন:
|
||||||||
tagsস্ট্রিংয়ের তালিকা (ঐচ্ছিক) |
ব্যবহারকারীদের আপনার এক্সটেনশন খুঁজে পেতে সাহায্য করার জন্য ট্যাগ।
নিম্নলিখিত ট্যাগগুলি Extensions Hub-এর বিভাগগুলির সাথে ম্যাপ করে:
marketing,
messaging,
payments,
search,
shipping,
social,
utilities,
ai
|
||||||||
sourceUrlস্ট্রিং (ঐচ্ছিক) |
সর্বজনীন URL যেখানে এক্সটেনশন ডিরেক্টরি অ্যাক্সেস করা যেতে পারে। | ||||||||
releaseNotesUrlস্ট্রিং (ঐচ্ছিক) |
পাবলিক URL যেখানে এক্সটেনশনের রিলিজ নোট অ্যাক্সেস করা যাবে। | ||||||||
authorএকজন লেখকের অবজেক্ট (ঐচ্ছিক) |
এক্সটেনশনের জন্য প্রাথমিক লেখক এবং যোগাযোগের পয়েন্ট। author: authorName: Your Company email: extensions@example.com url: https://example.com/
|
||||||||
contributorsলেখক অবজেক্টের তালিকা (ঐচ্ছিক) |
এক্সটেনশনের জন্য অতিরিক্ত কন্ট্রিবিউটর লেখক। contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
|
||||||||
Firebase ও Google Cloud API
এইসব ফিল্ড এক্সটেনশনের ব্যবহার করা Firebase ও Google API নির্দিষ্ট করে। ব্যবহারকারীরা এক্সটেনশন ইনস্টল করার সময়, তাদের প্রোজেক্টে অটোমেটিক এইসব API চালু করার বিকল্প বেছে নিতে পারেন।
apis:
- apiName: apiname.googleapis.com
reason: Explanation of why the extension uses this API
- apiName: anotherapiname.googleapis.com
reason: Explanation of why the extension uses this API
| API ফিল্ড | |
|---|---|
apiNameস্ট্রিং (প্রয়োজনীয়) |
Google API-এর নাম Google Cloud API লাইব্রেরি-তে প্রতিটি API-এর ওভারভিউ পৃষ্ঠায় (উদাহরণ) তালিকাভুক্ত পরিষেবার নাম ফিল্ডের সাথে মিল থাকতে হবে |
reasonস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশনকে কেন এই API ব্যবহার করতে হবে তার সংক্ষিপ্ত বিবরণ |
IAM ভূমিকা
এইসব ফিল্ড এক্সটেনশনের জন্য প্রয়োজনীয় Cloud IAM ভূমিকা নির্দিষ্ট করে। এক্সটেনশনের জন্য প্রভিশন করা পরিষেবা অ্যাকাউন্টকে এইসব ভূমিকা দেওয়া হয়েছে।
আপনি শুধুমাত্র কাজ করে এমন ভূমিকার মধ্যে একটি উল্লেখ করতে পারবেন।
roles:
- role: product.role
reason: Explanation of why the extension needs this level of access
- role: anotherproduct.role
resource: projects/${project_id}/resource_type/*
reason: Explanation of why the extension needs this level of access
| ভূমিকা ফিল্ড | |
|---|---|
roleস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশন অপারেট করার জন্য প্রয়োজনীয় IAM রোলের নাম অবশ্যই কাজ করে এমন ভূমিকা হতে হবে |
reasonস্ট্রিং (প্রয়োজনীয়) |
এই ভূমিকা দ্বারা প্রদত্ত অ্যাক্সেস এক্সটেনশনের কেন প্রয়োজন তার সংক্ষিপ্ত বিবরণ এই ভূমিকা |
resourceস্ট্রিং (ঐচ্ছিক) |
এই রিসোর্সের জন্য ভূমিকার পরিধি সীমিত করুন। বাদ দেওয়া হলে, ডিফল্ট হিসেবে |
এক্সটার্নাল পরিষেবা
এইসব ফিল্ড এক্সটেনশনের ব্যবহার করা নন-Firebase এবং নন-Google পরিষেবা নির্দিষ্ট করে (সাধারণত REST API)। Firebase Extensions প্ল্যাটফর্ম এইসব পরিষেবার জন্য অটোমেটিক চালু বা পারফর্ম করার কোনও উপায় প্রদান করে না।
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| এক্সটার্নাল পরিষেবা ফিল্ড | |
|---|---|
nameস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশন কাজ করার জন্য প্রয়োজনীয় এক্সটার্নাল পরিষেবার নাম |
pricingUriস্ট্রিং (প্রয়োজনীয়) |
পরিষেবার জন্য দাম সংক্রান্ত তথ্যের URI |
ব্যবহারকারী-কনফিগারযোগ্য প্যারামিটার
এইসব ফিল্ড সেইসব প্যারামিটার নির্ধারণ করে যা এক্সটেনশন ব্যবহারকারীদের কনফিগার করার জন্য উপলভ্য করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What do you want to set PARAM_ID to?
This is a longer description of the parameter, often phrased as a prompt
to the user.
- param: ANOTHER_PARAM_ID
label: Short description of the parameter
description: >
What do you want to set ANOTHER_PARAM_ID to?
This is a longer description of the parameter.
example: example-input
validationRegex: "^[a-zA-Z][a-zA-Z-]*[a-zA-Z]?$"
validationErrorMessage:
Must be a hyphen-delimited string of alphabetic characters
default: default-value
required: false
immutable: true
| প্যারামিটার ফিল্ড | |
|---|---|
paramস্ট্রিং (প্রয়োজনীয়) |
প্যারামিটারের নাম। কোডে প্যারামিটারের মান উল্লেখ করতে আপনি এই নাম ব্যবহার করেন। |
labelস্ট্রিং (প্রয়োজনীয়) |
প্যারামিটারের সংক্ষিপ্ত বিবরণ। প্যারামিটারের ভ্যালুর জন্য প্রম্পট করা হলে ব্যবহারকারীকে দেখানো হয়। |
descriptionস্ট্রিং (ঐচ্ছিক) |
প্যারামিটারের বিস্তারিত বিবরণ। ব্যবহারকারীকে প্যারামিটারের ভ্যালু প্রম্পট করা হলে এটি দেখানো হয়। মার্কডাউন কাজ করে। |
exampleস্ট্রিং (ঐচ্ছিক) |
প্যারামিটারের জন্য উদাহরণ হিসেবে দেওয়া ভ্যালু। |
defaultস্ট্রিং (ঐচ্ছিক) |
ব্যবহারকারী প্যারামিটারের ভ্যালু ফাঁকা রাখলে, প্যারামিটারের ডিফল্ট ভ্যালু। |
validationRegexস্ট্রিং (ঐচ্ছিক) |
প্যারামিটারের ব্যবহারকারী-কনফিগার করা ভ্যালু যাচাই করার জন্য রেগুলার এক্সপ্রেশন। Google RE2 সিনট্যাক্স। |
validationErrorMessageস্ট্রিং (ঐচ্ছিক) |
Regex যাচাইকরণ ব্যর্থ হলে দেখানোর জন্য ত্রুটি মেসেজ। |
requiredবুলিয়ান (ঐচ্ছিক) |
প্যারামিটারের ভ্যালুর জন্য প্রম্পট করা হলে, ব্যবহারকারী খালি স্ট্রিং জমা দিতে পারবেন কিনা তা নির্ধারণ করে। ডিফল্ট হিসেবে true সেট করা থাকে।
|
immutableবুলিয়ান (ঐচ্ছিক) |
ইনস্টল করার পরে ব্যবহারকারী প্যারামিটারের ভ্যালু পরিবর্তন করতে পারবেন কিনা তা নির্ধারণ করে (যেমন, তারা এক্সটেনশনটি আবার কনফিগার করলে)। ডিফল্ট হিসেবে
মনে রাখবেন: আপনার এক্সটেনশনের ডিপ্লয় করা ফাংশনের জন্য "লোকেশন" প্যারামিটার নির্ধারণ করলে, এই ফিল্ডটি |
typeস্ট্রিং (ঐচ্ছিক) |
প্যারামিটারের ধরন। বিশেষ প্যারামিটারের ধরনের ক্ষেত্রে অতিরিক্ত প্রয়োজনীয়তা বা অন্য ধরনের UI প্রেজেন্টেশন থাকতে পারে। নিচের বিভাগগুলি দেখুন। |
বেছে নেওয়া যায় এবং একাধিক বেছে নেওয়া যায় এমন প্যারামিটার
বেছে নেওয়া যায় এবং একাধিক বেছে নেওয়া যায় এমন প্যারামিটার ব্যবহারকারীদের আগে থেকে নির্ধারিত বিকল্পের তালিকা থেকে বেছে নিতে প্রম্পট করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
Do you want to enable the option?
type: select
options:
- label: Yes
value: true
- label: No
value: false
- param: ANOTHER_PARAM_ID
label: Short description of the parameter
description: >-
Which options do you want to enable?
type: multiSelect
options:
- value: red
- value: green
- value: blue
| একাধিক পছন্দের প্যারামিটার ফিল্ড | |||||||
|---|---|---|---|---|---|---|---|
typeস্ট্রিং |
প্যারামিটারটি একটি ভ্যালু ( |
||||||
optionsবিকল্পের তালিকা (প্রয়োজন) |
ব্যবহারকারী যেসব বিকল্প থেকে বেছে নিতে পারবেন
|
||||||
বেছে নেওয়ার মতো রিসোর্স প্যারামিটার
বেছে নেওয়ার মতো রিসোর্স প্যারামিটার ব্যবহারকারীদের তাদের প্রোজেক্ট থেকে একটি রিসোর্স (ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট ইত্যাদি) বেছে নিতে প্রম্পট করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
Which resource do you want to use?
type: selectresource
resourceType: product.googleapis.com/ResourceType
| রিসোর্স প্যারামিটার ফিল্ড | |
|---|---|
typeস্ট্রিং |
প্যারামিটারটি যে প্রোজেক্ট রিসোর্সকে দেখায় তা নির্দিষ্ট করে |
resourceTypeস্ট্রিং (প্রয়োজনীয়) |
ব্যবহারকারীকে বেছে নেওয়ার জন্য প্রম্পট করতে রিসোর্সের ধরন। বৈধ মানসমূহ:
তবে, বর্তমানে শুধুমাত্র Cloud Storage বাকেটে একটি সিলেকশন UI আছে (অন্যান্য রিসোর্সের ধরন ফ্রি-ফর্ম টেক্সট ইনপুট ফিল্ড হিসেবে দেখানো হয়)। |
গোপন প্যারামিটার
ব্যবহারকারীর প্রদান করা গোপন ভ্যালু (যেমন API কী) আলাদাভাবে ম্যানেজ করা হয়:
- Cloud Secret Manager ব্যবহার করে সিক্রেট ভ্যালু স্টোর করা হয়। শুধুমাত্র অনুমোদিত ক্লায়েন্ট (যেমন, ইনস্টল করা এক্সটেনশনের ইনস্ট্যান্স) এইসব ভ্যালু অ্যাক্সেস করতে পারে।
- ব্যবহারকারীদের এইসব ভ্যালু প্রদান করার জন্য প্রম্পট করা হলে, তাদের ইনপুট দেখানো হয় না।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| সিক্রেট প্যারামিটার ফিল্ড | |
|---|---|
typeস্ট্রিং |
প্যারামিটারটি যে একটি গোপন ভ্যালু তা নির্দিষ্ট করে |
Cloud Function রিসোর্স
এইসব ফিল্ড এক্সটেনশনে অন্তর্ভুক্ত Cloud Functions ঘোষণা করে। ফার্স্ট-জেনারেশন ও সেকেন্ড-জেনারেশন ফাংশনের মধ্যে রিসোর্স ঘোষণা করার সিনট্যাক্স একটু আলাদা দেখায়, যা একটি এক্সটেনশনে সহাবস্থান করতে পারে।
ফার্স্ট জেনারেশন Cloud Functions
resources:
- name: functionName
type: firebaseextensions.v1beta.function
description: >-
Description of what the function does. (One or two
sentences.)
properties:
runtime: runtime-version
eventTrigger:
eventType: google.product.event
resource: projects/_/resource/specifier
| রিসোর্স ফিল্ড | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) |
এক্সপোর্ট করা ফাংশনের জন্য ব্যবহার করা সহজ এমন নাম। আপনি ডেপ্লয় করা ফাংশনের চূড়ান্ত নাম নিম্নলিখিত ফর্ম্যাটে
হবে:
|
||||||||||||||||
typeস্ট্রিং (প্রয়োজনীয়) |
ফার্স্ট জেনারেশন ফাংশন রিসোর্সের জন্য:
firebaseextensions.v1beta.function
|
||||||||||||||||
descriptionস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশনের জন্য ফাংশনটি কী কাজ করে তার সংক্ষিপ্ত বিবরণ। |
||||||||||||||||
properties(প্রয়োজনীয়) |
ফার্স্ট জেনারেশন Cloud Functions প্রপার্টি। সবচেয়ে গুরুত্বপূর্ণ প্রপার্টি নিচে তালিকাভুক্ত করা হয়েছে, তবে আপনি সম্পূর্ণ তালিকা Cloud Functions রেফারেন্স-এ খুঁজে পাবেন।
|
||||||||||||||||
২য়-জেনারেশন Cloud Functions
resources:
- name: functionName
type: firebaseextensions.v1beta.v2function
description: >-
Description of what the function does. (One or two
sentences.)
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
| রিসোর্স ফিল্ড | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) |
এক্সপোর্ট করা ফাংশনের জন্য ব্যবহার করা সহজ এমন নাম। আপনি ডেপ্লয় করা ফাংশনের চূড়ান্ত নাম নিম্নলিখিত ফর্ম্যাটে
হবে:
|
||||||||||||||||||||||||||||
typeস্ট্রিং (প্রয়োজনীয়) |
২য়-জেনারেশন ফাংশন রিসোর্সের জন্য:
firebaseextensions.v1beta.v2function
|
||||||||||||||||||||||||||||
descriptionস্ট্রিং (প্রয়োজনীয়) |
এক্সটেনশনের জন্য ফাংশনটি কী কাজ করে তার সংক্ষিপ্ত বিবরণ। |
||||||||||||||||||||||||||||
properties(প্রয়োজনীয়) |
২য়-জেনারেশন Cloud Functions প্রপার্টি। সবচেয়ে গুরুত্বপূর্ণ প্রপার্টি নিচে তালিকাভুক্ত করা হয়েছে, তবে আপনি সম্পূর্ণ তালিকা Cloud Functions রেফারেন্স-এ খুঁজে পাবেন।
এছাড়াও, নিজস্ব প্রপার্টি সহ তিনটি অবজেক্ট-টাইপ ফিল্ড আছে:
|
||||||||||||||||||||||||||||
লাইফসাইকেল ইভেন্ট
লাইফসাইকেল ইভেন্ট আপনাকে এমন ফাংশন নির্দিষ্ট করতে দেয় যা কোনও ব্যবহারকারী আপনার এক্সটেনশনের ইনস্ট্যান্স ইনস্টল, আপডেট বা কনফিগার করার সময় রান করবে। আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্ট ম্যানেজ করুন দেখুন।
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Describes the task being completed
onUpdate:
function: myOtherTaskFunction
processingMessage: Describes the task being completed
onConfigure:
function: myOtherTaskFunction
processingMessage: Describes the task being completed
| লাইফসাইকেল ইভেন্ট ফিল্ড | |||||||
|---|---|---|---|---|---|---|---|
onInstall(ঐচ্ছিক) |
ব্যবহারকারী এক্সটেনশন ইনস্টল করলে রান করে এমন ফাংশন নির্দিষ্ট করে।
|
||||||
onUpdate(ঐচ্ছিক) |
ব্যবহারকারী এক্সটেনশন আপডেট করলে রান করে এমন ফাংশন নির্দিষ্ট করে।
|
||||||
onConfigure(ঐচ্ছিক) |
ব্যবহারকারী এক্সটেনশন আবার কনফিগার করলে, রান করে এমন একটি ফাংশন নির্দিষ্ট করে।
|
||||||
কাস্টম ইভেন্ট (Eventarc)
কাস্টম ইভেন্ট হল এমন ইভেন্ট যা আপনার এক্সটেনশন ব্যবহারকারীদের আপনার এক্সটেনশনে তাদের নিজস্ব লজিক যোগ করার অনুমতি দেওয়ার জন্য নির্গত করে। এক্সটেনশনে ইউজার হুক যোগ করুন লিঙ্কে Eventarc বিভাগ দেখুন।
events:
- type: publisher-id.extension-name.version.event-name
description: Description of the event
- type: publisher-id.extension-name.version.another-event-name
description: Description of the other event
| কাস্টম ইভেন্ট ফিল্ড | |
|---|---|
typeস্ট্রিং (প্রয়োজনীয়) |
ইভেন্টের ধরন শনাক্তকারী। ৩-৪টি ডট-ডিলিমিটেড ফিল্ড থেকে আইডেন্টিফায়ার তৈরি করুন: প্রকাশক আইডি, এক্সটেনশনের নাম এবং ইভেন্টের নাম ফিল্ডগুলি প্রয়োজন; ভার্সন ফিল্ডটি সাজেস্ট করা হয়। আপনার প্রকাশ করা প্রতিটি ইভেন্টের ধরনের জন্য একটি অনন্য এবং বর্ণনামূলক ইভেন্টের নাম বেছে নিন। |
descriptionস্ট্রিং (প্রয়োজনীয়) |
ইভেন্টের বর্ণনা। |