ChatMaxima Docs
Studio

Firebase Block - आपके चैटबॉट में Firestore और Cloud Messaging

Firebase Firestore और Cloud Messaging को अपने ChatMaxima चैटबॉट से कनेक्ट करें। Studio फ़्लो से दस्तावेज़ पढ़ें, संग्रह क्वेरी करें, और पुश नोटिफ़िकेशन भेजें।

अवलोकन

Firebase Block आपके ChatMaxima चैटबॉट को सीधे एक Firebase प्रोजेक्ट से कनेक्ट करता है। यह आपके फ़्लो को Cloud Firestore में दस्तावेज़ पढ़ने और लिखने और आपके मोबाइल या वेब ऐप उपयोगकर्ताओं को FCM पुश नोटिफ़िकेशन भेजने देता है, सब एक ही ब्लॉक से। आपके द्वारा कॉन्फ़िगर किया गया कोई भी ऑपरेशन कन्वर्सेशन में उस सटीक बिंदु पर चलता है जहां आप ब्लॉक छोड़ते हैं, इसलिए आपका बॉट Firestore से डेटा खींच सकता है, उसमें स्थिति वापस संग्रहीत कर सकता है, या किसी विशिष्ट कन्वर्सेशन स्थिति के जवाब में एक पुश नोटिफ़िकेशन ट्रिगर कर सकता है।

विशिष्ट उपयोग के मामलों में अपने स्वयं के Firestore संग्रह में लीड डेटा संग्रहीत करना, ID द्वारा एक प्रमाणित उपयोगकर्ता की प्रोफ़ाइल देखना, अपने ऐप के बैकएंड से ऑर्डर या बुकिंग स्थिति जांचना, और जब कन्वर्सेशन किसी मील के पत्थर (ऑर्डर पुष्टि, अपॉइंटमेंट बुक, सपोर्ट टिकट हल) तक पहुंचता है तो उपयोगकर्ता के डिवाइसों पर नोटिफ़िकेशन पुश करना शामिल है। ब्लॉक प्रमाणीकरण, टोकन कैशिंग, और त्रुटि रूटिंग को स्वचालित रूप से संभालता है, इसलिए आपको बस एक ऑपरेशन चुनना है और उसके लिए मायने रखने वाले फ़ील्ड भरने हैं।

पूर्व-आवश्यकताएं

किसी फ़्लो में Firebase ब्लॉक जोड़ने से पहले, सुनिश्चित करें कि आपके पास है:

  • एक Firebase प्रोजेक्ट जिसमें Cloud Firestore सक्षम है। इस ब्लॉक में Realtime Database समर्थित नहीं है (v1 केवल Firestore कवर करता है)।
  • आपके Firebase प्रोजेक्ट से डाउनलोड की गई एक service account JSON की। Firebase Console में Project Settings पर जाएं, Service Accounts टैब खोलें, और Generate new private key पर क्लिक करें। डाउनलोड की गई JSON फ़ाइल सहेजें। आप अगले चरण में इसकी सामग्री को ChatMaxima में पेस्ट करेंगे।
  • यदि आप पुश नोटिफ़िकेशन भेजने की योजना बनाते हैं तो आपके क्लाइंट ऐप पर FCM सेट अप। प्रत्येक डिवाइस को Firebase के साथ पंजीकृत होना चाहिए और इसका FCM पंजीकरण टोकन एक ऐसी जगह संग्रहीत होना चाहिए जहां से बॉट उसे प्राप्त कर सके (आमतौर पर एक Firestore users/{user_id}.tokens ऐरे)।

ध्यान दें: service account की एक दीर्घकालिक रहस्य है। इसे उसी तरह मानें जैसे आप एक प्रोडक्शन डेटाबेस पासवर्ड मानते हैं। इसे सोर्स कंट्रोल में कमिट न करें या चैट में साझा न करें।

