# การหน่วงเวลา

องค์ประกอบ **การหน่วงเวลา** (Time Delay) ทำให้ผู้ใช้รอตามเวลาที่กำหนด หลังจากหน่วงเวลาแล้ว พวกเขาจะไปยังขั้นตอนถัดไป การหน่วงเวลานี้อาจเป็นช่วงเวลาที่กำหนดไว้ เวลาที่เจาะจง หรือวันที่ก็ได้ นอกจากนี้ยังสามารถอิงตามค่า Tag หรือแอตทริบิวต์ของ Event ได้อีกด้วย

## ตัวเลือกการหน่วงเวลา

### ระยะเวลาคงที่

เมื่อตั้งค่าเป็นช่วงเวลาคงที่ องค์ประกอบการหน่วงเวลาจะอนุญาตให้ผู้ใช้เดินทางต่อใน Journey ได้ก็ต่อเมื่อเวลาที่ระบุผ่านไปแล้วเท่านั้น

ตัวอย่างเช่น หากตั้งค่าการหน่วงเวลาไว้ที่ 8 ชั่วโมง ผู้ใช้ที่มาถึงองค์ประกอบ Journey นี้จะรอเป็นเวลา 8 ชั่วโมงก่อนที่จะไปยังขั้นตอนถัดไป

<Aside type="note">
โปรดทราบว่าระยะเวลาการหน่วงเวลา **ไม่สามารถนานเกิน 30 วันได้**
</Aside>

<img src="/journey-elements-README-32.webp" alt="องค์ประกอบการหน่วงเวลาที่กำหนดค่าเป็นระยะเวลาคงที่ แสดงให้เห็นผู้ใช้ที่กำลังรอตามช่วงเวลาที่กำหนดก่อนที่จะดำเนินการต่อ"/>

### เวลาที่เจาะจง

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

<Aside type="caution">
ตัวเลือกเวลาที่เจาะจงจะถูกตั้งค่าตามเขตเวลาของผู้ใช้
</Aside>

ตัวอย่างเช่น หากผู้ใช้มาถึงองค์ประกอบการหน่วงเวลาในช่วงเช้าตรู่ และคุณได้ตั้งค่าการหน่วงเวลาให้รอจนถึง 17:30 น. ผู้ใช้เหล่านั้นจะไปยังจุดต่อไปของ Journey ในเวลา 17:30 น. ตามเขตเวลาของอุปกรณ์ของพวกเขา

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

<img src="/journey-elements-README-33.webp" alt="Journey ของผู้ใช้ถูกหยุดชั่วคราวโดยองค์ประกอบการหน่วงเวลาจนกว่าจะถึงเวลาที่กำหนดในเขตเวลาท้องถิ่นของพวกเขา"/>

### วันที่

หากคุณต้องการตั้งค่าแคมเปญแบบครั้งเดียวในวันที่ที่เจาะจง (ตัวอย่างเช่น ส่งการแจ้งเตือน Black Friday) ให้เลือกวันที่และเวลาที่ต้องการเพื่อดำเนิน Journey ต่อไป

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

<img src="/journey-elements-README-34.webp" alt="องค์ประกอบการหน่วงเวลาที่ตั้งค่าเป็นวันที่ที่เจาะจง เหมาะสำหรับการจัดตารางแคมเปญครั้งเดียว เช่น โปรโมชั่นวันหยุด"/>

### วันในสัปดาห์

หากคุณต้องการให้ผู้ใช้ไปยังจุดต่อไปของ Journey เฉพาะในวันที่ระบุของสัปดาห์ ให้เลือกตัวเลือก **Day of week** และตั้งค่าวันและเวลาที่ต้องการ

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

<img src="/journey-elements-README-35.webp" alt="องค์ประกอบการหน่วงเวลาที่กำหนดค่าเป็นวันในสัปดาห์ที่เจาะจง ทำให้สามารถตั้งค่าตารางเวลาที่เกิดซ้ำทุกสัปดาห์ได้"/>

### การหน่วงเวลาตามข้อมูลผู้ใช้หรือ Event

