जब आप कोई एक्सटेंशन बनाते हैं, तो आप क्लाउड फ़ंक्शंस का उपयोग करके उसका तर्क लिखते हैं, ठीक उसी तरह जैसे आप एक फ़ंक्शन लिखते हैं जिसका उपयोग केवल आपके अपने प्रोजेक्ट में ही किया जाएगा। आप अपने कार्यों को extension.yaml
फ़ाइल में घोषित करते हैं, और जब उपयोगकर्ता आपका एक्सटेंशन इंस्टॉल करते हैं, तो ये फ़ंक्शन उनके प्रोजेक्ट में तैनात हो जाते हैं।
क्लाउड फ़ंक्शंस के उपयोग पर सामान्य जानकारी के लिए क्लाउड फ़ंक्शंस दस्तावेज़ देखें।
पहली और दूसरी पीढ़ी के क्लाउड फ़ंक्शंस
फायरबेस पहली पीढ़ी और दूसरी पीढ़ी के क्लाउड फ़ंक्शंस दोनों का समर्थन करता है। हालाँकि, फायरबेस एक्सटेंशन में वर्तमान में कुछ प्रतिबंध हैं कि आप किस पीढ़ी के क्लाउड फ़ंक्शन का उपयोग कुछ ट्रिगर प्रकारों के साथ कर सकते हैं। इस कारण से, कई एक्सटेंशन में पहली और दूसरी पीढ़ी के कार्यों का मिश्रण शामिल होता है।
नीचे प्रत्येक ट्रिगर प्रकार के लिए फ़ंक्शन जनरेशन समर्थन नोट किया गया है।
विशेष ध्यान
कुछ फ़ंक्शन परिभाषाओं के लिए आपको वह जानकारी निर्दिष्ट करने की आवश्यकता होती है जो
extension.yaml
फ़ाइल में भी निर्दिष्ट है। उदाहरण के लिए, क्लाउड फायरस्टोर में एकdocument()
विधि है जो देखने के लिए दस्तावेज़ पैटर्न निर्दिष्ट करती है, औरextension.yaml
में इसकी संबंधित घोषणा में एकresource
फ़ील्ड है जो इसे निर्दिष्ट करती है।इन स्थितियों में,
extension.yaml
फ़ाइल में निर्दिष्ट कॉन्फ़िगरेशन का उपयोग किया जाता है और फ़ंक्शन परिभाषा में निर्दिष्ट कॉन्फ़िगरेशन को अनदेखा कर दिया जाता है।दस्तावेज़ीकरण की परवाह किए बिना, फ़ंक्शन परिभाषा में कॉन्फ़िगर किए गए मान को निर्दिष्ट करना आम बात है। इस पृष्ठ पर दिए गए उदाहरण इस पैटर्न का अनुसरण करते हैं।
क्लाउड फ़ंक्शंस पहली पीढ़ी के एसडीके में एक
functions.config()
विधि औरfunctions:config:set
CLI कमांड है जिसका उपयोग आप पहली पीढ़ी के फ़ंक्शंस में पैरामीटरयुक्त मानों के साथ काम करने के लिए कर सकते हैं। यह तकनीक क्लाउड फ़ंक्शंस में अप्रचलित है और किसी एक्सटेंशन में बिल्कुल भी काम नहीं करेगी। इसके बजाय,functions.params
मॉड्यूल (अनुशंसित) याprocess.env
का उपयोग करें।
टाइपस्क्रिप्ट का उपयोग करना
अपना स्वयं का एक्सटेंशन विकसित करने के लिए अधिकांश दस्तावेज़ फायरबेस के लिए क्लाउड फ़ंक्शंस के लिए जावास्क्रिप्ट का उपयोग करके वर्कफ़्लो का वर्णन करते हैं। हालाँकि, आप इसके बजाय टाइपस्क्रिप्ट का उपयोग करके अपने फ़ंक्शन लिख सकते हैं।
वास्तव में, सभी आधिकारिक फायरबेस एक्सटेंशन टाइपस्क्रिप्ट में लिखे गए हैं। आप अपने एक्सटेंशन के लिए टाइपस्क्रिप्ट का उपयोग करने के लिए कुछ सर्वोत्तम प्रथाओं के लिए उन एक्सटेंशन की समीक्षा कर सकते हैं।
यदि आप अपने एक्सटेंशन के कार्यों को टाइपस्क्रिप्ट में लिखते हैं, तो आपको अपना एक्सटेंशन इंस्टॉल करने से पहले निम्नलिखित कार्य करना होगा:
अपने एक्सटेंशन के फ़ंक्शंस स्रोत कोड को जावास्क्रिप्ट में संकलित करें।
firebase ext:dev:init
कमांड आपको अपने कार्यों को लिखने के लिए टाइपस्क्रिप्ट चुनने की अनुमति देता है। कमांड आपको एक पूर्ण, इंस्टॉल करने योग्य एक्सटेंशन के साथ-साथ एक बिल्ड स्क्रिप्ट प्रदान करता है जिसे आपnpm run build
के साथ चला सकते हैं।अपनी
package.json
फ़ाइल में,main
फ़ील्ड को जेनरेट की गई जावास्क्रिप्ट पर इंगित करना सुनिश्चित करें।यदि आप स्थानीय स्रोत से अपना एक्सटेंशन इंस्टॉल या अपलोड कर रहे हैं, तो पहले अपनी टाइपस्क्रिप्ट फ़ाइलें संकलित करें।
समर्थित फ़ंक्शन ट्रिगर
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}