Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

कस्टम ईवेंट ट्रिगर बनाएं और प्रबंधित करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

क्लाउड फ़ंक्शंस (द्वितीय जीन) के साथ, आप कस्टम ईवेंट के जवाब में फ़ंक्शंस ट्रिगर कर सकते हैं। ये विशेष या अतिरिक्त ईवेंट प्रदाताओं द्वारा प्रदान किए गए ईवेंट हैं, जो कि क्लाउड फ़ंक्शंस के लिए Firebase SDK द्वारा मूल रूप से समर्थित Firebase ईवेंट के विपरीत है।

सार्वजनिक पूर्वावलोकन के दौरान, उपलब्ध कस्टम ईवेंट Firebase एक्सटेंशन द्वारा प्रदान किए जाते हैं। आप अपने ऐप में एक एक्सटेंशन इंस्टॉल कर सकते हैं और फिर इस मूल प्रवाह में कस्टम ईवेंट का जवाब दे सकते हैं:

  1. एक एक्सटेंशन इंस्टॉल करें जो एक या अधिक कस्टम ईवेंट प्रदान करता है।
  2. एक onCustomEventPublished हैंडलर को तैनात करके एक ईवेंट प्रकार को संभालें। इस फ़ंक्शन में, CloudEvent ऑब्जेक्ट में लौटाए गए पेलोड को पार्स करें, और आपके ऐप को जो भी कस्टम लॉजिक चाहिए, उसे करें।

उदाहरण के लिए, बड़ी छवियों को संसाधित करने में ऐप्स की मदद करने के लिए डिज़ाइन किया गया एक्सटेंशन छवि का आकार बदलने के पूरा होने पर एक घटना का उत्सर्जन कर सकता है। इंस्टॉल किए गए इस एक्सटेंशन वाले ऐप्स छवि के आकार बदलने वाले संस्करणों को इंगित करने के लिए ऐप में लिंक अपडेट करके पूर्णता ईवेंट को संभाल सकते हैं।

सभी कस्टम इवेंट CloudEvents JSON इवेंट फ़ॉर्मैट के अनुरूप होते हैं। प्रमुख जानकारी जैसे उपलब्ध इवेंट की सूची और इवेंट पेलोड के विवरण के लिए, किसी विशेष एक्सटेंशन के दस्तावेज़ देखें।

एक कस्टम इवेंट को हैंडल करें

एक बार जब आप एक इंस्टॉल किए गए एक्सटेंशन से उपलब्ध कस्टम इवेंट की खोज कर लेते हैं, तो आप उस ईवेंट को इसके साथ संभाल सकते हैं
onCustomEventPublished हैंडलर। सबसे पहले, इस हैंडलर को अपने कस्टम लॉजिक के लिए Node.js के लिए Firebase Admin SDK और त्रुटियों को संभालने के लिए logger SDK के साथ Eventarc SDK से आयात करें:

const {onCustomEventPublished} = require("firebase-functions/v2/eventarc");
const logger = require("firebase-functions/logger");
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

अपने फ़ंक्शन कोड में, ईवेंट नाम पास करें जैसा कि उदाहरण फ़ंक्शन onimageresized के लिए दिखाया गया है:

exports.onimageresized = onCustomEventPublished(
    "firebase.extensions.storage-resize-images.v1.complete",
    (event) => {
      logger.info("Received image resize completed event", event);
      // For example, write resized image details into Firestore.
      return getFirestore()
          .collection("images")
          .doc(event.subject.replace("/", "_")) // original file path
          .set(event.data); // resized images paths and sizes
    });

प्रत्येक विशेष एक्सटेंशन के लिए, ईवेंट ऑब्जेक्ट में लौटाया गया पेलोड डेटा प्रदान करता है जिसका उपयोग आप अपने एप्लिकेशन फ़्लो के लिए कस्टम लॉजिक करने के लिए कर सकते हैं। इस मामले में, फ़ंक्शन एडमिन एसडीके का उपयोग आकार बदलने वाली छवि के बारे में मेटाडेटा को क्लाउड फायरस्टोर में एक संग्रह में कॉपी करने के लिए करता है, घटना द्वारा प्रदान किए गए subject से फ़ाइल नाम प्राप्त करता है, और घटना द्वारा प्रदान किए गए data से मेटाडेटा को सहेजता है।

एक गैर-डिफ़ॉल्ट चैनल पर एक घटना को संभालें

ऊपर दिए गए उदाहरण में यह माना गया है कि छवि पूर्ण होने की घटना डिफ़ॉल्ट चैनल पर प्रकाशित होती है, डिफ़ॉल्ट स्थान us-central1 में जैसा कि विस्तार में निर्दिष्ट है। ऐसे मामलों में जहां एक गैर-डिफ़ॉल्ट चैनल पर एक कस्टम ईवेंट प्रकाशित होता है, आपको अपने फ़ंक्शन कोड में चैनल निर्दिष्ट करने की आवश्यकता होगी। उदाहरण के लिए, यदि आप उन घटनाओं को संभालना चाहते हैं जो us-west1 स्थान के लिए एक गैर-डिफ़ॉल्ट चैनल में प्रकाशित हैं, तो आपको चैनल को दिखाए गए अनुसार निर्दिष्ट करना होगा:

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

export const func = onCustomEventPublished(
    {
      eventType: "firebase.extensions.storage-resize-images.v1.complete",
      channel: "locations/us-west1/channels/firebase",
      region: "us-west1",
    },
    (event) => { ... });