पैरामीटर एक ऐसा तरीका है जिसकी मदद से उपयोगकर्ता, एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस को पसंद के मुताबिक बनाता है. पैरामीटर, एक्सटेंशन के लिए एनवायरमेंट वैरिएबल की तरह होते हैं. पैरामीटर की वैल्यू, अपने-आप भर सकती हैं (Firebase, इंस्टॉल करने के बाद यह वैल्यू देता है) या उपयोगकर्ता के हिसाब से कॉन्फ़िगर की जा सकती हैं (उपयोगकर्ता, इंस्टॉल करने के दौरान यह वैल्यू तय करता है).
इन पैरामीटर का इस्तेमाल, एक्सटेंशन के फ़ंक्शन के सोर्स कोड, extension.yaml फ़ाइल, और POSTINSTALL.md फ़ाइल में किया जा सकता है. PARAMETER_NAME नाम के पैरामीटर को रेफ़रंस करने का सिंटैक्स यहां दिया गया है:
- अपने फ़ंक्शन के सोर्स कोड में, - paramsमॉड्यूल (उदाहरण के लिए,- params.defineInt("PARAMETER_NAME")) या- process.env.PARAMETER_NAMEका इस्तेमाल करें.
- extension.yamlऔर- POSTINSTALL.mdमें,- ${param:PARAMETER_NAME}का इस्तेमाल करें.- इंस्टॉल करने के बाद, Firebase कंसोल, - POSTINSTALL.mdफ़ाइल का कॉन्टेंट दिखाता है. साथ ही, इंस्टॉल किए गए इंस्टेंस के लिए, पैरामीटर के किसी भी रेफ़रंस में असल वैल्यू भरता है.
अपने-आप भरने वाले पैरामीटर
एक्सटेंशन के हर इंस्टॉल किए गए इंस्टेंस के पास, Firebase की ओर से अपने-आप भरे जाने वाले कई डिफ़ॉल्ट पैरामीटर का ऐक्सेस होता है. इसके बारे में जानने के लिए, यहां दी गई टेबल देखें. इन पैरामीटर वैल्यू में, Firebase प्रोजेक्ट की डिफ़ॉल्ट वैल्यू (जैसे कि डिफ़ॉल्ट स्टोरेज बकेट) शामिल होती हैं. इसके अलावा, इनमें एक्सटेंशन से जुड़ी वैल्यू (जैसे कि एक्सटेंशन का इंस्टेंस आईडी) भी शामिल होती हैं.
अपने-आप भरने वाले सभी पैरामीटर की वैल्यू में बदलाव नहीं किया जा सकता. इन्हें प्रोजेक्ट बनाते समय या एक्सटेंशन इंस्टॉल करते समय सेट किया जाता है.
एक्सटेंशन के लिए, Firebase इन पैरामीटर की वैल्यू अपने-आप भर देता है. हालांकि, Firebase, इंस्टॉल करने के दौरान उपयोगकर्ता के लिए, उससे जुड़े प्रॉडक्ट अपने-आप उपलब्ध नहीं कराता. एक्सटेंशन इंस्टॉल करने वाले व्यक्ति को, इंस्टॉल करने से पहले अपने प्रोजेक्ट में उससे जुड़े और लागू होने वाले प्रॉडक्ट चालू करने होंगे. उदाहरण के लिए, अगर आपके एक्सटेंशन में Cloud Firestore शामिल है, तो उपयोगकर्ता को अपने प्रोजेक्ट में Cloud Firestore सेट अप करना होगा. हमारा सुझाव है कि आप अपने उपयोगकर्ताओं को इन ज़रूरी शर्तों के बारे में PREINSTALL.md
फ़ाइल में बताएं.
| अपने-आप भरने वाले पैरामीटर का रेफ़रंस | ब्यौरा | पैरामीटर वैल्यू (Firebase से मिली) | 
|---|---|---|
| Firebase प्रोजेक्ट से डिफ़ॉल्ट वैल्यू वाले पैरामीटर | ||
| PROJECT_ID | उस Firebase प्रोजेक्ट के लिए यूनीक आइडेंटिफ़ायर जिसमें एक्सटेंशन इंस्टॉल किया गया है | 
          सामान्य फ़ॉर्मैट: 
          वैल्यू का उदाहरण: | 
| DATABASE_URL | Firebase प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस का यूआरएल | 
          सामान्य फ़ॉर्मैट: 
          वैल्यू का उदाहरण: | 
| DATABASE_INSTANCE | Firebase प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस का नाम आम तौर पर, यह वैल्यू प्रोजेक्ट आईडी के जैसी होती है या  | 
          सामान्य फ़ॉर्मैट: 
          वैल्यू का उदाहरण: | 
| STORAGE_BUCKET | Firebase प्रोजेक्ट के डिफ़ॉल्ट Cloud Storage बकेट का नाम | 
          सामान्य फ़ॉर्मैट: 
          वैल्यू का उदाहरण: | 
| एक्सटेंशन इंस्टॉल करने के दौरान डिफ़ॉल्ट वैल्यू वाला पैरामीटर | ||
| EXT_INSTANCE_ID | इंस्टॉल किए गए एक्सटेंशन इंस्टेंस के लिए यूनीक आइडेंटिफ़ायर यह वैल्यू,  | पहले इंस्टॉल किए गए इंस्टेंस के लिए सामान्य फ़ॉर्मैट (Firebase से अपने-आप असाइन होता है; इंस्टॉलेशन के दौरान उपयोगकर्ता इसमें बदलाव नहीं कर सकता): 
          वैल्यू का उदाहरण: दूसरे और उसके बाद इंस्टॉल किए गए इंस्टेंस के लिए सामान्य फ़ॉर्मैट
          (Firebase इसे अपने-आप असाइन करता है; उपयोगकर्ता इसे इंस्टॉल करने के दौरान बदल सकता है): 
          वैल्यू का उदाहरण: | 
उपयोगकर्ता के कॉन्फ़िगर किए गए पैरामीटर
उपयोगकर्ता को एक्सटेंशन के इंस्टॉल किए गए हर इंस्टेंस को पसंद के मुताबिक बनाने की अनुमति देने के लिए, उपयोगकर्ता से इंस्टॉलेशन के दौरान पैरामीटर की वैल्यू तय करने के लिए कहा जा सकता है. इन वैल्यू का अनुरोध करने के लिए, अपनी extension.yaml फ़ाइल के params सेक्शन में प्रॉम्प्ट सेट अप करें.
यहां params सेक्शन का एक उदाहरण दिया गया है. इसके बाद, एक टेबल दी गई है. इसमें सभी उपलब्ध पैरामीटर फ़ील्ड के बारे में बताया गया है.
# extension.yaml
...
# Parameters (environment variables) for which the user specifies values during installation
params:
  - param: DB_PATH
    label: Realtime Database path
    description: >-
      What is the Realtime Database path where you will write new text
      for sentiment analysis?
    type: string
    validationRegex: ^\S+$
    validationErrorMessage: Realtime Database path cannot contain spaces.
    example: path/to/posts
    required: true
  - param: TEXT_KEY
    label: Key for text
    description: What is the name of the key that will contain text to be analyzed?
    type: string
    default: textToAnalyze
    required: true
उपयोगकर्ता के हिसाब से कॉन्फ़िगर किए गए पैरामीटर को तय करने के लिए, अपनी extension.yaml फ़ाइल के params सेक्शन में जाकर, इन फ़ील्ड का इस्तेमाल करें:
| फ़ील्ड | टाइप | ब्यौरा | ||||
|---|---|---|---|---|---|---|
| param(ज़रूरी है) | स्ट्रिंग | पैरामीटर का नाम | ||||
| label(ज़रूरी है) | स्ट्रिंग | पैरामीटर के बारे में कम शब्दों में जानकारी जब उपयोगकर्ता को पैरामीटर की वैल्यू डालने के लिए कहा जाता है, तब उसे यह मैसेज दिखता है | ||||
| description(ज़रूरी नहीं) | स्ट्रिंग | पैरामीटर के बारे में पूरी जानकारी जब उपयोगकर्ता को पैरामीटर की वैल्यू डालने के लिए कहा जाता है, तब उसे यह मैसेज दिखता है मार्कडाउन फ़ॉर्मैटिंग की सुविधा उपलब्ध है | ||||
| type(ज़रूरी नहीं) | स्ट्रिंग | इनपुट मैकेनिज़्म, जिससे उपयोगकर्ता पैरामीटर की वैल्यू सेट करता है. उदाहरण के लिए, सीधे तौर पर टेक्स्ट डालना या ड्रॉपडाउन सूची से चुनना मान्य वैल्यू में ये शामिल हैं: 
 अगर इस फ़ील्ड को खाली छोड़ा जाता है, तो पैरामीटर डिफ़ॉल्ट रूप से  | ||||
| options(required if parameter typeisselectormultiSelect) | सूची | वैल्यू की सूची, जिसमें से उपयोगकर्ता चुन सकता है 
 
 
 | ||||
| resourceType(required if parameter typeisselectResource) | स्ट्रिंग | यह Firebase संसाधन का टाइप है. इससे उपयोगकर्ता को चुनने के लिए कहा जाता है. फ़िलहाल, सिर्फ़ Cloud Storage बकेट, संसाधन चुनने की सुविधा के साथ काम करते हैं: 
 
 | ||||
| example(ज़रूरी नहीं) | स्ट्रिंग | पैरामीटर के लिए वैल्यू का उदाहरण | ||||
| validationRegex(ज़रूरी नहीं) (यह सिर्फ़ तब लागू होता है, जब पैरामीटर typeकी वैल्यूstringहो) | स्ट्रिंग | पैरामीटर की उपयोगकर्ता के हिसाब से कॉन्फ़िगर की गई वैल्यू की पुष्टि करने के लिए रेगुलर एक्सप्रेशन स्ट्रिंग RE2 गो लाइब्रेरी का इस्तेमाल करके, रेगुलर एक्सप्रेशन को कंपाइल किया जाता है पुष्टि करने के बारे में जानकारी पाने के लिए, यहां पुष्टि करना और गड़बड़ी के मैसेज देखें. | ||||
| validationErrorMessage(ज़रूरी नहीं) | स्ट्रिंग | 
 गड़बड़ी के मैसेज के बारे में जानकारी पाने के लिए, यहां दिया गया पुष्टि करना और गड़बड़ी के मैसेज देखें. | ||||
| default(ज़रूरी नहीं) | स्ट्रिंग | अगर उपयोगकर्ता पैरामीटर की वैल्यू को खाली छोड़ देता है, तो पैरामीटर के लिए डिफ़ॉल्ट वैल्यू अगर लागू हो, तो  | ||||
| required(ज़रूरी नहीं) | बूलियन | इससे यह तय होता है कि उपयोगकर्ता को पैरामीटर की वैल्यू के लिए प्रॉम्प्ट किए जाने पर, वह खाली स्ट्रिंग सबमिट कर सकता है या नहीं अगर  | ||||
| immutable(ज़रूरी नहीं) | बूलियन | इससे यह तय होता है कि इंस्टॉलेशन के बाद उपयोगकर्ता, पैरामीटर की वैल्यू बदल सकता है या नहीं. उदाहरण के लिए, अगर उपयोगकर्ता एक्सटेंशन को फिर से कॉन्फ़िगर करता है, तो वह पैरामीटर की वैल्यू बदल सकता है या नहीं अगर  
          ध्यान दें: अगर आपने अपने एक्सटेंशन के डिप्लॉय किए गए फ़ंक्शन के लिए, "location" पैरामीटर तय किया है, तो आपको इस  | 
उपयोगकर्ता के कॉन्फ़िगर की गई वैल्यू के लिए पुष्टि करना और गड़बड़ी के मैसेज दिखाना
string के type के साथ पैरामीटर सेट अप करते समय, आपको पैरामीटर के validationRegex फ़ील्ड के ज़रिए, सही रेगुलर एक्सप्रेशन की पुष्टि करनी होगी.
साथ ही, कई एक्सटेंशन के लिए, आम तौर पर अनुरोध की जाने वाली पैरामीटर वैल्यू, डेटाबेस का पाथ या Cloud Storage बकेट होती है. ध्यान दें कि इंस्टॉल, फिर से कॉन्फ़िगर करने या अपडेट करने के दौरान, Extensions सेवा, पैरामीटर वैल्यू डालते समय, यहां दी गई बातों की पुष्टि नहीं करती:
- यह कुकी यह तय करती है कि तय किया गया डेटाबेस या Cloud Storage बकेट, उपयोगकर्ता के Firebase प्रोजेक्ट में सेट अप किया गया है या नहीं
- यह कुकी यह तय करती है कि उपयोगकर्ता के डेटाबेस में, तय किया गया डेटाबेस पाथ मौजूद है या नहीं
हालांकि, जब एक्सटेंशन असल में अपने संसाधनों को डिप्लॉय कर रहा होता है, तो Firebase कंसोल या Firebase CLI, गड़बड़ी का मैसेज दिखाएगा. ऐसा तब होगा, जब प्रोजेक्ट में रेफ़र किया गया डेटाबेस या Cloud Storage बकेट अब तक सेट अप नहीं किया गया है.
हमारा सुझाव है कि आप PREINSTALL फ़ाइल में मौजूद उपयोगकर्ताओं को इन ज़रूरी शर्तों के बारे में सूचना दें. इससे, जब वे आपका एक्सटेंशन इंस्टॉल करेंगे, तो वह सही तरीके से इंस्टॉल हो जाएगा और उम्मीद के मुताबिक काम करेगा.
सिस्टम पैरामीटर
सिस्टम पैरामीटर, एक्सटेंशन के संसाधनों के बुनियादी कॉन्फ़िगरेशन को कंट्रोल करते हैं. इनका इस्तेमाल संसाधन कॉन्फ़िगरेशन को कंट्रोल करने के लिए किया जाता है. इसलिए, इन्हें आपके फ़ंक्शन कोड में एनवायरमेंट वैरिएबल के तौर पर ऐक्सेस नहीं किया जा सकता.
आम तौर पर, आपको extension.yaml में इन पैरामीटर के लिए कुछ भी एलान करने की ज़रूरत नहीं होती.
इन्हें हर एक्सटेंशन इंस्टेंस के लिए अपने-आप तय किया जाता है. साथ ही, उपयोगकर्ताओं के पास आपके एक्सटेंशन को इंस्टॉल करते समय कस्टम वैल्यू सेट करने का विकल्प होता है.
हालांकि, अगर आपके एक्सटेंशन को खास संसाधनों की ज़रूरत है, तो extension.yaml में जाकर, हर संसाधन के लिए अलग-अलग वैल्यू सेट की जा सकती हैं.
हर संसाधन के लिए कॉन्फ़िगरेशन की ये सेटिंग, उपयोगकर्ता के एक्सटेंशन की सभी इंस्टेंस के लिए लागू होने वाली सेटिंग को बदल देंगी.
उदाहरण के लिए:
resources:
- name: high_memory_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function needs at least 1GB of memory!
  properties:
    httpsTrigger: {}
    runtime: nodejs18
    availableMemoryMb: 1024
- name: normal_function
  type: firebaseextensions.v1beta.function
  description: >-
    This function has no special memory requirements. It will use the
    default value, or the value of `firebaseextension.v1beta.function/memory`
  properties:
    httpsTrigger: {}
    runtime: nodejs18
ये सिस्टम पैरामीटर उपलब्ध हैं:
| नाम | लेबल (लोगों के हिसाब से) | propertiesमें मौजूद मिलता-जुलता फ़ील्ड | ब्यौरा | 
|---|---|---|---|
| firebaseextensions.v1beta.function/location | जगह | location | Cloud Functions को किस इलाके में डिप्लॉय किया जाना चाहिए? | 
| firebaseextensions.v1beta.function/memory | फ़ंक्शन मेमोरी | memory | हर फ़ंक्शन के लिए, कितनी मेगाबाइट मेमोरी असाइन की जानी चाहिए? | 
| firebaseextensions.v1beta.function/timeoutSeconds | फ़ंक्शन टाइमआउट | timeout | फ़ंक्शन को टाइम आउट होने से पहले कितने सेकंड तक चलना चाहिए? | 
| firebaseextensions.v1beta.function/vpcConnectorEgressSettings | वीपीसी कनेक्टर से इग्रेस डेटा ट्रैफ़िक | vpcConnectorEgressSettings | इस कुकी से, वीपीसी कनेक्टर कॉन्फ़िगर होने पर आउटगोइंग ट्रैफ़िक को कंट्रोल किया जाता है | 
| firebaseextensions.v1beta.function/vpcConnector | VPC कनेक्टर | vpcConnector | यह कुकी, Cloud Functions को तय किए गए वीपीसी कनेक्टर से कनेक्ट करती है. | 
| firebaseextensions.v1beta.function/minInstances | फ़ंक्शन के कम से कम इंस्टेंस | minInstances | इस फ़ंक्शन के एक साथ चलने वाले इंस्टेंस की कम से कम संख्या | 
| firebaseextensions.v1beta.function/maxInstances | फ़ंक्शन के ज़्यादा से ज़्यादा इंस्टेंस | maxInstances | इस फ़ंक्शन के ज़्यादा से ज़्यादा कितने इंस्टेंस एक साथ चलाए जा सकते हैं | 
| firebaseextensions.v1beta.function/ingressSettings | इन्ग्रेस सेटिंग | ingressSettings | इससे यह कंट्रोल होता है कि इनकमिंग ट्रैफ़िक कहां से स्वीकार किया जाता है | 
| firebaseextensions.v1beta.function/labels | लेबल | labels | एक्सटेंशन में मौजूद सभी संसाधनों पर लागू किए जाने वाले लेबल |