# লিকুইড টেমপ্লেট

<YouTube id="A7l1_gK5yOA" playlabel="ইউটিউব ভিডিও: কাস্টমার জার্নিতে কন্টেন্ট টেমপ্লেট কীভাবে ব্যবহার করতে হয় তা জানুন"/>


লিকুইড টেমপ্লেটগুলি নিয়মিত [ডাইনামিক কন্টেন্ট](/bn/product/personalization/dynamic-content/) ব্যবহারের পাশাপাশি অত্যাধুনিক যুক্তি প্রয়োগ করে Pushwoosh-এর ব্যক্তিগতকরণ ক্ষমতাকে উল্লেখযোগ্যভাবে প্রসারিত করে।

Pushwoosh-এ মেসেজ ব্যক্তিগতকরণ [ট্যাগ (ব্যবহারকারীর ডেটা)](/bn/product/audience-data-and-segmentation/user-data-tags/tags) এর উপর ভিত্তি করে করা হয়। Pushwoosh বিভিন্ন ধরনের [ডিফল্ট ট্যাগ](/bn/product/audience-data-and-segmentation/user-data-tags/tags#default-tags) এবং [কাস্টম ট্যাগ](/bn/product/audience-data-and-segmentation/user-data-tags/tags#custom-tags) অফার করে। এগুলি ব্যবহার করে, আপনি আরও ব্যক্তিগতকৃত মেসেজ পাঠানোর জন্য ব্যবহারকারীর প্রথম নাম, শহর, ক্রয়ের ইতিহাস ইত্যাদি নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ: `Hi {{First_name}}, thanks for ordering {{item}}`।

লিকুইড টেমপ্লেটগুলি ডাইনামিক কন্টেন্টে আরও যুক্তি যোগ করে। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারীর সাবস্ক্রিপশন ট্যাগে "free" থাকে, আপনি তাদের একটি মেসেজ পাঠাতে পারেন: "আপনার ১০% ছাড় নিন।"

ব্যবহারকারীদের আইডি, আচরণ এবং পছন্দ অনুযায়ী মেসেজের বিষয়বস্তু পরিবর্তন করা প্রাসঙ্গিকতা বাড়ানোর এবং আপনার মার্কেটিং ক্যাম্পেইন থেকে আরও চিত্তাকর্ষক ফলাফল পাওয়ার সবচেয়ে কার্যকর উপায়।

## সিনট্যাক্স

[Shopify-এর Liquid](https://shopify.github.io/liquid/) এর উপর ভিত্তি করে কন্টেন্ট টেমপ্লেটগুলি ডাইনামিক কন্টেন্ট লোড করার জন্য [**ট্যাগ**](#tags), [**অবজেক্ট**](#objects), এবং [**ফিল্টার**](#undefined) এর সংমিশ্রণ ব্যবহার করে। কন্টেন্ট টেমপ্লেটগুলি আপনাকে একটি টেমপ্লেটের মধ্যে থেকে নির্দিষ্ট ভেরিয়েবল অ্যাক্সেস করতে এবং ডেটা সম্পর্কে কিছু না জেনেই তাদের ডেটা আউটপুট করতে দেয়।

<Aside type="note">
সিনট্যাক্স সম্পর্কে আরও জানতে, অনুগ্রহ করে [Liquid ডকুমেন্টেশন](https://shopify.github.io/liquid/basics/introduction/) দেখুন।
</Aside>

### অবজেক্ট

`অবজেক্ট` সেই কন্টেন্টকে সংজ্ঞায়িত করে যা একজন ব্যবহারকারীকে দেখানো হবে। `অবজেক্ট` দুটি কোঁকড়া বন্ধনীর মধ্যে আবদ্ধ থাকা উচিত: `{{ }}`

উদাহরণস্বরূপ, একটি মেসেজ ব্যক্তিগতকরণ করার সময়, ব্যবহারকারীদের নাম মেসেজের কন্টেন্টে যোগ করতে এর বডিতে `{{Name}}` পাঠান। ব্যবহারকারীর নাম (Name ট্যাগের মান) ব্যবহারকারীর দেখা মেসেজে Liquid অবজেক্টটিকে প্রতিস্থাপন করবে।

<Tabs>
<TabItem label="ইনপুট">
```
Hi {{Name}}! We're glad you're back!
```
</TabItem>

<TabItem label="আউটপুট">
Hi Anna! We're glad you're back!
</TabItem>
</Tabs>

### ট্যাগ

`ট্যাগ` টেমপ্লেটের জন্য যুক্তি এবং নিয়ন্ত্রণ প্রবাহ তৈরি করে। কোঁকড়া বন্ধনী শতাংশ বিভাজক `{%` এবং `%}` এবং তাদের ঘিরে থাকা পাঠ্য টেমপ্লেট রেন্ডার করার সময় কোনও দৃশ্যমান আউটপুট তৈরি করে না। এটি আপনাকে ভেরিয়েবল নির্ধারণ করতে এবং শর্ত বা লুপ তৈরি করতে দেয় ব্যবহারকারীকে কোনো Liquid যুক্তি না দেখিয়ে।

উদাহরণস্বরূপ, `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` অপারেটর সহ ট্যাগগুলিতে, অপারেটরগুলি _ডান থেকে বামে_ ক্রমে পরীক্ষা করা হয়। আপনি বন্ধনী ব্যবহার করে অপারেশনের ক্রম পরিবর্তন করতে পারবেন না — বন্ধনীগুলি Liquid-এ অবৈধ অক্ষর এবং আপনার ট্যাগগুলিকে কাজ করতে বাধা দেবে।
</Aside>

### ফিল্টার

`ফিল্টার` একটি Liquid অবজেক্ট বা ভেরিয়েবলের আউটপুট পরিবর্তন করে। এগুলি দুটি কোঁকড়া বন্ধনী `{{ }}` এবং ভেরিয়েবল অ্যাসাইনমেন্টের মধ্যে ব্যবহৃত হয় এবং একটি পাইপ অক্ষর `|` দ্বারা পৃথক করা হয়। একটি আউটপুটে একাধিক ফিল্টার ব্যবহার করা যেতে পারে এবং বাম থেকে ডানে প্রয়োগ করা হয়।


<Tabs>
<TabItem label="ইনপুট">

```

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

```

</TabItem>

<TabItem label="আউটপুট">

Hello Anna

</TabItem>
</Tabs>



## লিকুইড টেমপ্লেটের ব্যবহার

লিকুইড টেমপ্লেটগুলি কন্ট্রোল প্যানেল থেকে পাঠানো মেসেজ এবং [API অনুরোধ](/bn/developer/guides/personalization/liquid-templates#using-liquid-templates-in-messages-sent-via-api) উভয়ের জন্যই উপলব্ধ।

Pushwoosh-এ, লিকুইড টেমপ্লেটগুলি যেকোনো চ্যানেল মেসেজের সমস্ত কন্টেন্ট ফিল্ডে প্রযোজ্য:

* পুশ নোটিফিকেশন
* ইমেল

আপনার মেসেজে একটি লিকুইড টেমপ্লেট যোগ করতে, এটিকে মেসেজের বডিতে প্রবেশ করান। আপনি [পুশ](/bn/product/customer-journey/journey-elements/#push) বা [ইমেল](/bn/product/customer-journey/journey-elements/#email) এলিমেন্টের সাথে কাজ করার সময়, সরাসরি কাস্টমার জার্নি বিল্ডার ইন্টারফেস থেকে এটি করতে পারেন।


**Customer Journey Builder** > **Create Campaign**-এ যান > আপনার ক্যানভাসে নিম্নলিখিত এলিমেন্টগুলি ড্র্যাগ এবং ড্রপ করুন: **Audience-based Entry**, **Push** (বা **Email**), এবং **Exit**। এলিমেন্টগুলি সংযোগ করুন। তারপর **Push** আইকনে ক্লিক করুন, **Custom content** নির্বাচন করুন এবং আপনার কপি প্রবেশ করান।


লিকুইড লজিক যোগ করতে, নিম্নলিখিত সিনট্যাক্স সহ ট্যাগ মান ব্যবহার করুন:

```liquid  
{% if TagName == 'value' %}  
  এই পরিস্থিতিতে পাঠানোর জন্য কন্টেন্ট  
{% else %}  
  অন্যথায় পাঠানোর জন্য কন্টেন্ট  
{% endif %}
```
তারপর **Apply** ক্লিক করুন।

<video src="/personalization-liquid-templates-1.webm" title="কাস্টমার জার্নি বিল্ডার ইন্টারফেস দেখাচ্ছে কীভাবে পুশ নোটিফিকেশন কন্টেন্টে if-else শর্ত সহ লিকুইড টেমপ্লেট লজিক যোগ করতে হয়" autoplay loop muted playsinline />

টেমপ্লেট ভেরিয়েবল (Pushwoosh ট্যাগ) কোনো স্পেস থাকা উচিত নয় এবং শুধুমাত্র আলফানিউমেরিক মান এবং আন্ডারস্কোর থাকা উচিত, যেমন, `my_tag` বা `myTag` এর পরিবর্তে `My Tag`।

[জার্নিতে লিকুইড টেমপ্লেট সম্পর্কে আরও জানুন](/bn/product/customer-journey/journey-elements/dynamic-content-and-liquid-templates-in-journeys)

<Aside type="tip">
 আপনি লিকুইড টেমপ্লেট বাস্তবায়ন করতে `/createMessage` অনুরোধে লিকুইড সিনট্যাক্সও ব্যবহার করতে পারেন। এর জন্য, আপনার ডেভেলপমেন্ট টিমের সহায়তা প্রয়োজন হবে। বিস্তারিত নির্দেশনার জন্য তাদের সাথে [লিকুইড টেমপ্লেট গাইড](/bn/developer/guides/personalization/liquid-templates) শেয়ার করুন।
</Aside>

## কানেক্টেড কন্টেন্ট

কানেক্টেড কন্টেন্ট হল লিকুইড টেমপ্লেটের একটি বৈশিষ্ট্য যা আপনাকে আপনার ইমেল বা পুশ নোটিফিকেশন মেসেজের মধ্যে সরাসরি একটি বহিরাগত উৎস, যেমন একটি ওয়েব পরিষেবা থেকে ডেটা গতিশীলভাবে পুনরুদ্ধার এবং ব্যবহার করতে দেয়। এই বৈশিষ্ট্যটি একটি নির্দিষ্ট URL থেকে JSON ডেটা এনে এবং এটিকে একটি ভেরিয়েবলে সংরক্ষণ করে রিয়েল-টাইম ব্যক্তিগতকরণ সক্ষম করে যা আপনার কন্টেন্টে ব্যবহার করা যেতে পারে।

#### মূল ব্যবহারের ক্ষেত্র

- **পণ্যের সুপারিশ**: প্রতিটি ব্যবহারকারীর জন্য তৈরি করা ব্যক্তিগতকৃত পণ্যের তালিকা প্রদর্শন করুন।

- **প্রোমো কোড**: একটি ব্যাকএন্ড পরিষেবা দ্বারা তৈরি অনন্য প্রোমো কোড প্রবেশ করান।

#### পূর্বশর্ত

* কানেক্টেড কন্টেন্ট ব্যবহার করার জন্য, আপনার অবশ্যই নিজস্ব ব্যাকএন্ড পরিষেবা থাকতে হবে যা **User ID, HWID, বা কাস্টম ট্যাগ** এর উপর ভিত্তি করে প্রয়োজনীয় ডেটা (যেমন, প্রোমো কোড, পণ্যের সুপারিশ) তৈরি করে এবং সরবরাহ করে। Pushwoosh তারপর একটি মেসেজ পাঠানোর আগে এই ডেটা নিয়ে আসে।

### ধাপে ধাপে বাস্তবায়নের নির্দেশিকা

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
কানেক্টেড কন্টেন্ট ব্যবহার করার জন্য আপনার ডেভেলপার টিমের সাহায্য প্রয়োজন হবে। শুরু করার জন্য তাদের সাথে এই গাইডটি শেয়ার করুন।
</Aside>

#### ধাপ ১. ব্যাকএন্ড পরিষেবা সেট আপ করুন

ব্যাকএন্ড পরিষেবাটি উচিত:

* ব্যবহারকারী-নির্দিষ্ট প্যারামিটার (যেমন, `userId`) সম্বলিত একটি অনুরোধ গ্রহণ করুন। কানেক্টেড কন্টেন্ট `UserID`, `HWID`, বা আপনার প্রকল্পে সেট আপ করা যেকোনো কাস্টম ট্যাগ সমর্থন করে।
* প্রয়োজনীয় ডেটা সহ একটি JSON প্রতিক্রিয়া ফেরত দিন। এই কন্টেন্টটি তারপর মেসেজে গতিশীলভাবে প্রবেশ করানো যেতে পারে।

<Aside type="note" title="এটি কীভাবে কাজ করে"> 

ব্যাকএন্ড পরিষেবাটি একটি ডেটা প্রদানকারী হিসাবে কাজ করে, ব্যবহারকারী-নির্দিষ্ট তথ্য সহ HTTP অনুরোধের প্রতিক্রিয়া জানায়।

1. Pushwoosh আপনার ব্যাকএন্ডে একটি অনুরোধ পাঠায়, ব্যবহারকারী-নির্দিষ্ট শনাক্তকারীগুলিকে কোয়েরি প্যারামিটার হিসাবে পাস করে।
2. আপনার ব্যাকএন্ড অনুরোধটি প্রক্রিয়া করে এবং অনুরোধ করা ডেটা পুনরুদ্ধার করে।
3. আপনার ব্যাকএন্ড একটি JSON প্রতিক্রিয়া ফেরত দেয়।
4. একটি মেসেজ পাঠানোর আগে, Pushwoosh ব্যাকএন্ড পরিষেবা থেকে JSON প্রতিক্রিয়া নিয়ে আসে এবং মেসেজের কন্টেন্টে ফেরত দেওয়া মানগুলি (যেমন, `code`) গতিশীলভাবে ব্যবহার করে।

**উদাহরণ প্রতিক্রিয়া**

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



#### ধাপ ২. Pushwoosh-এ কানেক্টেড কন্টেন্ট সহ একটি প্রিসেট তৈরি করুন
 
1. [পুশ](/bn/product/content/push-presets/) বা [ইমেল কন্টেন্ট এডিটর](/bn/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 প্রতিক্রিয়াটি result ভেরিয়েবলে সংরক্ষণ করে। |

![কানেক্টেড কন্টেন্ট সিনট্যাক্স প্রবেশ করান](/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 />

#### ধাপ ৩. কনফিগার করা প্রিসেট ব্যবহার করে একটি মেসেজ পাঠান

[এককালীন পুশ](/bn/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) বা [ইমেল ফর্ম](/bn/product/messaging-channels/emails/sending-emails/send-one-time-emails/) বা [কাস্টমার জার্নি](/bn/product/customer-journey/pushwoosh-journey-overview/) ব্যবহার করে এই প্রিসেট সহ একটি মেসেজ পাঠান।

<Aside type="caution" title="গুরুত্বপূর্ণ">
যদি পরিষেবাটি HTTP 200 OK ছাড়া অন্য কোনো স্ট্যাটাস ফেরত দেয়, তাহলে ইমেল বা পুশ নোটিফিকেশন পাঠানো হবে না। এটি নিশ্চিত করে যে আপনার যোগাযোগ শুধুমাত্র তখনই পাঠানো হবে যদি প্রয়োজনীয় ডেটা সফলভাবে পুনরুদ্ধার করা হয়।
</Aside>