नॉलेज बेस
टेम्पलेट
एक बार लिखा गया बॉडी, जिसके वर्ज़न बनते हैं और जो कई बार भेजा जाता है: कंपोज़र से, आपके अपने कोड से, या किसी एजेंट द्वारा।
विवरण
- टेम्पलेट उसे लिखने वाले व्यक्ति का नहीं, बल्कि कनेक्शन का होता है, और यही पूरी वजह है कि इसका पहला संस्करण बदला गया। वह संस्करण उपयोगकर्ता पर टिका था: किसी साथी का टेम्पलेट वर्कस्पेस API key को दिखता ही नहीं था, इसलिए कोई इंटीग्रेशन वह नहीं भेज सकता था जो उसे सेट करने वाला व्यक्ति देख पा रहा था, और लेखक का अकाउंट मिटाने पर वर्कस्पेस के टेम्पलेट भी उसके साथ चले जाते थे। पंक्तियाँ गिराई नहीं गईं, उन्हें आगे ले जाया गया।
- बॉडी लिखने के दो तरीके।
@react-email/componentsके कंपोनेंट (Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlock, CodeInline) पर बना एक ब्लॉक ट्री, जिसकी जाँच लिखते समय ही होती है, ताकि कोई खराब नोड या असुरक्षितhrefउसी कॉल पर अस्वीकार हो जाए जिसने उसे लिखा, बजाय इसके कि वह टूटे हुए ईमेल के रूप में पहुँचे। या फिर खुद आपका रेंडर किया हुआ मार्कअप: अगर आपके टेम्पलेट पहले से आपके अपने रेपो में react-email कंपोनेंट हैं, तो उन्हें वहीं@react-email/renderसे रेंडर करें और HTML पोस्ट करें, जिसे वर्ज़न प्रकाशित होते समय एक बार सैनिटाइज़ किया जाता है। - तेईस शुरुआती बिंदु और एक खाली, मेन्यू में नहीं बल्कि एक गैलरी में, क्योंकि इनमें से चुनने से पहले इन्हें देखना पड़ता है, इसलिए हर कार्ड ईमेल को ही दिखाता है। स्वागत और सत्यापन, रसीदें और इनवॉइस, शिपिंग और नवीनीकरण, डाइजेस्ट और घोषणाएँ, ये चार शीर्षकों के नीचे रखे गए हैं, और हर एक विज़ुअल एडिटर में खुलता है जहाँ हर हिस्सा हिलाया, दोबारा स्टाइल किया और हटाया जा सकता है। आप जो भी चुनें वह ड्राफ़्ट के रूप में आता है, इसलिए प्रकाशित करने तक कुछ भी भेजने लायक नहीं होता।
- गैलरी इसका वह एकमात्र हिस्सा है जो सिर्फ़ ऐप में है। आपके अपने कोड से या किसी एजेंट से टेम्पलेट तक पहुँचने वाला कॉलर किसी शुरुआती बिंदु का नाम लेने के बजाय एक बॉडी पोस्ट करता है (एक ब्लॉक डॉक्यूमेंट या आपका अपना मार्कअप), इसलिए वे तेईस इंस्टॉल करने लायक कोई कैटलॉग नहीं, बल्कि शुरुआत करने की जगह हैं।
- नामित slots और नामित props दो तरह के खाली स्थान हैं, जो बॉडी में और सब्जेक्ट में {{key}} के रूप में लिखे जाते हैं। slot को वही भरता है जो टेम्पलेट संपादित करता है और उसमें एक डिफ़ॉल्ट होता है, इसलिए ऐसा सेंड भी रेंडर हो जाता है जो किसी का नाम नहीं लेता। prop भेजते समय दिया जाता है, और required चिह्नित prop के न होने पर सेंड अस्वीकार हो जाता है: एक 422, और कोई मेल नहीं निकलता। उसे घोषित करने का मकसद यही अस्वीकृति है: विकल्प यह है कि संदेश वहाँ खाली जगह लेकर चला जाए जहाँ ऑर्डर नंबर होना चाहिए, जिसकी न कोई रिपोर्ट करता है और न कोई उसे वापस बुला सकता है।
- प्रकाशित वर्ज़न जमा हुआ होता है। प्रकाशित टेम्पलेट का बॉडी संपादित करने पर जो लाइव है वह दोबारा नहीं लिखा जाता, बल्कि एक नया ड्राफ़्ट बनता है, इसलिए जब तक कोई प्रकाशित नहीं करता तब तक सेंड वही हल करते रहते हैं जो उन्होंने कल किया था, और जो सेंड किसी वर्ज़न नंबर पर टिका हो वह तब भी अप्रभावित रहता है। बॉडी प्रकाशन के समय कंपाइल होता है, और यही वजह है कि जो टेम्पलेट रेंडर नहीं होता वह प्राप्तकर्ता के लिए नहीं, बल्कि प्रकाशित करने वाले व्यक्ति के लिए विफल होता है।
- प्रीव्यू ठीक वही रेंडर करता है जो कोई सेंड बनाता, बिना उसे भेजे, और जो अब भी खाली है उसे अस्वीकार करने के बजाय बता देता है। जिस टेम्पलेट का प्रीव्यू लिया जा रहा है वह आमतौर पर लिखा जा रहा टेम्पलेट होता है, और एक-एक ब्लॉक भरते लेखक को अब तक का काम देखने के लिए हर prop पूरा करना नहीं पड़ना चाहिए।
- हर टेम्पलेट अपने भेजे गए मेल का अपना रिकॉर्ड रखता है: पिछले सात, तीस या नब्बे दिनों में कितने गए, उनमें से कौन से खोले गए और किन पर क्लिक हुआ, दिन-प्रतिदिन की शृंखला, और इस आधार पर बँटवारा कि हर सेंड कहाँ से आया: कंपोज़र, आपका कोड, कोई एजेंट, या कतार। हर दर किसी और का भाजक उधार लेने के बजाय अपना भाजक खुद बताती है, क्योंकि वे सचमुच अलग हैं: ओपन उन संदेशों पर गिने जाते हैं जिनमें पिक्सल था, क्लिक उन संदेशों पर जिनमें दोबारा लिखा गया लिंक था, और कोई संदेश एक के बिना दूसरा ले जा सकता है। प्रीव्यू कभी दर्ज ही नहीं होता, और टेस्ट सेंड अलग से गिना जाता है और हर आँकड़े से बाहर रखा जाता है, क्योंकि वह कभी निकला ही नहीं।
- वह रिकॉर्ड इस बारे में ईमानदार है कि वह क्या नहीं देख सकता, और यही वजह है कि जो आधा वह देख सकता है उस पर भरोसा किया जा सकता है। हर सेंड अपने डिलीवरी रिकॉर्ड से खुद सेंड के ज़रिए मिलाया जाता है, और सिर्फ़ आपके अपने कोड से या कतार से भेजा गया मेल ही ऐसा रिकॉर्ड साथ रखता है। कंपोज़र से, किसी एजेंट से या असिस्टेंट द्वारा भेजा गया संदेश नहीं रखता। इसलिए जो टेम्पलेट ज़्यादातर कंपोज़र से इस्तेमाल होता है उसके अधिकांश सेंड बिना मिलान के आते हैं, और बिना मिलान वाली गिनती को “किसी ने नहीं खोला” में मिला देने के बजाय अलग संख्या के रूप में दिखाया जाता है।
- एक ही सेवा पर चार सतहें, ताकि “प्रकाशित करने का मतलब क्या है” का एक ही जवाब हो, न कि तीन जवाब जो आज आपस में सहमत हैं। कंपोज़र का Templates बटन प्रकाशित टेम्पलेट दिखाता है और आपने जो चुना उसे चिपकाने के बजाय उससे संदेश को बदल देता है: सेंड टेम्पलेट का नाम लेता है, वर्ज़न उसी क्षण टिका दिया जाता है जब आप उसे चुनते हैं, और बॉडी वहीं रेंडर होता है जहाँ वह लिखा गया था, इसलिए चुनने और क्लिक करने के बीच हुआ कोई प्रकाशन यह नहीं बदल सकता कि क्या जाता है, और ऐसा लेआउट भी पूरा बचा रहता है जिसे कंपोज़र सँभाल ही नहीं पाता। वहाँ आप बॉडी नहीं, वैल्यू भरते हैं। /templates, templates:read और templates:write स्कोप के पीछे नौ endpoints हैं, जिन्हें SDK मेथड-दर-मेथड लपेटता है। किसी टेम्पलेट को भेजने के लिए टेम्पलेट अनुमति के साथ-साथ भेजने की अनुमति भी चाहिए, इसलिए किसी कॉपीराइटिंग टूल को जारी की गई key बिना किसी को मेल कर पाए लिख और प्रकाशित कर सकती है। MCP सर्वर पर पाँच टूल हैं: list, read, preview, create और send। मौजूदा टेम्पलेट को अपडेट, डिलीट या प्रकाशित करने वाला कोई टूल जानबूझकर नहीं है। संपादन ऐसा ड्राफ़्ट बनाता है जिस तक अगला सेंड पहुँचेगा ही नहीं, और डिलीट वापस नहीं लिया जा सकता। संग्रहित बॉडी का संपादन एक स्क्रीन है: /workspace/templates पर पैलेट और इंस्पेक्टर वाला एक ब्लॉक कैनवस है, उसके बगल में लाइव प्रीव्यू, और Save तथा Publish अलग-अलग क्रियाएँ हैं, और यही वह चीज़ है जो प्रकाशित वर्ज़न को ऐसा बनाती है कि अगले पर काम करते हुए आप उसे छेड़े बिना छोड़ सकें।
- प्रति कनेक्शन 200 टेम्पलेट, एक ब्लॉक डॉक्यूमेंट में ज़्यादा से ज़्यादा 500 ब्लॉक, आठ स्तर तक नेस्टिंग, किसी एक वैल्यू में 20,000 अक्षर, और 100 slots व 100 props; मार्कअप के रूप में पोस्ट किया गया बॉडी अधिकतम दस लाख अक्षरों का, और सब्जेक्ट 998 का। इनमें से हर सीमा किसी प्लान की सीमा नहीं, बल्कि बेकाबू स्क्रिप्ट के खिलाफ़ पहरा है, हर एक उसी संख्या का नाम लेते हुए संदेश के साथ मना करती है जिस पर उसने मना किया, और टेम्पलेट से जुड़ी कोई भी चीज़ किसी टियर के पीछे नहीं है।