# लिक्विड टेम्प्लेट्स

<YouTube id="A7l1_gK5yOA" playlabel="यूट्यूब वीडियो: Customer journeys में कंटेंट टेम्प्लेट्स का उपयोग करना सीखें"/>

लिक्विड टेम्प्लेट्स नियमित [डायनामिक कंटेंट](/hi/product/personalization/dynamic-content/) उपयोग के अलावा परिष्कृत तर्क को लागू करके Pushwoosh की वैयक्तिकरण क्षमताओं को महत्वपूर्ण रूप से बढ़ाते हैं।

Pushwoosh में संदेश वैयक्तिकरण [टैग्स (उपयोगकर्ता डेटा)](/hi/product/audience-data-and-segmentation/user-data-tags/tags) पर आधारित है। Pushwoosh विभिन्न प्रकार के [डिफ़ॉल्ट टैग्स](/hi/product/audience-data-and-segmentation/user-data-tags/tags#default-tags) और [कस्टम टैग्स](/hi/product/audience-data-and-segmentation/user-data-tags/tags#custom-tags) प्रदान करता है। उनका उपयोग करके, आप अधिक व्यक्तिगत संदेश भेजने के लिए उपयोगकर्ता का पहला नाम, शहर, खरीद इतिहास आदि निर्दिष्ट कर सकते हैं। उदाहरण के लिए: `Hi {{First_name}}, thanks for ordering {{item}}`।

लिक्विड टेम्प्लेट्स डायनामिक कंटेंट में अधिक तर्क जोड़ते हैं। उदाहरण के लिए, यदि किसी उपयोगकर्ता के सब्सक्रिप्शन टैग में "free" है, तो आप उन्हें एक संदेश भेज सकते हैं: "अपनी 10% छूट प्राप्त करें।"

उपयोगकर्ताओं की आईडी, व्यवहार और वरीयताओं के अनुसार संदेश की सामग्री को संशोधित करना प्रासंगिकता बढ़ाने और आपके मार्केटिंग अभियानों से अधिक प्रभावशाली परिणाम प्राप्त करने का सबसे कुशल तरीका है।

## सिंटैक्स

[Shopify द्वारा लिक्विड](https://shopify.github.io/liquid/) पर आधारित कंटेंट टेम्प्लेट्स डायनामिक कंटेंट को लोड करने के लिए [**टैग्स**](#tags), [**ऑब्जेक्ट्स**](#objects), और [**फिल्टर्स**](#undefined) के संयोजन का उपयोग करते हैं। कंटेंट टेम्प्लेट्स आपको एक टेम्पलेट के भीतर से कुछ वेरिएबल्स तक पहुंचने और उनके डेटा को आउटपुट करने की अनुमति देते हैं, बिना डेटा के बारे में कुछ भी जानने की आवश्यकता के।

<Aside type="note">
सिंटैक्स के बारे में अधिक जानने के लिए, कृपया [लिक्विड दस्तावेज़ीकरण](https://shopify.github.io/liquid/basics/introduction/) देखें।
</Aside>

### ऑब्जेक्ट्स

`ऑब्जेक्ट्स` उस कंटेंट को परिभाषित करते हैं जो एक उपयोगकर्ता को प्रदर्शित किया जाएगा। `ऑब्जेक्ट्स` को डबल कर्ली ब्रेसिज़ में संलग्न किया जाना चाहिए: `{{ }}`

उदाहरण के लिए, किसी संदेश को वैयक्तिकृत करते समय, संदेश की सामग्री में उपयोगकर्ताओं के नाम जोड़ने के लिए उसके बॉडी में `{{Name}}` भेजें। उपयोगकर्ता का नाम (Name टैग मान) उस संदेश में लिक्विड ऑब्जेक्ट को प्रतिस्थापित कर देगा जिसे उपयोगकर्ता देखेगा।

<Tabs>
<TabItem label="इनपुट">
```
Hi {{Name}}! We're glad you're back!
```
</TabItem>

<TabItem label="आउटपुट">
Hi Anna! We're glad you're back!
</TabItem>
</Tabs>

### टैग्स

`टैग्स` टेम्प्लेट्स के लिए तर्क और नियंत्रण प्रवाह बनाते हैं। कर्ली ब्रेस प्रतिशत सीमांकक `{%` और `%}` और उनके द्वारा घेरा गया टेक्स्ट टेम्पलेट प्रस्तुत होने पर कोई दृश्यमान आउटपुट नहीं देता है। यह आपको किसी भी लिक्विड तर्क को उपयोगकर्ता को दिखाए बिना वेरिएबल्स असाइन करने और शर्तें या लूप बनाने की सुविधा देता है।

उदाहरण के लिए, `if` टैग का उपयोग करके, आप उपयोगकर्ता के डिवाइस पर सेट भाषा के आधार पर संदेश की भाषा बदल सकते हैं:

<Tabs>
  <TabItem label="इनपुट">

```liquid
{% if Language == 'fr' %}
Salut!
{% else %}
Hello!
{% endif %}
````

  </TabItem>

  <TabItem label="आउटपुट (fr)">
    Salut!
  </TabItem>

  <TabItem label="आउटपुट (es)">
    Hello!
  </TabItem>
</Tabs>

### टैग्स ऑपरेटर्स

<table data-header-hidden><thead><tr><th width="189.5" align="center">ऑपरेटर</th><th>विवरण</th></tr></thead><tbody><tr><td align="center"><code>==</code></td><td>बराबर है</td></tr><tr><td align="center"><code>!=</code></td><td>बराबर नहीं है</td></tr><tr><td align="center"><code>></code></td><td>से बड़ा</td></tr><tr><td align="center"><code>&#x3C;</code></td><td>से कम</td></tr><tr><td align="center"><code>>=</code></td><td>से बड़ा या बराबर</td></tr><tr><td align="center"><code>&#x3C;=</code></td><td>से कम या बराबर</td></tr><tr><td align="center"><code>or</code></td><td>लॉजिकल or</td></tr><tr><td align="center"><code>and</code></td><td>लॉजिकल and</td></tr><tr><td align="center"><code>contains</code></td><td>एक स्ट्रिंग या स्ट्रिंग्स की ऐरे के अंदर एक सबस्ट्रिंग की उपस्थिति की जाँच करता है</td></tr></tbody></table>

<Aside type="note">
एक से अधिक `and` या `or` ऑपरेटर वाले टैग्स में, ऑपरेटरों की जाँच _दाएं से बाएं_ क्रम में की जाती है। आप कोष्ठक का उपयोग करके संचालन के क्रम को नहीं बदल सकते हैं - कोष्ठक लिक्विड में अमान्य वर्ण हैं और आपके टैग्स को काम करने से रोकेंगे।
</Aside>

### फिल्टर्स

`फिल्टर्स` एक लिक्विड ऑब्जेक्ट या वेरिएबल के आउटपुट को संशोधित करते हैं। वे डबल कर्ली ब्रेसिज़ `{{ }}` और वेरिएबल असाइनमेंट के भीतर उपयोग किए जाते हैं, और एक पाइप वर्ण `|` द्वारा अलग किए जाते हैं। एक आउटपुट पर कई फिल्टर का उपयोग किया जा सकता है, और वे बाएं से दाएं लागू होते हैं।

<Tabs>
<TabItem label="इनपुट">

```

{{ Name | capitalize | prepend:"Hello " }}

```

</TabItem>

<TabItem label="आउटपुट">

Hello Anna

</TabItem>
</Tabs>

## लिक्विड टेम्प्लेट्स का उपयोग

लिक्विड टेम्प्लेट्स कंट्रोल पैनल से भेजे गए संदेशों और [API अनुरोधों](/hi/developer/guides/personalization/liquid-templates#using-liquid-templates-in-messages-sent-via-api) दोनों के लिए उपलब्ध हैं।

Pushwoosh में, लिक्विड टेम्प्लेट्स किसी भी चैनल संदेश के सभी कंटेंट फ़ील्ड्स पर लागू होते हैं:

*   पुश नोटिफिकेशन्स
*   ईमेल्स

अपने संदेश में एक लिक्विड टेम्पलेट जोड़ने के लिए, इसे संदेश के बॉडी में डालें। आप इसे [पुश](/hi/product/customer-journey/journey-elements/#push) या [ईमेल](/hi/product/customer-journey/journey-elements/#email) तत्वों के साथ काम करते समय, सीधे Customer Journey Builder इंटरफ़ेस से कर सकते हैं।

**Customer Journey Builder** > **Create Campaign** पर जाएं > निम्नलिखित तत्वों को अपने कैनवास पर खींचें और छोड़ें: **Audience-based Entry**, **Push** (या **Email**), और **Exit**। तत्वों को कनेक्ट करें। फिर **Push** आइकन पर क्लिक करें, **Custom content** चुनें, और अपनी कॉपी डालें।

लिक्विड तर्क जोड़ने के लिए, निम्नलिखित सिंटैक्स के साथ टैग मानों का उपयोग करें:

```liquid  
{% if TagName == 'value' %}  
  Content to send in this scenario  
{% else %}  
  Content to send otherwise  
{% endif %}
```
फिर **Apply** पर क्लिक करें।

<video src="/personalization-liquid-templates-1.webm" title="Customer Journey Builder इंटरफ़ेस जो दिखाता है कि पुश नोटिफिकेशन कंटेंट में if-else शर्तों के साथ लिक्विड टेम्पलेट लॉजिक कैसे जोड़ा जाए" autoplay loop muted playsinline />

टेम्पलेट वेरिएबल्स (Pushwoosh टैग्स) में कोई स्पेस नहीं होना चाहिए और केवल अल्फान्यूमेरिक मान और अंडरस्कोर होने चाहिए, जैसे, `My Tag` के बजाय `my_tag` या `myTag`।

[Journeys में लिक्विड टेम्प्लेट्स के बारे में और जानें](/hi/product/customer-journey/journey-elements/dynamic-content-and-liquid-templates-in-journeys)

<Aside type="tip">
आप लिक्विड टेम्प्लेट्स को लागू करने के लिए `/createMessage` अनुरोधों में लिक्विड सिंटैक्स का भी उपयोग कर सकते हैं। इसके लिए, आपको अपनी विकास टीम से सहायता की आवश्यकता होगी। विस्तृत मार्गदर्शन के लिए उनके साथ [लिक्विड टेम्प्लेट्स गाइड](/hi/developer/guides/personalization/liquid-templates) साझा करें।
</Aside>

## कनेक्टेड कंटेंट

कनेक्टेड कंटेंट लिक्विड टेम्प्लेट्स में एक सुविधा है जो आपको अपने ईमेल या पुश नोटिफिकेशन संदेशों के भीतर सीधे एक बाहरी स्रोत, जैसे कि एक वेब सेवा, से डेटा को गतिशील रूप से पुनः प्राप्त करने और उपयोग करने की अनुमति देती है। यह सुविधा एक निर्दिष्ट URL से JSON डेटा प्राप्त करके और इसे एक वेरिएबल में सहेजकर रीयल-टाइम वैयक्तिकरण को सक्षम करती है जिसका उपयोग आपकी सामग्री में किया जा सकता है।

#### मुख्य उपयोग के मामले

-   **उत्पाद सिफारिशें**: प्रत्येक उपयोगकर्ता के लिए तैयार की गई व्यक्तिगत उत्पाद सूचियों को प्रदर्शित करें।
-   **प्रोमो कोड**: एक बैकएंड सेवा द्वारा उत्पन्न अद्वितीय प्रोमो कोड डालें।

#### पूर्वापेक्षाएँ

*   कनेक्टेड कंटेंट का उपयोग करने के लिए, आपके पास अपनी खुद की बैकएंड सेवा होनी चाहिए जो **User ID, HWID, या कस्टम टैग्स** के आधार पर आवश्यक डेटा (जैसे, प्रोमो कोड, उत्पाद सिफारिशें) उत्पन्न और प्रदान करती है। Pushwoosh फिर संदेश भेजने से पहले इस डेटा को प्राप्त करता है।

### चरण-दर-चरण कार्यान्वयन गाइड

<Aside type="caution" icon="setting" title="डेवलपर सहायता की आवश्यकता है">
कनेक्टेड कंटेंट का उपयोग करने के लिए आपको अपनी डेवलपर टीम की मदद की आवश्यकता होगी। शुरू करने के लिए उनके साथ यह गाइड साझा करें।
</Aside>

#### चरण 1. बैकएंड सेवा सेट अप करें

बैकएंड सेवा को चाहिए:

*   उपयोगकर्ता-विशिष्ट पैरामीटर (जैसे, `userId`) वाले अनुरोध को स्वीकार करें। कनेक्टेड कंटेंट `UserID`, `HWID`, या आपके प्रोजेक्ट में सेट किए गए किसी भी कस्टम टैग का समर्थन करता है।
*   आवश्यक डेटा के साथ एक JSON प्रतिक्रिया लौटाएं। इस कंटेंट को फिर संदेशों में गतिशील रूप से डाला जा सकता है

<Aside type="note" title="यह कैसे काम करता है">

बैकएंड सेवा एक डेटा प्रदाता के रूप में कार्य करती है, जो उपयोगकर्ता-विशिष्ट जानकारी के साथ HTTP अनुरोधों का जवाब देती है।

1.  Pushwoosh आपके बैकएंड को एक अनुरोध भेजता है, जिसमें उपयोगकर्ता-विशिष्ट पहचानकर्ताओं को क्वेरी पैरामीटर के रूप में पास किया जाता है।
2.  आपका बैकएंड अनुरोध को संसाधित करता है और अनुरोधित डेटा को पुनः प्राप्त करता है।
3.  आपका बैकएंड एक JSON प्रतिक्रिया लौटाता है।
4.  एक संदेश भेजने से पहले, Pushwoosh बैकएंड सेवा से JSON प्रतिक्रिया प्राप्त करता है और संदेश सामग्री में लौटाए गए मानों (जैसे, `code`) का गतिशील रूप से उपयोग करता है।

**उदाहरण प्रतिक्रिया**

```
{ "code": "SPECIALOFFERFORUSER12345" }
```
</Aside>

#### चरण 2. Pushwoosh में कनेक्टेड कंटेंट के साथ एक प्रीसेट बनाएं

1.  [पुश](/hi/product/content/push-presets/) या [ईमेल कंटेंट एडिटर](/hi/product/content/email-content/drag-and-drop-email-editor/) में, संदेश फ़ील्ड में कनेक्टेड कंटेंट सिंटैक्स डालें।

**उदाहरण**

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}  
```
**सिंटैक्स ब्रेकडाउन**
| | |
| ----- | ----- |
| `connected_content` | निर्दिष्ट बैकएंड URL से JSON डेटा प्राप्त करता है। |
| `http://your-backend-url.com` | बैकएंड एंडपॉइंट जो JSON प्रारूप में आवश्यक डेटा लौटाता है। |
| `userId={{ ${userid} }}` | एक डायनामिक क्वेरी पैरामीटर जो उपयोगकर्ता आईडी को बैकएंड में पास करता है। |
| `:save result` | लिक्विड टेम्प्लेट्स में उपयोग के लिए प्राप्त JSON प्रतिक्रिया को परिणाम वेरिएबल में संग्रहीत करता है |

![कनेक्टेड कंटेंट सिंटैक्स डालें](/connectedcontent.webp)

**प्रमाणीकरण (वैकल्पिक)**

यदि आपकी बैकएंड सेवा को प्रमाणीकरण की आवश्यकता है, तो आप सुरक्षित पहुंच सुनिश्चित करने के लिए कनेक्टेड कंटेंट अनुरोध में एक API कुंजी या टोकन शामिल कर सकते हैं।

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&auth=YOUR_API_KEY :save result %}  
```

आप वैकल्पिक `:headers` पैरामीटर का उपयोग करके HTTP हेडर के रूप में प्रमाणीकरण (या कोई अन्य) डेटा भी भेज सकते हैं - हेडर नामों और मानों का एक JSON ऑब्जेक्ट।

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}  
```
| | |
| ----- | ----- |
| `:headers {...}` | अनुरोध के साथ भेजे गए HTTP हेडर का एक JSON ऑब्जेक्ट, जैसे `Authorization: Bearer <token>`। |

<Aside type="caution" title="केवल स्थिर मान">
`${}` वैयक्तिकरण वेरिएबल्स केवल URL के अंदर काम करते हैं। `:headers` के अंदर के मान स्थिर होते हैं और इंटरपोलेट नहीं किए जाते हैं।
</Aside>

**कनेक्टेड कंटेंट में टैग्स का उपयोग करना**

कस्टम टैग्स को शामिल करने के लिए, उन्हें **कनेक्टेड कंटेंट** अनुरोध (`{{ tag_name }}`) में क्वेरी पैरामीटर के रूप में डालें।

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}{{ Language }} :save result %} 
```

2.  इसके बाद, **पुनर्प्राप्त डेटा** को शामिल करते हुए संदेश टेक्स्ट जोड़ें, इस तरह:

```

