Firebase एक्सटेंशन इंस्टॉल करना

Firebase कंसोल, Firebase CLI (कमांड-लाइन इंटरफ़ेस) या अपने-आप जनरेट हुए SDK टूल का इस्तेमाल करके, Firebase के किसी भी आधिकारिक एक्सटेंशन को इंस्टॉल (और मैनेज) किया जा सकता है.

हर इंस्टॉलेशन के तरीके के लिए, काम करने वाली कार्रवाइयों में अंतर देखना न भूलें.


अपने-आप जनरेट हुए SDK टूल का इस्तेमाल करके इंस्टॉल करना, एक्सटेंशन को इंस्टॉल और मैनेज करने का एक नया विकल्प है. इस विकल्प की मदद से, किसी खास एक्सटेंशन वर्शन के लिए Node SDK टूल अपने-आप जनरेट करने के लिए, सीएलआई का इस्तेमाल किया जाता है. इस टूल को अपने JavaScript या TypeScript Cloud Functions में सामान्य डिपेंडेंसी के तौर पर इंपोर्ट किया जा सकता है.

अपने-आप जनरेट हुए इस SDK टूल में ये शामिल हैं:

  • एक्सटेंशन के पैरामीटर और टाइप के एलान दिखाने वाला इंटरफ़ेस. यह ज़्यादातर पैरामीटर टाइप के लिए होता है.
  • कंस्ट्रक्टर फ़ंक्शन, जो एक्सटेंशन के इंस्टेंस को शुरू करता है
  • एक एक्सटेंशन क्लास, जिसमें एक्सटेंशन से उत्सर्जित सभी इवेंट के लिए Eventarc ट्रिगर होते हैं.

एक्सटेंशन SDK टूल जनरेट करने के बाद, एक्सटेंशन का पूरा कॉन्फ़िगरेशन कोड में होता है.

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


एक्सटेंशन इंस्टॉल करने या मैनेज करने के लिए, आपके पास इनमें से कोई एक भूमिका होनी चाहिए: मालिक या एडिटर या Firebase एडमिन.

एक्सटेंशन इंस्टॉल करने के लिए, आपका प्रोजेक्ट Blaze (पेमेंट के साथ) प्लान पर होना चाहिए. एक्सटेंशन इंस्टॉल करने के लिए कोई शुल्क नहीं लिया जाता. हालांकि, अगर सेवाओं के मुफ़्त टियर के बाद भी उनका इस्तेमाल किया जाता है, तो Firebase की सेवाओं या Cloud Secret Manager जैसी Cloud की सेवाओं के इस्तेमाल के लिए आपसे शुल्क लिया जा सकता है.

शुरू करने से पहले

  1. अगर आपने पहले से ऐसा नहीं किया है, तो अपने प्रोजेक्ट में Firebase जोड़ें.

  2. अगर आपने अब तक ऐसा नहीं किया है, तो अपने प्रोजेक्ट को Blaze (पेमेंट के साथ इस्तेमाल करने की सुविधा) प्लान पर अपग्रेड करें.

  3. Firebase सीएलआई को इंस्टॉल करें या नए वर्शन पर अपडेट करें.

  4. अपने Firebase प्रोजेक्ट आईडी या पहले से कॉन्फ़िगर किए गए प्रोजेक्ट के किसी अन्य नाम को नोट करें.

पहला चरण: किसी एक्सटेंशन के बारे में ज़्यादा जानकारी देखना

यह चरण ज़रूरी नहीं है, लेकिन इसका सुझाव दिया जाता है.

हमारा सुझाव है कि Firebase Extension इंस्टॉल करने से पहले, आप एक्सटेंशन के बारे में पूरी जानकारी देख लें. इसमें ये चीज़ें शामिल हैं:

  • एक्सटेंशन कैसे काम करता है, इंस्टॉल करने से पहले कौनसे टास्क पूरे करने होंगे, और एक्सटेंशन के बारे में जानकारी
  • पहचान से जुड़ी सामान्य जानकारी और ब्यौरा
  • एक्सटेंशन के टास्क के लिए बिलिंग खाते की ज़रूरत है या नहीं
  • Google की सेवाएं (एपीआई) और ऑपरेशन के लिए ज़रूरी ऐक्सेस भूमिकाएं
  • एक्सटेंशन के लिए बनाए गए संसाधन (जैसे, फ़ंक्शन)
  • उपयोगकर्ता के कॉन्फ़िगर किए जा सकने वाले पैरामीटर के बारे में जानकारी

