คู่มือนี้อธิบายวิธีที่แอป Google Chat สามารถรวบรวมและประมวลผลข้อมูล จากผู้ใช้โดยการสร้างอินพุตแบบฟอร์มในอินเทอร์เฟซแบบการ์ด


แอปใน Chat จะขอข้อมูลจากผู้ใช้เพื่อดำเนินการในหรือนอก Chat รวมถึงในลักษณะต่อไปนี้
- กำหนดการตั้งค่า เช่น เพื่อให้ผู้ใช้ปรับแต่งการตั้งค่าการแจ้งเตือน หรือกำหนดค่าและเพิ่มแอป Chat ลงในพื้นที่ทำงานอย่างน้อย 1 แห่ง
- สร้างหรืออัปเดตข้อมูลในแอปพลิเคชันอื่นๆ ของ Google Workspace เช่น อนุญาตให้ผู้ใช้สร้างกิจกรรมใน Google ปฏิทิน
- อนุญาตให้ผู้ใช้เข้าถึงและอัปเดตทรัพยากรในแอปหรือบริการบนเว็บอื่นๆ ตัวอย่างเช่น แอป Chat สามารถช่วยผู้ใช้อัปเดต สถานะของคำขอแจ้งปัญหาได้โดยตรงจากพื้นที่ทำงานใน Chat
ข้อกำหนดเบื้องต้น
HTTP
ส่วนเสริมของ Google Workspace ที่ขยายการทำงานของ Google Chat หากต้องการสร้าง ให้ทำตามคู่มือเริ่มต้นฉบับย่อของ HTTP
Apps Script
ส่วนเสริมของ Google Workspace ที่ขยายการทำงานของ Google Chat หากต้องการสร้าง ให้ทำตามการเริ่มต้นใช้งาน Apps Script อย่างรวดเร็ว
สร้างแบบฟอร์มโดยใช้การ์ด
แอปใน Chat จะออกแบบแบบฟอร์มและอินพุต และสร้างเป็นการ์ดเพื่อรวบรวมข้อมูล หากต้องการแสดงการ์ดต่อผู้ใช้ แอป Chat สามารถใช้อินเทอร์เฟซ Chat ต่อไปนี้
- ข้อความแชทที่มีการ์ดอย่างน้อย 1 ใบ
- กล่องโต้ตอบ ซึ่งเป็นการ์ดที่เปิดขึ้น ในหน้าต่างใหม่จากข้อความและหน้าแรก
แอปแชทสามารถสร้างการ์ดโดยใช้วิดเจ็ตต่อไปนี้
วิดเจ็ตอินพุตแบบฟอร์มที่ขอข้อมูลจากผู้ใช้ คุณสามารถ เพิ่มการตรวจสอบ ในวิดเจ็ตอินพุตของแบบฟอร์มได้ (ไม่บังคับ) เพื่อให้ผู้ใช้ป้อนและจัดรูปแบบข้อมูล อย่างถูกต้อง แอปแชทสามารถใช้เครื่องมืออินพุตแบบฟอร์มต่อไปนี้
- ข้อความที่ป้อน
(
textInput
) สำหรับข้อความรูปแบบอิสระหรือข้อความที่แนะนำ อินพุตการเลือก (
selectionInput
) คือองค์ประกอบ UI ที่เลือกได้ เช่น ช่องทำเครื่องหมาย ปุ่มตัวเลือก และเมนูแบบเลื่อนลง วิดเจ็ตอินพุตการเลือกยังสามารถ ป้อนและแนะนำรายการจากข้อมูล Google Workspace (เช่น พื้นที่ใน Chat) หรือแหล่งข้อมูลแบบไดนามิกได้ด้วย ดูรายละเอียดได้ที่ส่วนเพิ่มเมนูแบบเลือกหลายรายการเครื่องมือเลือกวันที่และเวลา (
dateTimePicker
) สำหรับรายการวันที่และเวลา
- ข้อความที่ป้อน
(
วิดเจ็ตปุ่ม เพื่อให้ผู้ใช้ส่งค่าที่ป้อนในการ์ดได้ หลังจากผู้ใช้คลิกปุ่มแล้ว แอป Chat จะประมวลผลข้อมูลที่ได้รับ
ในตัวอย่างต่อไปนี้ การ์ดจะรวบรวมข้อมูลติดต่อโดยใช้ช่องป้อนข้อความ ตัวเลือกวันที่และเวลา และตัวเลือกการเลือก
ดูตัวอย่างเพิ่มเติมของวิดเจ็ตแบบอินเทอร์แอกทีฟที่คุณใช้เพื่อรวบรวมข้อมูลได้ที่ ออกแบบการ์ดหรือกล่องโต้ตอบแบบอินเทอร์แอกทีฟ ในเอกสารประกอบของ Google Chat API
เพิ่มเมนูสำหรับเลือกหลายรายการ
หากต้องการปรับแต่งรายการที่เลือกหรืออนุญาตให้ผู้ใช้เลือกรายการจากแหล่งข้อมูลแบบไดนามิก แอป Chat สามารถใช้เมนูแบบเลือกหลายรายการซึ่งเป็นวิดเจ็ตประเภทหนึ่งของ SelectionInput
ตัวอย่างเช่น การ์ดต่อไปนี้จะแสดงเมนูแบบเลือกหลายรายการ
ที่ผู้ใช้เลือกจากรายชื่อติดต่อได้แบบไดนามิก
คุณสามารถป้อนข้อมูลรายการสำหรับเมนูแบบเลือกหลายรายการจากแหล่งข้อมูลต่อไปนี้
- ข้อมูล Google Workspace ซึ่งรวมถึงผู้ใช้ หรือพื้นที่ Chat ที่ผู้ใช้เป็นสมาชิก เมนูจะแสดงเฉพาะรายการจากองค์กร Google Workspace เดียวกัน
- แหล่งข้อมูลภายนอก เช่น ฐานข้อมูลเชิงสัมพันธ์ เช่น คุณสามารถใช้เมนูแบบเลือกหลายรายการเพื่อช่วยให้ผู้ใช้เลือกจาก รายการผู้มีโอกาสเป็นลูกค้าจากการขายจากระบบการจัดการลูกค้าสัมพันธ์ (CRM)
ป้อนข้อมูลจากแหล่งข้อมูล Google Workspace
หากต้องการใช้แหล่งข้อมูล Google Workspace ให้ระบุฟิลด์
platformDataSource
ในวิดเจ็ต SelectionInput
คุณ
ละเว้น
SelectionItem
ออบเจ็กต์ได้ เนื่องจากรายการการเลือกเหล่านี้มาจาก Google Workspace แบบไดนามิก ซึ่งแตกต่างจากประเภทอินพุตการเลือกอื่นๆ
โค้ดต่อไปนี้แสดงเมนูแบบเลือกหลายรายการของผู้ใช้ Google Workspace
หากต้องการป้อนข้อมูลผู้ใช้ อินพุตการเลือกจะตั้งค่า commonDataSource
เป็น USER
ดังนี้
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 5,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"commonDataSource": "USER"
}
}
}
โค้ดต่อไปนี้แสดงเมนูแบบเลือกหลายรายการของพื้นที่ใน Chat
หากต้องการสร้างพื้นที่ ข้อมูลที่เลือกจะระบุhostAppDataSource
ฟิลด์ เมนูสำหรับเลือกหลายรายการยังตั้งค่า
defaultToCurrentSpace
เป็น true
ซึ่งจะทำให้พื้นที่ทำงานปัจจุบันเป็นตัวเลือกเริ่มต้น
ในเมนูด้วย
JSON
{
"selectionInput": {
"name": "spaces",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"platformDataSource": {
"hostAppDataSource": {
"chatDataSource": {
"spaceDataSource": {
"defaultToCurrentSpace": true
}
}
}
}
}
}
ป้อนข้อมูลสินค้าจากแหล่งข้อมูลภายนอก
เมนูแบบเลือกหลายรายการยังสามารถแสดงรายการจากแหล่งข้อมูลของบุคคลที่สามหรือแหล่งข้อมูลภายนอกได้ด้วย
หากต้องการใช้แหล่งข้อมูลภายนอก ให้ระบุฟิลด์
externalDataSource
ในวิดเจ็ต SelectionInput
ที่มีฟังก์ชันที่ค้นหาและ
แสดงผลรายการจากแหล่งข้อมูล
หากต้องการลดคำขอไปยังแหล่งข้อมูลภายนอก คุณสามารถรวมรายการที่แนะนำซึ่งปรากฏในเมนูแบบหลายตัวเลือกก่อนที่ผู้ใช้จะพิมพ์ในเมนูได้ เช่น คุณสามารถป้อนข้อมูลรายชื่อติดต่อที่ผู้ใช้ค้นหาล่าสุดได้ หากต้องการแสดงรายการที่แนะนำจากแหล่งข้อมูลภายนอก ให้ระบุออบเจ็กต์แบบคงที่
SelectionItem
โค้ดต่อไปนี้แสดงเมนูแบบเลือกหลายรายการที่ค้นหาและป้อนข้อมูล จากแหล่งข้อมูลภายนอก
JSON
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"label": "Selected contacts",
"multiSelectMaxSelectedItems": 3,
"multiSelectMinQueryLength": 1,
"externalDataSource": { "function": "FUNCTION" },
// Suggested items loaded by default.
// The list is static here but it could be dynamic.
"items": [FUNCTION]
}
}
แทนที่ FUNCTION
ด้วย URL ของ HTTP หรือชื่อฟังก์ชัน Apps Script ที่ค้นหาฐานข้อมูลภายนอก ดูตัวอย่างที่สมบูรณ์ซึ่งแสดงวิธีส่งคืนสินค้าที่แนะนำได้ที่ส่วนแนะนำสินค้าแบบหลายรายการ
รับข้อมูลจากวิดเจ็ตแบบอินเทอร์แอกทีฟ
ทุกครั้งที่ผู้ใช้คลิกปุ่ม ระบบจะทริกเกอร์การดำเนินการของแอป Chat
พร้อมข้อมูลเกี่ยวกับการโต้ตอบ ใน
commonEventObject
ของเพย์โหลดเหตุการณ์ ออบเจ็กต์ formInputs
จะมีค่าใดก็ตามที่ผู้ใช้ป้อน
คุณสามารถดึงค่าจากออบเจ็กต์
commonEventObject.formInputs.WIDGET_NAME
ซึ่ง
WIDGET_NAME คือฟิลด์ name
ที่คุณระบุสำหรับวิดเจ็ต
ระบบจะแสดงค่าเป็นประเภทข้อมูลที่เฉพาะเจาะจงสำหรับวิดเจ็ต
ต่อไปนี้คือส่วนหนึ่งของออบเจ็กต์เหตุการณ์ที่ผู้ใช้ป้อนค่าสำหรับวิดเจ็ตแต่ละรายการ
{
"commonEventObject": { "formInputs": {
"contactName": { "stringInputs": {
"value": ["Kai 0"]
}},
"contactBirthdate": { "dateInput": {
"msSinceEpoch": 1000425600000
}},
"contactType": { "stringInputs": {
"value": ["Personal"]
}}
}}
}
หากต้องการรับข้อมูล แอป Chat จะจัดการออบเจ็กต์เหตุการณ์เพื่อรับค่าที่ผู้ใช้ป้อนลงในวิดเจ็ต ตารางต่อไปนี้แสดงวิธีรับค่าสำหรับวิดเจ็ตอินพุตแบบฟอร์มที่กำหนด สําหรับวิดเจ็ตแต่ละรายการ ตารางจะแสดงประเภทข้อมูลที่วิดเจ็ตยอมรับ ตําแหน่งที่จัดเก็บค่า ในออบเจ็กต์เหตุการณ์ และค่าตัวอย่าง
วิดเจ็ตอินพุตแบบฟอร์ม | ประเภทของข้อมูลอินพุต | ค่าอินพุตจากออบเจ็กต์เหตุการณ์ | ค่าตัวอย่าง |
---|---|---|---|
textInput |
stringInputs |
event.commonEventObject.formInputs.contactName.stringInputs.value[0] |
Kai O |
selectionInput |
stringInputs |
หากต้องการรับค่าแรกหรือค่าเดียว ให้ใช้ event.commonEventObject.formInputs.contactType.stringInputs.value[0] |
Personal |
dateTimePicker ที่ยอมรับเฉพาะวันที่ |
dateInput |
event.commonEventObject.formInputs.contactBirthdate.dateInput.msSinceEpoch |
1000425600000 |
หลังจากที่แอปใน Chat ได้รับข้อมูลแล้ว แอปจะทำสิ่งต่อไปนี้ได้
- สำหรับการ์ดที่มีเมนูแบบเลือกหลายรายการ ให้ป้อนหรือแนะนำรายการตามสิ่งที่ผู้ใช้พิมพ์ ลงในเมนู
- โอนข้อมูลไปยังการ์ดอื่นเพื่อให้ผู้ใช้ตรวจสอบข้อมูลของตนเองหรือไปยังส่วนถัดไปของแบบฟอร์มได้
- ตอบกลับผู้ใช้เพื่อยืนยันว่าผู้ใช้กรอกแบบฟอร์ม เรียบร้อยแล้ว
แนะนำรายการที่เลือกได้หลายรายการ
หากการ์ดมีเมนูแบบเลือกหลายรายการที่แสดงรายการจากแหล่งข้อมูลภายนอก
แอป Chat จะแสดงรายการที่แนะนำตามสิ่งที่ผู้ใช้พิมพ์ลงในเมนูได้ เช่น หากผู้ใช้เริ่มพิมพ์ Atl
สำหรับเมนู
ที่แสดงเมืองในสหรัฐอเมริกา แอป Chat ของคุณจะ
เติมข้อความอัตโนมัติเป็น Atlanta
ก่อนที่ผู้ใช้จะ
พิมพ์เสร็จ แอปแชทจะแนะนำสินค้าได้สูงสุด 100 รายการ
หากต้องการแนะนำและป้อนข้อมูลแบบไดนามิกลงในเมนูแบบเลือกหลายรายการ
วิดเจ็ต SelectionInput
ในการ์ดต้องระบุฟังก์ชันที่ค้นหาแหล่งข้อมูลภายนอก หากต้องการ
แสดงรายการที่แนะนำ ฟังก์ชันต้องทำสิ่งต่อไปนี้
- จัดการออบเจ็กต์เหตุการณ์ ซึ่งแอป Chat จะได้รับเมื่อผู้ใช้พิมพ์ในเมนู
- จากออบเจ็กต์เหตุการณ์ ให้รับค่าที่ผู้ใช้พิมพ์ ซึ่งแสดงในฟิลด์
event.commonEventObject.parameters["autocomplete_widget_query"]
- ค้นหาแหล่งข้อมูลโดยใช้ค่าที่ผู้ใช้ป้อนเพื่อรับ
SelectionItems
อย่างน้อย 1 รายการเพื่อแนะนำต่อผู้ใช้ - ส่งคืนสินค้าที่แนะนำโดยส่งคืนการดำเนินการ
RenderActions
พร้อมด้วยออบเจ็กต์modifyCard
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่แอป Chat
แนะนำรายการแบบไดนามิกในเมนูแบบหลายตัวเลือกในการ์ด เมื่อผู้ใช้พิมพ์ในเมนู ฟังก์ชันหรือปลายทางที่ระบุในช่อง externalDataSource
ของวิดเจ็ตจะค้นหาแหล่งข้อมูลภายนอกและแนะนำรายการที่ผู้ใช้เลือกได้
Node.js
/**
* Google Cloud Function that responds to events sent from a
* Google Chat space.
*
* @param {Object} req Request sent from Google Chat space
* @param {Object} res Response to send back
*/
exports.selectionInput = function selectionInput(req, res) {
if (req.method === 'GET' || !req.body.chat) {
return res.send('Hello! This function is meant to be used ' +
'in a Google Chat Space.');
}
// Stores the Google Chat event
const chatEvent = req.body.chat;
// Handle user interaction with multiselect.
if(chatEvent.widgetUpdatedPayload) {
return res.send(queryContacts(req.body));
}
// Replies with a card that contains the multiselect menu.
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
cardsV2: [{
cardId: "contactSelector",
card: { sections:[{ widgets: [{
selectionInput: {
name: "contacts",
type: "MULTI_SELECT",
label: "Selected contacts",
multiSelectMaxSelectedItems: 3,
multiSelectMinQueryLength: 1,
externalDataSource: { function: "FUNCTION_URL" },
// Suggested items loaded by default.
// The list is static here but it could be dynamic.
items: [getSuggestedContact("3")]
}
}]}]}
}]
}}}}});
};
/**
* Get contact suggestions based on text typed by users.
*
* @param {Object} event the event object that contains the user's query
* @return {Object} suggestions
*/
function queryContacts(event) {
const query = event.commonEventObject.parameters["autocomplete_widget_query"];
return { action: { modifyOperations: [{ updateWidget: { selectionInputWidgetSuggestions: { suggestions: [
// The list is static here but it could be dynamic.
getSuggestedContact("1"), getSuggestedContact("2"), getSuggestedContact("3"), getSuggestedContact("4"), getSuggestedContact("5")
// Only return items based on the query from the user.
].filter(e => !query || e.text.includes(query)) }}}]}};
}
/**
* Generate a suggested contact given an ID.
*
* @param {String} id The ID of the contact to return.
* @return {Object} The contact formatted as a selection item in the menu.
*/
function getSuggestedContact(id) {
return {
value: id,
startIconUri: "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
text: "Contact " + id
};
}
แทนที่ FUNCTION_URL
ด้วยปลายทาง HTTP ที่ค้นหา
แหล่งข้อมูลภายนอก
Apps Script
/**
* Responds to a Message trigger in Google Chat.
*
* @param {Object} event the event object from Google Chat
* @return {Object} Response from the Chat app.
*/
function onMessage(event) {
// Replies with a card that contains the multiselect menu.
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
cardsV2: [{
cardId: "contactSelector",
card: { sections:[{ widgets: [{
selectionInput: {
name: "contacts",
type: "MULTI_SELECT",
label: "Selected contacts",
multiSelectMaxSelectedItems: 3,
multiSelectMinQueryLength: 1,
externalDataSource: { function: "queryContacts" },
// Suggested items loaded by default.
// The list is static here but it could be dynamic.
items: [getSuggestedContact("3")]
}
}]}]}
}]
}}}}};
}
/**
* Get contact suggestions based on text typed by users.
*
* @param {Object} event the event object that contains the user's query
* @return {Object} suggestions
*/
function queryContacts(event) {
const query = event.commonEventObject.parameters["autocomplete_widget_query"];
return { action: { modifyOperations: [{ updateWidget: { selectionInputWidgetSuggestions: { suggestions: [
// The list is static here but it could be dynamic.
getSuggestedContact("1"), getSuggestedContact("2"), getSuggestedContact("3"), getSuggestedContact("4"), getSuggestedContact("5")
// Only return items based on the query from the user.
].filter(e => !query || e.text.includes(query)) }}}]}};
}
/**
* Generate a suggested contact given an ID.
*
* @param {String} id The ID of the contact to return.
* @return {Object} The contact formatted as a selection item in the menu.
*/
function getSuggestedContact(id) {
return {
value: id,
startIconUri: "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png",
text: "Contact " + id
};
}
โอนข้อมูลไปยังบัตรอื่น
หลังจากที่ผู้ใช้ส่งข้อมูลจากบัตรแล้ว คุณอาจต้องส่งบัตรเพิ่มเติมเพื่อทำสิ่งต่อไปนี้
- ช่วยให้ผู้ใช้กรอกแบบฟอร์มที่ยาวขึ้นได้โดยการสร้างส่วนที่แตกต่างกัน
- ให้ผู้ใช้ดูตัวอย่างและยืนยันข้อมูลจากการ์ดเริ่มต้น เพื่อให้ผู้ใช้ตรวจสอบคำตอบก่อนส่งได้
- ป้อนข้อมูลส่วนที่เหลือของแบบฟอร์มแบบไดนามิก ตัวอย่างเช่น หากต้องการแจ้งให้ ผู้ใช้สร้างการนัดหมาย แอป Chat อาจ แสดงการ์ดเริ่มต้นที่ขอเหตุผลในการนัดหมาย และ จากนั้นจะแสดงการ์ดอีกใบที่ระบุเวลาที่ว่างตาม ประเภทการนัดหมาย
หากต้องการโอนข้อมูลที่ป้อนจากการ์ดเริ่มต้น คุณสามารถสร้างวิดเจ็ต button
ด้วย
actionParameters
ที่มี name
ของวิดเจ็ตและค่าที่ผู้ใช้ป้อน ดังที่แสดง
ในตัวอย่างต่อไปนี้
Node.js
{
"buttonList": { "buttons": [{
"text": "Submit",
"onClick": { "action": {
"function": "FUNCTION_URL", // Must be an `https` endpoint.
"parameters": [
{
"key": "WIDGET_NAME",
"value": "USER_INPUT_VALUE"
},
// Can specify multiple parameters
]
}}
}]}
}
Apps Script
{
"buttonList": { "buttons": [{
"text": "Submit",
"onClick": { "action": {
"function": "submitForm",
"parameters": [
{
"key": "WIDGET_NAME",
"value": "USER_INPUT_VALUE"
},
// Can specify multiple parameters
]
}}
}]}
}
โดยที่ WIDGET_NAME คือ name
ของวิดเจ็ต และ
USER_INPUT_VALUE คือสิ่งที่ผู้ใช้ป้อน เช่น สำหรับช่องป้อนข้อความ
ที่รวบรวมชื่อของบุคคล ชื่อวิดเจ็ตคือ contactName
และค่าตัวอย่างคือ Kai O
เมื่อผู้ใช้คลิกปุ่ม แอป Chat จะได้รับออบเจ็กต์เหตุการณ์ที่คุณสามารถรับข้อมูลได้
ตอบกลับการส่งแบบฟอร์ม
หลังจากได้รับข้อมูลจากข้อความการ์ดหรือกล่องโต้ตอบแล้ว แอป Chat จะตอบกลับโดยการรับทราบการรับหรือ แสดงข้อผิดพลาด
ในตัวอย่างต่อไปนี้ แอปแชทจะส่งข้อความ เพื่อยืนยันว่าได้รับแบบฟอร์มที่ส่งจากข้อความ การ์ดเรียบร้อยแล้ว
Node.js
/**
* Google Cloud Function that handles all Google Workspace Add On events for
* the contact manager app.
*
* @param {Object} req Request sent from Google Chat space
* @param {Object} res Response to send back
*/
exports.contactManager = function contactManager(req, res) {
const chatEvent = req.body.chat;
const chatMessage = chatEvent.messagePayload.message;
// Handle message payloads in the event object
if(chatEvent.messagePayload) {
return res.send(handleMessage(chatMessage, chatEvent.user));
// Handle button clicks on the card
} else if(chatEvent.buttonClickedPayload) {
switch(req.body.commonEventObject.parameters.actionName) {
case "openDialog":
return res.send(openDialog());
case "openNextCard":
return res.send(openNextCard(req.body));
case "submitForm":
return res.send(submitForm(req.body));
}
}
};
/**
* Submits information from a dialog or card message.
*
* @param {Object} event the interactive event with form inputs.
* @return {Object} a message response that posts a private message.
*/
function submitForm(event) {
const chatUser = event.chat.user;
const contactName = event.commonEventObject.parameters["contactName"];
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
privateMessageViewer: chatUser,
text: "✅ " + contactName + " has been added to your contacts."
}}}}};
}
Apps Script
/**
* Sends private text message that confirms submission.
*
* @param {Object} event the interactive event with form inputs.
* @return {Object} a message response that posts a private message.
*/
function submitForm(event) {
const chatUser = event.chat.user;
const contactName = event.commonEventObject.parameters["contactName"];
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
privateMessageViewer: chatUser,
text: "✅ " + contactName + " has been added to your contacts."
}}}}};
}
หากต้องการประมวลผลและปิดกล่องโต้ตอบ คุณต้องส่งคืนออบเจ็กต์
RenderActions
ที่ระบุว่าคุณต้องการส่งข้อความยืนยัน อัปเดต
ข้อความหรือการ์ดเดิม หรือเพียงแค่ปิดกล่องโต้ตอบ ดูขั้นตอนได้ที่หัวข้อ
ปิดกล่องโต้ตอบ
แก้ปัญหา
เมื่อแอป Google Chat หรือการ์ดแสดงข้อผิดพลาด อินเทอร์เฟซของ Chat จะแสดงข้อความว่า "เกิดข้อผิดพลาด" หรือ "ดำเนินการตามคำขอของคุณไม่ได้" บางครั้ง UI ของ Chat อาจไม่แสดงข้อความแสดงข้อผิดพลาดใดๆ แต่แอปหรือการ์ด Chat อาจให้ผลลัพธ์ที่ไม่คาดคิด เช่น ข้อความในการ์ดอาจไม่ปรากฏ
แม้ว่าข้อความแสดงข้อผิดพลาดอาจไม่แสดงใน UI ของ Chat แต่ข้อความแสดงข้อผิดพลาดและข้อมูลบันทึกที่อธิบายไว้จะช่วยคุณแก้ไขข้อผิดพลาดได้เมื่อเปิดการบันทึกข้อผิดพลาดสำหรับแอป Chat หากต้องการความช่วยเหลือในการดู การแก้ไขข้อบกพร่อง และการแก้ไขข้อผิดพลาด โปรดดู แก้ปัญหาและแก้ไขข้อผิดพลาดของ Google Chat