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

আপনি যখন একটি এক্সটেনশন তৈরি করেন, তখন আপনি Cloud Functions ব্যবহার করে এর যুক্তি লেখেন, যেমন আপনি একটি ফাংশন লিখবেন যেটি শুধুমাত্র আপনার নিজের প্রকল্পে ব্যবহার করা হবে। আপনি extension.yaml ফাইলে আপনার ফাংশনগুলি ঘোষণা করেন এবং যখন ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করেন, তখন এই ফাংশনগুলি তাদের প্রকল্পে স্থাপন করা হয়।

Cloud Functions ব্যবহার করার বিষয়ে সাধারণ তথ্যের জন্য Cloud Functions ডকুমেন্টেশন দেখুন।

১ম এবং ২য় প্রজন্মের Cloud Functions

ফায়ারবেস ১ম-প্রজন্ম এবং ২য়-প্রজন্মের Cloud Functions উভয়কেই সমর্থন করে। যাইহোক, ফায়ারবেস এক্সটেনশনে বর্তমানে কিছু বিধিনিষেধ রয়েছে যে প্রজন্মের ক্লাউড ফাংশন আপনি নির্দিষ্ট ট্রিগার প্রকারের সাথে ব্যবহার করতে পারেন। এই কারণে, অনেক এক্সটেনশন 1ম এবং 2য় প্রজন্মের ফাংশনগুলির মিশ্রণ অন্তর্ভুক্ত করে।

নিচে প্রতিটি ট্রিগার প্রকারের জন্য ফাংশন জেনারেশন সমর্থন উল্লেখ করা হয়েছে।

বিশেষ বিবেচনা

  • কিছু ফাংশনের সংজ্ঞার জন্য আপনাকে এমন তথ্য নির্দিষ্ট করতে হবে যা extension.yaml ফাইলেও উল্লেখ করা আছে। উদাহরণস্বরূপ, ক্লাউড ফায়ারস্টোরের একটি document() পদ্ধতি রয়েছে যা দেখার জন্য নথির প্যাটার্ন নির্দিষ্ট করে এবং extension.yaml এ এর সংশ্লিষ্ট ঘোষণার একটি resource ক্ষেত্র রয়েছে যা একই নির্দিষ্ট করে।

    এই পরিস্থিতিতে, extension.yaml ফাইলে নির্দিষ্ট করা কনফিগারেশন ব্যবহার করা হয় এবং ফাংশনের সংজ্ঞায় উল্লেখ করা কনফিগারেশন উপেক্ষা করা হয়।

    ডকুমেন্টেশনের স্বার্থে, নির্বিশেষে ফাংশন সংজ্ঞায় কনফিগার করা মান নির্দিষ্ট করা সাধারণ অভ্যাস। এই পৃষ্ঠার উদাহরণ এই প্যাটার্ন অনুসরণ করে.

  • Cloud Functions 1st gen SDK-এর একটি functions.config() পদ্ধতি এবং functions:config:set CLI কমান্ড রয়েছে যা আপনি 1st gen ফাংশনে প্যারামিটারাইজড মানগুলির সাথে কাজ করতে ব্যবহার করতে পারেন৷ এই কৌশলটি Cloud Functions অবহেলিত এবং একটি এক্সটেনশনে মোটেও কাজ করবে না । পরিবর্তে, functions.params মডিউল (প্রস্তাবিত) বা process.env ব্যবহার করুন।

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

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

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

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

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

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

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

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

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

HTTP ট্রিগার

একটি HTTP-ট্রিগার করা ফাংশন একটি সর্বজনীন https এন্ডপয়েন্টে স্থাপন করা হয় এবং যখন এন্ডপয়েন্ট অ্যাক্সেস করা হয় তখন চলে।

HTTP-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে HTTP অনুরোধের মাধ্যমে কল ফাংশনগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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: ...

কলযোগ্য ফাংশন

কলযোগ্য ফাংশনগুলি এইচটিটিপি-ট্রিগার করা ফাংশনগুলির অনুরূপ, তবে তারা একটি প্রোটোকল প্রয়োগ করে যা তাদের আপনার ক্লায়েন্ট-সাইড কোড থেকে কল করতে সুবিধাজনক করে তোলে।

কলযোগ্য ফাংশন ব্যবহার করার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে আপনার অ্যাপ থেকে কল ফাংশনগুলি দেখুন৷

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে সময়সূচী ফাংশন দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে ক্লাউড টাস্কগুলির সাথে সারিবদ্ধ ফাংশনগুলি দেখুন৷

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে Google Analytics ট্রিগারগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে ফায়ারবেস প্রমাণীকরণ ট্রিগার দেখুন প্রমাণীকরণ-ট্রিগার করা ফাংশন লেখার বিষয়ে তথ্যের জন্য।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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

একটি ক্লাউড ফায়ারস্টোর-ট্রিগার করা ফাংশন চলে যখন একটি নথি তৈরি করা হয়, আপডেট করা হয় বা মুছে ফেলা হয়।

Firestore-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড ফায়ারস্টোর ট্রিগারগুলি দেখুন৷

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে পাব/সাব ট্রিগারগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে রিয়েলটাইম ডেটাবেস ট্রিগারগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে রিমোট কনফিগার ট্রিগার দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে ক্লাউড স্টোরেজ ট্রিগার দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 ডকুমেন্টেশনে ফায়ারবেস টেস্ট ল্যাব ট্রিগারগুলি দেখুন৷

ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)

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 -triggered ফাংশন চলে যখন 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)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

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)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

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)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

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)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

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}