किसी एक्सटेंशन के लिए Cloud Functions लिखना

एक्सटेंशन बनाते समय, Cloud Functions का इस्तेमाल करके उसका लॉजिक लिखा जाता है. ठीक उसी तरह जैसे कोई ऐसा फ़ंक्शन लिखा जाता है जिसका इस्तेमाल सिर्फ़ अपने प्रोजेक्ट में किया जाएगा. extension.yaml फ़ाइल में अपने फ़ंक्शन तय किए जाते हैं. जब उपयोगकर्ता आपका एक्सटेंशन इंस्टॉल करते हैं, तो ये फ़ंक्शन उनके प्रोजेक्ट में डिप्लॉय हो जाते हैं.

Cloud Functions के इस्तेमाल के बारे में सामान्य जानकारी के लिए, Cloud Functions दस्तावेज़ देखें.

पहली और दूसरी पीढ़ी के Cloud Functions

Firebase, पहले और दूसरे जनरेशनCloud Functions, दोनों के साथ काम करता है. हालांकि, Firebase के एक्सटेंशन में फ़िलहाल कुछ पाबंदियां हैं. इनसे यह तय होता है कि किस जनरेशन के क्लाउड फ़ंक्शन का इस्तेमाल, ट्रिगर के अलग-अलग टाइप के साथ किया जा सकता है. इस वजह से, कई एक्सटेंशन में पहले और दूसरे जनरेशन के फ़ंक्शन शामिल होते हैं.

फ़ंक्शन जनरेशन की सुविधा, हर तरह के ट्रिगर के लिए नीचे दी गई है.

ध्यान देने वाली खास बातें

  • कुछ फ़ंक्शन की परिभाषाओं के लिए, आपको ऐसी जानकारी देनी होगी जो extension.yaml फ़ाइल में भी दी गई है. उदाहरण के लिए, Cloud Firestore में एक document() तरीका है, जो देखने के लिए दस्तावेज़ पैटर्न तय करता है. साथ ही, extension.yaml में उससे जुड़े एलान में एक resource फ़ील्ड होता है, जो उसी बारे में बताता है.

    इन स्थितियों में, extension.yaml फ़ाइल में बताए गए कॉन्फ़िगरेशन का इस्तेमाल किया जाता है और फ़ंक्शन की परिभाषा में बताए गए कॉन्फ़िगरेशन को अनदेखा कर दिया जाता है.

    दस्तावेज़ के लिए, फ़ंक्शन की परिभाषा में कॉन्फ़िगर की गई वैल्यू बताना आम बात है. इस पेज पर दिए गए उदाहरण इस पैटर्न को फ़ॉलो करते हैं.

  • Cloud Functions के पहले जनरेशन के SDK टूल में functions.config() तरीका और functions:config:set सीएलआई कमांड है. इसका इस्तेमाल, पहले जनरेशन के फ़ंक्शन में पैरामीटर वाली वैल्यू के साथ काम करने के लिए किया जा सकता है. Cloud Functions में इस तकनीक का इस्तेमाल नहीं किया जा सकता. साथ ही, यह एक्सटेंशन में बिल्कुल काम नहीं करेगी. इसके बजाय, functions.params मॉड्यूल (सुझाया गया) या process.env का इस्तेमाल करें.

TypeScript का इस्तेमाल करना

अपना एक्सटेंशन बनाने के लिए उपलब्ध ज़्यादातर दस्तावेज़ों में, Cloud Functions for Firebase के लिए JavaScript का इस्तेमाल करके वर्कफ़्लो के बारे में बताया गया है. हालांकि, इसके बजाय TypeScript का इस्तेमाल करके अपने फ़ंक्शन लिखे जा सकते हैं.

असल में, सभी आधिकारिक Firebase एक्सटेंशन, TypeScript में लिखे गए हैं. अपने एक्सटेंशन के लिए TypeScript का इस्तेमाल करने के सबसे सही तरीकों के बारे में जानने के लिए, उन एक्सटेंशन की समीक्षा की जा सकती है.

