หน้านี้อธิบายวิธีที่แอป Google Chat สามารถเปิดกล่องโต้ตอบ เพื่อแสดงอินเทอร์เฟซผู้ใช้ (UI) และตอบสนองต่อผู้ใช้
กล่องโต้ตอบคืออินเทอร์เฟซแบบการ์ดในหน้าต่าง ที่เปิดจากพื้นที่ใน Chat หรือข้อความ กล่องโต้ตอบและเนื้อหาของกล่องโต้ตอบจะแสดงต่อผู้ใช้ที่เปิดกล่องโต้ตอบเท่านั้น
แอป Chat สามารถใช้กล่องโต้ตอบเพื่อขอและรวบรวมข้อมูลจากผู้ใช้ Chat รวมถึงแบบฟอร์มหลายขั้นตอน ดูรายละเอียดเพิ่มเติม เกี่ยวกับการสร้างอินพุตแบบฟอร์มได้ที่ รวบรวมและประมวลผลข้อมูลจากผู้ใช้
ข้อกำหนดเบื้องต้น
HTTP
แอป Google Chat ที่รับและตอบสนองต่อการโต้ตอบของผู้ใช้ หากต้องการสร้าง ให้ทำตามการเริ่มต้นใช้งาน HTTP
Apps Script
แอป Google Chat ที่รับและตอบสนองต่อการโต้ตอบของผู้ใช้ หากต้องการสร้าง ให้ทำตามการเริ่มต้นใช้งาน Apps Script อย่างรวดเร็ว
เปิดกล่องโต้ตอบ
ส่วนนี้จะอธิบายวิธีตอบกลับและตั้งค่ากล่องโต้ตอบโดยทำดังนี้
- ทริกเกอร์คำขอ Dialog จากการโต้ตอบของผู้ใช้
- จัดการคำขอโดยกลับไปเปิดกล่องโต้ตอบ
- หลังจากที่ผู้ใช้ส่งข้อมูลแล้ว ให้ประมวลผลการส่งโดยปิดกล่องโต้ตอบหรือแสดงกล่องโต้ตอบอื่น
ทริกเกอร์คำขอ Dialog
แอป Chat จะเปิดกล่องโต้ตอบได้ก็ต่อเมื่อตอบสนองต่อการโต้ตอบของผู้ใช้เท่านั้น เช่น คำสั่งหรือการคลิกปุ่มจากข้อความในการ์ด
หากต้องการตอบกลับผู้ใช้ด้วยกล่องโต้ตอบ แอป Chat ต้อง สร้างการโต้ตอบที่ทริกเกอร์คำขอกล่องโต้ตอบ เช่น การโต้ตอบต่อไปนี้
- ตอบกลับคำสั่ง หากต้องการทริกเกอร์คำขอจากคำสั่ง คุณต้องเลือกช่องทำเครื่องหมายเปิดกล่องโต้ตอบเมื่อกำหนดค่าคำสั่ง
- ตอบสนองต่อการคลิกปุ่มในข้อความ
ไม่ว่าจะอยู่ในส่วนของการ์ดหรือที่ด้านล่างของข้อความ หากต้องการทริกเกอร์คำขอจากปุ่มในข้อความ ให้กำหนดค่าการดำเนินการของ
onClickปุ่มโดยตั้งค่าinteractionเป็นOPEN_DIALOG - ตอบสนองต่อการคลิกปุ่มในหน้าแรกของแอป Chat ดูข้อมูลเกี่ยวกับการเปิดกล่องโต้ตอบจากหน้าแรกได้ที่สร้างหน้าแรกสำหรับแอป Google Chat
/addContactคำสั่งเครื่องหมายทับ ข้อความยังมีปุ่มที่ผู้ใช้คลิกเพื่อเรียกใช้คำสั่งได้ด้วย
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีทริกเกอร์คำขอ Dialog จากปุ่มใน
ข้อความการ์ด หากต้องการเปิดกล่องโต้ตอบ ให้ตั้งค่าฟิลด์
onClick.action.interaction
ของปุ่มเป็น OPEN_DIALOG
Node.js
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Python
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Java
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
เปิดกล่องโต้ตอบเริ่มต้น
เมื่อผู้ใช้ทริกเกอร์คำขอ Dialog แอป Chat ของคุณจะได้รับออบเจ็กต์เหตุการณ์ที่มีเพย์โหลดซึ่งระบุออบเจ็กต์ dialogEventType เป็น REQUEST_DIALOG
หากต้องการเปิดกล่องโต้ตอบ แอป Chat จะตอบกลับคำขอได้โดยการแสดงออบเจ็กต์ RenderActions
พร้อมการนำทาง pushCard เพื่อแสดงการ์ด การ์ดควรมีองค์ประกอบของอินเทอร์เฟซผู้ใช้ (UI) รวมถึง
sections[]
วิดเจ็ตอย่างน้อย 1 รายการ หากต้องการรวบรวมข้อมูลจากผู้ใช้ คุณสามารถระบุวิดเจ็ตอินพุตของแบบฟอร์ม
และวิดเจ็ตปุ่มได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบอินพุตของแบบฟอร์มได้ที่
รวบรวมและประมวลผลข้อมูลจากผู้ใช้
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่แอป Chat ส่งคืน การตอบกลับที่เปิดกล่องโต้ตอบ
Node.js
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Python
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Java
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
จัดการการส่งกล่องโต้ตอบ
เมื่อผู้ใช้คลิกปุ่มที่ส่งกล่องโต้ตอบ แอป Chat ของคุณจะได้รับออบเจ็กต์เหตุการณ์ที่มีออบเจ็กต์
buttonClickedPayload
ในเพย์โหลด ระบบจะตั้งค่า dialogEventType เป็น SUBMIT_DIALOG หากต้องการทำความเข้าใจวิธีรวบรวมและประมวลผลข้อมูลในกล่องโต้ตอบ โปรดดูรวบรวมและประมวลผลข้อมูลจากผู้ใช้ Google Chat
แอป Chat ต้องตอบกลับออบเจ็กต์เหตุการณ์โดยทำอย่างใดอย่างหนึ่งต่อไปนี้
- กลับไปที่กล่องโต้ตอบอื่นเพื่อป้อนข้อมูลในบัตรหรือแบบฟอร์มอื่น
- ปิดกล่องโต้ตอบหลังจากตรวจสอบข้อมูลที่ผู้ใช้ส่งแล้ว และส่งข้อความยืนยัน (ไม่บังคับ)
ไม่บังคับ: กลับไปที่กล่องโต้ตอบอื่น
หลังจากที่ผู้ใช้ส่งกล่องโต้ตอบเริ่มต้นแล้ว แอป Chat จะ แสดงกล่องโต้ตอบเพิ่มเติมอย่างน้อย 1 กล่องเพื่อช่วยให้ผู้ใช้ตรวจสอบข้อมูลก่อน ส่ง กรอกแบบฟอร์มแบบหลายขั้นตอน หรือสร้างเนื้อหาแบบฟอร์มแบบไดนามิก
หากต้องการประมวลผลข้อมูลที่ผู้ใช้ป้อน แอป Chat
จะจัดการข้อมูลในออบเจ็กต์ commonEventObject.formInputs
ของเหตุการณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการดึงค่าจากวิดเจ็ตอินพุตได้ที่รวบรวมและประมวลผลข้อมูลจากผู้ใช้
หากต้องการติดตามข้อมูลใดๆ ที่ผู้ใช้ป้อนจากกล่องโต้ตอบเริ่มต้น คุณต้องเพิ่ม พารามิเตอร์ลงในปุ่มที่เปิดกล่องโต้ตอบถัดไป ดูรายละเอียดได้ที่หัวข้อโอนข้อมูลไปยังบัตรอื่น
ในตัวอย่างนี้ แอป Chat จะเปิดกล่องโต้ตอบเริ่มต้น ซึ่งนำไปสู่กล่องโต้ตอบที่ 2 เพื่อยืนยันก่อนส่ง
Node.js
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Python
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Java
แทนที่ FUNCTION_URL ด้วยปลายทาง HTTP ที่จัดการ
การคลิกปุ่ม
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
ปิดกล่องโต้ตอบ
เมื่อผู้ใช้คลิกปุ่มส่งในกล่องโต้ตอบ แอป Chat จะดำเนินการที่เชื่อมโยงไว้และระบุออบเจ็กต์เหตุการณ์โดยตั้งค่า buttonClickedPayload เป็นค่าต่อไปนี้
isDialogEventคือtruedialogEventTypeคือSUBMIT_DIALOG
แอปใน Chat ควรแสดงออบเจ็กต์
RenderActions
โดยตั้งค่า
endNavigation
เป็น CLOSE_DIALOG (endNavigation: "CLOSE_DIALOG")
ไม่บังคับ: แสดงการแจ้งเตือนชั่วคราว
เมื่อปิดกล่องโต้ตอบ คุณยังแสดงการแจ้งเตือนแบบข้อความชั่วคราว ต่อผู้ใช้ที่โต้ตอบกับแอปได้ด้วย
หากต้องการแสดงการแจ้งเตือน ให้ส่งคืนออบเจ็กต์
RenderActions
ที่มีการตั้งค่าฟิลด์ notification
ตัวอย่างต่อไปนี้จะปิดกล่องโต้ตอบพร้อมการแจ้งเตือนแบบข้อความ
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
ดูรายละเอียดเกี่ยวกับการส่งพารามิเตอร์ระหว่างกล่องโต้ตอบได้ที่ โอนข้อมูลไปยังการ์ดอื่น
ไม่บังคับ: ส่งข้อความยืนยันใน Chat
เมื่อปิดกล่องโต้ตอบแล้ว คุณยังส่งข้อความแชทใหม่ หรืออัปเดตข้อความที่มีอยู่ได้ด้วย
หากต้องการส่งข้อความใหม่ ให้ส่งออบเจ็กต์
DataActions
ที่มีฟิลด์
CreateMessageAction ตั้งค่าเป็นข้อความใหม่
ตัวอย่างต่อไปนี้จะปิดกล่องโต้ตอบโดยการส่งข้อความใหม่
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
หากต้องการอัปเดตข้อความหลังจากที่ผู้ใช้ส่งกล่องโต้ตอบ ให้ส่งคืนออบเจ็กต์ DataActions
ที่มีการดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
UpdateMessageAction: อัปเดตข้อความ ที่ส่งโดยแอป Chat เช่น ข้อความที่ ผู้ใช้ขอให้แสดงกล่องโต้ตอบUpdateInlinePreviewAction: อัปเดตการ์ดจากตัวอย่างลิงก์
แก้ปัญหา
เมื่อแอป Google Chat หรือการ์ดแสดงข้อผิดพลาด อินเทอร์เฟซ Chat จะแสดงข้อความว่า "เกิดข้อผิดพลาด" หรือ "ดำเนินการตามคำขอของคุณไม่ได้" บางครั้ง UI ของ Chat อาจไม่แสดงข้อความแสดงข้อผิดพลาด แต่แอป Chat หรือ การ์ดอาจให้ผลลัพธ์ที่ไม่คาดคิด เช่น ข้อความในการ์ดอาจไม่ ปรากฏ
แม้ว่าข้อความแสดงข้อผิดพลาดอาจไม่ปรากฏใน UI ของ Chat แต่ข้อความแสดงข้อผิดพลาดและข้อมูลบันทึกที่อธิบายไว้จะช่วยคุณแก้ไขข้อผิดพลาดได้เมื่อเปิดการบันทึกข้อผิดพลาดสำหรับแอป Chat หากต้องการความช่วยเหลือในการดู การแก้ไขข้อบกพร่อง และการแก้ไขข้อผิดพลาด โปรดดู แก้ปัญหาและแก้ไขข้อผิดพลาดของ Google Chat
หัวข้อที่เกี่ยวข้อง
- ดูตัวอย่าง Contact Manager ซึ่งเป็นแอป Chat ที่ใช้กล่องโต้ตอบเพื่อรวบรวม ข้อมูลติดต่อ
- เปิดกล่องโต้ตอบจากหน้าแรกของแอป Google Chat
- ตอบกลับคำสั่งของแอป Google Chat
- ประมวลผลข้อมูลที่ผู้ใช้ป้อน
แอปแชทที่ไม่ได้เป็นส่วนเสริม: เปิดกล่องโต้ตอบแบบอินเทอร์แอกทีฟ
เอกสารต่อไปนี้ใช้กับแอป Chat ที่ไม่ใช่ส่วนเสริมของ Google Workspace หากต้องการย้ายข้อมูลแอป Chat ที่ไม่ใช่ส่วนเสริม โปรดดูหัวข้อแปลงแอป Google Chat เป็นส่วนเสริม Google Workspace
ทริกเกอร์คำขอ Dialog
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่แอป Chat ที่ไม่ใช่ส่วนเสริมจะทริกเกอร์คำขอ Dialog จากปุ่มในข้อความการ์ด หากต้องการเปิดกล่องโต้ตอบ
ให้ตั้งค่าฟิลด์
button.interaction
เป็น OPEN_DIALOG
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
เปิดกล่องโต้ตอบเริ่มต้น
เมื่อผู้ใช้ทริกเกอร์คำขอของกล่องโต้ตอบ แอป Chat ที่
ไม่ใช่ส่วนเสริม
จะได้รับเหตุการณ์การโต้ตอบ ซึ่งแสดงเป็นประเภท
event ใน
Chat API หากการโต้ตอบทริกเกอร์คำขอของกล่องโต้ตอบ ระบบจะตั้งค่าฟิลด์ dialogEventType ของเหตุการณ์เป็น REQUEST_DIALOG
หากต้องการเปิดกล่องโต้ตอบ แอป Chat ที่ไม่ใช่ส่วนเสริมจะตอบกลับคำขอได้โดยการแสดงผลออบเจ็กต์ actionResponse
ที่มี type: "DIALOG" และออบเจ็กต์ Message
หากต้องการระบุเนื้อหาของกล่องโต้ตอบ ให้รวมออบเจ็กต์ต่อไปนี้
- ออบเจ็กต์
actionResponseโดยตั้งค่าtypeเป็นDIALOG - ออบเจ็กต์
dialogActionฟิลด์bodyมีองค์ประกอบอินเทอร์เฟซผู้ใช้ (UI) ที่จะแสดงในการ์ด รวมถึงวิดเจ็ตอย่างน้อย 1 รายการsectionsหากต้องการรวบรวมข้อมูลจากผู้ใช้ คุณสามารถระบุวิดเจ็ตอินพุตแบบฟอร์มและวิดเจ็ต ปุ่ม
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่แอป Chat ที่ไม่ใช่ส่วนเสริม ส่งคืนการตอบกลับที่เปิดกล่องโต้ตอบ
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
จัดการการส่งกล่องโต้ตอบ
เมื่อผู้ใช้คลิกปุ่มที่ส่งกล่องโต้ตอบ
แอปแชทที่ไม่ใช่ส่วนเสริม
จะได้รับ
เหตุการณ์การโต้ตอบ CARD_CLICKED
ซึ่งมี dialogEventType
เป็น SUBMIT_DIALOG
ไม่บังคับ: กลับไปที่กล่องโต้ตอบอื่น
หากต้องการประมวลผลข้อมูลที่ผู้ใช้ป้อนในแอป Chat ที่ไม่ใช่ส่วนเสริม แอป Chat จะใช้ออบเจ็กต์
event.common.formInputs
ในตัวอย่างนี้ แอปแชทที่ไม่ใช่ ส่วนเสริมจะเปิด กล่องโต้ตอบเริ่มต้นซึ่งนำไปสู่กล่องโต้ตอบที่ 2 เพื่อยืนยันก่อนส่ง
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
ปิดกล่องโต้ตอบ
เมื่อผู้ใช้คลิกปุ่มในกล่องโต้ตอบ แอป Chat ที่ไม่ใช่ส่วนเสริมจะดำเนินการที่เชื่อมโยงและ ระบุออบเจ็กต์เหตุการณ์พร้อมข้อมูลต่อไปนี้
eventTypeคือCARD_CLICKEDdialogEventTypeคือSUBMIT_DIALOG
แอป Chat ที่ไม่ใช่ส่วนเสริมควรแสดงออบเจ็กต์
ActionResponse
โดยตั้งค่า type เป็น DIALOG และระบุค่า dialogAction หาก
การดำเนินการไม่ล้มเหลว dialogAction.actionStatus ควรเป็น OK ดังใน
ตัวอย่างต่อไปนี้
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
ไม่บังคับ: แสดงการแจ้งเตือนชั่วคราว
แอปแชทที่ไม่ใช่
ส่วนเสริมสามารถตอบกลับด้วยการแจ้งเตือน
ความสำเร็จหรือข้อผิดพลาดได้โดยการส่งคืน
ActionResponse
ที่มีการตั้งค่า actionStatus
ตัวอย่างต่อไปนี้จะตรวจสอบว่าพารามิเตอร์ถูกต้องหรือไม่ และปิดกล่องโต้ตอบ พร้อมการแจ้งเตือนแบบข้อความเมื่อไม่ถูกต้อง
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
ไม่บังคับ: ส่งข้อความยืนยันใน Chat
หากต้องการส่งข้อความใหม่เมื่อปิดกล่องโต้ตอบในแอป
Chat ที่ไม่ใช่ส่วนเสริม ให้ส่งออบเจ็กต์
ActionResponse
ที่มี type: "NEW_MESSAGE" ตัวอย่างต่อไปนี้ปิด
กล่องโต้ตอบด้วยข้อความยืนยัน
Node.js
Python
Java
Apps Script
ตัวอย่างนี้จะส่งข้อความการ์ดโดยการส่งคืน JSON ของการ์ด คุณยังใช้บริการการ์ด Apps Script ได้ด้วย
หากต้องการอัปเดตข้อความ ให้ส่งคืนออบเจ็กต์ actionResponse ที่มีข้อความที่อัปเดตแล้ว และตั้งค่า type เป็นค่าใดค่าหนึ่งต่อไปนี้
UPDATE_MESSAGE: อัปเดตข้อความที่ทริกเกอร์คำขอของกล่องโต้ตอบUPDATE_USER_MESSAGE_CARDS: อัปเดตการ์ดจากตัวอย่างลิงก์