किसी एक्सटेंशन के लिए क्लाउड फ़ंक्शंस लिखें

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

क्लाउड फ़ंक्शंस के उपयोग पर सामान्य जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ देखें।

पहली और दूसरी पीढ़ी के क्लाउड फ़ंक्शंस

फायरबेस पहली पीढ़ी और दूसरी पीढ़ी के क्लाउड फ़ंक्शंस दोनों का समर्थन करता है। हालाँकि, फायरबेस एक्सटेंशन में वर्तमान में कुछ प्रतिबंध हैं कि आप किस पीढ़ी के क्लाउड फ़ंक्शन का उपयोग कुछ ट्रिगर प्रकारों के साथ कर सकते हैं। इस कारण से, कई एक्सटेंशन में पहली और दूसरी पीढ़ी के कार्यों का मिश्रण शामिल होता है।

नीचे प्रत्येक ट्रिगर प्रकार के लिए फ़ंक्शन जनरेशन समर्थन नोट किया गया है।

विशेष ध्यान

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

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

    दस्तावेज़ीकरण की परवाह किए बिना, फ़ंक्शन परिभाषा में कॉन्फ़िगर किए गए मान को निर्दिष्ट करना आम बात है। इस पृष्ठ पर दिए गए उदाहरण इस पैटर्न का अनुसरण करते हैं।

  • क्लाउड फ़ंक्शंस पहली पीढ़ी के एसडीके में एक functions.config() विधि और functions:config:set CLI कमांड है जिसका उपयोग आप पहली पीढ़ी के फ़ंक्शंस में पैरामीटरयुक्त मानों के साथ काम करने के लिए कर सकते हैं। यह तकनीक क्लाउड फ़ंक्शंस में अप्रचलित है और किसी एक्सटेंशन में बिल्कुल भी काम नहीं करेगी। इसके बजाय, functions.params मॉड्यूल (अनुशंसित) या process.env का उपयोग करें।

टाइपस्क्रिप्ट का उपयोग करना

अपना स्वयं का एक्सटेंशन विकसित करने के लिए अधिकांश दस्तावेज़ फायरबेस के लिए क्लाउड फ़ंक्शंस के लिए जावास्क्रिप्ट का उपयोग करके वर्कफ़्लो का वर्णन करते हैं। हालाँकि, आप इसके बजाय टाइपस्क्रिप्ट का उपयोग करके अपने फ़ंक्शन लिख सकते हैं।

वास्तव में, सभी आधिकारिक फायरबेस एक्सटेंशन टाइपस्क्रिप्ट में लिखे गए हैं। आप अपने एक्सटेंशन के लिए टाइपस्क्रिप्ट का उपयोग करने के लिए कुछ सर्वोत्तम प्रथाओं के लिए उन एक्सटेंशन की समीक्षा कर सकते हैं।

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

  1. अपने एक्सटेंशन के फ़ंक्शंस स्रोत कोड को जावास्क्रिप्ट में संकलित करें।

    firebase ext:dev:init कमांड आपको अपने कार्यों को लिखने के लिए टाइपस्क्रिप्ट चुनने की अनुमति देता है। कमांड आपको एक पूर्ण, इंस्टॉल करने योग्य एक्सटेंशन के साथ-साथ एक बिल्ड स्क्रिप्ट प्रदान करता है जिसे आप npm run build के साथ चला सकते हैं।

  2. अपनी package.json फ़ाइल में, main फ़ील्ड को जेनरेट की गई जावास्क्रिप्ट पर इंगित करना सुनिश्चित करें।

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

समर्थित फ़ंक्शन ट्रिगर

HTTP ट्रिगर

एक HTTP-ट्रिगर फ़ंक्शन को सार्वजनिक https एंडपॉइंट पर तैनात किया जाता है और एंडपॉइंट तक पहुंचने पर चलता है।

HTTP-ट्रिगर फ़ंक्शन लिखने के बारे में जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में HTTP अनुरोधों के माध्यम से कॉल फ़ंक्शंस देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

कॉल करने योग्य फ़ंक्शन

कॉल करने योग्य फ़ंक्शंस HTTP-ट्रिगर फ़ंक्शंस के समान हैं, लेकिन वे एक प्रोटोकॉल लागू करते हैं जो उन्हें आपके क्लाइंट-साइड कोड से कॉल करने में सुविधाजनक बनाता है।

कॉल करने योग्य फ़ंक्शंस का उपयोग करने के बारे में जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में अपने ऐप से कॉल फ़ंक्शंस देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

शेड्यूल किए गए फ़ंक्शन ट्रिगर

एक शेड्यूल किया गया फ़ंक्शन अनुकूलन योग्य शेड्यूल के आधार पर बार-बार चलता है।

शेड्यूल किए गए फ़ंक्शन लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में शेड्यूल फ़ंक्शंस देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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

कार्य कतार ट्रिगर