किसी एक्सटेंशन की ज़्यादा जानकारी देखने के लिए:

  1. पक्का करें कि आपने अपना एनवायरमेंट सेट अप कर लिया हो और कोई एक्सटेंशन चुना हो.

  2. अपने कंप्यूटर पर कहीं से भी extension-info कमांड चलाएं:

    firebase ext:info publisher-id/extension-id

    publisher-id और extension-id आर्ग्युमेंट ज़रूरी हैं. इन्हें एक्सटेंशन के पहले से इंस्टॉल होने की जानकारी वाले पेज पर देखा जा सकता है.

दूसरा चरण: एक्सटेंशन इंस्टॉल करना

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

आगे बढ़ने से पहले, पक्का करें कि आपने एनवायरमेंट सेट अप कर लिया हो और कोई एक्सटेंशन चुना हो.

Firebase के लिए Cloud Functions को शुरू करना

अगर कोई नया प्रोजेक्ट शुरू किया जा रहा है या आपका प्रोजेक्ट पहले से ही Firebase के लिए Cloud Functions का इस्तेमाल नहीं करता है, तो init functions चलाएं:

cd your-project
firebase init functions

फ़ंक्शन की भाषा के तौर पर, TypeScript या JavaScript चुनें.

अगर आपके प्रोजेक्ट में पहले से ही Cloud Functions शुरू है, तो पक्का करें कि आपने firebase-functions पैकेज के 5.1.0 या इसके बाद के वर्शन का इस्तेमाल किया हो:

cd your-project/functions
npm upgrade --save firebase-functions

अगर ESLint का इस्तेमाल किया जा रहा है, तो हो सकता है कि आप अपने कॉन्फ़िगरेशन (.eslintrc.js) से जनरेट किए गए SDK टूल को भी हटाना चाहें:

ignorePatterns: [
  "/generated/**/*", // Ignore generated files.
  // ...
],

एक्सटेंशन SDK टूल जनरेट करना

अपनी स्थानीय Firebase डायरेक्ट्री से, ext:sdk:install कमांड चलाएं.

firebase ext:sdk:install publisher-id/extension-id@version

उदाहरण के लिए, firestore-send-email एक्सटेंशन का 0.1.34 वर्शन इंस्टॉल करने के लिए:

firebase ext:sdk:install firebase/firestore-send-email@0.1.34

publisher-id और extension-id को डालना ज़रूरी है. ये extensions.dev पर, एक्सटेंशन के पहले से इंस्टॉल होने की जानकारी वाले पेज पर मौजूद होते हैं. @version को डालना ज़रूरी नहीं है. अगर इसे नहीं डाला जाता है, तो टूल नया वर्शन इंस्टॉल कर देगा.

आपके पास दो विकल्प हैं:

  • --force: बिना किसी और पुष्टि के, ये सभी काम करें:

    • SDK टूल को अपने-आप जनरेट करना. भले ही, उसी एक्सटेंशन और वर्शन के लिए पहले से ही कोई SDK टूल जनरेट किया गया हो.
    • Cloud Functions Node प्रोजेक्ट में, अपने-आप जनरेट हुआ SDK टूल पैकेज इंस्टॉल करें.
  • --codebase: उस कोडबेस का नाम जिसमें SDK टूल जोड़ना है. अगर कोई कोडबेस नहीं दिया गया है, तो कमांड डिफ़ॉल्ट कोडबेस functions में SDK टूल जोड़ता है.

यह कमांड, एक्सटेंशन के लिए अपने-आप जनरेट होने वाले SDK टूल वाला एक Node पैकेज बनाता है. साथ ही, इसे आपके प्रोजेक्ट के Cloud Functions के कोडबेस में जोड़ता है. डिफ़ॉल्ट कोडबेस (functions) में, SDK टूल यहां सेव होता है:

functions/generated/extensions/publisher-id/extension-id/version

एसडीके जनरेट करने के बाद, कमांड से पूछा जाएगा कि क्या आपको अपने Cloud Functions नोड प्रोजेक्ट में भी एसडीके इंस्टॉल करना है. इस प्रॉम्प्ट के लिए हां में जवाब दें.

