รับและตอบสนองต่อเหตุการณ์การโต้ตอบ

หน้านี้อธิบายวิธีที่แอป Google Chat รับและตอบสนองต่อการโต้ตอบของผู้ใช้ ซึ่งเรียกอีกอย่างว่า เหตุการณ์การโต้ตอบของแอป Google Chat

หน้านี้อธิบายวิธีดำเนินการต่อไปนี้

  • กำหนดค่าแอป Chat ให้รับเหตุการณ์การโต้ตอบ
  • ประมวลผลเหตุการณ์การโต้ตอบในโครงสร้างพื้นฐาน
  • ตอบสนองต่อเหตุการณ์การโต้ตอบหากเหมาะสม

ข้อกำหนดเบื้องต้น

ประเภทเหตุการณ์การโต้ตอบ

เหตุการณ์การโต้ตอบของแอป Google Chat แสดงถึงการดำเนินการใดๆ ที่ผู้ใช้ทำเพื่อเรียกใช้หรือโต้ตอบกับแอป Chat เช่น @พูดถึงแอป Chat หรือเพิ่มแอป Chat ลงในพื้นที่ทำงาน

เมื่อผู้ใช้โต้ตอบกับแอป Chat, Google Chat จะส่งเหตุการณ์การโต้ตอบไปยังแอป Chat, ซึ่งแสดงเป็นประเภท Event ใน Chat API แอป Chat สามารถใช้เหตุการณ์เพื่อประมวลผลการโต้ตอบ และเลือกที่จะตอบกลับด้วยข้อความ

สำหรับเหตุการณ์การโต้ตอบของผู้ใช้แต่ละประเภท Google Chat จะส่งเหตุการณ์การโต้ตอบประเภทต่างๆ ซึ่งจะช่วยให้แอป Chat จัดการเหตุการณ์แต่ละประเภทได้อย่างเหมาะสม ประเภทเหตุการณ์การโต้ตอบจะแสดงโดยใช้ออบเจ็กต์ eventType

ตัวอย่างเช่น Google Chat ใช้ประเภทเหตุการณ์ ADDED_TO_SPACE สำหรับการโต้ตอบใดๆ ที่ผู้ใช้เพิ่ม แอป Chat ลงในพื้นที่ทำงาน เพื่อให้ แอป Chat สามารถตอบกลับด้วยข้อความต้อนรับ ในพื้นที่ทำงานได้ทันที

แอปแชทโพสต์ข้อความต้อนรับ
รูปที่ 1: เมื่อผู้ใช้เพิ่ม แอป 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 ได้ โดยทำดังนี้

  1. ในคอนโซล Google Cloud ให้ไปที่หน้า Chat API แล้วคลิกหน้าการกำหนดค่า

    ไปที่หน้าการกำหนดค่า Chat API

  2. ในส่วนฟีเจอร์แบบอินเทอร์แอกทีฟ ให้ตรวจสอบการตั้งค่าและอัปเดตตามฟีเจอร์ที่ต้องการสร้าง

    ช่อง คำอธิบาย
    ฟังก์ชันการทำงาน ต้องระบุ ชุดช่องที่กำหนดวิธีที่แอป 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 กับทีม ดูข้อมูลเพิ่มเติมได้ที่หัวข้อทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟ
  3. คลิกบันทึก เมื่อบันทึกการกำหนดค่าแอป 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 มักจะประมวลผลหรือตอบสนองต่อเหตุการณ์การโต้ตอบประเภทต่างๆ

สถาปัตยกรรมของวิธีที่แอป 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