# เริ่ม Customer Journey โดยใช้ API-based Entry

API-based Entry ช่วยให้คุณสามารถเปิดตัว Customer Journey ได้ทันทีที่เกิดเหตุการณ์ทางธุรกิจที่เฉพาะเจาะจงขึ้น ในการเริ่มแคมเปญ คุณจะต้องส่งคำขอ API พิเศษ


## การตั้งค่า

1. สร้าง Journey ด้วย API-based Entry

<video src="/customer-journey-api-based-entry-1.webm" alt="อินเทอร์เฟซ Customer Journey Builder แสดงวิธีการสร้าง Journey ใหม่ด้วยองค์ประกอบ API-based Entry" autoplay loop muted playsinline />

2. ดับเบิลคลิกที่ขั้นตอน API-based Entry หน้าต่างการกำหนดค่า Entry จะเปิดขึ้น

3. คุณสามารถแก้ไขเนื้อหาของ push และอีเมลได้ทุกครั้งที่ Journey เปิดตัวโดยใช้ตัวยึดตำแหน่งเนื้อหา (content placeholders) ค่าของแต่ละตัวยึดตำแหน่งสามารถเปลี่ยนแปลงได้ในคำขอ หากคุณไม่ต้องการตัวเลือกนี้ คุณสามารถข้ามขั้นตอนนี้ไปได้

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

ขั้นแรก ให้เพิ่มชื่อตัวยึดตำแหน่งในหน้าต่างตั้งค่า API-based Entry คุณสามารถใช้ชื่อใดก็ได้ที่คุณสะดวก

<video src="/customer-journey-api-based-entry-2.webm" alt="หน้าต่างการกำหนดค่า API-based Entry แสดงวิธีการเพิ่มชื่อตัวยึดตำแหน่งสำหรับเนื้อหาแบบไดนามิก" autoplay loop muted playsinline />

ตอนนี้ ให้สร้าง [Preset](/th/product/content/presets/) สำหรับ push หรืออีเมล และแทรกตัวยึดตำแหน่งแทนข้อความที่คุณต้องการแก้ไข ตัวยึดตำแหน่งต้องอยู่ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้ ขึ้นอยู่กับความต้องการของคุณ:

* `{placeholder_name|format_modifier|}` – หากไม่ได้ระบุค่าตัวยึดตำแหน่งเมื่อเปิดตัวแคมเปญ ผู้ใช้จะเห็นพื้นที่ว่างแทน
* `{placeholder_name|format_modifier}` – หากไม่ได้ระบุค่าตัวยึดตำแหน่งและยังไม่ได้กำหนดให้กับผู้ใช้ (ในกรณีที่คุณใช้ Tag เป็นตัวยึดตำแหน่ง) ข้อความจะไม่ถูกส่ง

<details>

<summary>ตัวปรับแต่งรูปแบบ (Format modifiers)</summary>

* CapitalizeFirst – ทำให้ตัวอักษรตัวแรกในค่าตัวยึดตำแหน่งเป็นตัวพิมพ์ใหญ่
* CapitalizeAllFirst – ทำให้ตัวอักษรตัวแรกของทุกคำในค่าตัวยึดตำแหน่งเป็นตัวพิมพ์ใหญ่ หากค่าประกอบด้วยมากกว่าหนึ่งคำ
* UPPERCASE – เปลี่ยนตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่
* lowercase – เปลี่ยนตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็ก
* regular – แทรกค่าตัวยึดตำแหน่งตามที่ระบุในคำขอทุกประการ โดยไม่มีการแก้ไข

</details>

<img src="/customer-journey-api-based-entry-3.webp" alt="ตัวแก้ไข Push preset แสดงตัวอย่างไวยากรณ์ตัวยึดตำแหน่งพร้อมตัวปรับแต่งรูปแบบในเนื้อหาข้อความ"/>

<Aside type="note">
คุณยังสามารถใช้ชื่อ Tag ที่มีอยู่แทนชื่อตัวยึดตำแหน่งได้ ในกรณีนี้ คุณต้องกำหนดค่าการเขียนทับค่า Tag นี้ด้วยค่าที่ระบุในคำขอตามที่อธิบายไว้ด้านล่าง
</Aside>

เมื่อกำหนดค่าขั้นตอน Push หรือ Email ใน Journey ของคุณ ให้เลือก preset ที่สร้างขึ้นและเปิดตัวเลือก **Personalize message with event attributes** เลือกตัวยึดตำแหน่งที่คุณต้องการแก้ไขในคำขอเมื่อเปิดตัว Journey เลือก **API-based Entry** เป็นแหล่งที่มาและชื่อตัวยึดตำแหน่งเป็นแอตทริบิวต์ไดนามิก:

<video src="/customer-journey-api-based-entry-4.webm" title="การกำหนดค่าขั้นตอน Push หรือ Email แสดงตัวเลือก Personalize message with event attributes และการเลือกแหล่งที่มา API-based Entry" autoplay loop muted playsinline />

คลิก **Apply** เพื่อบันทึกการเปลี่ยนแปลง

4. ในหน้าต่างการกำหนดค่า Entry ให้คัดลอกเทมเพลตคำขอเพื่อแก้ไข:

<img src="/customer-journey-api-based-entry-5.webp" alt="หน้าต่างการกำหนดค่า API-based Entry แสดงเทมเพลตคำขอ API พร้อมรูปแบบส่วนหัวการให้สิทธิ์ (authorization header)"/>
<Aside>
ในการเปิดตัว Journey ผ่าน API คุณต้องใส่โทเค็นการให้สิทธิ์ที่ถูกต้องในส่วนหัว Authorization