चरण 1: Firebase को एक Integration के रूप में कनेक्ट करें

  1. DashboardIntegrations पर जाएं और Add Integration पर क्लिक करें
  2. प्लेटफ़ॉर्म ड्रॉपडाउन से Firebase चुनें
  3. एक नाम दर्ज करें (उदाहरण के लिए, Production Firebase या My App Firestore) ताकि आप इसे बाद में पहचान सकें
  4. service account JSON फ़ाइल की पूरी सामग्री को Service Account JSON फ़ील्ड में पेस्ट करें
  5. Verify & Save पर क्लिक करें

ChatMaxima निजी की के साथ एक JWT पर हस्ताक्षर करके, इसे एक OAuth एक्सेस टोकन के लिए एक्सचेंज करके, और Firestore के listCollectionIds एंडपॉइंट पर एक टेस्ट कॉल करके क्रेडेंशियल को सत्यापित करता है। यदि प्रोजेक्ट में Firestore सक्षम है और service account के पास पहुंच है, तो आपको Firebase integration connected दिखाई देगा। एकीकरण अब आपकी टीम पर हर बॉट के लिए उपलब्ध है।

ध्यान दें: एक्सेस टोकन ChatMaxima के अंदर कैश किया जाता है और इसकी समाप्ति से पहले स्वचालित रूप से रिफ़्रेश किया जाता है। आपको service account JSON को रोटेट या पुनः-दर्ज करने की आवश्यकता नहीं है जब तक कि आप एक अलग Firebase प्रोजेक्ट पर जाना नहीं चाहते।

चरण 2: Firebase Block को एक फ़्लो में जोड़ें

  1. Studio में अपना चैटबॉट खोलें
  2. कैनवास पर राइट-क्लिक करें (या बाएं साइडबार से ड्रैग करें) और External Integrations के तहत Firebase चुनें
  3. इसका कॉन्फ़िगरेशन खोलने के लिए ब्लॉक पर डबल-क्लिक करें
  4. Select Integration ड्रॉपडाउन से चरण 1 में बनाया गया एकीकरण चुनें
  5. एक ऑपरेशन चुनें और नीचे वर्णित फ़ील्ड भरें

उपलब्ध ऑपरेशन

Firebase ब्लॉक सात ऑपरेशन का समर्थन करता है। पहले छह Cloud Firestore के साथ काम करते हैं। सातवां एक Cloud Messaging (FCM) पुश नोटिफ़िकेशन भेजता है।

ऑपरेशनश्रेणीयह क्या करता है
Get DocumentFirestoreसंग्रह और दस्तावेज़ ID द्वारा एक एकल दस्तावेज़ पढ़ता है
Add DocumentFirestoreएक नया दस्तावेज़ बनाता है। यदि आप इसे खाली छोड़ते हैं तो Firestore ID स्वचालित रूप से उत्पन्न करता है
Set DocumentFirestoreएक विशिष्ट ID पर दस्तावेज़ को अधिलेखित करता है। सभी फ़ील्ड बदल देता है
Update DocumentFirestoreकेवल आपके द्वारा प्रदान किए गए फ़ील्ड को एक मौजूदा दस्तावेज़ में मर्ज करता है
Delete DocumentFirestoreएक विशिष्ट ID पर एक दस्तावेज़ हटाता है
Query CollectionFirestoreदस्तावेज़ों के संग्रह को फ़िल्टर, क्रमित, और सीमित करता है
Send NotificationCloud Messagingएक डिवाइस, कई डिवाइसों, या एक टॉपिक को नोटिफ़िकेशन पुश करता है

प्रत्येक इनपुट (संग्रह, दस्तावेज़ ID, फ़ील्ड मान, FCM टोकन, नोटिफ़िकेशन शीर्षक, और बॉडी) {variable} सिंटैक्स के साथ ChatMaxima वेरिएबल का समर्थन करता है, इसलिए आप उन्हें पिछले प्रश्न ब्लॉक, पहले की API कॉल, या Webhook ब्लॉक में प्राप्त डेटा से भर सकते हैं।

ऑपरेशन कॉन्फ़िगरेशन

Get Document

