# รอทริกเกอร์ (Wait for Trigger)

องค์ประกอบ **Wait for Trigger** ช่วยให้คุณสามารถควบคุมโฟลว์ของ journey ของคุณได้ โดยขึ้นอยู่กับว่าผู้ใช้ทริกเกอร์ event ที่ระบุอย่างน้อยหนึ่งรายการภายในกรอบเวลาที่กำหนดหรือไม่ (สูงสุด 90 วัน)

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

<img src="/journey-elements-README-23.webp" alt="องค์ประกอบ Wait for Trigger บน journey canvas ที่แสดงการแตกสาขาตาม event"/>

##### กรณีการใช้งาน
- การส่งส่วนลดพิเศษให้กับผู้ใช้ที่ไม่ทำการซื้อให้เสร็จสิ้นภายในระยะเวลาที่กำหนดหลังจากเพิ่มสินค้าลงในรถเข็น
- การสร้างเส้นทางการสื่อสารที่แยกจากกันตามการกระทำที่ผู้ใช้ทำหลังจากได้รับ push notification: การเปิดการแจ้งเตือน, การคลิกลิงก์ในการแจ้งเตือน, หรือไม่ดำเนินการใดๆ
- การตั้งค่าข้อความติดตามผลที่แตกต่างกัน ขึ้นอยู่กับว่าผู้ใช้ดูสินค้า, เพิ่มลงในรถเข็น, หรือซื้อสินค้าภายในกรอบเวลาที่กำหนด




## กำหนดระยะเวลารอ

หลังจากเพิ่มองค์ประกอบ Wait for Trigger แล้ว ให้ระบุระยะเวลาที่ระบบควรรอให้ผู้ใช้ทริกเกอร์ event ที่คุณเลือก

คุณสามารถตั้งค่าระยะเวลารอได้สูงสุด 90 วัน

หากไม่มี event ที่เลือกถูกทริกเกอร์ภายในกรอบเวลานี้ ผู้ใช้จะเดินทางต่อไปยังสาขา **Not triggered**
<img src="/journey-elements-wait-for-trigger-1.webp" alt="อินเทอร์เฟซการกำหนดค่าที่แสดงการตั้งค่าระยะเวลารอสำหรับองค์ประกอบ Wait for Trigger พร้อมตัวเลือกในการตั้งค่าระยะเวลาและเปิดใช้งานระยะเวลารอคงที่"/>

#### ระยะเวลารอคงที่ (Fixed waiting period) (ไม่บังคับ)

เปิดใช้งาน **Fixed waiting period** หากคุณต้องการให้ผู้ใช้รอเต็มระยะเวลาเสมอ แม้ว่า event ของพวกเขาจะเกิดขึ้นเร็วกว่านั้นก็ตาม
<img src="/journey-elements-README-27.webp" alt="อินเทอร์เฟซการกำหนดค่าที่แสดงตัวเลือก Fixed waiting period ในการตั้งค่าองค์ประกอบ Wait for Trigger"/>
<Aside type="note" title="ตัวอย่าง">
สมมติว่าขั้นตอน journey ของคุณคือ: **Push** → **Wait for Trigger** → **Email** หากคุณตั้งค่าขั้นตอน **Wait for Trigger** เป็น 1 วัน และเปิด **Fixed waiting period** แม้ว่าผู้ใช้จะทริกเกอร์ event อย่างรวดเร็ว (เช่น เพียง 5 นาทีหลังจากได้รับ push) พวกเขาก็ยังต้องรอเต็ม 1 วันก่อนที่จะไปยังขั้นตอนถัดไปเพื่อรับอีเมล
</Aside>


## กำหนดค่าสาขา (Configure branches)

สาขา (Branches) ช่วยให้คุณสามารถตั้งค่าเส้นทางผลลัพธ์ที่แตกต่างกันใน journey ได้ ขึ้นอยู่กับว่าผู้ใช้ทริกเกอร์ event ใด คุณสามารถเพิ่มได้สูงสุดสามสาขา บวกกับสาขา **Not triggered** ที่มีอยู่เสมอสำหรับผู้ใช้ที่ไม่ตรงกับเงื่อนไข event ใดๆ

ในการกำหนดค่าสาขา:

1. ป้อนชื่อสำหรับสาขาในช่อง **BRANCH NAME**