एक कार्य कतार फ़ंक्शन या तो आपके एक्सटेंशन के जीवनचक्र की घटनाओं पर ट्रिगर होता है या जब एडमिन एसडीके की TaskQueue.enqueue() विधि का उपयोग करके आपके एक्सटेंशन की कार्य कतार में मैन्युअल रूप से जोड़ा जाता है।

जीवनचक्र की घटनाओं को संभालने वाले लेखन कार्यों के बारे में जानकारी के लिए अपने एक्सटेंशन के जीवनचक्र की घटनाओं को संभालें देखें।

कार्य कतार फ़ंक्शन लिखने के बारे में जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में क्लाउड कार्यों के साथ एन्क्यू फ़ंक्शंस देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

taskQueueTrigger प्रॉपर्टी को या तो {} पर सेट करें या विकल्पों का एक मानचित्र सेट करें जो दर सीमा को ट्यून करता है और कार्य कतार के व्यवहार को पुनः प्रयास करता है ( कार्य कतार को ट्यून करना देखें)।

यदि आप अपने फ़ंक्शन को अपने एक्सटेंशन के जीवनचक्र ईवेंट पर ट्रिगर करना चाहते हैं, तो फ़ंक्शन के नाम और एक वैकल्पिक प्रसंस्करण संदेश के साथ lifecycleEvents रिकॉर्ड जोड़ें, जो प्रसंस्करण शुरू होने पर फायरबेस कंसोल में प्रदर्शित किया जाएगा।

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-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में Google Analytics ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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

प्रमाणीकरण

प्रमाणीकरण-ट्रिगर फ़ंक्शन तब चलता है जब कोई उपयोगकर्ता बनाया या हटाया जाता है।

ऑथ-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में फ़ायरबेस प्रमाणीकरण ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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 उपयोगकर्ता हटा दिया गया

क्लाउड फायरस्टोर

क्लाउड फायरस्टोर-ट्रिगर फ़ंक्शन तब चलता है जब कोई दस्तावेज़ बनाया जाता है, अपडेट किया जाता है या हटाया जाता है।

फायरस्टोर-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में क्लाउड फायरस्टोर ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

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.
    // ...
  });

संसाधन घोषणा (एक्सटेंशन.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

पब/उप

एक पब/सब-ट्रिगर फ़ंक्शन तब चलता है जब किसी विशिष्ट विषय पर कोई संदेश प्रकाशित किया जाता है।

पब/सब-ट्रिगर फ़ंक्शन लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में पब/सब ट्रिगर देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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: ...

यदि आप चाहते हैं कि उपयोगकर्ता आपका एक्सटेंशन इंस्टॉल करते समय पब/उप विषय को कॉन्फ़िगर करने में सक्षम हों, तो अपनी 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

रीयलटाइम डेटाबेस

रीयलटाइम डेटाबेस-ट्रिगर फ़ंक्शन तब चलता है जब एक निर्दिष्ट पैटर्न से मेल खाने वाला पथ बनाया, अद्यतन या हटा दिया जाता है।

आरटीडीबी-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में रीयलटाइम डेटाबेस ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

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.
    // ...
  });

संसाधन घोषणा (एक्सटेंशन.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

रिमोट कॉन्फिग

जब किसी प्रोजेक्ट का पैरामीटर टेम्पलेट अपडेट किया जाता है तो रिमोट कॉन्फिग-ट्रिगर फ़ंक्शन चलता है।

रिमोट कॉन्फिग- ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में रिमोट कॉन्फ़िग ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

घन संग्रहण

क्लाउड स्टोरेज-ट्रिगर फ़ंक्शन तब चलता है जब कोई ऑब्जेक्ट बनाया जाता है, संग्रहीत किया जाता है, या हटाया जाता है, या जब उसका मेटाडेटा बदलता है।

स्टोरेज-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में क्लाउड स्टोरेज ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

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) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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

परीक्षण प्रयोगशाला

एक टेस्ट लैब-ट्रिगर फ़ंक्शन तब चलता है जब एक टेस्ट मैट्रिक्स अपना परीक्षण पूरा कर लेता है।

टेस्ट लैब-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में फायरबेस टेस्ट लैब ट्रिगर्स देखें।

फ़ंक्शन परिभाषा (केवल प्रथम पीढ़ी)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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

कस्टम इवेंट ट्रिगर्स (इवेंटार्क)

एक इवेंटर्क-ट्रिगर फ़ंक्शन तब चलता है जब एक विशिष्ट इवेंट प्रकार किसी विशिष्ट चैनल पर प्रकाशित होता है।

इवेंटआर्क-ट्रिगर फ़ंक्शंस लिखने की जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ में कस्टम ईवेंट ट्रिगर्स बनाएं और प्रबंधित करें देखें।

आप उपयोगकर्ताओं को अपने एक्सटेंशन में कस्टम तर्क सम्मिलित करने का तरीका देने के लिए अपने एक्सटेंशन से ईवेंट भी प्रकाशित कर सकते हैं। किसी एक्सटेंशन में डेवलपर द्वारा प्रदत्त कस्टम तर्क का उपयोग करें देखें।

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

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

संसाधन घोषणा (एक्सटेंशन.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}