एक्सटेंशन इंस्टेंस कॉन्फ़िगर करना

एक्सटेंशन को कॉन्फ़िगर करने के लिए, SDK टूल इंपोर्ट करें. साथ ही, आपको जिस एक्सटेंशन इंस्टेंस को इंस्टॉल करना है उसके लिए, कॉन्स्ट्रक्टर फ़ंक्शन को कॉल करें. इसके लिए, प्रोजेक्ट के लिए यूनीक इंस्टेंस आईडी और एक्सटेंशन के लिए ज़रूरी कॉन्फ़िगरेशन पैरामीटर डालें.

  1. अपने Cloud Functions सोर्स में, ext:sdk:install कमांड से प्रिंट किए गए स्टेटमेंट का इस्तेमाल करके, कॉन्स्ट्रक्टर इंपोर्ट करें.

    TypeScript

    उदाहरण के लिए, अगर आपने firestore-send-email एक्सटेंशन के लिए एसडीके टूल जनरेट किया है, तो import स्टेटमेंट कुछ ऐसा दिखेगा:

    import { firestoreSendEmail } from "@firebase-extensions/firebase-firestore-send-email-sdk";
    

    अगर एक्सटेंशन को पासवर्ड जैसी किसी गोपनीय वैल्यू की ज़रूरत है, तो आपको Cloud Functions SDK टूल के defineSecret फ़ंक्शन की भी ज़रूरत होगी:

    import { defineSecret } from "firebase-functions/params";
    

    JavaScript

    उदाहरण के लिए, अगर आपने firestore-send-email एक्सटेंशन के लिए एसडीके टूल जनरेट किया है, तो require स्टेटमेंट कुछ ऐसा दिखेगा:

    const { firestoreSendEmail } = require("@firebase-extensions/firebase-firestore-send-email-sdk");
    

    अगर एक्सटेंशन को पासवर्ड जैसी किसी गोपनीय वैल्यू की ज़रूरत है, तो आपको Cloud Functions SDK टूल के defineSecret फ़ंक्शन की भी ज़रूरत होगी:

    const { defineSecret } = require('firebase-functions/params');
    
  2. आपको जिन इंस्टेंस को कॉन्फ़िगर करना है उनके लिए, कॉन्स्ट्रक्टर फ़ंक्शन को कॉल करें और नतीजे को एक्सपोर्ट करें.

    हर इंस्टेंस को एक यूनीक आईडी दें. इसमें सिर्फ़ छोटे अक्षर, संख्याएं, और हाइफ़न होने चाहिए.

    TypeScript

    export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", {
        SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465",
        SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"),
        MAIL_COLLECTION: "mail",
        DEFAULT_FROM: "ExampleCo <username@example.com>",
        TTL_EXPIRE_VALUE: "1",
        TTL_EXPIRE_TYPE: "day",
    });
    

    JavaScript

    exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", {
        SMTP_CONNECTION_URI: "smtps://username@example.com@smtp.example.com:465",
        SMTP_PASSWORD: defineSecret("SMTP_PASSWORD"),
        MAIL_COLLECTION: "mail",
        DEFAULT_FROM: "ExampleCo <username@example.com>",
        TTL_EXPIRE_VALUE: "1",
        TTL_EXPIRE_TYPE: "day",
    });
    

    ध्यान दें कि गुप्त वैल्यू को defineSecret फ़ंक्शन का इस्तेमाल करके बताया जाना चाहिए.

  3. इसके बाद, कॉन्फ़िगर किए गए एक्सटेंशन को डिप्लॉय करने के लिए, यह चलाएं:

    firebase deploy --only functions --project=projectId-or-alias

    Cloud Functions डिप्लॉयमेंट के सभी सामान्य विकल्प लागू होते हैं. उदाहरण के लिए, किसी खास कोडबेस से एक एक्सटेंशन इंस्टेंस को डिप्लॉय करने के लिए:

    firebase deploy --only functions:codebase:extension-instance-id --project=projectId-or-alias

तीसरा चरण: इंस्टॉल के बाद का सेटअप पूरा करना

