# Liquid ใน in-app

เขียน [Liquid](/th/product/personalization/liquid-templates/) ในเนื้อหาของ in-app เพื่อแสดงข้อมูลของผู้ใช้แต่ละคน ได้แก่ ค่า Tag ของผู้ใช้ แอตทริบิวต์ของ event ที่ทริกเกอร์ in-app และ User ID ของผู้ใช้ ตัวอย่างเช่น ทักทายผู้ใช้ด้วยชื่อและแสดงรหัสโปรโมชันที่ส่งมาใน event

<Aside type="note">
Liquid ใน in-app ปิดอยู่โดยค่าเริ่มต้น หากต้องการเปิดใช้งานสำหรับบัญชีของคุณ โปรดติดต่อ Customer Success Manager หรือฝ่ายสนับสนุน
</Aside>

## Liquid ทำงานที่ใดใน in-app

Liquid ทำงานเฉพาะใน in-app ที่ Journey แสดงด้วย [องค์ประกอบ In-App](/th/product/customer-journey/journey-elements/channels/in-app/) เท่านั้น โหมด **แสดงอินแอป** ทั้งสองแบบใช้งานได้ ได้แก่ **เมื่อเปิดแอปครั้งถัดไป** และ **เมื่อเกิดเหตุการณ์**

เขียน Liquid ในตำแหน่งใดตำแหน่งหนึ่งต่อไปนี้:

* ข้อความของบล็อกในตัวแก้ไขในตัว เช่น [บล็อก HTML](/th/product/content/in-apps/no-code-in-app-editor/built-in-editor-blocks-reference/#html) หรือบล็อก **Text** ข้อความในทุกภาษาของ in-app ใช้งานได้
* ไฟล์ `index.html` ของไฟล์ HTML archive ที่อัปโหลด
* ช่องข้อความของ [native in-app](/th/product/content/in-apps/create-native-in-app-messages/)

## เพิ่ม Liquid ลงใน in-app

หากต้องการเพิ่ม Liquid ให้เขียนในตัวแก้ไข in-app แล้วเลือก in-app นั้นใน Journey

1. เปิด in-app ในตัวแก้ไขในตัว
2. เพิ่มบล็อก **HTML** หรือเลือกบล็อกที่มีอยู่
3. ในช่อง **HTML** ให้พิมพ์โค้ด Liquid ด้วยตนเอง

   <img src="/personalization-liquid-templates-8.webp" alt="การตั้งค่าบล็อก HTML ในตัวแก้ไข in-app พร้อมโค้ด Liquid ที่ทักทายผู้ใช้ด้วย firstName แสดงแท็ก loyalty_tier เป็นตัวพิมพ์ใหญ่ แสดงแอตทริบิวต์ event promo_code และมีเงื่อนไข if สำหรับระดับ gold" width="407"/>

4. คลิก **Save**
5. ในองค์ประกอบ **In-App** ของ Journey ให้เลือก in-app ใน **Media Source**
6. หาก in-app ใช้แอตทริบิวต์ของ event ให้เลือก **เมื่อเกิดเหตุการณ์** ใน **แสดงอินแอป** แล้วเลือก event

ตัวอย่างในตัวแก้ไขจะแสดงโค้ด Liquid ตามที่เขียนไว้ ผู้ใช้แต่ละคนจะเห็นค่าของตัวเอง

<Aside type="note">
ปุ่ม **Merge tag** ไม่ได้แทรก Liquid แต่จะแทรก placeholder ของ Dynamic content เช่น `{firstName|regular|}` placeholder และ Liquid ทำงานร่วมกันได้ใน in-app เดียวกัน
</Aside>

ในตัวอย่างนี้ `firstName` และ `loyalty_tier` เป็น Tag และ `promo_code` เป็นแอตทริบิวต์ของ event ที่แสดง in-app:

<Tabs>
<TabItem label="Input">

```liquid
<h2>
Hi, {{ firstName | default: "there" }}!
</h2>
<p>
Your {{ loyalty_tier | upcase }} code:
<b>{{ promo_code }}</b>
</p>
{% if loyalty_tier == "gold" %}
<p>Shipping is on us today.</p>
{% endif %}
```

</TabItem>

<TabItem label="Output">

Hi, Anna!

Your GOLD code: AUTUMN-42

Shipping is on us today.

</TabItem>

</Tabs>

<span id="data-you-can-use" />

## ข้อมูลที่ใช้ได้

ค่าต่อไปนี้ใช้ได้ใน Liquid ของ in-app:

| ค่า | คืออะไร | วิธีเขียน |
|---|---|---|
| [Tag](/th/product/audience-data-and-segmentation/user-data-tags/tags/) | ข้อมูลผู้ใช้ที่จัดเก็บใน Pushwoosh เช่น ชื่อผู้ใช้ in-app จะแสดงค่าที่มี ณ เวลาที่แสดง in-app | `{{ loyalty_tier }}` |
| แอตทริบิวต์ของ event | แอตทริบิวต์ของ event ที่เลือกในโหมด **เมื่อเกิดเหตุการณ์** ขององค์ประกอบ In-App หากแอตทริบิวต์มีชื่อเดียวกับ Tag ระบบจะใช้ค่าของแอตทริบิวต์ | `{{ promo_code }}` |
| User ID | ID ที่แอปของคุณกำหนดให้ผู้ใช้ | `{{ userid }}`, เป็นตัวพิมพ์เล็ก |
| HWID | Hardware ID ของอุปกรณ์ของผู้ใช้ใน Pushwoosh | `{{ hwid }}`, เป็นตัวพิมพ์เล็ก |

## การเขียนชื่อตัวแปร

ทำตามกฎเหล่านี้เมื่อพิมพ์ชื่อตัวแปร:

* พิมพ์ชื่อให้ตรงกับที่อยู่ใน Pushwoosh ทุกประการ รวมถึงตัวพิมพ์ใหญ่ ชื่อที่ไม่ตรงกัน เช่น `{{ firstname }}` สำหรับ Tag `firstName` จะแสดงเป็นข้อความว่าง
* เขียนชื่อ Tag และแอตทริบิวต์โดยไม่มีช่องว่าง: `{{ LoyaltyTier }}` สำหรับ Tag ชื่อ `Loyalty Tier`
* หากต้องการแสดงค่าสำรองแทนข้อความว่าง ให้เพิ่มฟิลเตอร์ `default`: `{{ firstName | default: "there" }}`

## เปลี่ยนรูปแบบการแสดงค่า

หากต้องการเปลี่ยนรูปแบบการแสดงค่า ให้เพิ่ม [ฟิลเตอร์ Liquid](https://shopify.github.io/liquid/filters/abs/) ฟิลเตอร์มาตรฐานทั้งหมดใช้งานได้ เช่น `upcase`, `capitalize`, `date` และ `truncate` รวมถึงฟิลเตอร์ `timezone` ของ Pushwoosh

## ข้อจำกัดของ Liquid ใน in-app

ใน in-app นั้น Liquid มีข้อจำกัดดังนี้:

* หากคุณส่ง in-app เป็นแคมเปญ In-app ทันที (**แคมเปญ** > **In-app ทันที**) Liquid จะไม่ถูกนำไปใช้ และผู้ใช้จะเห็นโค้ดตามที่เขียนไว้ ให้ใช้ placeholder ของ [Dynamic content](/th/product/personalization/dynamic-content/) แทน
* ไม่รองรับ `{% include %}` เขียนโค้ดทั้งหมดใน in-app โดยตรง
* ไม่รองรับ [Connected content](/th/product/personalization/liquid-templates/connected-content/) ให้ใช้ค่าจาก [ข้อมูลที่ใช้ได้](#data-you-can-use) แทน
* หาก archive ของ in-app มีขนาดใหญ่กว่า 1 MB Liquid จะไม่ถูกนำไปใช้ และผู้ใช้จะเห็นโค้ดตามที่เขียนไว้
* หากโค้ด Liquid มีข้อผิดพลาด เช่น `{% if %}` ที่ไม่ได้ปิด ผู้ใช้จะเห็น in-app พร้อมโค้ดตามที่เขียนไว้ ตรวจสอบ in-app บนอุปกรณ์ของคุณเองก่อนเปิดใช้ Journey