เรากำลังเลิกใช้งาน 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 }