หน้านี้อธิบายวิธีที่แอป Google Chat รับและตอบสนองต่อการโต้ตอบของผู้ใช้ ซึ่งเรียกอีกอย่างว่า เหตุการณ์การโต้ตอบของแอป Google Chat
หน้านี้อธิบายวิธีดำเนินการต่อไปนี้
- กำหนดค่าแอป Chat ให้รับเหตุการณ์การโต้ตอบ
- ประมวลผลเหตุการณ์การโต้ตอบในโครงสร้างพื้นฐาน
- ตอบสนองต่อเหตุการณ์การโต้ตอบหากเหมาะสม
ข้อกำหนดเบื้องต้น
- บัญชี Google Workspace สำหรับธุรกิจหรือองค์กรที่มีสิทธิ์เข้าถึง Google Chat
- สร้างโปรเจ็กต์ Google Cloud
- กำหนดค่าหน้าจอขอความยินยอม OAuth
- เปิดใช้ Google Chat API
ประเภทเหตุการณ์การโต้ตอบ
เหตุการณ์การโต้ตอบของแอป Google Chat แสดงถึงการดำเนินการใดๆ ที่ผู้ใช้ทำเพื่อเรียกใช้หรือโต้ตอบกับแอป Chat เช่น @พูดถึงแอป Chat หรือเพิ่มแอป Chat ลงในพื้นที่ทำงาน
เมื่อผู้ใช้โต้ตอบกับแอป Chat,
Google Chat จะส่งเหตุการณ์การโต้ตอบไปยังแอป Chat,
ซึ่งแสดงเป็นประเภท
Event ใน
Chat API แอป Chat สามารถใช้เหตุการณ์เพื่อประมวลผลการโต้ตอบ และเลือกที่จะตอบกลับด้วยข้อความ
สำหรับเหตุการณ์การโต้ตอบของผู้ใช้แต่ละประเภท Google Chat จะส่งเหตุการณ์การโต้ตอบประเภทต่างๆ ซึ่งจะช่วยให้แอป Chat จัดการเหตุการณ์แต่ละประเภทได้อย่างเหมาะสม ประเภทเหตุการณ์การโต้ตอบจะแสดงโดยใช้ออบเจ็กต์
eventType
ตัวอย่างเช่น Google Chat ใช้ประเภทเหตุการณ์
ADDED_TO_SPACE สำหรับการโต้ตอบใดๆ ที่ผู้ใช้เพิ่ม
แอป Chat ลงในพื้นที่ทำงาน เพื่อให้
แอป Chat สามารถตอบกลับด้วยข้อความต้อนรับ
ในพื้นที่ทำงานได้ทันที
ADDED_TO_SPACE
ซึ่งแอป Chat จะจัดการเพื่อ
ส่งข้อความต้อนรับในพื้นที่ทำงาน ตารางต่อไปนี้แสดงการโต้ตอบของผู้ใช้ที่พบบ่อย ประเภทเหตุการณ์การโต้ตอบที่แอป Chat ได้รับ และวิธีที่แอป Chat มักจะตอบกลับ
| การโต้ตอบของผู้ใช้ | eventType |
การตอบกลับโดยทั่วไปจากแอป Chat |
|---|---|---|
| ผู้ใช้ส่งข้อความถึงแอป Chat เช่น @พูดถึงแอป Chat หรือใช้คำสั่งเครื่องหมายทับ | MESSAGE |
แอป Chat จะตอบกลับตามเนื้อหาของข้อความ เช่น แอป Chat จะตอบกลับ
คำสั่งเครื่องหมายทับ /about ด้วยข้อความที่อธิบายงานที่
แอป Chat ทำได้ |
| ผู้ใช้เพิ่มแอป Chat ลงใน พื้นที่ทำงาน | ADDED_TO_SPACE |
แอป Chat จะส่งข้อความเริ่มต้นใช้งาน ที่อธิบายสิ่งที่แอปทำและวิธีที่ผู้ใช้ในพื้นที่ทำงาน โต้ตอบกับแอป |
| ผู้ใช้นำแอป Chat ออกจากพื้นที่ทำงาน | REMOVED_FROM_SPACE |
แอป Chat จะนำการแจ้งเตือนขาเข้าที่กำหนดค่าไว้สำหรับพื้นที่ทำงานออก (เช่น การลบ Webhook) และล้างที่จัดเก็บข้อมูลภายใน |
| ผู้ใช้คลิกปุ่มในการ์ดจากข้อความ กล่องโต้ตอบ หรือหน้าแรกของแอป Chat | CARD_CLICKED |
แอป Chat จะประมวลผลและจัดเก็บข้อมูลที่ผู้ใช้ส่ง หรือแสดงการ์ดอื่น |
| ผู้ใช้เปิด หน้าแรกของ แอป Chat โดยคลิกแท็บหน้าแรก ในข้อความแบบ 1:1 | APP_HOME |
แอป Chat จะแสดงการ์ดแบบคงที่หรือแบบอินเทอร์แอกทีฟ จากหน้าแรก |
| ผู้ใช้ส่งแบบฟอร์มจากหน้าแรกของแอป Chat | SUBMIT_FORM |
แอป Chat จะประมวลผลและจัดเก็บข้อมูลที่ผู้ใช้ส่ง หรือแสดงการ์ดอื่น |
| ผู้ใช้เรียกใช้คำสั่งโดยใช้คำสั่งด่วน | APP_COMMAND |
แอป Chat จะตอบกลับตามคำสั่งที่ เรียกใช้ เช่น แอป Chat จะตอบกลับคำสั่ง เกี่ยวกับ ด้วยข้อความที่อธิบายงานที่ แอป Chat ทำได้ |
หากต้องการดูเหตุการณ์การโต้ตอบที่รองรับทั้งหมด โปรดดูเอกสารอ้างอิง
EventType
เหตุการณ์การโต้ตอบจากกล่องโต้ตอบ
หากแอป Chat เปิด กล่องโต้ตอบ เหตุการณ์การโต้ตอบจะมีข้อมูลเพิ่มเติมต่อไปนี้ ที่คุณใช้ประมวลผลการตอบกลับได้
- ตั้งค่า
isDialogEventเป็นtrue DialogEventTypeจะระบุว่าการโต้ตอบทำให้กล่องโต้ตอบเปิดขึ้น ส่ง ข้อมูลจากกล่องโต้ตอบ หรือปิดกล่องโต้ตอบ
ตารางต่อไปนี้แสดงการโต้ตอบที่พบบ่อยกับกล่องโต้ตอบ ประเภทเหตุการณ์ของกล่องโต้ตอบที่เกี่ยวข้อง และคำอธิบายวิธีที่แอป Chat มักจะตอบกลับ
| การโต้ตอบของผู้ใช้กับกล่องโต้ตอบ | ประเภทเหตุการณ์ของกล่องโต้ตอบ | การตอบกลับโดยทั่วไป |
|---|---|---|
| ผู้ใช้เรียกใช้คำขอของกล่องโต้ตอบ เช่น ใช้คำสั่งเครื่องหมายทับ หรือคลิกปุ่มจากข้อความ | REQUEST_DIALOG |
แอป Chat จะเปิดกล่องโต้ตอบ |
| ผู้ใช้ส่งข้อมูลในกล่องโต้ตอบโดยคลิกปุ่ม | SUBMIT_DIALOG |
แอป Chat จะไปยังกล่องโต้ตอบอื่น หรือปิดกล่องโต้ตอบเพื่อสิ้นสุดการโต้ตอบ |
| ผู้ใช้ออกจากกล่องโต้ตอบหรือปิดกล่องโต้ตอบก่อนที่จะส่งข้อมูล | CANCEL_DIALOG |
แอป Chat สามารถตอบกลับด้วยข้อความใหม่ หรืออัปเดตข้อความหรือการ์ดที่ผู้ใช้เปิดกล่องโต้ตอบได้ |
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเปิดกล่องโต้ตอบแบบอินเทอร์แอกทีฟ
รับเหตุการณ์การโต้ตอบของแอป Chat
ส่วนนี้อธิบายวิธีรับและประมวลผลเหตุการณ์การโต้ตอบสำหรับแอป Chat
กำหนดค่าแอป Chat ให้รับเหตุการณ์การโต้ตอบ
แอป Chat บางแอปไม่ได้เป็นแบบอินเทอร์แอกทีฟ เช่น Webhook ขาเข้า จะส่งข้อความขาออกได้เท่านั้น และ ไม่สามารถตอบกลับผู้ใช้ หากคุณกำลังสร้างแอป Chat แบบอินเทอร์แอกทีฟ คุณต้องเลือกปลายทางที่ช่วยให้แอป Chat รับ ประมวลผล และตอบสนองต่อเหตุการณ์การโต้ตอบได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบแอป Chat ได้ที่ หัวข้อสถาปัตยกรรมการติดตั้งใช้งานแอป Chat
สำหรับฟีเจอร์แบบอินเทอร์แอกทีฟแต่ละรายการที่คุณต้องการสร้าง คุณต้องอัปเดตการกำหนดค่าใน Chat API เพื่อให้ Google Chat ส่งเหตุการณ์การโต้ตอบที่เกี่ยวข้องไปยังแอป Chat ได้ โดยทำดังนี้
ในคอนโซล Google Cloud ให้ไปที่หน้า Chat API แล้วคลิกหน้าการกำหนดค่า
ในส่วนฟีเจอร์แบบอินเทอร์แอกทีฟ ให้ตรวจสอบการตั้งค่าและอัปเดตตามฟีเจอร์ที่ต้องการสร้าง
ช่อง คำอธิบาย ฟังก์ชันการทำงาน ต้องระบุ ชุดช่องที่กำหนดวิธีที่แอป Chat โต้ตอบกับผู้ใช้ โดยค่าเริ่มต้น ผู้ใช้จะค้นหาและส่งข้อความถึงแอป Chat ได้โดยตรงใน Google Chat - เข้าร่วมพื้นที่ทำงานและการสนทนากลุ่ม: ผู้ใช้สามารถเพิ่มแอป Chat ลงในพื้นที่ทำงานและการสนทนากลุ่ม
การตั้งค่าการเชื่อมต่อ ต้องระบุ ปลายทางสำหรับแอป Chat ซึ่งเป็นหนึ่งในตัวเลือกต่อไปนี้ - URL ปลายทาง HTTP: ปลายทาง HTTPS ที่โฮสต์การติดตั้งใช้งานแอป Chat
- Apps Script: รหัสการติดตั้งใช้งานสำหรับโปรเจ็กต์ Apps Script ที่ติดตั้งใช้งานแอป Chat
- ชื่อหัวข้อ Cloud Pub/Sub: หัวข้อ Pub/Sub ที่แอป Chat สมัครใช้บริการเป็นปลายทาง
- Dialogflow: ลงทะเบียนแอป Chat ด้วยการผสานรวม Dialogflow ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสร้างแอป DialogflowGoogle Chat ที่เข้าใจภาษาธรรมชาติ
คำสั่ง ไม่บังคับ คำสั่งเครื่องหมายทับและคำสั่งด่วนสำหรับแอป Chat คำสั่งช่วยให้ผู้ใช้ขอการดำเนินการหรือใช้ฟีเจอร์ที่เฉพาะเจาะจงของแอป Chat ได้ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ ตอบกลับคำสั่งแอป Google Chat ตัวอย่างลิงก์ ไม่บังคับ รูปแบบ URL ที่แอป Chat จดจำและแสดงเนื้อหาเพิ่มเติมเมื่อผู้ใช้ส่งลิงก์ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ แสดงตัวอย่างลิงก์ การมองเห็น ไม่บังคับ บุคคลสูงสุด 5 คน หรือ Google Groups อย่างน้อย 1 กลุ่มที่ดูและติดตั้งแอป Chat ได้ ใช้ช่องนี้เพื่อทดสอบแอป Chat หรือแชร์แอป Chat กับทีม ดูข้อมูลเพิ่มเติมได้ที่หัวข้อทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟ คลิกบันทึก เมื่อบันทึกการกำหนดค่าแอป Chat แล้ว ผู้ใช้ที่ระบุในองค์กร Google Workspace จะใช้แอป Chat ได้
ตอนนี้แอป Chat ได้รับการกำหนดค่าให้รับเหตุการณ์การโต้ตอบจาก Google Chat แล้ว
จัดการการลองใหม่ของการเรียก HTTP ไปยังบริการ
หากคำขอ HTTPS ไปยังบริการล้มเหลว (เช่น หมดเวลา เครือข่ายขัดข้องชั่วคราว หรือรหัสสถานะ HTTPS ไม่ใช่ 2xx) Google Chat อาจลองส่งอีกครั้ง 2-3 ครั้งภายใน 2-3 นาที (แต่ไม่รับประกัน) ด้วยเหตุนี้ แอป Chat อาจได้รับข้อความเดียวกัน 2-3 ครั้งในบางสถานการณ์ หากคำขอเสร็จสมบูรณ์ แต่แสดงเพย์โหลดข้อความที่ไม่ถูกต้อง Google Chat จะไม่ลองส่งคำขออีกครั้ง
ประมวลผลหรือตอบสนองต่อเหตุการณ์การโต้ตอบ
ส่วนนี้อธิบายวิธีที่แอป Google Chat ประมวลผลและตอบสนองต่อเหตุการณ์การโต้ตอบ
หลังจากที่แอป Chat ได้รับเหตุการณ์การโต้ตอบจาก Google Chat แล้ว แอปจะตอบสนองได้หลายวิธี ในหลายกรณี แอป Chat แบบอินเทอร์แอกทีฟจะตอบกลับผู้ใช้ด้วยข้อความ นอกจากนี้ แอป Google Chat ยังค้นหาข้อมูลบางอย่างจากแหล่งข้อมูล บันทึกข้อมูลเหตุการณ์การโต้ตอบ หรือทำสิ่งอื่นๆ ได้ด้วย ลักษณะการประมวลผลนี้เป็นสิ่งที่กำหนดแอป Google Chat โดยพื้นฐาน
หากต้องการตอบกลับแบบซิงโครนัส แอป Chat ต้องตอบกลับภายใน 30 วินาที และต้องโพสต์การตอบกลับในพื้นที่ทำงานที่เกิดการโต้ตอบ มิเช่นนั้น แอป Chat จะตอบกลับแบบอะซิงโครนัสได้
สำหรับเหตุการณ์การโต้ตอบแต่ละรายการ แอป Chat จะได้รับ เนื้อหาคำขอ ซึ่งเป็นเพย์โหลด JSON ที่แสดงถึงเหตุการณ์ คุณสามารถใช้ข้อมูลนี้เพื่อประมวลผลการตอบกลับ ดูตัวอย่างเพย์โหลดเหตุการณ์ได้ที่หัวข้อ ประเภทเหตุการณ์การโต้ตอบของแอป Chat
แผนภาพต่อไปนี้แสดงวิธีที่แอป Google Chat มักจะประมวลผลหรือตอบสนองต่อเหตุการณ์การโต้ตอบประเภทต่างๆ
ตอบกลับแบบเรียลไทม์
เหตุการณ์การโต้ตอบช่วยให้แอป Chat ตอบกลับแบบเรียลไทม์หรือแบบ ซิงโครนัส ได้ การตอบกลับแบบซิงโครนัสไม่จำเป็นต้องมีการตรวจสอบสิทธิ์
หากต้องการตอบกลับแบบเรียลไทม์ แอป Chat ต้องแสดงออบเจ็กต์
Message หากต้องการ
ตอบกลับด้วยข้อความในพื้นที่ทำงาน ออบเจ็กต์ Message สามารถ
มีออบเจ็กต์ text, cardsV2 และ accessoryWidgets หากต้องการใช้กับการตอบกลับประเภทอื่นๆ โปรดดูคำแนะนำต่อไปนี้
ตอบกลับด้วยข้อความ
ในตัวอย่างนี้ แอป Chat จะสร้างและส่งข้อความทุกครั้งที่เพิ่มลงในพื้นที่ทำงาน ดูข้อมูลเกี่ยวกับแนวทางปฏิบัติแนะนำสำหรับการเริ่มต้นใช้งานผู้ใช้ได้ที่ หัวข้อ แนะนำแอป Chat ให้ผู้ใช้รู้จัก
หากต้องการส่งข้อความเมื่อผู้ใช้เพิ่มแอป Chat
ลงในพื้นที่ทำงาน แอป Chat
จะตอบสนองต่อADDED_TO_SPACE
เหตุการณ์การโต้ตอบ หากต้องการตอบสนองต่อเหตุการณ์การโต้ตอบ ADDED_TO_SPACE ด้วยข้อความ ให้ใช้โค้ดต่อไปนี้
Node.js
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} req The event object from Chat API.
* @param {Object} res The response object from the Chat app.
*/
exports.cymbalApp = function cymbalApp(req, res) {
// Send an onboarding message when added to a Chat space
if (req.body.type === 'ADDED_TO_SPACE') {
res.json({
'text': 'Hi, Cymbal at your service. I help you manage your calendar
from Google Chat. Take a look at your schedule today by typing
`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To
learn what else I can do, type `/help`.'
});
}
};
Python
from flask import Flask, request, json
app = Flask(__name__)
@app.route('/', methods=['POST'])
def cymbal_app():
"""Sends an onboarding message when the Chat app is added to a space.
Returns:
Mapping[str, Any]: The response object from the Chat app.
"""
event = request.get_json()
if event['type'] == 'ADDED_TO_SPACE':
return json.jsonify({
'text': 'Hi, Cymbal at your service. I help you manage your calendar' +
'from Google Chat. Take a look at your schedule today by typing' +
'`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To' +
'learn what else I can do, type `/help`.'
})
return json.jsonify({})
Java
@SpringBootApplication
@RestController
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* Sends an onboarding message when the Chat app is added to a space.
*
* @return The response object from the Chat app.
*/
@PostMapping("/")
@ResponseBody
public Message onEvent(@RequestBody JsonNode event) {
switch (event.get("type").asText()) {
case "ADDED_TO_SPACE":
return new Message().setText(
"Hi, Cymbal at your service. I help you manage your calendar" +
"from Google Chat. Take a look at your schedule today by typing" +
"`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`." +
"To learn what else I can do, type `/help`.");
default:
return new Message();
}
}
}
Apps Script
/**
* Sends an onboarding message when the Chat app is added to a space.
*
* @param {Object} event The event object from Chat API.
* @return {Object} Response from the Chat app.
*/
function onAddToSpace(event) {
return {
'text': 'Hi, Cymbal at your service. I help you manage your calendar
from Google Chat. Take a look at your schedule today by typing
`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn
what else I can do, type `/help`.'
}
}
ตัวอย่างโค้ดจะแสดงข้อความต่อไปนี้
ตอบกลับแบบอะซิงโครนัส
บางครั้งแอป Chat ต้องตอบสนองต่อเหตุการณ์การโต้ตอบหลังจากผ่านไป 30 วินาที หรือทำงานนอกพื้นที่ทำงานที่สร้างเหตุการณ์การโต้ตอบ เช่น แอป Chat อาจต้องตอบสนองต่อผู้ใช้หลังจากทำงานที่ใช้เวลานานเสร็จสมบูรณ์ ในกรณีนี้ แอป Chat จะตอบสนองแบบอะซิงโครนัสได้โดยการเรียกใช้ Google Chat API
หากต้องการสร้างข้อความโดยใช้ Chat API โปรดดูหัวข้อ สร้างข้อความ หากต้องการดูคำแนะนำเกี่ยวกับการใช้ เมธอด Chat API เพิ่มเติม โปรดดู ภาพรวม Chat API
หัวข้อที่เกี่ยวข้อง
- ส่งข้อความ
- เปิดกล่องโต้ตอบแบบอินเทอร์แอกทีฟ
- แสดงตัวอย่างลิงก์
- อ่านข้อมูลแบบฟอร์มที่ผู้ใช้ป้อนในการ์ด
- ตอบกลับคำสั่ง
- สร้างหน้าแรกสำหรับแอป Chat
- ยืนยันคำขอจาก Chat
- ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat