যখন আপনি একটি এক্সটেনশন তৈরি করেন, তখন আপনি Cloud Functions ব্যবহার করে এর লজিক লেখেন, ঠিক যেমন আপনি এমন একটি ফাংশন লেখেন যা শুধুমাত্র আপনার নিজের প্রকল্পে ব্যবহৃত হবে। আপনি extension.yaml ফাইলে আপনার ফাংশনগুলি ঘোষণা করেন এবং ব্যবহারকারীরা যখন আপনার এক্সটেনশন ইনস্টল করেন, তখন এই ফাংশনগুলি তাদের প্রকল্পে স্থাপন করা হয়।
Cloud Functions ব্যবহার সম্পর্কে সাধারণ তথ্যের জন্য Cloud Functions ডকুমেন্টেশন দেখুন।
প্রথম এবং দ্বিতীয় প্রজন্মের Cloud Functions
ফায়ারবেস প্রথম প্রজন্ম এবং দ্বিতীয় প্রজন্ম উভয় ধরণের Cloud Functions সমর্থন করে। তবে, ফায়ারবেস এক্সটেনশনগুলিতে বর্তমানে নির্দিষ্ট ট্রিগার ধরণের সাথে কোন জেনারেশনের ক্লাউড ফাংশন ব্যবহার করা যেতে পারে তার উপর কিছু বিধিনিষেধ রয়েছে। এই কারণে, অনেক এক্সটেনশনে প্রথম এবং দ্বিতীয় প্রজন্মের ফাংশনের মিশ্রণ অন্তর্ভুক্ত থাকে।
প্রতিটি ট্রিগার ধরণের জন্য ফাংশন জেনারেশন সাপোর্ট নীচে উল্লেখ করা হয়েছে।
বিশেষ বিবেচ্য বিষয়
কিছু ফাংশন সংজ্ঞার জন্য আপনাকে
extension.yamlফাইলেও নির্দিষ্ট তথ্য নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, ক্লাউড ফায়ারস্টোরের একটিdocument()পদ্ধতি রয়েছে যা দেখার জন্য ডকুমেন্ট প্যাটার্ন নির্দিষ্ট করে এবংextension.yamlএ এর সংশ্লিষ্ট ঘোষণায় একটিresourceক্ষেত্র রয়েছে যা একই জিনিস নির্দিষ্ট করে।এই পরিস্থিতিতে,
extension.yamlফাইলে উল্লেখিত কনফিগারেশন ব্যবহার করা হয় এবং ফাংশন সংজ্ঞায় উল্লেখিত কনফিগারেশন উপেক্ষা করা হয়।ডকুমেন্টেশনের স্বার্থে, ফাংশনের সংজ্ঞায় কনফিগার করা মান নির্দিষ্ট করা একটি সাধারণ অভ্যাস। এই পৃষ্ঠার উদাহরণগুলি এই প্যাটার্ন অনুসরণ করে।
Cloud Functions ১ম জেনারেশন SDK-তে একটি
functions.config()পদ্ধতি এবংfunctions:config:setCLI কমান্ড রয়েছে যা আপনি ১ম জেনারেশন ফাংশনে প্যারামিটারাইজড মানগুলির সাথে কাজ করতে ব্যবহার করতে পারেন। এই কৌশলটি Cloud Functions অবচিত এবং কোনও এক্সটেনশনে মোটেও কাজ করবে না । পরিবর্তে,functions.paramsমডিউল (প্রস্তাবিত) অথবাprocess.envব্যবহার করুন।
টাইপস্ক্রিপ্ট ব্যবহার করে
আপনার নিজস্ব এক্সটেনশন তৈরির জন্য বেশিরভাগ ডকুমেন্টেশন Cloud Functions for Firebase জন্য JavaScript ব্যবহার করে কর্মপ্রবাহ বর্ণনা করে। তবে, আপনি পরিবর্তে TypeScript ব্যবহার করে আপনার ফাংশন লিখতে পারেন।
আসলে, সমস্ত অফিসিয়াল Firebase এক্সটেনশন টাইপস্ক্রিপ্টে লেখা। আপনার এক্সটেনশনের জন্য টাইপস্ক্রিপ্ট ব্যবহারের কিছু সেরা অনুশীলনের জন্য আপনি সেই এক্সটেনশনগুলি পর্যালোচনা করতে পারেন।
যদি আপনি আপনার এক্সটেনশনের ফাংশনগুলি টাইপস্ক্রিপ্টে লেখেন, তাহলে আপনার এক্সটেনশনটি ইনস্টল করার আগে আপনাকে নিম্নলিখিতগুলি করতে হবে:
আপনার এক্সটেনশনের ফাংশন সোর্স কোড জাভাস্ক্রিপ্টে কম্পাইল করুন।
firebase ext:dev:initকমান্ড আপনাকে আপনার ফাংশন লেখার জন্য TypeScript বেছে নিতে দেয়। কমান্ডটি আপনাকে একটি সম্পূর্ণ, ইনস্টলযোগ্য এক্সটেনশনের পাশাপাশি একটি বিল্ড স্ক্রিপ্ট প্রদান করে যা আপনিnpm run buildদিয়ে চালাতে পারেন ।আপনার
package.jsonফাইলে,mainক্ষেত্রটি তৈরি করা জাভাস্ক্রিপ্টের দিকে নির্দেশ করুন।যদি আপনি স্থানীয় উৎস থেকে আপনার এক্সটেনশন ইনস্টল বা আপলোড করেন, তাহলে প্রথমে আপনার টাইপস্ক্রিপ্ট ফাইলগুলি কম্পাইল করুন।
সমর্থিত ফাংশন ট্রিগার
HTTP ট্রিগার
একটি HTTP-ট্রিগার করা ফাংশন একটি পাবলিক https এন্ডপয়েন্টে স্থাপন করা হয় এবং যখন এন্ডপয়েন্ট অ্যাক্সেস করা হয় তখন এটি চলে।
HTTP-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে HTTP অনুরোধের মাধ্যমে কল ফাংশন দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
কলযোগ্য ফাংশন
কলযোগ্য ফাংশনগুলি HTTP-ট্রিগার করা ফাংশনগুলির মতোই, তবে তারা এমন একটি প্রোটোকল বাস্তবায়ন করে যা তাদের ক্লায়েন্ট-সাইড কোড থেকে কল করা সুবিধাজনক করে তোলে।
কলযোগ্য ফাংশন ব্যবহার সম্পর্কে তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে আপনার অ্যাপ থেকে কল ফাংশনগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
নির্ধারিত ফাংশন ট্রিগার
একটি নির্ধারিত ফাংশন একটি কাস্টমাইজযোগ্য সময়সূচীর উপর ভিত্তি করে বারবার চলে।
নির্ধারিত ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে নির্ধারিত ফাংশন দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
scheduleTrigger এর জন্য উপলব্ধ সাবফিল্ডগুলি এখানে দেওয়া হল:
| মাঠ | বিবরণ |
|---|---|
schedule(প্রয়োজনীয়) | আপনি যে ফ্রিকোয়েন্সিতে ফাংশনটি চালাতে চান। এই ক্ষেত্রটি এমন স্ট্রিং গ্রহণ করতে পারে যা যেকোনো সিনট্যাক্স ব্যবহার করে ( একক-উদ্ধৃতি চিহ্ন দিয়ে মোড়ানো প্রয়োজন):
|
timeZone(ঐচ্ছিক) | যে সময় অঞ্চলে সময়সূচীটি চলবে।
|
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় সময়সূচী কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
টাস্ক কিউ ট্রিগার করে
আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলিতে অথবা অ্যাডমিন SDK এর TaskQueue.enqueue() পদ্ধতি ব্যবহার করে আপনার এক্সটেনশনের টাস্ক কিউতে ম্যানুয়ালি যোগ করলে একটি টাস্ক কিউ ফাংশন ট্রিগার হয়।
লাইফসাইকেল ইভেন্ট পরিচালনা করে এমন লেখার ফাংশন সম্পর্কে তথ্যের জন্য আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্ট পরিচালনা করুন দেখুন।
টাস্ক কিউ ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড টাস্ক সহ এনকিউ ফাংশন দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
taskQueueTrigger প্রপার্টিটি {} অথবা বিকল্পগুলির একটি মানচিত্রে সেট করুন যা টাস্ক কিউর রেট সীমা এবং পুনরায় চেষ্টা আচরণ টিউন করে ( টাস্ক কিউ টিউন করা দেখুন)।
যদি আপনি আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলিতে আপনার ফাংশনটি ট্রিগার করতে চান, তাহলে ফাংশনের নাম এবং একটি ঐচ্ছিক প্রক্রিয়াকরণ বার্তা সহ lifecycleEvents রেকর্ড যোগ করুন, যা প্রক্রিয়াকরণ শুরু হওয়ার সময় Firebase কনসোলে প্রদর্শিত হবে।
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Resizing your existing images
onUpdate:
function: myOtherTaskFunction
processingMessage: Setting up your extension
onConfigure:
function: myOtherTaskFunction
processingMessage: Setting up your extension
Analytics
একটি নির্দিষ্ট Analytics ইভেন্ট লগ করা হলে একটি Analytics-ট্রিগার করা ফাংশন চলে।
অ্যানালিটিক্স-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে গুগল অ্যানালিটিক্স ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/ga_event
- name: anotherFunction
type: ...
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় Analytics ইভেন্টটি শুনতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
- name: anotherFunction
type: ...
params:
- param: EVENT_NAME
label: Analytics event
description: What event do you want to respond to?
type: string
default: ga_event # Specifying a default is optional.
required: true
Authentication
যখন কোনও ব্যবহারকারী তৈরি বা মুছে ফেলা হয় তখন একটি প্রমাণীকরণ-ট্রিগার ফাংশন চলে।
প্রমাণীকরণ-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস প্রমাণীকরণ ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/firebase.auth/eventTypes/user.create
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলে দেখানো হয়েছে কিভাবে সমর্থিত Authentication ইভেন্টের ধরণগুলি নির্দিষ্ট করতে হয়:
| Cloud Functions ইভেন্ট ট্রিগার | eventType | বিবরণ |
|---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | নতুন ব্যবহারকারী তৈরি করা হয়েছে |
onDelete() | providers/firebase.auth/eventTypes/user.delete | ব্যবহারকারী মুছে ফেলা হয়েছে |
Cloud Firestore
একটি ক্লাউড ফায়ারস্টোর-ট্রিগার করা ফাংশন তখন কাজ করে যখন একটি ডকুমেন্ট তৈরি, আপডেট বা মুছে ফেলা হয়।
ফায়ারস্টোর-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড ফায়ারস্টোর ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { firestore } from "firebase-functions/v1";
export const yourFunctionName = firestore.document("collection/{doc_id}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = firestore.document("collection/{doc_id}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = firestore.document("collection/{doc_id}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = firestore.document("collection/{doc_id}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলটি দেখায় যে কীভাবে সমর্থিত Cloud Firestore ইভেন্টের ধরণগুলি নির্দিষ্ট করতে হয়:
| Cloud Functions ইভেন্ট ট্রিগার | eventType | বিবরণ |
|---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | নতুন ডকুমেন্ট তৈরি করা হয়েছে |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | ডকুমেন্ট মুছে ফেলা হয়েছে |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | ডকুমেন্ট আপডেট করা হয়েছে |
onWrite() | providers/cloud.firestore/eventTypes/document.write | ডকুমেন্ট তৈরি, মোছা বা আপডেট করা হয়েছে |
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় ডকুমেন্ট পাথ কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
- name: anotherFunction
type: ...
params:
- param: YOUR_DOCUMENT_PATH
label: Cloud Firestore path
description: Where do you want to watch for changes?
type: string
default: path/to/{documentID} # Specifying a default is optional.
required: true
Pub/Sub
একটি নির্দিষ্ট বিষয়ে একটি বার্তা প্রকাশিত হলে একটি Pub/Sub-ট্রিগার করা ফাংশন কাজ করে।
Pub/Sub-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে Pub/Sub ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/topic-name
- name: anotherFunction
type: ...
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় Pub/Sub টপিকটি কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
- name: anotherFunction
type: ...
params:
- param: PUBSUB_TOPIC
label: Pub/Sub topic
description: Which Pub/Sub topic do you want to watch for messages?
type: string
default: topic-name # Specifying a default is optional.
required: true
Realtime Database
একটি রিয়েলটাইম ডাটাবেস-ট্রিগারড ফাংশন তখন কাজ করে যখন একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন একটি পাথ তৈরি, আপডেট বা মুছে ফেলা হয়।
RTDB-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে রিয়েলটাইম ডেটাবেস ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { database } from "firebase-functions/v1";
export const yourFunctionName = database.ref("path/to/{item}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = database.ref("path/to/{item}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = database.ref("path/to/{item}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = database.ref("path/to/{item}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলটি দেখায় যে কীভাবে সমর্থিত Cloud Firestore ইভেন্টের ধরণগুলি নির্দিষ্ট করতে হয়:
| Cloud Functions ইভেন্ট ট্রিগার | eventType | বিবরণ |
|---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | ডেটা তৈরি করা হয়েছে |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | ডেটা মুছে ফেলা হয়েছে |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | ডেটা আপডেট করা হয়েছে |
onWrite() | providers/google.firebase.database/eventTypes/ref.write | ডেটা তৈরি, মুছে ফেলা বা আপডেট করা হয়েছে |
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় দেখার জন্য পাথটি কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
- name: anotherFunction
type: ...
params:
- param: DB_PATH
label: Realtime Database path
description: Where do you want to watch for changes?
type: string
default: path/to/{itemId} # Specifying a default is optional.
required: true
Remote Config
যখন একটি প্রকল্পের প্যারামিটার টেমপ্লেট আপডেট করা হয় তখন একটি রিমোট কনফিগ-ট্রিগারড ফাংশন চলে।
রিমোট কনফিগ-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে রিমোট কনফিগ ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Cloud Storage
একটি ক্লাউড স্টোরেজ-ট্রিগার করা ফাংশন তখন কাজ করে যখন একটি বস্তু তৈরি করা হয়, সংরক্ষণাগারভুক্ত করা হয়, বা মুছে ফেলা হয়, অথবা যখন এর মেটাডেটা পরিবর্তন হয়।
স্টোরেজ-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড স্টোরেজ ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { storage } from "firebase-functions/v1";
export const yourFunctionName = storage.object().onFinalize((object, context) => {
// ...
});
export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
// ...
});
export const yourFunctionName3 = storage.object().onArchive((object, context) => {
// ...
});
export const yourFunctionName4 = storage.object().onDelete((object, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
# STORAGE_BUCKET (project's default bucket) is an auto-populated
# parameter. You can also specify a bucket.
resource: projects/_/buckets/${STORAGE_BUCKET}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলে দেখানো হয়েছে কিভাবে সমর্থিত প্রতিটি Cloud Storage ইভেন্ট প্রকার নির্দিষ্ট করতে হয়:
| Cloud Functions ইভেন্ট ট্রিগার | eventType | বিবরণ |
|---|---|---|
onFinalize() | google.storage.object.finalize | অবজেক্ট তৈরি করা হয়েছে |
onMetadataUpdate() | google.storage.object.metadataUpdate | অবজেক্ট মেটাডেটা আপডেট করা হয়েছে |
onArchive() | google.storage.object.archive | অবজেক্টটি আর্কাইভ করা হয়েছে |
onDelete() | google.storage.object.delete | অবজেক্ট মুছে ফেলা হয়েছে |
যদি আপনি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় স্টোরেজ বাকেট কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${YOUR_BUCKET}
- name: anotherFunction
type: ...
params:
- param: YOUR_BUCKET
label: Cloud Storage bucket
description: Which bucket do you want to watch for changes?
type: selectResource
resourceType: storage.googleapis.com/Bucket
default: ${STORAGE_BUCKET} # Specifying a default is optional.
required: true
Test Lab
একটি টেস্ট ল্যাব-ট্রিগারড ফাংশন তখন চলে যখন একটি টেস্ট ম্যাট্রিক্স তার পরীক্ষা শেষ করে।
টেস্ট ল্যাব-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস টেস্ট ল্যাব ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.testing.testMatrix.complete
resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
- name: anotherFunction
type: ...
Crashlytics সতর্কতা ট্রিগার করে
যখন Crashlytics একটি সতর্কতা প্রকাশ করে তখন একটি Crashlytics -triggered ফাংশন কাজ করে।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস সতর্কতা ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র দ্বিতীয় প্রজন্মের)
import {
onNewFatalIssuePublished,
onNewNonfatalIssuePublished,
onNewAnrIssuePublished,
onRegressionAlertPublished,
onVelocityAlertPublished,
onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";
export const yourFunctionName = onNewFatalIssuePublished((event) => {
// ...
});
export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
// ...
});
export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
// ...
});
export const yourFunctionName4 = onRegressionAlertPublished((event) => {
// ...
});
export const yourFunctionName5 = onVelocityAlertPublished((event) => {
// ...
});
export const yourFunctionName6 = onStabilityDigestPublished((event) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
- name: anotherFunction
type: ...
আপনি alerttype এর জন্য নিম্নলিখিত মানগুলি ব্যবহার করতে পারেন
-
crashlytics.newFatalIssue -
crashlytics.newNonfatalIssue -
crashlytics.regression -
crashlytics.stabilityDigest -
crashlytics.velocity -
crashlytics.newAnrIssue
Performance Monitoring সতর্কতা ট্রিগার করে
যখন Performance Monitoring একটি সতর্কতা প্রকাশ করে তখন একটি Performance Monitoring -ট্রিগারড ফাংশন চালু হয়।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস সতর্কতা ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র দ্বিতীয় প্রজন্মের)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: performance.threshold
- name: anotherFunction
type: ...
App Distribution সতর্কতা ট্রিগার করে
App Distribution যখন একটি সতর্কতা প্রকাশ করে তখন একটি App Distribution -ট্রিগারড ফাংশন চলে।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস সতর্কতা ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র দ্বিতীয় প্রজন্মের)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: appDistribution.inAppFeedback
- name: anotherFunction
type: ...
আপনি alerttype এর জন্য নিম্নলিখিত মানগুলি ব্যবহার করতে পারেন
-
appDistribution.newTesterIosDevice -
appDistribution.inAppFeedback
কাস্টম ইভেন্ট ট্রিগার (ইভেন্টার্ক)
একটি নির্দিষ্ট চ্যানেলে একটি নির্দিষ্ট ধরণের ইভেন্ট প্রকাশিত হলে একটি Eventarc-ট্রিগারড ফাংশন কাজ করে।
Eventarc-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে কাস্টম ইভেন্ট ট্রিগার তৈরি এবং পরিচালনা দেখুন।
আপনি আপনার এক্সটেনশন থেকে ইভেন্ট প্রকাশ করতে পারেন যাতে ব্যবহারকারীরা আপনার এক্সটেনশনে কাস্টম লজিক সন্নিবেশ করতে পারেন। দেখুন "একটি এক্সটেনশনে ডেভেলপার-প্রদত্ত কাস্টম লজিক ব্যবহার করুন" ।
ফাংশন সংজ্ঞা (শুধুমাত্র দ্বিতীয় প্রজন্মের)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
রিসোর্স ঘোষণা (extension.yaml)
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
# LOCATION is a user-configured parameter value specified by the user
# during installation.
location: ${param:LOCATION}
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
timeoutSeconds: 60
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
- name: anotherFunction
type: ...
আপনার এক্সটেনশন ইনস্টল করার সময় চ্যানেলটি ইতিমধ্যেই বিদ্যমান থাকতে হবে। উদাহরণস্বরূপ, যদি আপনি অন্য কোনও এক্সটেনশন থেকে কাস্টম ইভেন্টের উপর নির্ভর করেন যা চ্যানেল তৈরি করে, তাহলে আপনার ব্যবহারকারীদের প্রথমে সেই এক্সটেনশনটি ইনস্টল করার নির্দেশ দিন।
উপরের উদাহরণটি us-central1 অঞ্চলে "ডিফল্ট" Firebase চ্যানেলের জন্য একটি কাস্টম ইভেন্ট ট্রিগার তৈরি করবে। আপনি প্যারামিটার ব্যবহার করে চ্যানেলের নাম এবং অঞ্চল কাস্টমাইজেবল করতে পারেন। উদাহরণস্বরূপ:
params:
- param: EVENTARC_CHANNEL_NAME
label: Eventarc channel name
description: What is the name of the Eventarc channel.
default: firebase
type: string
required: true
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
location: ${param:LOCATION}
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}