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

ดูตัวอย่างที่จะแสดงให้เห็นว่าข้อความแบบรายการและปุ่มตอบกลับจะผสานรวมอยู่ในขั้นตอนเดียวกันได้อย่างไร
ข้อความแบบอินเทอร์แอคทีฟจะมีรูปแบบที่เรียบง่ายและสอดคล้องกันมากกว่าเมื่อเทียบกับรายการแบบข้อความ เพื่อช่วยให้ผู้คนสามารถค้นหาและเลือกสิ่งที่ตนต้องการจากธุรกิจได้ ในระหว่างการทดสอบ ผู้คนจะมีระดับความเข้าใจที่สูงกว่า เมื่อโต้ตอบกับฟีเจอร์เหล่านี้
ในระหว่างการทดสอบ แชทบอทที่ใช้ฟีเจอร์การส่งข้อความแบบอินเทอร์แอคทีฟมีอัตราการตอบกลับและคอนเวอร์ชั่นที่สูงกว่าอย่างมากเมื่อเทียบกับแบบข้อความ
มีการแสดงแบบไดนามิกและเรียลไทม์ และสามารถปรับให้เหมาะกับลูกค้าหรือสถานการณ์แต่ละแบบได้ ตัวอย่างเช่น คุณสามารถแสดงข้อความแบบรายการเพื่อบอกช่วงเวลาที่ว่างสำหรับจองการนัดหมาย หรือใช้ปุ่มตอบกลับเพื่อแสดงที่อยู่ในการจัดส่งก่อนหน้านี้ก็ได้
ข้อความแบบอินเทอร์แอคทีฟไม่ต้องใช้เทมเพลตหรือขออนุมัติล่วงหน้า
ข้อความแบบรายการเหมาะอย่างยิ่งในการนำเสนอตัวเลือกหลายๆ ตัวเลือก เช่น
ปุ่มตอบกลับเหมาะอย่างยิ่งสำหรับการตอบกลับอย่างรวดเร็วโดยใช้ชุดตัวเลือกที่มีอยู่อย่างจำกัด เช่น
ปุ่มตอบกลับจะเป็นประโยชน์โดยเฉพาะอย่างยิ่งในกรณีการใช้งานแบบ "สำหรับแต่ละบุคคลโดยเฉพาะ" ซึ่งการตอบกลับแบบทั่วๆ ไปอาจไม่เพียงพอ
ข้อความแบบขั้นตอนเหมาะที่สุดสำหรับการสื่อสารแบบมีโครงสร้างผ่านหน้าจอเดียวหรือหลายหน้าจอ เช่น
ข้อความแบบขั้นตอนช่วยให้ธุรกิจต่างๆ สามารถนำเสนอประสบการณ์ผู้ใช้ที่สมบูรณ์แบบและน่าดึงดูดยิ่งขึ้น ซึ่งสามารถช่วยให้ลูกค้าทำสิ่งต่างๆ ได้เร็วขึ้นบน WhatsApp โดยไม่จำเป็นต้องเปลี่ยนไปใช้แอพอื่นหรือเข้าเว็บไซต์
ที่ระดับ API ข้อความแบบอินเทอร์แอคทีฟจะมีการตั้งค่าโดยการระบุ type ของข้อความเป็น interactive และเพิ่มอ็อบเจ็กต์ interactive ทั้งนี้ โดยทั่วไปแล้ว ข้อความเหล่านี้ประกอบไปด้วย 4 ส่วนหลักๆ ได้แก่ header, body, footer และ action
{
"recipient_type": "individual",
"to" : "whatsapp-id",
"type": "interactive"
"interactive":{
"type": "list" | "button" | ...,
"header": {},
"body": {},
"footer": {},
"action": {}
}
}

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีส่งข้อความเหล่านี้ที่ด้านล่าง
ก่อนจะส่งแต่ละข้อความ คุณต้องเรียกดู WhatsApp ID ของผู้รับด้วยการเรียกใช้โหนด /contacts
เราแนะนำให้คุณตั้งค่า Webhooks เพื่อรับการแจ้งเตือนเมื่อมีข้อความเข้าและสถานะข้อความ เมื่อใช้วิธีนี้ คุณจะสามารถติดตามได้ว่าข้อความถูกส่งหรือไม่ รวมถึงติดตามคำตอบจากผู้ใช้ได้อีกด้วย โปรดดูข้อมูลเพิ่มเติมที่ Webhooks
interactive ของคุณหากต้องการส่งข้อความแบบรายการ คุณจะต้องรวมอ็อบเจ็กต์ interactive ที่มีประเภทเป็น list พร้อมส่วนประกอบดังต่อไปนี้
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
| ระบุหรือไม่ก็ได้ หากคุณตัดสินใจที่จะใส่อ็อบเจ็กต์นี้เอาไว้ด้วย คุณจะต้องตั้งค่า type ของ header เป็น text และเพิ่มช่อง text ที่มีเนื้อหาตามที่ต้องการ สูงสุด 60 อักขระ |
| จำเป็นต้องระบุ เนื้อความของข้อความ สูงสุด 1,024 อักขระ |
| ระบุหรือไม่ก็ได้ ส่วนท้ายของข้อความ |
| จำเป็นต้องระบุ ในส่วน action คุณจะต้องซ้อนทับส่วนประกอบต่างๆ ดังนี้
ในส่วน |
เมื่อถึงขั้นตอนสุดท้าย อ็อบเจ็กต์ interactive ของคุณควรมีลักษณะดังนี้
"interactive":{
"type": "list",
"header": {
"type": "text",
"text": "your-header-content"
},
"body": {
"text": "your-text-message-content"
},
"footer": {
"text": "your-footer-content"
},
"action": {
"button": "cta-button-content",
"sections":[
{
"title":"your-section-title-content",
"rows": [
{
"id":"unique-row-identifier",
"title": "row-title-content",
"description": "row-description-content",
}
]
},
{
"title":"your-section-title-content",
"rows": [
{
"id":"unique-row-identifier",
"title": "row-title-content",
"description": "row-description-content",
}
]
},
...
]
}
}หากต้องการส่งข้อความแบบปุ่มตอบกลับ คุณจะต้องรวมอ็อบเจ็กต์ interactive ที่มีประเภทเป็น button พร้อมส่วนประกอบดังต่อไปนี้
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
| ระบุหรือไม่ก็ได้ สำหรับข้อความแบบอินเทอร์แอคทีฟ เมื่อเลือก
ตัวอย่าง "header": {
"type": "text" | "image" | "video" | "document",
"text": "your text"
# OR
"document": {
"id": "your-media-id",
"filename": "some-file-name"
}
# OR
"document": {
"link": "the-provider-name/protocol://the-url",
"provider": {
"name": "provider-name",
},
"filename": "some-file-name"
},
# OR
"video": {
"id": "your-media-id"
}
# OR
"video": {
"link": "the-provider-name/protocol://the-url",
"provider": {
"name": "provider-name"
}
}
# OR
"image": {
"id": "your-media-id"
}
# OR
"image": {
"link": "http(s)://the-url",
"provider": {
"name": "provider-name"
}
}
}
|
| จำเป็นต้องระบุ |
| ระบุหรือไม่ก็ได้ |
| จำเป็นต้องระบุ คุณจะต้องเพิ่ม คุณจะตั้งค่า ID โดยขึ้นต้นหรือลงท้ายด้วยการเว้นวรรคไม่ได้ ตัวอย่าง "action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "unique-postback-id",
"title": "First Button’s Title"
}
},
{
"type": "reply",
"reply": {
"id": "unique-postback-id",
"title": "Second Button’s Title"
}
}
]
}
|
เมื่อถึงขั้นตอนสุดท้าย อ็อบเจ็กต์ interactive ควรมีลักษณะดังนี้
"interactive": {
"type": "button",
"header": { # optional
"type": "text" | "image" | "video" | "document",
"text": "your text"
# OR
"document": {
"id": "your-media-id",
"filename": "some-file-name"
}
# OR
"document": {
"link": "the-provider-name/protocol://the-url",
"provider": {
"name": "provider-name",
},
"filename": "some-file-name"
},
# OR
"video": {
"id": "your-media-id"
}
# OR
"video": {
"link": "the-provider-name/protocol://the-url",
"provider": {
"name": "provider-name"
}
}
# OR
"image": {
"id": "your-media-id"
}
# OR
"image": {
"link": "http(s)://the-url",
"provider": {
"name": "provider-name"
}
}
}, # end header
"body": {
"text": "your-text-body-content"
},
"footer": { # optional
"text": "your-text-footer-content"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "unique-postback-id",
"title": "First Button’s Title"
}
},
{
"type": "reply",
"reply": {
"id": "unique-postback-id",
"title": "Second Button’s Title"
}
}
]
} # end action
} # end interactive
ข้อความขอตำแหน่งที่ตั้งจะมีข้อความสำหรับเนื้อความและปุ่มส่งตำแหน่งที่ตั้งให้ผู้ใช้สามารถแตะได้ เมื่อแตะที่ปุ่มนี้ ระบบจะแสดงหน้าจอแชร์ตำแหน่งที่ตั้งขึ้นมา ซึ่งผู้ใช้สามารถใช้แชร์ตำแหน่งที่ตั้งของตนได้

