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

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

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

১ম এবং ২য় প্রজন্মের ক্লাউড ফাংশন

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

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

বিশেষ বিবেচ্য বিষয়

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

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

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

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

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

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

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

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

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

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

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

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

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

HTTP ট্রিগার

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

HTTP-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে 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: ...

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

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

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

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

নির্ধারিত ফাংশন ট্রিগার

একটি নির্ধারিত ফাংশন একটি কাস্টমাইজযোগ্য সময়সূচীর উপর ভিত্তি করে বারবার চলে।

নির্ধারিত ফাংশন লেখার তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে সময়সূচী ফাংশন দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 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() পদ্ধতি ব্যবহার করে আপনার এক্সটেনশনের টাস্ক সারিতে ম্যানুয়ালি যোগ করা হলে একটি টাস্ক কিউ ফাংশন ট্রিগার হয়৷

লাইফসাইকেল ইভেন্টগুলি পরিচালনা করে এমন ফাংশন লেখার তথ্যের জন্য আপনার এক্সটেনশনের জীবনচক্র ইভেন্টগুলি পরিচালনা করুন দেখুন৷

টাস্ক কিউ ফাংশন লেখার বিষয়ে তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে ক্লাউড টাস্কগুলির সাথে সারিবদ্ধ ফাংশনগুলি দেখুন৷

ফাংশন সংজ্ঞা (শুধুমাত্র 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

বিশ্লেষণ

একটি নির্দিষ্ট অ্যানালিটিক্স ইভেন্ট লগ করা হলে একটি অ্যানালিটিক্স-ট্রিগারড ফাংশন চলে৷

অ্যানালিটিক্স-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে 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: ...

আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় শোনার জন্য অ্যানালিটিক্স ইভেন্ট কনফিগার করতে সক্ষম হন, তাহলে আপনার 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

প্রমাণীকরণ

একজন ব্যবহারকারী তৈরি বা মুছে ফেলা হলে একটি প্রমাণীকরণ-ট্রিগার ফাংশন চলে।

ক্লাউড ফাংশন ডকুমেন্টেশনে ফায়ারবেস প্রমাণীকরণ ট্রিগার দেখুন প্রমাণীকরণ-ট্রিগার করা ফাংশন লেখার বিষয়ে তথ্যের জন্য।

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত প্রমাণীকরণ ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:

ক্লাউড ফাংশন ইভেন্ট ট্রিগার eventType বর্ণনা
onCreate() providers/firebase.auth/eventTypes/user.create নতুন ব্যবহারকারী তৈরি করা হয়েছে
onDelete() providers/firebase.auth/eventTypes/user.delete ব্যবহারকারী মুছে ফেলা হয়েছে

ক্লাউড ফায়ারস্টোর

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

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

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত ক্লাউড ফায়ারস্টোর ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:

ক্লাউড ফাংশন ইভেন্ট ট্রিগার 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

পাব/সাব

একটি পাব/সাব-ট্রিগারড ফাংশন চলে যখন একটি নির্দিষ্ট বিষয়ে একটি বার্তা প্রকাশিত হয়।

পাব/সাব-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে পাব/সাব ট্রিগারগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 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

রিয়েলটাইম ডাটাবেস

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

RTDB-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে রিয়েলটাইম ডেটাবেস ট্রিগারগুলি দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত ক্লাউড ফায়ারস্টোর ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:

ক্লাউড ফাংশন ইভেন্ট ট্রিগার 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

দূরবর্তী কনফিগারেশন

একটি প্রজেক্টের প্যারামিটার টেমপ্লেট আপডেট করা হলে একটি দূরবর্তী কনফিগার-ট্রিগার ফাংশন চলে।

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

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

মেঘ স্টোরেজ

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

স্টোরেজ-ট্রিগার করা ফাংশন লেখার বিষয়ে তথ্যের জন্য ক্লাউড ফাংশন ডকুমেন্টেশনে ক্লাউড স্টোরেজ ট্রিগার দেখুন।

ফাংশন সংজ্ঞা (শুধুমাত্র 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: ...

নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত ক্লাউড স্টোরেজ ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:

ক্লাউড ফাংশন ইভেন্ট ট্রিগার 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

টেস্ট ল্যাব

একটি টেস্ট ল্যাব-ট্রিগারড ফাংশন চলে যখন একটি টেস্ট ম্যাট্রিক্স তার পরীক্ষা শেষ করে।

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

ফাংশন সংজ্ঞা (শুধুমাত্র 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-ট্রিগার করা ফাংশন চলে।

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

ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)

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

কর্মক্ষমতা পর্যবেক্ষণ সতর্কতা ট্রিগার

পারফরম্যান্স মনিটরিং একটি সতর্কতা প্রকাশ করলে পারফরম্যান্স মনিটরিং-ট্রিগার করা ফাংশন চলে।

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

ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)

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

অ্যাপ বিতরণ সতর্কতা ট্রিগার

যখন অ্যাপ ডিস্ট্রিবিউশন একটি সতর্কতা প্রকাশ করে তখন একটি অ্যাপ ডিস্ট্রিবিউশন-ট্রিগারড ফাংশন চলে।

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

ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)

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

ব্যবহারকারীদের আপনার এক্সটেনশনে কাস্টম লজিক সন্নিবেশ করার একটি উপায় দিতে আপনি আপনার এক্সটেনশনগুলি থেকে ইভেন্টগুলি প্রকাশ করতে পারেন৷ একটি এক্সটেনশনে ডেভেলপার-প্রদত্ত কাস্টম লজিক ব্যবহার করুন দেখুন।

ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)

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}