Hey, {{userid}}, grab your personal promo code - {{result.code}} 
```

![पुनर्प्राप्त डेटा के साथ संदेश टेक्स्ट जोड़ें](/connectedcontent-1.webp)

3.  संदेश सामग्री को अंतिम रूप देने और प्रीसेट सेटिंग्स को कॉन्फ़िगर करने के बाद, इसे अभियानों में पुन: उपयोग के लिए सहेजें।

<video src="/connectedcontent-2.webm" title="कनेक्टेड कंटेंट के साथ एक संदेश भेजें" autoplay loop muted playsinline />

#### चरण 3. कॉन्फ़िगर किए गए प्रीसेट का उपयोग करके एक संदेश भेजें

[वन-टाइम पुश](/hi/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) या [ईमेल फॉर्म](/hi/product/messaging-channels/emails/sending-emails/send-one-time-emails/) या [customer journey](/hi/product/customer-journey/pushwoosh-journey-overview/) का उपयोग करके इस प्रीसेट के साथ एक संदेश भेजें।

<Aside type="caution" title="महत्वपूर्ण">
यदि सेवा HTTP 200 OK के अलावा कोई अन्य स्थिति लौटाती है, तो ईमेल या पुश नोटिफिकेशन नहीं भेजा जाएगा। यह सुनिश्चित करता है कि आपका संचार केवल तभी बाहर जाता है जब आवश्यक डेटा सफलतापूर्वक पुनर्प्राप्त हो जाता है।
</Aside>