ID द्वारा एक दस्तावेज़ पढ़ता है। इसका उपयोग किसी उपयोगकर्ता की प्रोफ़ाइल देखने, किसी ऑर्डर की वर्तमान स्थिति लाने, या किसी भी ऐसे रिकॉर्ड को खींचने के लिए करें जिसके लिए आपके पास पहले से ID है।

फ़ील्डविवरण
CollectionFirestore संग्रह नाम (उदाहरण के लिए, users, orders)। पाई गई सूची से चुनें या एक नया टाइप करें
Document IDपढ़ने के लिए ID। {user_id} जैसे वेरिएबल का समर्थन करता है
Store the response in variableउस ChatMaxima वेरिएबल का नाम जो परिणाम रखता है

Add Document

एक संग्रह में एक नया दस्तावेज़ बनाता है। Firestore को एक स्वतः-उत्पन्न करने देने के लिए Document ID खाली छोड़ें, या अपना खुद का प्रदान करें (उदाहरण के लिए, {lead_id})।

फ़ील्डविवरण
Collectionलक्ष्य संग्रह
Document ID (optional)स्वतः ID के लिए खाली छोड़ें, या एक कस्टम प्रदान करें
Field Mappingकी/वैल्यू पंक्तियां। कीज़ Firestore फ़ील्ड नाम हैं, मान शाब्दिक या {variable} संदर्भ हो सकते हैं
Store the response in variableसहेजा गया दस्तावेज़ (इसकी उत्पन्न ID के साथ) यहां संग्रहीत होता है

Set Document

collection/document_id पर दस्तावेज़ को ठीक उन फ़ील्ड से अधिलेखित करता है जिन्हें आप सूचीबद्ध करते हैं। दस्तावेज़ पर पहले से कोई भी फ़ील्ड जो आपकी मैपिंग में नहीं है, हटा दी जाती है। जब आप मर्ज के बजाय एक साफ़ प्रतिस्थापन चाहते हैं तो इसका उपयोग करें।

Update Document

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

Delete Document

collection/document_id पर दस्तावेज़ हटाता है। यदि हटाना सफल रहा तो प्रतिक्रिया वेरिएबल में {"success": true} होगा।

Query Collection

एक संग्रह के विरुद्ध एक Firestore संरचित क्वेरी चलाता है। फ़िल्टर, क्रमबद्धता, और एक पंक्ति सीमा का समर्थन करता है।

फ़ील्डविवरण
Collectionक्वेरी करने के लिए संग्रह
Query Filtersfield, operator, value की पंक्तियां। AND के साथ संयोजित
Order By Fieldक्रमबद्ध करने के लिए वैकल्पिक फ़ील्ड नाम
Order Directionआरोही या अवरोही
Limitलौटाने के लिए दस्तावेज़ों की अधिकतम संख्या। कोई सीमा न होने के लिए खाली छोड़ें

समर्थित फ़िल्टर ऑपरेटर:

ऑपरेटरअर्थ
EQUALफ़ील्ड मान के बराबर है
NOT_EQUALफ़ील्ड मान के बराबर नहीं है
LESS_THANफ़ील्ड मान से कम है
LESS_THAN_OR_EQUALफ़ील्ड मान से कम या उसके बराबर है
GREATER_THANफ़ील्ड मान से अधिक है
GREATER_THAN_OR_EQUALफ़ील्ड मान से अधिक या उसके बराबर है
ARRAY_CONTAINSफ़ील्ड एक ऐरे है जिसमें मान शामिल है
INफ़ील्ड मान सूचीबद्ध मानों में से एक है
ARRAY_CONTAINS_ANYफ़ील्ड ऐरे में सूचीबद्ध मानों में से कोई भी शामिल है
NOT_INफ़ील्ड मान सूचीबद्ध मानों में से कोई नहीं है

Send Notification

एक FCM पुश नोटिफ़िकेशन भेजता है। तीन लक्ष्यों में से एक चुनें:

Send Toइसका उपयोग कब करें
A Single Deviceएक विशिष्ट FCM पंजीकरण टोकन
Multiple Devicesएक चरण में कई टोकन को मल्टीकास्ट। एक वेरिएबल स्वीकार करता है जो एक JSON ऐरे, एक अल्पविराम-पृथक स्ट्रिंग, या एक नेटिव ऐरे में हल होता है
A Topicकिसी टॉपिक (उदाहरण के लिए, premium-users) की सदस्यता लेने वाले हर डिवाइस को प्रसारित करें

कॉन्फ़िगरेशन फ़ील्ड:

फ़ील्डविवरण
FCM Token / Tokens / Topicप्राप्तकर्ता, लक्ष्य प्रकार पर निर्भर करता है। वेरिएबल समर्थित
Notification Titleपुश नोटिफ़िकेशन में दिखाया गया बोल्ड शीर्षक
Notification Bodyशीर्षक के नीचे दिखाया गया संदेश टेक्स्ट
Data Payloadवैकल्पिक की/वैल्यू जोड़े जो नोटिफ़िकेशन के साथ चुपचाप वितरित होते हैं। डीप लिंकिंग के लिए उपयोगी (उदाहरण के लिए, screen=orders, order_id={order_id})। FCM नियमों के अनुसार भेजने से पहले मान स्ट्रिंगीफ़ाई किए जाते हैं

प्रतिक्रिया वेरिएबल प्रारूप

प्रत्येक ऑपरेशन उस वेरिएबल में एक JSON परिणाम संग्रहीत करता है जिसे आप Store the response in variable के तहत नाम देते हैं। डाउनस्ट्रीम ब्लॉक डॉट नोटेशन का उपयोग करके फ़ील्ड को संदर्भित कर सकते हैं, उदाहरण के लिए {user_data.data.email}

Firestore रीड (Get Document)

{
  "id": "user_42",
  "name": "projects/my-project/databases/(default)/documents/users/user_42",
  "data": {
    "name": "Priya",
    "email": "priya@example.com",
    "tokens": ["iphone_tok", "ipad_tok"]
  },
  "create_time": "2026-04-20T10:30:00Z",
  "update_time": "2026-04-21T14:15:00Z"
}

Firestore राइट (Add / Set / Update)

Get Document के समान आकार। id फ़ील्ड अंतिम दस्तावेज़ ID को दर्शाता है (यदि आपने एक प्रदान नहीं किया तो स्वतः-उत्पन्न)।

Firestore Delete

{ "success": true }

Query Collection

दस्तावेज़ ऑब्जेक्ट का एक ऐरे, प्रत्येक ऊपर के आकार के साथ:

[
  { "id": "order_1", "data": { "status": "confirmed", "amount": 900 }, "create_time": "..." },
  { "id": "order_2", "data": { "status": "confirmed", "amount": 1200 }, "create_time": "..." }
]

Send Notification (single / topic)

{
  "success": true,
  "message_name": "projects/my-project/messages/0:17045...",
  "target_type": "token",
  "target_value": "iphone_tok"
}

Send Notification (multicast)

{
  "success": true,
  "sent": 2,
  "failed": 1,
  "invalid_tokens": ["stale_tok"],
  "results": [
    { "token": "iphone_tok", "success": true, "message_name": "..." },
    { "token": "ipad_tok",   "success": true, "message_name": "..." },
    { "token": "stale_tok",  "success": false, "error": "Requested entity was not found.", "error_code": "UNREGISTERED" }
  ]
}

invalid_tokens ऐरे उन टोकन को सूचीबद्ध करता है जिन्हें Firebase ने बासी (UNREGISTERED, INVALID_ARGUMENT, NOT_FOUND) के रूप में चिह्नित किया। अपने स्वयं के Firestore users संग्रह से इन्हें छांटने के लिए Update Document के साथ एक फ़ॉलो-अप Firebase ब्लॉक का उपयोग करें ताकि आप मृत डिवाइसों को लक्षित करना बंद कर दें।

सामान्य उपयोग के मामले

ऑर्डर पुष्टिकरण पुश नोटिफ़िकेशन

