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 के रूप में कनेक्ट करें
- Dashboard → Integrations पर जाएं और Add Integration पर क्लिक करें
- प्लेटफ़ॉर्म ड्रॉपडाउन से Firebase चुनें
- एक नाम दर्ज करें (उदाहरण के लिए,
Production FirebaseयाMy App Firestore) ताकि आप इसे बाद में पहचान सकें - service account JSON फ़ाइल की पूरी सामग्री को Service Account JSON फ़ील्ड में पेस्ट करें
- Verify & Save पर क्लिक करें
ChatMaxima निजी की के साथ एक JWT पर हस्ताक्षर करके, इसे एक OAuth एक्सेस टोकन के लिए एक्सचेंज करके, और Firestore के listCollectionIds एंडपॉइंट पर एक टेस्ट कॉल करके क्रेडेंशियल को सत्यापित करता है। यदि प्रोजेक्ट में Firestore सक्षम है और service account के पास पहुंच है, तो आपको Firebase integration connected दिखाई देगा। एकीकरण अब आपकी टीम पर हर बॉट के लिए उपलब्ध है।
ध्यान दें: एक्सेस टोकन ChatMaxima के अंदर कैश किया जाता है और इसकी समाप्ति से पहले स्वचालित रूप से रिफ़्रेश किया जाता है। आपको service account JSON को रोटेट या पुनः-दर्ज करने की आवश्यकता नहीं है जब तक कि आप एक अलग Firebase प्रोजेक्ट पर जाना नहीं चाहते।
चरण 2: Firebase Block को एक फ़्लो में जोड़ें
- Studio में अपना चैटबॉट खोलें
- कैनवास पर राइट-क्लिक करें (या बाएं साइडबार से ड्रैग करें) और External Integrations के तहत Firebase चुनें
- इसका कॉन्फ़िगरेशन खोलने के लिए ब्लॉक पर डबल-क्लिक करें
- Select Integration ड्रॉपडाउन से चरण 1 में बनाया गया एकीकरण चुनें
- एक ऑपरेशन चुनें और नीचे वर्णित फ़ील्ड भरें
उपलब्ध ऑपरेशन
Firebase ब्लॉक सात ऑपरेशन का समर्थन करता है। पहले छह Cloud Firestore के साथ काम करते हैं। सातवां एक Cloud Messaging (FCM) पुश नोटिफ़िकेशन भेजता है।
| ऑपरेशन | श्रेणी | यह क्या करता है |
|---|---|---|
| Get Document | Firestore | संग्रह और दस्तावेज़ ID द्वारा एक एकल दस्तावेज़ पढ़ता है |
| Add Document | Firestore | एक नया दस्तावेज़ बनाता है। यदि आप इसे खाली छोड़ते हैं तो Firestore ID स्वचालित रूप से उत्पन्न करता है |
| Set Document | Firestore | एक विशिष्ट ID पर दस्तावेज़ को अधिलेखित करता है। सभी फ़ील्ड बदल देता है |
| Update Document | Firestore | केवल आपके द्वारा प्रदान किए गए फ़ील्ड को एक मौजूदा दस्तावेज़ में मर्ज करता है |
| Delete Document | Firestore | एक विशिष्ट ID पर एक दस्तावेज़ हटाता है |
| Query Collection | Firestore | दस्तावेज़ों के संग्रह को फ़िल्टर, क्रमित, और सीमित करता है |
| Send Notification | Cloud Messaging | एक डिवाइस, कई डिवाइसों, या एक टॉपिक को नोटिफ़िकेशन पुश करता है |
प्रत्येक इनपुट (संग्रह, दस्तावेज़ ID, फ़ील्ड मान, FCM टोकन, नोटिफ़िकेशन शीर्षक, और बॉडी) {variable} सिंटैक्स के साथ ChatMaxima वेरिएबल का समर्थन करता है, इसलिए आप उन्हें पिछले प्रश्न ब्लॉक, पहले की API कॉल, या Webhook ब्लॉक में प्राप्त डेटा से भर सकते हैं।
ऑपरेशन कॉन्फ़िगरेशन
Get Document
ID द्वारा एक दस्तावेज़ पढ़ता है। इसका उपयोग किसी उपयोगकर्ता की प्रोफ़ाइल देखने, किसी ऑर्डर की वर्तमान स्थिति लाने, या किसी भी ऐसे रिकॉर्ड को खींचने के लिए करें जिसके लिए आपके पास पहले से ID है।
| फ़ील्ड | विवरण |
|---|---|
| Collection | Firestore संग्रह नाम (उदाहरण के लिए, 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 Filters | field, 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 ब्लॉक का उपयोग करें ताकि आप मृत डिवाइसों को लक्षित करना बंद कर दें।
सामान्य उपयोग के मामले
ऑर्डर पुष्टिकरण पुश नोटिफ़िकेशन
एक ग्राहक इन-ऐप चेकआउट पूरा करता है, और आप चाहते हैं कि बॉट उपयोगकर्ता द्वारा पंजीकृत हर डिवाइस पर एक पुष्टिकरण पुश करे।
- Question Block:
{user_id}कैप्चर या सत्यापित करें - Firebase Block (Get Document): संग्रह
users, दस्तावेज़ ID{user_id}, परिणाम{user_data}में संग्रहीत करें - Condition Block:
{order_status} == "confirmed"पर शाखा बनाएं - 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 - Message Block:
We have sent a confirmation to your devices
चैटबॉट लीड को Firestore में लिखें
इनबाउंड लीड के लिए सत्य के स्रोत के रूप में Firestore का उपयोग करें ताकि आपका अपना मोबाइल ऐप रीयल टाइम में प्रतिक्रिया कर सके।
- Question Block:
{name},{email},{phone}के लिए पूछें - Firebase Block (Add Document): संग्रह
chatbot_leads, फ़ील्डname={name},email={email},phone={phone},source=chatbot - Message Block:
Thanks {name}, we will be in touch shortly
बुकिंग उपलब्धता जांचें
बुकिंग की पुष्टि करने से पहले, यह सुनिश्चित करने के लिए Firestore क्वेरी करें कि स्लॉट अभी भी खुला है।
- Firebase Block (Query Collection): संग्रह
bookings, फ़िल्टरslot_id EQUAL {slot_id}औरstatus NOT_EQUAL cancelled, सीमा1,{existing_bookings}में संग्रहीत करें - Condition Block:
{existing_bookings}खाली है या नहीं इस पर शाखा बनाएं - खाली होने पर: बुकिंग बनाने के लिए Firebase Block (Add Document), फिर पुष्टि के लिए Message Block
- मिलान होने पर: Message Block
That slot was just taken, please pick another
एक टॉपिक पर प्रसारित करें
एक टॉपिक की सदस्यता लेने वाले हर डिवाइस को एक-से-कई घोषणा भेजें।
- Trigger Block: एडमिन एक Campaign के साथ फ़्लो ट्रिगर करता है
- Firebase Block (Send Notification, Topic): टॉपिक
premium-users, शीर्षकNew feature released, बॉडीTap to try it out, डेटाscreen=whats_new
बासी FCM टोकन साफ़ करें
एक मल्टीकास्ट भेजने के बाद, उपयोगकर्ता की प्रोफ़ाइल से मृत टोकन हटाएं ताकि भविष्य के पुश केवल लाइव डिवाइसों पर जाएं।
- Firebase Block (Send Notification, Multiple Devices): परिणाम
{push_result}में संग्रहीत करें - Condition Block:
{push_result.invalid_tokens}गैर-खाली है या नहीं इस पर शाखा बनाएं - Code Block या API Block: छंटी हुई टोकन सूची की गणना करें
- 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" के साथ विफल होता है
- अपना Firebase प्रोजेक्ट खोलें और पुष्टि करें कि Cloud Firestore सक्षम है (Console → Firestore Database)
- जांचें कि service account के पास कम से कम Cloud Datastore User भूमिका है (IAM → Service Accounts)
- सुनिश्चित करें कि आपने पूरी JSON फ़ाइल पेस्ट की, जिसमें
private_keyफ़ील्ड\nन्यूलाइन एस्केप के साथ बरकरार है - यदि मूल फ़ाइल संपादित या आंशिक रूप से कॉपी की गई थी तो निजी की पुनः उत्पन्न करें
ब्लॉक "Firebase integration not found" दिखाता है
- पुष्टि करें कि एकीकरण Dashboard → Integrations के तहत मौजूद है और सक्रिय है
- यदि आपने हाल ही में एकीकरण बनाया है, तो एकीकरण ड्रॉपडाउन के बगल में रिफ़्रेश बटन का उपयोग करके ब्लॉक मोडल को रिफ़्रेश करें
- यदि क्रेडेंशियल Firebase में रोटेट किया गया था तो एकीकरण को हटाएं और फिर से बनाएं
Firestore "Document not found" (404) लौटाता है
- सत्यापित करें कि संग्रह नाम Firebase में दिखाई देने के अनुसार बिल्कुल वर्तनी है (केस-संवेदनशील)
- दस्तावेज़ ID जांचें। यदि यह एक वेरिएबल से आता है, तो प्रतिस्थापित किए जा रहे वास्तविक मान को देखने के लिए कन्वर्सेशन लॉग का निरीक्षण करें
- याद रखें कि Firestore एक गायब दस्तावेज़ को एक खाली दस्तावेज़ से अलग मानता है। ब्लॉक प्रतिक्रिया वेरिएबल में
not_found: trueलौटाता है ताकि आप उस पर शाखा बना सकें
FCM नोटिफ़िकेशन डिवाइस पर नहीं आता
- पुष्टि करें कि FCM टोकन वैध है। टोकन समाप्त हो जाते हैं जब ऐप अनइंस्टॉल या पुनः इंस्टॉल किया जाता है
- जांचें कि डिवाइस के पास आपके ऐप के लिए नोटिफ़िकेशन अनुमतियां दी गई हैं
- प्रतिक्रिया वेरिएबल का निरीक्षण करें। एक सफल भेजना
message_nameलौटाता है। एक विफलताerrorऔर अक्सरUNREGISTEREDजैसा एकerror_codeलौटाती है - सत्यापित करें कि डिवाइस बैटरी-सेवर मोड में नहीं है या सिस्टम-स्तरीय Do Not Disturb द्वारा अवरुद्ध नहीं है
टॉपिक भेजना सफल होता है लेकिन कोई इसे प्राप्त नहीं करता
- टॉपिक डिलीवरी सर्वोत्तम-प्रयास है और एक मिनट तक ले सकती है
- पुष्टि करें कि डिवाइसों ने वास्तव में टॉपिक की सदस्यता ली है (क्लाइंट पर
messaging().subscribeToTopic('premium-users')) - टॉपिक नाम केस-संवेदनशील होते हैं और v1 API में
/topics/से शुरू नहीं हो सकते। केवल नाम का उपयोग करें, उदाहरण के लिएpremium-users
प्रतिक्रिया वेरिएबल खाली है
- सुनिश्चित करें कि आपने ब्लॉक पर Store the response in variable फ़ील्ड भरी
- जांचें कि वेरिएबल नाम किसी आरक्षित कीवर्ड या किसी अन्य ब्लॉक के वेरिएबल से टकराता नहीं है
- Firebase कॉल के कच्चे परिणाम को देखने के लिए कन्वर्सेशन लॉग का निरीक्षण करें
अगले चरण
- API Block - अपने फ़्लो से किसी भी बाहरी REST API को कॉल करें
- Webhook Block - अपने फ़्लो में इनबाउंड HTTP कॉल प्राप्त करें
- Condition Block - वेरिएबल मानों पर फ़्लो को शाखा बनाएं
- Studio अवलोकन - सभी ब्लॉक प्रकार और फ़्लो बिल्डर सुविधाओं का अन्वेषण करें
Webhook Response Block - Webhook कॉलर को कस्टम HTTP प्रतिक्रियाएं भेजें
उस सिस्टम को कस्टम JSON, XML, या सादा टेक्स्ट प्रतिक्रियाएं वापस भेजें जिसने आपके ChatMaxima वेबहुक को ट्रिगर किया। स्थिति कोड, सामग्री प्रकार, और बॉडी कॉन्फ़िगर करें।
Knowledge Source: Train Your AI on Your Own Content
Train your AI with your business knowledge