कुछ एक्सटेंशन का इस्तेमाल करने से पहले, आपको कुछ ज़रूरी या वैकल्पिक चरण पूरे करने होंगे. ये निर्देश, Firebase कंसोल के Extensions डैशबोर्ड में, इंस्टॉल के बाद दिखने वाले एक्सटेंशन की जानकारी वाले पेज पर मिलेंगे. डैशबोर्ड का लिंक, इंस्टॉल के बाद टर्मिनल में दिखता है.

आपको ये निर्देश, एक्सटेंशन की सोर्स डायरेक्ट्री में शामिल POSTINSTALL.md फ़ाइल में भी मिल सकते हैं.

Firebase संसाधन बनाना

अगर आपने एक्सटेंशन को ऐसे Firebase संसाधनों (Cloud Firestore कलेक्शन, Realtime Database पाथ, Cloud Storage बकेट) का इस्तेमाल करने के लिए कॉन्फ़िगर किया है जो पहले से मौजूद नहीं हैं, तो एक्सटेंशन का इस्तेमाल करने से पहले उन्हें बनाएं.

Eventarc इवेंट हैंडलर बनाना

कुछ एक्सटेंशन, Eventarc पर तब पब्लिश होते हैं, जब एक्सटेंशन लागू करने के दौरान कोई अहम इवेंट होता है. अगर कोई एक्सटेंशन इवेंट पब्लिश करता है, तो आपके पास ऐसे फ़ंक्शन लिखने का विकल्प होता है जो आपके कस्टम लॉजिक के हिसाब से इन इवेंट पर प्रतिक्रिया देते हैं. उदाहरण के लिए, यह सुविधा लंबे समय तक चलने वाले टास्क पूरे होने पर उपयोगकर्ताओं को सूचना देने या एक्सटेंशन फ़ंक्शन के आउटपुट को पोस्ट-प्रोसेस करने के लिए काम की हो सकती है.

अगर आपको एक्सटेंशन से उत्सर्जित किए गए किसी भी इवेंट के लिए हैंडलर तय करने हैं, तो हर इंस्टेंस के ट्रिगर करने के तरीकों का इस्तेमाल करें:

TypeScript

export const firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });

export const emailErrorHandler = firestoreSendEmail_1.onError((event) => {
  // Handle mail errors.
});

JavaScript

exports.firestoreSendEmail_1 = firestoreSendEmail("firestore-send-email-1", { /* ... */ });

exports.emailErrorHandler = exports.firestoreSendEmail_1.onError((event) => {
  // Handle mail errors.
});

आपको एक्सटेंशन इंस्टेंस के साथ-साथ इवेंट हैंडलर भी एक्सपोर्ट करना होगा.

इवेंट हैंडलर तय करने के बाद और उसमें हर बार बदलाव करने के बाद, एक्सटेंशन और हैंडलर, दोनों को फिर से डिप्लॉय करें.

एक से ज़्यादा एक्सटेंशन इंस्टॉल करना

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

आपको जिस इंस्टेंस को इंस्टॉल और कॉन्फ़िगर करना है उसके लिए, अपने-आप जनरेट हुए SDK टूल के कन्स्ट्रक्टर फ़ंक्शन को एक बार कॉल करें.

अगले चरण

  • Firebase कंसोल में, इंस्टॉल किए गए एक्सटेंशन की जानकारी और कॉन्फ़िगरेशन देखें.

  • इंस्टॉल किए गए एक्सटेंशन की गतिविधि को मॉनिटर करें. इसमें, उसकी परफ़ॉर्मेंस, इस्तेमाल, और लॉग की जांच करना शामिल है.

  • Firebase कंसोल का इस्तेमाल करके, अपने इंस्टॉल किए गए एक्सटेंशन को मैनेज करें. आधिकारिक Firebase एक्सटेंशन के लिए, अपने एक्सटेंशन को फिर से कॉन्फ़िगर किया जा सकता है या अनइंस्टॉल किया जा सकता है. साथ ही, अपने एक्सटेंशन को नए वर्शन पर अपडेट किया जा सकता है.

  • सभी प्रोजेक्ट के लिए सबसे सही तरीका यह है कि अपने प्रोजेक्ट के लिए बजट से जुड़ी सूचनाएं सेट अप करें. साथ ही, Firebase कंसोल में इस्तेमाल और बिलिंग डैशबोर्ड पर नज़र रखें.