एक ग्राहक इन-ऐप चेकआउट पूरा करता है, और आप चाहते हैं कि बॉट उपयोगकर्ता द्वारा पंजीकृत हर डिवाइस पर एक पुष्टिकरण पुश करे।

  1. Question Block: {user_id} कैप्चर या सत्यापित करें
  2. Firebase Block (Get Document): संग्रह users, दस्तावेज़ ID {user_id}, परिणाम {user_data} में संग्रहीत करें
  3. Condition Block: {order_status} == "confirmed" पर शाखा बनाएं
  4. Firebase Block (Send Notification, Multiple Devices): टोकन {user_data.data.tokens}, शीर्षक Order confirmed, बॉडी Hi {user_data.data.name}, your order {order_id} is on its way
  5. Message Block: We have sent a confirmation to your devices

चैटबॉट लीड को Firestore में लिखें

इनबाउंड लीड के लिए सत्य के स्रोत के रूप में Firestore का उपयोग करें ताकि आपका अपना मोबाइल ऐप रीयल टाइम में प्रतिक्रिया कर सके।

  1. Question Block: {name}, {email}, {phone} के लिए पूछें
  2. Firebase Block (Add Document): संग्रह chatbot_leads, फ़ील्ड name={name}, email={email}, phone={phone}, source=chatbot
  3. Message Block: Thanks {name}, we will be in touch shortly

बुकिंग उपलब्धता जांचें

बुकिंग की पुष्टि करने से पहले, यह सुनिश्चित करने के लिए Firestore क्वेरी करें कि स्लॉट अभी भी खुला है।

  1. Firebase Block (Query Collection): संग्रह bookings, फ़िल्टर slot_id EQUAL {slot_id} और status NOT_EQUAL cancelled, सीमा 1, {existing_bookings} में संग्रहीत करें
  2. Condition Block: {existing_bookings} खाली है या नहीं इस पर शाखा बनाएं
  3. खाली होने पर: बुकिंग बनाने के लिए Firebase Block (Add Document), फिर पुष्टि के लिए Message Block
  4. मिलान होने पर: Message Block That slot was just taken, please pick another

एक टॉपिक पर प्रसारित करें

एक टॉपिक की सदस्यता लेने वाले हर डिवाइस को एक-से-कई घोषणा भेजें।

  1. Trigger Block: एडमिन एक Campaign के साथ फ़्लो ट्रिगर करता है
  2. Firebase Block (Send Notification, Topic): टॉपिक premium-users, शीर्षक New feature released, बॉडी Tap to try it out, डेटा screen=whats_new

बासी FCM टोकन साफ़ करें

एक मल्टीकास्ट भेजने के बाद, उपयोगकर्ता की प्रोफ़ाइल से मृत टोकन हटाएं ताकि भविष्य के पुश केवल लाइव डिवाइसों पर जाएं।

  1. Firebase Block (Send Notification, Multiple Devices): परिणाम {push_result} में संग्रहीत करें
  2. Condition Block: {push_result.invalid_tokens} गैर-खाली है या नहीं इस पर शाखा बनाएं
  3. Code Block या API Block: छंटी हुई टोकन सूची की गणना करें
  4. Firebase Block (Update Document): संग्रह users, दस्तावेज़ ID {user_id}, फ़ील्ड tokens={pruned_tokens}

सर्वोत्तम अभ्यास

  • service account को ठीक से स्कोप करें। ChatMaxima के लिए एक समर्पित service account बनाएं और इसे केवल वे Firestore और FCM भूमिकाएं दें जिनकी इसे आवश्यकता है। प्रोडक्शन के लिए डिफ़ॉल्ट Admin SDK की का उपयोग न करें
  • FCM टोकन को एक ऐरे के रूप में संग्रहीत करें। उपयोगकर्ताओं के अक्सर कई डिवाइस होते हैं। उन्हें प्रति उपयोगकर्ता एक tokens फ़ील्ड में रखना मल्टीकास्ट भेजना आसान बनाता है
  • त्रुटि शाखा को संभालें। प्रत्येक Firebase ब्लॉक में एक दूसरा आउटपुट होता है जो ऑपरेशन विफल होने पर सक्रिय होता है। फ़्लो को रुकने देने के बजाय इसे एक रिकवरी संदेश या एक पुनः प्रयास पर रूट करें
  • बासी टोकन छांटें। जब कोई टोकन मृत होता है तो FCM UNREGISTERED लौटाता है। अपनी उपयोगकर्ता प्रोफ़ाइल साफ़ करने के लिए मल्टीकास्ट प्रतिक्रिया में invalid_tokens फ़ील्ड का उपयोग करें
  • data payload मानों को छोटा रखें। FCM को सभी data payload मानों को स्ट्रिंग होना और कुल संदेश आकार को 4 KB के अंदर रहना आवश्यक है। ChatMaxima मानों को स्वचालित रूप से स्ट्रिंगीफ़ाई करता है, लेकिन बड़े JSON ब्लॉब Firebase द्वारा अस्वीकृत किए जाएंगे
  • service account JSON को लीक न करें। एक बार ChatMaxima में सहेजे जाने पर, JSON UI में वापस उजागर नहीं होता। डाउनलोड की गई फ़ाइल को किसी भी अन्य प्रोडक्शन रहस्य के समान देखभाल के साथ मानें

अक्सर पूछे जाने वाले प्रश्न

ब्लॉक किन Firebase उत्पादों का समर्थन करता है?

Cloud Firestore (रीड / राइट / क्वेरी) और Cloud Messaging (FCM HTTP v1 API)। Realtime Database, Firebase Authentication, Cloud Functions, और In-App Messaging इस ब्लॉक द्वारा संभाले नहीं जाते।

क्या मैं Firestore और FCM दोनों के लिए एक ही ब्लॉक का उपयोग कर सकता हूं?

हां। एक एकल Firebase एकीकरण क्रेडेंशियल दोनों उत्पादों को अधिकृत करता है। आपको आवश्यक प्रत्येक ऑपरेशन के लिए अलग Firebase ब्लॉक छोड़ें (उदाहरण के लिए, उपयोगकर्ता के टोकन देखने के लिए एक Get Document ब्लॉक, फिर उन टोकन पर पुश करने के लिए एक Send Notification ब्लॉक)।

मेरा service account JSON कहां संग्रहीत है?

chatbot_integration_tokens तालिका के अंदर, आपकी टीम के लिए स्कोप किया गया। सहेजने के बाद JSON कभी भी ब्राउज़र को वापस नहीं किया जाता। ChatMaxima इसे Firebase के लिए अल्पकालिक OAuth एक्सेस टोकन उत्पन्न करने के लिए सर्वर-साइड उपयोग करता है।

नोटिफ़िकेशन आता है लेकिन data payload गायब क्यों होता है?

FCM को data payload मानों को स्ट्रिंग होना आवश्यक है। यदि आप एक संख्यात्मक या बूलियन वेरिएबल सीधे पास करते हैं, तो ChatMaxima इसे आपके लिए स्ट्रिंगीफ़ाई करता है, लेकिन कुछ क्लाइंट ऐप विशिष्ट प्रारूपों की अपेक्षा करते हैं। दोबारा जांचें कि आपका ऐप Android पर RemoteMessage.getData() या iOS पर userInfo कैसे पढ़ता है।

मेरा मल्टीकास्ट भेजना दिखाता है कि कुछ टोकन विफल हुए। मैं क्या करूं?

प्रतिक्रिया वेरिएबल में invalid_tokens ऐरे देखें। ये वे टोकन हैं जिन्हें Firebase मृत मानता है। इन्हें Firestore में उपयोगकर्ता के tokens ऐरे से हटाने के लिए एक Update Document ब्लॉक का उपयोग करें ताकि उन्हें पुनः लक्षित न किया जाए।

क्या ब्लॉक एक FCM टोकन के बजाय एक उपयोगकर्ता ID पर भेज सकता है?

सीधे नहीं। FCM डिवाइसों को पंजीकरण टोकन द्वारा संबोधित करता है, उपयोगकर्ता द्वारा नहीं। सामान्य पैटर्न है: उपयोगकर्ता के टोकन को Firestore में users/{user_id} के तहत संग्रहीत करें, उन्हें प्राप्त करने के लिए एक Get Document ब्लॉक का उपयोग करें, फिर टोकन ऐरे को Send Notification ब्लॉक को पास करें।

क्या मैं सबकलेक्शन क्वेरी कर सकता हूं?

वर्तमान ब्लॉक शीर्ष-स्तरीय संग्रह क्वेरी करता है। नेस्टेड या सबकलेक्शन क्वेरी (उदाहरण के लिए, users/{uid}/orders) रोडमैप पर हैं। एक वर्कअराउंड के रूप में, उपयोगकर्ता ID द्वारा कीड किए गए एक शीर्ष-स्तरीय संग्रह में डीनॉर्मलाइज़्ड डेटा संग्रहीत करें।

लाइव होने से पहले मैं ब्लॉक का परीक्षण कैसे करूं?

कुछ टेस्ट दस्तावेज़ों के साथ एक sandbox Firebase प्रोजेक्ट बनाएं। इसे एक अलग ChatMaxima एकीकरण के रूप में कनेक्ट करें, ब्लॉक को इस पर इंगित करें, और Studio में Preview मोड से फ़्लो चलाएं। संतुष्ट होने के बाद ब्लॉक को प्रोडक्शन एकीकरण पर स्विच करें।

समस्या निवारण

Verify & Save "Credential rejected by Firestore" के साथ विफल होता है

  1. अपना Firebase प्रोजेक्ट खोलें और पुष्टि करें कि Cloud Firestore सक्षम है (Console → Firestore Database)
  2. जांचें कि service account के पास कम से कम Cloud Datastore User भूमिका है (IAM → Service Accounts)
  3. सुनिश्चित करें कि आपने पूरी JSON फ़ाइल पेस्ट की, जिसमें private_key फ़ील्ड \n न्यूलाइन एस्केप के साथ बरकरार है
  4. यदि मूल फ़ाइल संपादित या आंशिक रूप से कॉपी की गई थी तो निजी की पुनः उत्पन्न करें

ब्लॉक "Firebase integration not found" दिखाता है

  1. पुष्टि करें कि एकीकरण Dashboard → Integrations के तहत मौजूद है और सक्रिय है
  2. यदि आपने हाल ही में एकीकरण बनाया है, तो एकीकरण ड्रॉपडाउन के बगल में रिफ़्रेश बटन का उपयोग करके ब्लॉक मोडल को रिफ़्रेश करें
  3. यदि क्रेडेंशियल Firebase में रोटेट किया गया था तो एकीकरण को हटाएं और फिर से बनाएं

Firestore "Document not found" (404) लौटाता है

  1. सत्यापित करें कि संग्रह नाम Firebase में दिखाई देने के अनुसार बिल्कुल वर्तनी है (केस-संवेदनशील)
  2. दस्तावेज़ ID जांचें। यदि यह एक वेरिएबल से आता है, तो प्रतिस्थापित किए जा रहे वास्तविक मान को देखने के लिए कन्वर्सेशन लॉग का निरीक्षण करें
  3. याद रखें कि Firestore एक गायब दस्तावेज़ को एक खाली दस्तावेज़ से अलग मानता है। ब्लॉक प्रतिक्रिया वेरिएबल में not_found: true लौटाता है ताकि आप उस पर शाखा बना सकें

FCM नोटिफ़िकेशन डिवाइस पर नहीं आता

  1. पुष्टि करें कि FCM टोकन वैध है। टोकन समाप्त हो जाते हैं जब ऐप अनइंस्टॉल या पुनः इंस्टॉल किया जाता है
  2. जांचें कि डिवाइस के पास आपके ऐप के लिए नोटिफ़िकेशन अनुमतियां दी गई हैं
  3. प्रतिक्रिया वेरिएबल का निरीक्षण करें। एक सफल भेजना message_name लौटाता है। एक विफलता error और अक्सर UNREGISTERED जैसा एक error_code लौटाती है
  4. सत्यापित करें कि डिवाइस बैटरी-सेवर मोड में नहीं है या सिस्टम-स्तरीय Do Not Disturb द्वारा अवरुद्ध नहीं है