หากต้องการส่งข้อความขอตำแหน่งที่ตั้ง ก่อนอื่น ให้รวมอ็อบเจ็กต์ interactive ที่มีข้อความที่คุณต้องการให้แสดงในข้อความเอาไว้ด้วยดังนี้
{
"type": "location_request_message",
"body": {
"type": "text",
"text": "<TEXT>"
},
"action": {
"name": "send_location"
}
}
| คุณสมบัติ | คำอธิบาย |
|---|---|
| ตั้งค่าเป็น |
| ตั้งค่าเป็น |
| ตั้งค่าเป็นข้อความที่คุณต้องการให้แสดงอยู่เหนือปุ่มส่งตำแหน่งที่ตั้ง |
| ตั้งค่าเป็น |
ข้อความแบบขั้นตอนมีปุ่มกระตุ้นให้ดำเนินการที่ผู้ใช้สามารถแตะได้ การแตะปุ่มจะแสดงขั้นตอนแบบกำหนดเอง
หากต้องการส่งข้อความแบบขั้นตอน คุณจะต้องรวมอ็อบเจ็กต์ interactive ที่มีประเภทเป็น flow ดูรายละเอียดทั้งหมดได้ที่นี่
เมื่อคุณมีอ็อบเจ็กต์ interactive แล้ว ให้นำพารามิเตอร์อื่นๆ ที่ประกอบขึ้นเป็นข้อความ ได้แก่ recipient_type, to และ type มาต่อท้าย โปรดอย่าลืมตั้งค่า type เป็น interactive
{
"recipient_type": "individual",
"to" : "whatsapp-id", // WhatsApp ID of your recipient
"type": "interactive",
"interactive":{
// Your interactive object
}
}โปรดดูพารามิเตอร์ทั่วไปที่ใช้กับข้อความทุกประเภทที่นี่
POST ไปยัง /messagesเรียกใช้ POST ไปยังตำแหน่งข้อมูล /messages โดยมีอ็อบเจ็กต์ JSON ที่คุณรวมไว้ในขั้นตอนที่ 1 และ 2 หากส่งข้อความสำเร็จ คุณจะได้รับการตอบกลับต่อไปนี้
{
"messages": [{
"id": "{message-id}"
}]
}หากคุณตั้งค่า webhooks ของคุณ ให้ตรวจดูการเปลี่ยนแปลงต่างๆ ของสถานะข้อความ รวมถึงการตอบกลับจากผู้ใช้
Webhooks ของผู้ใช้ที่ตอบกลับข้อความแบบอินเทอร์แอคทีฟจะมีส่วนประกอบใหม่รวมอยู่ด้วย องค์ประกอบนี้เรียกว่า interactive ซึ่งจะมีข้อมูลเกี่ยวกับตัวเลือกของผู้ใช้อยู่ โปรดดูข้อมูลเพิ่มเติมที่ Webhooks, ส่วนประกอบ
ตัวอย่างเช่น ต่อไปนี้เป็นคำขอ Webhook ที่อธิบายถึงผู้ใช้ที่แชร์ตำแหน่งที่ตั้งของตน
{
"object": "whatsapp_business_account",
"entry": [
{
"id": "12345",
"changes": [
{
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "12345",
"phone_number_id": "12345"
},
"contacts": [
{
"profile": {
"name": "John Doe"
},
"wa_id": "12345"
}
],
"messages": [
{
"context": {
"from": "12345",
"id": "test-id"
},
"from": "123450",
"id": "test-id",
"timestamp": "16632",
"location": {
"address": "1071 5th Ave, New York, NY 10128", #Optional
"latitude": 37.421996751527,
"longitude": -122.08407156636,
"name": "Solomon R. Guggenheim Museum" #Optional
},
"type": "location"
}
]
},
"field": "messages"
}
]
}
]
}
ส่วนประกอบ location ภายในเพย์โหลดจะมีละติจูดและลองจิจูดของผู้ใช้อยู่ โปรดทราบว่า address และ name นั้นจะระบุหรือไม่ก็ได้สำหรับผู้ใช้ และอาจไม่ได้ถูกรวมเอาไว้ด้วย
"location": {
"address": "1071 5th Ave, New York, NY 10128", #Optional
"latitude": 40.782910059774,
"longitude": -73.959075808525,
"name": "Solomon R. Guggenheim Museum" #Optional
}