ใช้ตัวเลือกนี้เมื่อเวลารอควรมาจาก Tag, แอตทริบิวต์ของ Event หรือค่าที่แมปจากการตอบกลับของ [**Webhook**](#use-a-date-from-a-webhook-response)

1. ใน **Time delay option** ให้เลือก **Based on user/event data**
2. ภายใต้ **Get date from** ให้เลือก **User profile** เพื่อใช้ Tag หรือ **Event** เพื่อใช้แอตทริบิวต์ของ Event หรือค่าจากการตอบกลับของ Webhook
3. หากคุณเลือก **User profile** ให้เลือก Tag ที่มีวันที่
4. หากคุณเลือก **Event** ให้เลือก Event และแอตทริบิวต์ที่มีวันที่ สำหรับค่าที่แมปจาก Webhook โปรดดูที่ [ใช้วันที่จากการตอบกลับของ Webhook](#use-a-date-from-a-webhook-response) ด้านล่าง
5. ตั้งค่าออฟเซ็ต: **Before**, **After** หรือ **On** วันที่ จากนั้นป้อนจำนวนวัน

<img src="/journey-elements-README-36.webp" alt="การหน่วงเวลาที่อิงตามข้อมูลผู้ใช้หรือ Event ทำให้สามารถจัดตารางเวลาแบบไดนามิกและเป็นส่วนตัวภายใน Customer Journey ได้"/>


<Aside type="note" title="ข้อกำหนดรูปแบบวันที่">

* **Tags:** ใช้ Tag ประเภท [Date](/th/product/audience-data-and-segmentation/user-data-tags/tags#types-of-tags) และ [ตั้งค่า](/th/developer/api-reference/device-api#settags) ในรูปแบบ `2006-01-02T15:04:05` (ใน **UTC**)
* **Events:** [สร้าง Event](/th/product/audience-data-and-segmentation/events#1-create-events-in-pushwoosh-control-panel) [เพิ่มแอตทริบิวต์ Date](/th/product/audience-data-and-segmentation/events#2-set-attributes) และส่งคำขอ [/postEvent](/th/developer/api-reference/user-centric-api#postevent) พร้อมวันที่ในรูปแบบ `2006-01-02 15:04:05`

</Aside>


<Aside type="caution">
หาก **วันที่หรือเวลาได้ผ่านไปแล้ว** เมื่อผู้ใช้มาถึงองค์ประกอบนี้ พวกเขาจะออกจาก Journey
</Aside>

#### ใช้วันที่จากการตอบกลับของ Webhook

หากองค์ประกอบ [**Webhook**](/th/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) ก่อนหน้านี้ใน Journey ได้กำหนดค่า **Response mapping** ไว้ แอตทริบิวต์ที่แมปไว้จะพร้อมใช้งานภายใต้ **Event**

1. ใน **Time delay option** ให้เลือก **Based on user/event data**
2. ภายใต้ **Get date from** ให้เลือก **Event**
3. ใน **Event** ให้เลือกขั้นตอน Webhook ตามชื่อที่คุณตั้งไว้ (ตัวอย่างเช่น `Get appointment details`)
4. ใน **Event value** ให้เลือกแอตทริบิวต์ที่แมปซึ่งเก็บวันที่ (ตัวอย่างเช่น `visit_date`)
5. ตั้งค่าออฟเซ็ต (ตัวอย่างเช่น **Before** `2` **Days**)

<img src="/journey-elements-time-delay-1.webp" alt="การหน่วงเวลาที่ตั้งค่าเป็น Event Webhook พร้อมด้วย visit_date และออฟเซ็ต 2 วันก่อนหน้า" />

ค่าต้องเป็นไปตามกฎรูปแบบวันที่เดียวกับ Tags และ Events (ดู **ข้อกำหนดรูปแบบวันที่** ด้านบน)

<Aside type="caution">
หากค่าที่แมปหายไปหรือไม่ใช่วันที่ที่ถูกต้อง ผู้ใช้จะออกจาก Journey พร้อมข้อผิดพลาดในขั้นตอนนี้ ให้ทำการ [**ทดสอบ Webhook**](/th/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) ก่อนเปิดใช้งานเพื่อยืนยันการแมปของคุณ
</Aside>


### แยกสาขาเมื่อวันที่อยู่ในอดีตหรือว่างเปล่า

เพื่อให้ผู้ใช้ดำเนินการต่อเมื่อไม่ตรงตามเงื่อนไขการหน่วงเวลา ให้เปิดใช้งาน **Split to branches if the date's in the past or date is empty** โฟลว์จะแยกออกเป็น **In the future** และ **In the past** ใช้สาขา **In the past** สำหรับผู้ใช้ที่ค่า Tag, แอตทริบิวต์ของ Event หรือวันที่ที่แมปจาก Webhook ไม่ตรงกับการหน่วงเวลา คุณสามารถเพิ่มองค์ประกอบอื่นๆ ในสาขานั้นได้ (ตัวอย่างเช่น **Time Delay** อื่น, **Condition split**, **Wait for Trigger** หรือข้อความ)

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

### เมื่อวันที่นัดหมายเปลี่ยนแปลงกลาง Journey

หากวันที่ใน Tag หรือแอตทริบิวต์ของ Event เปลี่ยนแปลงในขณะที่ผู้ใช้อยู่ใน Journey แล้ว การตั้งค่า **Time Delay** จะยังคงเหมือนเดิมกับตอนที่ผู้ใช้มาถึงองค์ประกอบ

พิจารณาสร้าง Journey หลายๆ อันเมื่อผู้ใช้มักจะเปลี่ยนกำหนดการนัดหมาย การจัดส่ง หรือ Event ที่คล้ายกัน

ตัวอย่างเช่น เริ่ม Journey ด้วย Event `AppointmentCreated` ที่มีแอตทริบิวต์ DateTime (Journey การแจ้งเตือน) ตั้งค่าการแจ้งเตือนแบบพุช 2 วันก่อนการเข้าพบโดยใช้ **Based on user/event data** เพื่อจัดการกับการเปลี่ยนกำหนดการ:

1. สร้าง Event `AppointmentChanged`
2. ใน Journey การแจ้งเตือน ให้ตั้งค่า `AppointmentChanged` เป็นเป้าหมาย Conversion เพื่อให้ผู้ใช้ที่เปลี่ยนกำหนดการออกจาก Journey
3. สร้าง Journey ใหม่ที่เริ่มต้นด้วย `AppointmentChanged` เพื่อเตือนผู้ใช้ที่อัปเดตวันและเวลาการเข้าพบของตน