যখন আপনি একটি এক্সটেনশন তৈরি করেন, তখন আপনি 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 জন্য জাভাস্ক্রিপ্ট ব্যবহার করে ওয়ার্কফ্লো বর্ণনা করা হয়েছে। তবে, আপনি এর পরিবর্তে টাইপস্ক্রিপ্ট ব্যবহার করে আপনার ফাংশনগুলো লিখতে পারেন।
প্রকৃতপক্ষে, সমস্ত অফিসিয়াল Firebase এক্সটেনশন টাইপস্ক্রিপ্টে লেখা হয়েছে। আপনার এক্সটেনশনের জন্য টাইপস্ক্রিপ্ট ব্যবহারের কিছু সেরা পদ্ধতি জানতে আপনি সেই এক্সটেনশনগুলো পর্যালোচনা করতে পারেন।
যদি আপনি আপনার এক্সটেনশনের ফাংশনগুলো টাইপস্ক্রিপ্টে লেখেন, তবে আপনার এক্সটেনশনটি ইনস্টল করার আগে আপনাকে অবশ্যই নিম্নলিখিত কাজগুলো করতে হবে:
আপনার এক্সটেনশনের ফাংশনগুলোর সোর্স কোড জাভাস্ক্রিপ্টে কম্পাইল করুন।
`
firebase ext:dev:initকমান্ডটি আপনাকে আপনার ফাংশন লেখার জন্য টাইপস্ক্রিপ্ট বেছে নেওয়ার সুযোগ দেয়। এই কমান্ডটি আপনাকে একটি সম্পূর্ণ, ইনস্টলযোগ্য এক্সটেনশন এবং একটি বিল্ড স্ক্রিপ্ট প্রদান করে, যা আপনিnpm run buildমাধ্যমে চালাতে পারেন ।আপনার
package.jsonফাইলে,mainফিল্ডটিকে অবশ্যই জেনারেট করা জাভাস্ক্রিপ্টের দিকে নির্দেশ করতে হবে।আপনি যদি স্থানীয় উৎস থেকে আপনার এক্সটেনশন ইনস্টল বা আপলোড করেন, তাহলে প্রথমে আপনার TypeScript ফাইলগুলো কম্পাইল করে নিন।
সমর্থিত ফাংশন ট্রিগার
HTTP ট্রিগার
একটি HTTP-ট্রিগারড ফাংশন একটি পাবলিক https এন্ডপয়েন্টে ডেপ্লয় করা হয় এবং এন্ডপয়েন্টটি অ্যাক্সেস করা হলে এটি রান করে।
HTTP-ট্রিগারড ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে “Call functions via HTTP requests” অংশটি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের জন্য)
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 ডকুমেন্টেশনে ‘ক্লাউড টাস্কের সাথে ফাংশন এনকিউ করুন’ (Enqueue functions with Cloud Tasks) অংশটি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের জন্য)
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
যখন কোনো নির্দিষ্ট অ্যানালিটিক্স ইভেন্ট লগ হয়, তখন একটি অ্যানালিটিক্স-ট্রিগারড ফাংশন চালু হয়।
অ্যানালিটিক্স-ট্রিগারড ফাংশন লেখার তথ্যের জন্য 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
যখন কোনো নির্দিষ্ট টপিকে একটি মেসেজ পাবলিশ করা হয়, তখন একটি পাব/সাব-ট্রিগারড ফাংশন রান করে।
পাব/সাব-ট্রিগারড ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে পাব/সাব ট্রিগারস দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র প্রথম প্রজন্মের জন্য)
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 দ্বারা সক্রিয় একটি ফাংশন রান করে।
অ্যালার্ট-ট্রিগারড ফাংশন লেখার তথ্যের জন্য 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
কাস্টম ইভেন্ট ট্রিগার (ইভেন্টআর্ক)
যখন কোনো নির্দিষ্ট চ্যানেলে একটি নির্দিষ্ট ধরনের ইভেন্ট প্রকাশিত হয়, তখন একটি ইভেন্টআর্ক-ট্রিগারড ফাংশন চলে।
ইভেন্টআর্ক-ট্রিগারড ফাংশন লেখার তথ্যের জন্য 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 অঞ্চলের 'ডিফল্ট' ফায়ারবেস চ্যানেলের জন্য একটি কাস্টম ইভেন্ট ট্রিগার তৈরি করবে। আপনি প্যারামিটার ব্যবহার করে চ্যানেলের নাম এবং অঞ্চল কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ:
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}