ส่งข้อความ Google Chat

หน้านี้อธิบายวิธีที่แอป Google Chat ส่งข้อความเพื่อตอบกลับการโต้ตอบของผู้ใช้

  • แบบฟอร์มติดต่อจากคำสั่งเครื่องหมายทับ
    รูปที่ 1 แอป Chat ตอบกลับคำสั่ง Slash ด้วยข้อความและปุ่ม
  • แบบฟอร์มติดต่อในกล่องโต้ตอบ
    รูปที่ 2 แอป Chat เปิดกล่องโต้ตอบที่ผู้ใช้ป้อนข้อมูลได้
  • ข้อความการ์ดที่มีวิดเจ็ตอินพุตแบบฟอร์ม
    รูปที่ 5 แอป Chat ส่งข้อความที่มีข้อความและการ์ดแบบอินเทอร์แอกทีฟ

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

HTTP

ส่วนเสริม Google Workspace ที่ขยาย Google Chat หากต้องการสร้างส่วนเสริม ให้ทำตาม คู่มือเริ่มต้นใช้งานฉบับย่อของ HTTP

Apps Script

ส่วนเสริม Google Workspace ที่ขยาย Google Chat หากต้องการสร้างส่วนเสริม ให้ทำตาม คู่มือเริ่มต้นใช้งานฉบับย่อของ Apps Script

ออกแบบข้อความ

แอป Chat สามารถใส่องค์ประกอบใดก็ได้ต่อไปนี้ในข้อความ

  • ข้อความที่มีไฮเปอร์ลิงก์, @พูดถึง และอีโมจิ
  • การ์ดอย่างน้อย 1 ใบ ซึ่งอาจปรากฏในข้อความหรือเปิดในหน้าต่างใหม่เป็นกล่องโต้ตอบ
  • วิดเจ็ตเสริมอย่างน้อย 1 รายการ ซึ่งเป็นปุ่มที่ปรากฏหลังข้อความหรือการ์ดในข้อความ

ดูข้อมูลเกี่ยวกับการออกแบบข้อความได้ในเอกสารประกอบของ Google Chat API ต่อไปนี้

ตอบกลับด้วยข้อความ

แอป Chat สามารถตอบกลับด้วยข้อความเมื่อมีการเรียกใช้หรือการโต้ตอบต่อไปนี้

นอกจากนี้ แอป Chat ยังส่งข้อความเชิงรุกได้ด้วยการ เรียกใช้ Google Chat API

หากต้องการตอบกลับด้วยข้อความ ให้แสดงผลการดำเนินการ DataActions ที่มี CreateMessageAction ดังนี้

{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
  "message": MESSAGE
}}}

แทนที่ MESSAGE ด้วยทรัพยากร Message จาก Chat API ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานของการดำเนินการได้ที่ การดำเนินการใน Chat

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

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The request object from Google Workspace add-on.
 * @param {Object} res The response object from the Chat app.
 */
exports.cymbalApp = function cymbalApp(req, res) {
  const chatEvent = req.body.chat;
  // Send an onboarding message when added to a Chat space
  if (chatEvent.addedToSpacePayload) {
    res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      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.
  """
  chat_event = request.get_json()["chat"]
  if "addedToSpacePayload" in chat_event:
    return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
      "createMessageAction": { "message": {
        "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`.'
      }}
    }}})

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 GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
    JsonNode chatEvent = event.at("/chat");
    if(!chatEvent.at("/addedToSpacePayload").isEmpty()) {
      return new GenericJson() { {
        put("hostAppDataAction", new GenericJson() { {
          put("chatDataAction", new GenericJson() { {
            put("createMessageAction", new GenericJson() { {
              put("message", 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`."
              ));
            } });
          } });
        } });
      } };
    }
  }
}

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 onAddedToSpace(event) {
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    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 ยังอัปเดตข้อความที่ส่งได้ด้วย เช่น อัปเดตข้อความหลังจากที่ผู้ใช้ส่งกล่องโต้ตอบหรือคลิกปุ่มในข้อความ

หากต้องการอัปเดตข้อความของแอป Chat ให้แสดงผลการดำเนินการ DataActions ที่มี UpdateMessageAction ดังที่แสดงใน ตัวอย่างต่อไปนี้

{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": {
  "message": MESSAGE
}}}}

แทนที่ MESSAGE ด้วยทรัพยากร Message จาก Chat API

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานของการดำเนินการได้ที่ การดำเนินการใน Chat

แอป Chat ยังอัปเดตข้อความจากผู้ใช้เพื่อแสดงตัวอย่างลิงก์ที่ผู้ใช้ส่งได้ด้วย ดูรายละเอียดได้ที่ แสดงตัวอย่างลิงก์ในข้อความ Google Chat

ตอบกลับการโต้ตอบหรือส่งข้อความเชิงรุกโดยใช้ Google Chat API

แทนที่จะแสดงผลการดำเนินการของส่วนเสริม แอป Chat อาจต้องใช้ Google Chat API เพื่อตอบกลับการโต้ตอบ เช่น แอป Chat ต้องเรียกใช้ Google Chat API เพื่อดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  • ส่งข้อความตามกำหนดเวลา หรือเกี่ยวกับข้อมูลที่เปลี่ยนแปลงในแหล่งข้อมูลภายนอก เช่น การแจ้งเตือนเกี่ยวกับปัญหาหรือเคสใหม่
  • ตอบกลับหลังจากผ่านไปมากกว่า 30 วินาทีหลังจากการโต้ตอบ เช่น ตอบกลับด้วยข้อความหลังจากทำงานที่ใช้เวลานานเสร็จแล้ว
  • ส่งข้อความนอกพื้นที่ทำงานที่เกิดการโต้ตอบ
  • ส่งข้อความในนามของผู้ใช้ Chat

หากต้องการส่งข้อความโดยใช้ Chat API คุณต้องตั้งค่าการตรวจสอบสิทธิ์และเรียกใช้เมธอด create() ในทรัพยากร Message ดูขั้นตอนได้ที่ ส่งข้อความโดยใช้ Google Chat API