2. เพิ่ม event ไปยังสาขาโดยคลิก **ADD EVENT** และเลือก event จากเมนูแบบเลื่อนลง คุณสามารถเพิ่มได้สูงสุดสี่ event ต่อสาขา

3. สำหรับแต่ละ event คุณสามารถเพิ่มเงื่อนไขได้โดยคลิก **ADD CONDITION** เพื่อกรอง event ตาม attribute ที่เฉพาะเจาะจง สำหรับ operator ที่มีอยู่ โปรดดูที่ [Tag operators by type](/th/product/audience-data-and-segmentation/segmentation/create-segments/by-tags/#tag-operators-by-type)

<img src="/journey-elements-wait-for-trigger-6.webp" alt="อินเทอร์เฟซการกำหนดค่าที่แสดงวิธีการเพิ่มเงื่อนไขให้กับ event ในสาขาด้วยปุ่ม ADD CONDITION และตัวเลือกการกรอง attribute"/>

4. หากต้องการลบ event ออกจากสาขา ให้คลิก **REMOVE EVENT**

หากสาขามีหลาย event คุณสามารถเลือกว่าจะประเมินผลอย่างไรโดยใช้ logical operator ตัวใดตัวหนึ่งต่อไปนี้:

- **AND:** ผู้ใช้ต้องทริกเกอร์ event ทั้งหมดที่ระบุไว้เพื่อดำเนินการต่อไปในสาขานี้
- **OR:** ผู้ใช้ต้องทริกเกอร์อย่างน้อยหนึ่ง event ที่ระบุไว้เพื่อดำเนินการต่อไป

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

<video src="/journey-elements-README-24.webm" title="อินเทอร์เฟซการกำหนดค่าที่แสดงวิธีการตั้งค่าหลาย event ด้วย logical operator AND/OR ในองค์ประกอบ Wait for Trigger" autoplay loop muted playsinline />

หากต้องการเพิ่มสาขาใหม่ ให้คลิก **Add branch**

<img src="/journey-elements-wait-for-trigger-5.webp" alt="อินเทอร์เฟซการกำหนดค่าที่แสดงปุ่ม Add branch และตัวเลือกการตั้งค่าหลายสาขาในองค์ประกอบ Wait for Trigger"/>

<Aside type="tip">
ก่อนใช้ Wait for Trigger ตรวจสอบให้แน่ใจว่า event ที่คุณต้องการติดตามมีอยู่แล้วในโปรเจกต์ของคุณ [เรียนรู้วิธีสร้าง event](/th/product/audience-data-and-segmentation/events/)
</Aside>

### ตั้งค่าการจับคู่ attribute แบบหลายเซสชัน (multi session)

หาก journey ของคุณใช้ [**Multiple active sessions per user**](/th/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#multiple-active-sessions-per-user) ส่วนนี้จะปรากฏขึ้นโดยอัตโนมัติ จุดประสงค์คือเพื่อให้แน่ใจว่า event ที่เข้ามาแต่ละรายการจะถูกจับคู่กับ user session ที่ถูกต้อง แทนที่จะนำไปใช้กับทุก active session ที่ผู้ใช้อาจมีอยู่


ในการกำหนดค่าการจับคู่เซสชัน:

1. ขั้นแรก เพิ่ม event ไปยังสาขาของคุณ (ตามที่อธิบายไว้ในส่วน [กำหนดค่าสาขา](#configure-branches) ด้านบน)

2. จากนั้น เลือก attribute ในเมนูแบบเลื่อนลงที่ระบุเซสชัน attribute ที่คุณเลือกต้องเป็นไปตามเงื่อนไขสองข้อ:

   - ต้องตรงกับตัวระบุที่ใช้ในขั้นตอน Entry (เช่น `order_id`, `appointment_id`, `transaction_id`)
   
   - และต้องมีอยู่ใน event ที่คุณเพิ่มเข้าไปในสาขาด้วย

<img src="/journey-elements-wait-for-trigger-2.webp" alt="อินเทอร์เฟซการกำหนดค่าที่แสดงเมนูแบบเลื่อนลงสำหรับการจับคู่ attribute แบบหลายเซสชันพร้อมตัวเลือกการระบุเซสชัน"/>


<Aside type="caution" title="สำคัญ">
คุณสามารถใช้ attribute เดียวกันกับในขั้นตอน Entry หรือ attribute ใดๆ ที่มีค่าเดียวกัน (เช่น `order_id` ภายใน `order_list`) หากค่าไม่ตรงกับตัวระบุเซสชันของ Entry ทาง Pushwoosh จะไม่ทราบว่า event นั้นเป็นของเซสชันใดและจะนำ event นั้นไปใช้กับ active session **ทั้งหมด** สำหรับผู้ใช้รายนั้น [เรียนรู้เพิ่มเติม](/th/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/#multiple-active-sessions-per-user)
</Aside>

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

แอปของคุณอนุญาตให้ผู้ใช้จองการนัดหมายได้หลายครั้ง การจองแต่ละครั้งจะเริ่มต้น journey session แยกต่างหากซึ่งระบุโดย attribute เช่น `appointment_id`

สมมติว่าผู้ใช้จองการนัดหมายสองครั้ง:

* การนัดหมาย **1001**
* การนัดหมาย **1002**

สิ่งนี้จะสร้าง active session สองเซสชัน หนึ่งเซสชันต่อการนัดหมาย

ต่อมา ผู้ใช้ทริกเกอร์ event เช่น `AppointmentConfirmed` ที่มี `appointment_id: 1001` องค์ประกอบ **Wait for Trigger** จะเปรียบเทียบค่านี้กับตัวระบุเซสชันและนำ event ไปใช้กับเซสชันสำหรับการนัดหมาย **1001** เท่านั้นอย่างถูกต้อง สิ่งนี้ทำให้มั่นใจได้ว่าโฟลว์การนัดหมายที่ถูกต้องจะดำเนินต่อไป

> หาก event ไม่มี attribute ที่ใช้จับคู่เซสชัน (ในกรณีนี้คือ `appointment_id`) Pushwoosh จะไม่สามารถระบุได้ว่าเป็นของเซสชันใด event นั้นจะถูกนำไปใช้กับ active user session **ทั้งหมด** ซึ่งนำไปสู่โฟลว์ที่ไม่ถูกต้องหรือซ้ำซ้อน



## ตัวอย่างกรณีการใช้งาน

**1. ตั้งค่าการสื่อสารพิเศษสำหรับผู้ใช้ที่ทริกเกอร์ event ที่เฉพาะเจาะจงหนึ่งหรือหลายรายการ** ลองจินตนาการว่าคุณต้องการส่งอีเมลถึงลูกค้าที่จองและชำระเงินค่าตั๋วเครื่องบินแล้ว ในการทำเช่นนี้ ให้เพิ่มขั้นตอน Wait for Trigger ที่มีหนึ่งสาขาและระบุสอง event ในนั้น: _TicketBooked_ และ _TickedPurchased_ (สมมติว่าคุณได้กำหนดค่าไว้ก่อนแล้ว) เลือก logical operator _AND_ เพื่อให้เฉพาะผู้ใช้ที่ตรงตามเงื่อนไขทั้งสองเท่านั้นที่จะดำเนินการต่อไป

<img src="/journey-elements-README-25.webp" alt="ตัวอย่างการกำหนดค่า Wait for Trigger ที่มีสอง event โดยใช้ตรรกะ AND สำหรับการจองและซื้อตั๋ว" data-size="original"/>

**2. แบ่งโฟลว์ขึ้นอยู่กับประเภทของผลิตภัณฑ์ที่ซื้อ** สมมติว่าคุณเสนอการสมัครสมาชิกแบบ Basic และ Premium เมื่อซื้อการสมัครสมาชิก ผู้ใช้จะทริกเกอร์ event _SubscriptionPurchased_ พร้อมกับ attribute _type_ ที่ได้รับค่าเป็น _Basic_ หรือ _Premium_ หากต้องการแบ่งโฟลว์ของ journey ตามประเภทการสมัครสมาชิก ให้เพิ่มขั้นตอน Wait for Trigger ที่มีสองสาขา ในสาขาแรก ให้ระบุ event _SubscriptionPurchased_ พร้อมเงื่อนไข _type is Basic_; ในสาขาที่สอง ให้เพิ่ม event _SubscriptionPurchased_ พร้อมเงื่อนไข _type is Premium_

<video src="/journey-elements-README-26.webm" title="ตัวอย่างการกำหนดค่า Wait for Trigger ที่มีสองสาขาสำหรับประเภทการสมัครสมาชิกแบบ Basic และ Premium" autoplay loop muted playsinline />