**รูปแบบส่วนหัวที่ต้องการ**

 ```http
 Authorization: Api <your_api_token>
 ```
 **ตัวอย่าง**

 ```http
 Authorization: Api c8dc6435-xxxxxxxxxxxxxxx
 ```
</Aside>

5. เพิ่มตัวกรองผู้ชมไปยังพารามิเตอร์ "filter" โดยใช้ [Segmentation language](/th/developer/api-reference/segmentation-filters-api/segmentation-language/) โปรดทราบว่าคุณต้องตั้งค่า [Tags](/th/developer/guides/audience-and-segmentation/tags/) ที่จำเป็นล่วงหน้า

ตัวอย่างเช่น หากคุณต้องการกำหนดเป้าหมาย Journey ไปยังผู้ใช้ที่เพิ่มรายการ _Socks_ ไปยัง _Wishlist_ ของพวกเขา ค่า "filter" จะต้องมีลักษณะดังนี้:

```
    "filter": "A("12345-12345") * "T("Wishlist", EQ, "Socks")"
```

ในตัวอย่างนี้ คุณต้องมี Tag _Wishlist_ ที่กำหนดค่าไว้ในแอปของคุณ

<Aside type="note">
รหัสแอปพลิเคชันของคุณจะถูกเพิ่มไปยังพารามิเตอร์ "filter" โดยอัตโนมัติในรูปแบบ `A(\"12345-12345\")` โปรดอย่าลบหรือแก้ไข

นอกจากนี้ โปรดจำไว้ว่าเครื่องหมายคำพูด ("") และเครื่องหมายแบ็กสแลช (\\) ควรถูก escape ด้วยเครื่องหมายแบ็กสแลช (\\) ในการสืบค้นข้อมูลแบบ JSON
</Aside>

6. หากคุณได้ตั้งค่าตัวยึดตำแหน่งไว้ ให้ระบุเนื้อหาที่ต้องการเป็นค่าของมัน:

<img src="/customer-journey-api-based-entry-6.webp" alt="เทมเพลตคำขอ API แสดงการกำหนดค่าค่าตัวยึดตำแหน่งสำหรับเนื้อหาไดนามิกในการเปิดตัว Journey"/>

7. หากเปิดใช้งานตัวเลือก **Message Rate Limits** จำนวนผู้ใช้ที่เข้าสู่ Journey พร้อมกันในแต่ละวินาทีจะถูกจำกัด คุณสามารถใช้ค่าเริ่มต้นที่ 5000 ผู้ใช้ต่อวินาที หรือตั้งค่าตัวเลขอื่นได้

<img src="/customer-journey-api-based-entry-7.webp" alt="การกำหนดค่า API-based Entry แสดงตัวเลือก Message Rate Limits พร้อมค่าเริ่มต้นที่ 5000 ผู้ใช้ต่อวินาที"/>

<Aside type="tip">
เราขอแนะนำให้รักษค่าไว้ระหว่าง 5000 ถึง 10000 ผู้ใช้ต่อวินาที หากค่าต่ำเกินไป อาจใช้เวลานานขึ้นสำหรับผู้ชมของคุณในการเข้าสู่ Journey หากค่าสูงเกินไป บริการที่ประมวลผลข้อมูลของคุณอาจทำงานหนักเกินไป
</Aside>

8. หากคุณวางแผนที่จะรีสตาร์ทแคมเปญของคุณบ่อยครั้งและไม่ต้องการให้ผู้ใช้คนเดียวกันเข้าสู่ Journey หลายครั้ง ให้ตั้งค่า [Frequency Capping](/th/product/customer-journey/journey-settings#frequency-capping)

> ตัวอย่างเช่น คุณได้สร้างแคมเปญเพื่อแจ้งเตือนผู้ใช้เกี่ยวกับการลดราคาสำหรับผลิตภัณฑ์ที่เฉพาะเจาะจง คุณต้องการเปิดตัว Journey ใหม่อีกสองสามครั้งโดยส่งคำขอหลายรายการพร้อมตัวกรองผู้ชมที่แตกต่างกัน ในกรณีนี้ คุณสามารถเพิ่ม Frequency Capping เพื่อไม่ให้ส่งการแจ้งเตือนซ้ำไปยังผู้ใช้ที่ตรงกับตัวกรองหลายตัว

9. หากคุณต้องการให้ Journey เปิดตัวทุกครั้งที่เกิดเหตุการณ์ทางธุรกิจบางอย่างขึ้น ให้ทำให้คำขอเป็นไปโดยอัตโนมัติโดยใช้ webhook เมื่อเหตุการณ์เกิดขึ้น webhook ควรส่งคำขอเพื่อเริ่ม Journey โดยอัตโนมัติ

คุณยังสามารถส่งคำขอด้วยตนเองได้หากคุณไม่ต้องการระบบอัตโนมัติ

<Aside type="note">
* หากคุณเปลี่ยนเงื่อนไขการแบ่งกลุ่มเมื่อส่งคำขอใหม่ สิ่งนี้จะไม่ส่งผลกระทบต่อผู้ใช้ที่ได้เข้าสู่ Journey แล้ว
* หากคุณเปลี่ยนเนื้อหาข้อความเมื่อส่งคำขอใหม่ ผู้ใช้ทุกคนจะได้รับข้อความเวอร์ชันใหม่ (รวมถึงผู้ที่ได้เข้าสู่ Journey แล้วแต่ยังไม่ได้รับข้อความนี้)
</Aside>