# การใช้เทมเพลต Liquid

เทมเพลต Liquid ขยายขีดความสามารถในการปรับแต่งเนื้อหาของ Pushwoosh อย่างมีนัยสำคัญโดยการใช้ตรรกะที่ซับซ้อนนอกเหนือจากการใช้[เนื้อหาแบบไดนามิก](/th/developer/guides/personalization/dynamic-content/)ตามปกติ

การปรับแต่งข้อความใน Pushwoosh ขึ้นอยู่กับ [Tags (ข้อมูลผู้ใช้)](/th/developer/guides/audience-and-segmentation/tags/) Pushwoosh มี [Tags เริ่มต้น](/th/developer/guides/audience-and-segmentation/tags/#default-tags)และ [Tags ที่กำหนดเอง](/th/developer/guides/audience-and-segmentation/tags/#custom-tags)ที่หลากหลาย การใช้ Tags เหล่านี้คุณสามารถระบุชื่อ, เมือง, ประวัติการซื้อของผู้ใช้ ฯลฯ เพื่อส่งข้อความที่เป็นส่วนตัวมากขึ้น ตัวอย่างเช่น: สวัสดี `{First_name}` ขอบคุณที่สั่งซื้อ `{item}`

เทมเพลต Liquid เพิ่มตรรกะให้กับเนื้อหาแบบไดนามิกมากขึ้น ตัวอย่างเช่น หาก Tag การสมัครสมาชิกของผู้ใช้มีคำว่า "free" คุณสามารถส่งข้อความถึงพวกเขาว่า: "รับส่วนลด 10% ของคุณ"

การปรับเปลี่ยนเนื้อหาข้อความตาม ID, พฤติกรรม และความชอบของผู้ใช้เป็นวิธีที่มีประสิทธิภาพที่สุดในการเพิ่มความเกี่ยวข้องและได้รับผลลัพธ์ที่น่าประทับใจยิ่งขึ้นจากแคมเปญการตลาดของคุณ

## ไวยากรณ์

เทมเพลตเนื้อหาที่ใช้ [Liquid by Shopify](https://shopify.github.io/liquid/) ใช้การผสมผสานระหว่าง [**tags**](/th/developer/guides/personalization/liquid-templates/#tags), [**objects**](/th/developer/guides/personalization/liquid-templates/#objects) และ [**filters**](/th/developer/guides/personalization/liquid-templates/#filters) เพื่อโหลดเนื้อหาแบบไดนามิก เทมเพลตเนื้อหาช่วยให้คุณสามารถเข้าถึงตัวแปรบางอย่างจากภายในเทมเพลตและแสดงผลข้อมูลของตัวแปรเหล่านั้นโดยไม่จำเป็นต้องรู้อะไรเกี่ยวกับข้อมูลนั้นเลย

<Aside type="note">
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับไวยากรณ์ โปรดดูที่ [เอกสารประกอบ Liquid](https://shopify.github.io/liquid/basics/introduction/)
</Aside>

### Objects

`objects` กำหนดเนื้อหาที่จะแสดงให้ผู้ใช้เห็น `objects` ควรอยู่ในวงเล็บปีกกาคู่: `{{ }}`

ตัวอย่างเช่น เมื่อปรับแต่งข้อความ ให้ส่ง `{{Name}}` ในเนื้อหาของข้อความเพื่อเพิ่มชื่อผู้ใช้ลงในเนื้อหาของข้อความ ชื่อของผู้ใช้ (ค่าของ Name tag) จะแทนที่ object ของ Liquid ในข้อความที่ผู้ใช้จะเห็น

<Tabs>
  <TabItem label="อินพุต">

```

สวัสดี {{Name}}! เราดีใจที่คุณกลับมา!

```

  </TabItem>

  <TabItem label="เอาต์พุต">
    สวัสดี Anna! เราดีใจที่คุณกลับมา!
  </TabItem>
</Tabs>


### Tags

`tags` สร้างตรรกะและควบคุมการทำงานของเทมเพลต ตัวคั่นวงเล็บปีกกาและเครื่องหมายเปอร์เซ็นต์ `{%` และ `%}` และข้อความที่อยู่ภายในจะไม่สร้างผลลัพธ์ที่มองเห็นได้เมื่อเทมเพลตถูกแสดงผล ซึ่งช่วยให้คุณสามารถกำหนดตัวแปรและสร้างเงื่อนไขหรือลูปได้โดยไม่ต้องแสดงตรรกะของ Liquid ให้ผู้ใช้เห็น

ตัวอย่างเช่น การใช้ `if` tag คุณสามารถเปลี่ยนภาษาของข้อความตามภาษาที่ตั้งค่าไว้ในอุปกรณ์ของผู้ใช้:

<Tabs>
  <TabItem label="อินพุต">

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

  </TabItem>

  <TabItem label="เอาต์พุต (fr)">
    Salut!
  </TabItem>

  <TabItem label="เอาต์พุต (es)">
    Hello!
  </TabItem>
</Tabs>

### ตัวดำเนินการของ Tags

<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">
ใน tags ที่มีตัวดำเนินการ `and` หรือ `or` มากกว่าหนึ่งตัว ตัวดำเนินการจะถูกตรวจสอบตามลำดับ _จากขวาไปซ้าย_ คุณไม่สามารถเปลี่ยนลำดับการดำเนินการโดยใช้วงเล็บได้ — วงเล็บเป็นอักขระที่ไม่ถูกต้องใน Liquid และจะทำให้ tags ของคุณไม่ทำงาน
</Aside>

### Filters

`filters` แก้ไขผลลัพธ์ของ Liquid object หรือตัวแปร โดยจะใช้ภายในวงเล็บปีกกาคู่ `{{ }}` และการกำหนดค่าตัวแปร และจะถูกคั่นด้วยเครื่องหมายไปป์ `|` สามารถใช้ filter หลายตัวกับผลลัพธ์เดียวได้ และจะถูกนำไปใช้จากซ้ายไปขวา


<Tabs>
<TabItem label="อินพุต">

```

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

```

</TabItem>

<TabItem label="เอาต์พุต">

Hello Anna

</TabItem>
</Tabs>

## การใช้เทมเพลต Liquid ในข้อความที่ส่งผ่าน API

ใช้ไวยากรณ์ Liquid ในคำขอ [`createMessage`](/th/developer/api-reference/messages-api/#createmessage) ของคุณเพื่อใช้เทมเพลต Liquid เทมเพลตสามารถใช้ได้กับพารามิเตอร์ "content" ของคำขอ `createMessage` รวมถึงพารามิเตอร์อื่นๆ ที่รองรับ Dynamic Content โดยเฉพาะพารามิเตอร์เฉพาะแพลตฟอร์ม "title", "subtitle" และ "image"

โดยการใช้เทมเพลตเนื้อหา คุณสามารถระบุข้อมูลในคำขอ API ของคุณ (โดยการส่งพารามิเตอร์ "template_bindings") หรือรับข้อมูลจากค่า Tag ที่เก็บไว้ในอุปกรณ์ของผู้ใช้ (โดยไม่ใช้พารามิเตอร์ "template_bindings") ด้วยวิธีนี้ คุณสามารถสร้างแคมเปญพุชที่อิงตามผู้ใช้ซึ่งมีเนื้อหาที่เกี่ยวข้องอย่างยิ่ง

<Aside type="note">
โปรดทราบว่า ซึ่งแตกต่างจาก Dynamic Content ตัวแปรในเทมเพลตควรอยู่ในวงเล็บปีกกาคู่ดังนี้: `{{myVariable}}`
</Aside>

เพื่อกำหนดตรรกะของเทมเพลตโดยใช้ Tags ที่มีช่องว่างในชื่อ ให้ใช้เทคนิคต่อไปนี้:

**ตัวอย่าง**

```
{% capture my_tag %}{{My Tag}}{% endcapture %}
{% if my_tag == 'value' %}
เนื้อหาที่จะส่งในกรณีนี้
{% else %}
เนื้อหาที่จะส่งในกรณีอื่น
{% endif %}
```
## กรณีการใช้งานเทมเพลต Liquid

ที่นี่คุณจะพบกรณีการใช้งานหลายกรณีที่เทมเพลต Liquid มีประโยชน์

### พุชหลายภาษา

เทมเพลต Liquid ทำให้สามารถระบุได้อย่างชัดเจนว่าผู้ใช้ควรได้รับข้อความพุชของคุณในภาษาใด ดูตัวอย่างง่ายๆ ของคำขอ API และข้อความที่ได้รับขึ้นอยู่กับ template bindings ที่ใช้ในคำขอ


<Tabs>
<TabItem label="อินพุต Liquid">

```

{% if Language == 'es' %}
¡Hola!
{% else %}
Hello!
{% endif %}

````

</TabItem>

<TabItem label="คำขอ API">

```javascript
{
  "request": {
    "application": "XXXXX-XXXXX", // รหัสแอป Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
       "content": "{% raw %}
{% if language == 'es' %}¡Hola!{% else %}hello!{% endif %}
{% endraw %}",
        "template_bindings": { // ไม่บังคับ เมื่อไม่มี template_bindings ส่งมาในคำขอ จะใช้ค่า Tag จากอุปกรณ์
         "language" : "es"
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="เอาต์พุต">

**ภาษาคือ 'es'**:
¡Hola!

**ภาษาคือ 'en'**:
Hello!

</TabItem>
</Tabs>


### การแจ้งเตือนให้อัปเกรดการสมัครสมาชิก

กระตุ้นให้ลูกค้าของคุณอัปเกรดการสมัครสมาชิกตามแผนปัจจุบันของพวกเขา

<Tabs>
  <TabItem label="อินพุต Liquid">

```

{% if Subscription == 'Basic' %}
    อัปเกรดเป็น Silver เพื่อรับฟีเจอร์ผลิตภัณฑ์เพิ่มเติมและการสนับสนุน 24/7
{% elsif Subscription == 'Silver' %}
    อัปเกรดเป็น Gold เพื่อรับการสนับสนุนระดับพรีเมียมและฟีเจอร์ขั้นสูง
{% else %}
    โปรดติดต่อผู้จัดการของคุณเพื่อต่ออายุการสมัครสมาชิก
{% endif %}

````

</TabItem>

<TabItem label="คำขอ API">

```json
{
  "request": {
    "application": "XXXXX-XXXXX", // รหัสแอป Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
       "content": "{% raw %}
{% if Subscription == 'Basic' %}Upgrade to Silver for getting more product features and 24/7 support.{% elsif Subscription == 'Silver' %}Upgrade to Gold for priority support and advanced features.{% else %}Please contact your manager to renew your subscription. {% endif %}
{% endraw %}",
        "template_bindings": { // ไม่บังคับ เมื่อไม่มี template_bindings ส่งมาในคำขอ จะใช้ค่า Tag จากอุปกรณ์
         "language" : "es"
        }
      }
    ]
  }
}
````

  </TabItem>

  <TabItem label="เอาต์พุต">

**สำหรับผู้ใช้ที่มีแผนการสมัครสมาชิก Basic:**
อัปเกรดเป็น Silver เพื่อรับฟีเจอร์ผลิตภัณฑ์เพิ่มเติมและการสนับสนุน 24/7

**สำหรับผู้ใช้ที่มีแผนการสมัครสมาชิก Silver:**
อัปเกรดเป็น Gold เพื่อรับการสนับสนุนระดับพรีเมียมและฟีเจอร์ขั้นสูง

**สำหรับผู้ใช้ที่มีแผนอื่นๆ:**
โปรดติดต่อผู้จัดการของคุณเพื่อต่ออายุการสมัครสมาชิก

  </TabItem>
</Tabs>


### List tags

เทมเพลตเนื้อหาค่อนข้างมีประโยชน์ในการจัดการ Tags ประเภท List

#### ขนาดตัวแปร

หนึ่งในกรณีการใช้งานที่เป็นไปได้คือการส่งเนื้อหาที่แตกต่างกันขึ้นอยู่กับจำนวนค่าที่ Tag มีอยู่ ตัวอย่างเช่น คุณสามารถให้ส่วนลดที่แตกต่างกันแก่ลูกค้าที่มีพฤติกรรมต่างกัน สมมติว่าลูกค้ามีสินค้าบางอย่างใน WishList ของพวกเขา—กระตุ้นให้พวกเขาซื้อด้วยส่วนลดที่เหมาะสมที่สุดตามจำนวนสินค้าที่พวกเขากำลังจะซื้อ!


<Tabs>
<TabItem label="อินพุต Liquid">

```

{% if WishList.size >= 3 %}
รับส่วนลด 20% สำหรับการซื้อครั้งต่อไปของคุณ!
{% elsif WishList.size == 2 %}
รับส่วนลด 10% สำหรับการซื้อครั้งต่อไปของคุณ!
{% else %}
เฮ้ ลองดูเสื้อผ้าใหม่ๆ สิ!
{% endif %}

````

</TabItem>

<TabItem label="คำขอ API">

```javascript
{
  "request": {
    "application": "XXXXX-XXXXX", // รหัสแอป Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
       "content": "{% raw %}
{% if WishList.size >= 3 %}Get 20% off your next purchase!{% elsif WishList.size == 2 %}Get a 10% discount on your next purchase!{% else %}Hey, take a look at new outwears!{% endif %}
{% endraw %}",
        "template_bindings": {
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="ขนาด WishList ≥ 3">

<img src="/personalization-liquid-templates-1.webp" alt="ตัวอย่างอีเมลเมื่อขนาด wishlist มากกว่าหรือเท่ากับ 3" width="200"/>

</TabItem>

<TabItem label="ขนาด WishList = 2">

<img src="/personalization-liquid-templates-2.webp" alt="ตัวอย่างอีเมลเมื่อขนาด wishlist เท่ากับ 2" width="200"/>

</TabItem>
</Tabs>

#### ตัวแปรมีค่า

อีกกรณีหนึ่งที่คุณอาจต้องจัดการคือการจัดการกับค่าของ List Tags และส่งเนื้อหาที่เกี่ยวข้องที่สุดตามค่าที่ Tag มีอยู่

<Tabs>
<TabItem label="อินพุต Liquid">

```

{% if WishList contains 'Skinny Low Ankle Jeans' %}
รับส่วนลด 20% สำหรับสินค้าใน Wishlist ของคุณ!
{% else %}
เฮ้ ลองดู Skinny Low Ankle Jeans ใหม่ล่าสุดสิ!
{% endif %}

````

</TabItem>

<TabItem label="คำขอ API">

```javascript
{
  "request": {
    "application": "C90C0-0E786",
    "auth": "yxoPUlw.....IyEX4H", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
       "content": "{% raw %}
{% if WishList contains 'Skinny Low Ankle Jeans' %}Get 20% off your next purchase!{% else %}Hey, take a look at the brand new Skinny Low Ankle Jeans!{% endif %}
{% endraw %}",
        "template_bindings": {
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="ตัวแปรมีข้อมูล">

<img src="/personalization-liquid-templates-3.webp" alt="เทมเพลตส่วนบุคคลพร้อมข้อมูล" width="200"/>

</TabItem>

<TabItem label="ตัวแปรไม่มีข้อมูล">

<img src="/personalization-liquid-templates-4.webp" alt="มุมมองสำรองเมื่อข้อมูลหายไป" width="200"/>

</TabItem>
</Tabs>


### พหูพจน์

โดยการใช้เทมเพลตเนื้อหา คุณสามารถปรับเนื้อหาข้อความตามพฤติกรรมของผู้ใช้ได้ ตัวอย่างเช่น คุณสามารถแก้ไขข้อความให้มีคำในรูปพหูพจน์ในกรณีที่ List Tag มีค่ามากกว่าหนึ่งค่า


<Tabs>
<TabItem label="อินพุต Liquid">

```
    รับส่วนลด 20% สำหรับสินค้า
{% if WishList.size > 1 %}
    ใน WishList ของคุณ!
{% else %}
    ใน Wishlist ของคุณ!
{% endif %}

````

</TabItem>

<TabItem label="คำขอ API">

```javascript
{
  "request": {
    "application": "C90C0-0E786",
    "auth": "yxoPUlw.....IyEX4H", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
       "content": "Get 20% off item{% raw %}
{% if WishList.size > 1 %}s in your WishList!{% else %} in your Wishlist!{% endif %}
{% endraw %}",
        "template_bindings": { // ไม่บังคับ เมื่อไม่มี template_bindings ส่งมาในคำขอ จะใช้ค่า Tag จากอุปกรณ์
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="พหูพจน์">

<img src="/personalization-liquid-templates-5.webp" alt="ตัวอย่างเทมเพลตรูปแบบพหูพจน์" width="200"/>

</TabItem>

<TabItem label="เอกพจน์">

<img src="/personalization-liquid-templates-6.webp" alt="ตัวอย่างเทมเพลตรูปแบบเอกพจน์" width="200"/>

</TabItem>
</Tabs>

### เขตเวลา

เทมเพลตสำหรับเขตเวลาจะแปลงวันที่และเวลาตามเขตเวลาที่ระบุ

<Tabs>
<TabItem label="อินพุต Liquid">
```
{{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}
```
</TabItem>

<TabItem label="คำขอ API">
```javascript title="ตัวอย่าง"
{
  "request" : {
    "auth" : "3H9bk8w3.....Acge2RbupTB", // โทเค็นการเข้าถึง API จาก Pushwoosh Control Panel
    "application" : "XXXXX-XXXXX", // รหัสแอป Pushwoosh
    "notifications" : [ // พารามิเตอร์ข้อความพุช
      {
        "content": "Current Date: {{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}",
        "template_bindings": { // ไม่บังคับ เมื่อไม่มี template_bindings ส่งมาในคำขอ จะใช้ค่า Tag จากอุปกรณ์
         "MyDate" : "2019-07-23 15:00",
         "MyTimezone" : "Asia/Dubai"
        }
      }
    ]
  }
}
```
</TabItem>
<TabItem label="เอาต์พุต"> <img src="/personalization-liquid-templates-7.webp" alt="ผลลัพธ์วันที่ส่วนบุคคลในการแจ้งเตือนแบบพุช" width="200"/>
</TabItem>
</Tabs>


## เนื้อหาที่เชื่อมต่อ (Connected content)

Connected content เป็นฟีเจอร์ในเทมเพลต Liquid ที่ช่วยให้คุณสามารถดึงและใช้ข้อมูลจากแหล่งภายนอก เช่น บริการเว็บ ได้โดยตรงภายในข้อความอีเมลหรือการแจ้งเตือนพุชของคุณ ฟีเจอร์นี้ช่วยให้สามารถปรับแต่งเนื้อหาแบบเรียลไทม์โดยการดึงข้อมูล JSON จาก URL ที่ระบุและบันทึกลงในตัวแปรที่สามารถนำไปใช้ในเนื้อหาของคุณได้

#### กรณีการใช้งานหลัก

- **คำแนะนำผลิตภัณฑ์**: แสดงรายการผลิตภัณฑ์ที่ปรับให้เหมาะกับผู้ใช้แต่ละคน

- **รหัสโปรโมชั่น**: แทรกโค้ดโปรโมชั่นที่ไม่ซ้ำกันซึ่งสร้างโดยบริการแบ็กเอนด์

#### ข้อกำหนดเบื้องต้น

* ในการใช้ Connected Content คุณต้องมีบริการแบ็กเอนด์ของคุณเองที่สร้างและให้ข้อมูลที่จำเป็น (เช่น รหัสโปรโมชั่น, คำแนะนำผลิตภัณฑ์) โดยอิงจาก **User ID, HWID หรือ custom tags** จากนั้น Pushwoosh จะดึงข้อมูลนี้ก่อนที่จะส่งข้อความ

### คู่มือการใช้งานทีละขั้นตอน


#### ขั้นตอนที่ 1. ตั้งค่าบริการแบ็กเอนด์

บริการแบ็กเอนด์ควร:

* ยอมรับคำขอที่มีพารามิเตอร์เฉพาะผู้ใช้ (เช่น `userId`) Connected Content รองรับ `UserID`, `HWID` หรือ custom tags ใดๆ ที่คุณตั้งค่าไว้ในโปรเจกต์ของคุณ
* ส่งคืนการตอบสนองเป็น JSON พร้อมข้อมูลที่ต้องการ จากนั้นเนื้อหานี้สามารถแทรกเข้าไปในข้อความแบบไดนามิกได้

<Aside type="note" title="วิธีการทำงาน">

บริการแบ็กเอนด์ทำหน้าที่เป็นผู้ให้บริการข้อมูล โดยตอบสนองต่อคำขอ HTTP ด้วยข้อมูลเฉพาะผู้ใช้

1. Pushwoosh ส่งคำขอไปยังแบ็กเอนด์ของคุณ โดยส่งตัวระบุเฉพาะผู้ใช้เป็นพารามิเตอร์เคียวรี
2. แบ็กเอนด์ของคุณประมวลผลคำขอและดึงข้อมูลที่ร้องขอ
3. แบ็กเอนด์ของคุณส่งคืนการตอบสนองเป็น JSON
4. ก่อนที่จะส่งข้อความ Pushwoosh จะดึงการตอบสนอง JSON จากบริการแบ็กเอนด์และใช้ค่าที่ส่งคืน (เช่น `code`) ในเนื้อหาข้อความแบบไดนามิก

**ตัวอย่างการตอบสนอง**

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



#### ขั้นตอนที่ 2. สร้าง Preset ด้วย Connected content ใน Pushwoosh

1. ใน [Push](/th/product/content/push-presets/) หรือ [Email content editor](/th/product/content/email-content/drag-and-drop-email-editor/) ให้แทรกไวยากรณ์ Connected Content ลงในช่องข้อความ

**ตัวอย่าง**

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}
```
**การแยกส่วนไวยากรณ์**
|  |  |
| ----- | ----- |
| `connected_content` | ดึงข้อมูล JSON จาก URL แบ็กเอนด์ที่ระบุ |
|    `http://your-backend-url.com` | เอนด์พอยต์แบ็กเอนด์ที่ส่งคืนข้อมูลที่ต้องการในรูปแบบ JSON |
| `userId={{ ${userid} }}` | พารามิเตอร์เคียวรีแบบไดนามิกที่ส่ง User ID ไปยังแบ็กเอนด์ |
| `:save result` | จัดเก็บการตอบสนอง JSON ที่ดึงมาในตัวแปร result เพื่อใช้ในเทมเพลต Liquid |

![แทรกไวยากรณ์ Connected Content](/connectedcontent.webp)

**การรับรองความถูกต้อง (ไม่บังคับ)**

หากบริการแบ็กเอนด์ของคุณต้องการการรับรองความถูกต้อง คุณสามารถรวม API key หรือ token ในคำขอ Connected Content เพื่อให้แน่ใจว่าการเข้าถึงมีความปลอดภัย

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

คุณยังสามารถส่งข้อมูลการรับรองความถูกต้อง (หรือข้อมูลอื่นๆ) เป็น HTTP headers โดยใช้พารามิเตอร์ `:headers` ที่เป็นทางเลือก — ซึ่งเป็นอ็อบเจกต์ JSON ของชื่อและค่าของ header

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}
```
|  |  |
| ----- | ----- |
| `:headers {...}` | อ็อบเจกต์ JSON ของ HTTP headers ที่ส่งไปพร้อมกับคำขอ เช่น `Authorization: Bearer <token>` |

<Aside type="caution" title="ค่าคงที่เท่านั้น">
ตัวแปรการปรับแต่ง `${}` ทำงานได้เฉพาะภายใน URL เท่านั้น ค่าภายใน `:headers` เป็นค่าคงที่และไม่มีการแทรกค่า
</Aside>

<Aside type="danger" title="เก็บข้อมูลรับรองไว้นอก URL">
ควรใช้ `:headers` แทนพารามิเตอร์เคียวรี URL (เช่น `&auth=YOUR_API_KEY`) สำหรับ API keys และ tokens: หากการดึงข้อมูลล้มเหลว URL ของคำขอจะถูกเขียนลงในบันทึก ซึ่งจะเปิดเผย key ที่วางไว้ที่นั่น ค่าภายใน `:headers` จะไม่ถูกบันทึกไว้

Connected content ยังต้องการให้เทมเพลตเนื้อหา Liquid เปิดใช้งานสำหรับบัญชีของคุณ หากไม่ได้เปิดใช้งาน `connected_content` tag ทั้งหมด — รวมถึง key ใดๆ ที่อยู่ภายใน — จะถูกส่งไปยังผู้รับทุกคนเป็นข้อความตามตัวอักษรแทนที่จะถูกแสดงผล ติดต่อ [ฝ่ายสนับสนุนของ Pushwoosh](https://help.pushwoosh.com/hc/en-us/requests/new) หากคุณไม่แน่ใจว่าบัญชีของคุณได้เปิดใช้งานสิ่งนี้หรือไม่
</Aside>

**การใช้ tags ใน Connected content**

หากต้องการรวม custom tags ให้แทรกเป็นพารามิเตอร์เคียวรีในคำขอ **Connected Content** (`{{ tag_name }}`)

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

2. ถัดไป เพิ่มข้อความที่รวม **ข้อมูลที่ดึงมา** ดังนี้:

```

เฮ้ {{userid}} รับรหัสโปรโมชั่นส่วนตัวของคุณ - {{result.code}}
```

![เพิ่มข้อความพร้อมข้อมูลที่ดึงมา](/connectedcontent-1.webp)

3. หลังจากสรุปเนื้อหาข้อความและกำหนดค่าการตั้งค่า preset แล้ว ให้บันทึกเพื่อนำกลับมาใช้ใหม่ในแคมเปญ

<video src="/connectedcontent-2.webm" title="ส่งข้อความด้วย connected content" autoplay loop muted playsinline />

#### ขั้นตอนที่ 3. ส่งข้อความโดยใช้ preset ที่กำหนดค่าไว้

ส่งข้อความด้วย preset นี้โดยใช้ [one-time push](/th/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) หรือ [email form](/th/product/messaging-channels/emails/send-email/#how-to-send-a-one-time-email) หรือ [customer journey](/th/product/customer-journey/pushwoosh-journey-overview/)

<Aside type="caution" title="สำคัญ">
หากบริการส่งคืนสถานะอื่นที่ไม่ใช่ HTTP 200 OK อีเมลหรือการแจ้งเตือนพุชจะไม่ถูกส่ง ซึ่งจะช่วยให้แน่ใจว่าการสื่อสารของคุณจะถูกส่งออกไปก็ต่อเมื่อดึงข้อมูลที่จำเป็นได้สำเร็จเท่านั้น
</Aside>