टॉपिक भेजना सफल होता है लेकिन कोई इसे प्राप्त नहीं करता

  1. टॉपिक डिलीवरी सर्वोत्तम-प्रयास है और एक मिनट तक ले सकती है
  2. पुष्टि करें कि डिवाइसों ने वास्तव में टॉपिक की सदस्यता ली है (क्लाइंट पर messaging().subscribeToTopic('premium-users'))
  3. टॉपिक नाम केस-संवेदनशील होते हैं और v1 API में /topics/ से शुरू नहीं हो सकते। केवल नाम का उपयोग करें, उदाहरण के लिए premium-users

प्रतिक्रिया वेरिएबल खाली है

  1. सुनिश्चित करें कि आपने ब्लॉक पर Store the response in variable फ़ील्ड भरी
  2. जांचें कि वेरिएबल नाम किसी आरक्षित कीवर्ड या किसी अन्य ब्लॉक के वेरिएबल से टकराता नहीं है
  3. Firebase कॉल के कच्चे परिणाम को देखने के लिए कन्वर्सेशन लॉग का निरीक्षण करें

अगले चरण

  • API Block - अपने फ़्लो से किसी भी बाहरी REST API को कॉल करें
  • Webhook Block - अपने फ़्लो में इनबाउंड HTTP कॉल प्राप्त करें
  • Condition Block - वेरिएबल मानों पर फ़्लो को शाखा बनाएं
  • Studio अवलोकन - सभी ब्लॉक प्रकार और फ़्लो बिल्डर सुविधाओं का अन्वेषण करें

इस पृष्ठ पर

अवलोकनपूर्व-आवश्यकताएंचरण 1: Firebase को एक Integration के रूप में कनेक्ट करेंचरण 2: Firebase Block को एक फ़्लो में जोड़ेंउपलब्ध ऑपरेशनऑपरेशन कॉन्फ़िगरेशनGet DocumentAdd DocumentSet DocumentUpdate DocumentDelete DocumentQuery CollectionSend Notificationप्रतिक्रिया वेरिएबल प्रारूपFirestore रीड (Get Document)Firestore राइट (Add / Set / Update)Firestore DeleteQuery CollectionSend Notification (single / topic)Send Notification (multicast)सामान्य उपयोग के मामलेऑर्डर पुष्टिकरण पुश नोटिफ़िकेशनचैटबॉट लीड को Firestore में लिखेंबुकिंग उपलब्धता जांचेंएक टॉपिक पर प्रसारित करेंबासी FCM टोकन साफ़ करेंसर्वोत्तम अभ्यासअक्सर पूछे जाने वाले प्रश्नब्लॉक किन Firebase उत्पादों का समर्थन करता है?क्या मैं Firestore और FCM दोनों के लिए एक ही ब्लॉक का उपयोग कर सकता हूं?मेरा service account JSON कहां संग्रहीत है?नोटिफ़िकेशन आता है लेकिन data payload गायब क्यों होता है?मेरा मल्टीकास्ट भेजना दिखाता है कि कुछ टोकन विफल हुए। मैं क्या करूं?क्या ब्लॉक एक FCM टोकन के बजाय एक उपयोगकर्ता ID पर भेज सकता है?क्या मैं सबकलेक्शन क्वेरी कर सकता हूं?लाइव होने से पहले मैं ब्लॉक का परीक्षण कैसे करूं?समस्या निवारणVerify & Save "Credential rejected by Firestore" के साथ विफल होता हैब्लॉक "Firebase integration not found" दिखाता हैFirestore "Document not found" (404) लौटाता हैFCM नोटिफ़िकेशन डिवाइस पर नहीं आताटॉपिक भेजना सफल होता है लेकिन कोई इसे प्राप्त नहीं करताप्रतिक्रिया वेरिएबल खाली हैअगले चरण