# Connected content

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

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

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

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

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

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

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

<Aside type="caution" icon="setting" title="ต้องการความช่วยเหลือจากนักพัฒนา">
คุณจะต้องได้รับความช่วยเหลือจากทีมพัฒนาของคุณเพื่อใช้ Connected content แบ่งปันคู่มือนี้กับพวกเขาเพื่อเริ่มต้น
</Aside>

### ขั้นตอนที่ 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 editor](/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} }}` | พารามิเตอร์การค้นหาแบบไดนามิกที่ส่ง ID ผู้ใช้ไปยังแบ็กเอนด์ ภายใน `connected_content` ให้ครอบตัวแปรด้วย `${}` ในข้อความ ให้เขียน `{{userid}}` โดยไม่มี `${}` |
| `: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**

หากต้องการรวมค่า tag ให้เพิ่มลงใน URL เป็นพารามิเตอร์การค้นหาในรูปแบบเดียวกัน `{{ ${tag_name} }}` หากเขียนเป็น `{{ tag_name }}` ภายในแท็ก `connected_content` ค่าจะถูกส่งเป็นค่าว่าง

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

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

```

Hey, {{userid}}, grab your personal promo code - {{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/sending-emails/send-one-time-emails/) หรือ [customer journey](/th/product/customer-journey/pushwoosh-journey-overview/)

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