अगर आपने अपने एक्सटेंशन के फ़ंक्शन TypeScript में लिखे हैं, तो एक्सटेंशन इंस्टॉल करने से पहले आपको ये काम करने होंगे:

  1. अपने एक्सटेंशन के फ़ंक्शन सोर्स कोड को JavaScript में कंपाइल करें.

    firebase ext:dev:init कमांड की मदद से, फ़ंक्शन लिखने के लिए TypeScript को चुना जा सकता है. इस कमांड की मदद से, आपको एक पूरा और इंस्टॉल किया जा सकने वाला एक्सटेंशन मिलता है. साथ ही, एक ऐसी बिल्ड स्क्रिप्ट भी मिलती है जिसे npm run build की मदद से चलाया जा सकता है.

  2. अपनी package.json फ़ाइल में, main फ़ील्ड को जनरेट किए गए JavaScript पर ले जाएं.

  3. अगर आपको लोकल सोर्स से एक्सटेंशन इंस्टॉल या अपलोड करना है, तो पहले अपनी TypeScript फ़ाइलों को कंपाइल करें.

काम करने वाले फ़ंक्शन ट्रिगर

एचटीटीपी ट्रिगर

एचटीटीपी से ट्रिगर होने वाला फ़ंक्शन, सार्वजनिक https एंडपॉइंट पर डिप्लॉय किया जाता है. साथ ही, एंडपॉइंट को ऐक्सेस करने पर, यह फ़ंक्शन चलता है.

एचटीटीपी से ट्रिगर होने वाले फ़ंक्शन लिखने के बारे में जानने के लिए, Cloud Functions के दस्तावेज़ में एचटीटीपी अनुरोधों के ज़रिए फ़ंक्शन कॉल करना देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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 दस्तावेज़ में अपने ऐप्लिकेशन से फ़ंक्शन कॉल करना देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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

टास्क की सूची के ट्रिगर

टास्क क्यू फ़ंक्शन, आपके एक्सटेंशन के लाइफ़साइकल इवेंट पर या Admin SDK के TaskQueue.enqueue() तरीके का इस्तेमाल करके, आपके एक्सटेंशन की टास्क क्यू में मैन्युअल तौर पर जोड़े जाने पर ट्रिगर होता है.

लाइफ़साइकल इवेंट मैनेज करने वाले फ़ंक्शन लिखने के बारे में जानने के लिए, अपने एक्सटेंशन के लाइफ़साइकल इवेंट मैनेज करना लेख पढ़ें.

टास्क की सूची में फ़ंक्शन जोड़ने के बारे में जानने के लिए, Cloud Functions के दस्तावेज़ में 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

Analytics से ट्रिगर किया गया फ़ंक्शन तब चलता है, जब कोई तय Analytics इवेंट रिकॉर्ड किया जाता है.

Analytics से ट्रिगर होने वाले फ़ंक्शन लिखने के बारे में जानकारी पाने के लिए, Cloud Functions दस्तावेज़ में Google Analytics ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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 दस्तावेज़ में Firebase Authentication ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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 Firestore से ट्रिगर किया गया फ़ंक्शन तब चलता है, जब कोई दस्तावेज़ बनाया जाता है, अपडेट किया जाता है या मिटाया जाता है.

Firestore से ट्रिगर होने वाले फ़ंक्शन लिखने के बारे में जानकारी पाने के लिए, Cloud Functions दस्तावेज़ में Cloud Firestore ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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 Storage से ट्रिगर किया गया फ़ंक्शन तब चलता है, जब कोई ऑब्जेक्ट बनाया जाता है, संग्रहित किया जाता है या मिटाया जाता है. इसके अलावा, जब उसके मेटाडेटा में बदलाव होता है, तब भी यह फ़ंक्शन चलता है.

Cloud Functions दस्तावेज़ में Cloud Storage ट्रिगर देखें. इससे, आपको स्टोरेज से ट्रिगर होने वाले फ़ंक्शन लिखने के बारे में जानकारी मिलेगी.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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

टेस्ट मैट्रिक के टेस्ट पूरे होने पर, Test Lab से ट्रिगर किया गया फ़ंक्शन चलता है.

टेस्ट लैब से ट्रिगर होने वाले फ़ंक्शन लिखने के बारे में जानने के लिए, Cloud Functions दस्तावेज़ में Firebase टेस्ट लैब ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ पहले जनरेशन के लिए)

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 दस्तावेज़ में Firebase सूचनाएं ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ दूसरे-जीन के लिए)

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 दस्तावेज़ में Firebase सूचनाएं ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ दूसरे-जीन के लिए)

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 दस्तावेज़ में Firebase सूचनाएं ट्रिगर देखें.

फ़ंक्शन की परिभाषा (सिर्फ़ दूसरे-जीन के लिए)

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 से ट्रिगर किया गया फ़ंक्शन तब चलता है, जब किसी खास इवेंट टाइप को किसी खास चैनल पर पब्लिश किया जाता है.

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 क्षेत्र में "डिफ़ॉल्ट" 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}