একটি এক্সটেনশনের জন্য ক্লাউড ফাংশন লিখুন

যখন আপনি একটি এক্সটেনশন তৈরি করেন, তখন আপনি 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:set CLI কমান্ড রয়েছে যা আপনি ১ম জেনারেশন ফাংশনে প্যারামিটারাইজড মানগুলির সাথে কাজ করতে ব্যবহার করতে পারেন। এই কৌশলটি Cloud Functions অবচিত এবং কোনও এক্সটেনশনে মোটেও কাজ করবে না । পরিবর্তে, functions.params মডিউল (প্রস্তাবিত) অথবা process.env ব্যবহার করুন।

টাইপস্ক্রিপ্ট ব্যবহার করে

আপনার নিজস্ব এক্সটেনশন তৈরির জন্য বেশিরভাগ ডকুমেন্টেশন Cloud Functions for Firebase জন্য JavaScript ব্যবহার করে কর্মপ্রবাহ বর্ণনা করে। তবে, আপনি পরিবর্তে TypeScript ব্যবহার করে আপনার ফাংশন লিখতে পারেন।

আসলে, সমস্ত অফিসিয়াল Firebase এক্সটেনশন টাইপস্ক্রিপ্টে লেখা। আপনার এক্সটেনশনের জন্য টাইপস্ক্রিপ্ট ব্যবহারের কিছু সেরা অনুশীলনের জন্য আপনি সেই এক্সটেনশনগুলি পর্যালোচনা করতে পারেন।

যদি আপনি আপনার এক্সটেনশনের ফাংশনগুলি টাইপস্ক্রিপ্টে লেখেন, তাহলে আপনার এক্সটেনশনটি ইনস্টল করার আগে আপনাকে নিম্নলিখিতগুলি করতে হবে:

  1. আপনার এক্সটেনশনের ফাংশন সোর্স কোড জাভাস্ক্রিপ্টে কম্পাইল করুন।

    firebase ext:dev:init কমান্ড আপনাকে আপনার ফাংশন লেখার জন্য TypeScript বেছে নিতে দেয়। কমান্ডটি আপনাকে একটি সম্পূর্ণ, ইনস্টলযোগ্য এক্সটেনশনের পাশাপাশি একটি বিল্ড স্ক্রিপ্ট প্রদান করে যা আপনি npm run build দিয়ে চালাতে পারেন

  2. আপনার package.json ফাইলে, main ক্ষেত্রটি তৈরি করা জাভাস্ক্রিপ্টের দিকে নির্দেশ করুন।

  3. যদি আপনি স্থানীয় উৎস থেকে আপনার এক্সটেনশন ইনস্টল বা আপলোড করেন, তাহলে প্রথমে আপনার টাইপস্ক্রিপ্ট ফাইলগুলি কম্পাইল করুন।

সমর্থিত ফাংশন ট্রিগার

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}