Gửi tin nhắn trên Google Chat

Trang này giải thích cách các ứng dụng trong Google Chat có thể gửi tin nhắn để phản hồi các lượt tương tác của người dùng.

  • Biểu mẫu liên hệ từ lệnh dấu gạch chéo.
    Hình 1. Một ứng dụng trong Chat phản hồi lệnh dấu gạch chéo bằng một tin nhắn văn bản và nút.
  • Biểu mẫu liên hệ trong hộp thoại.
    Hình 2. Một ứng dụng trong Chat mở một hộp thoại để người dùng có thể nhập thông tin.
  • Thông báo trên thẻ có các tiện ích nhập dữ liệu biểu mẫu.
    Hình 5. Một ứng dụng trong Chat gửi một tin nhắn có văn bản và thẻ tương tác.

Điều kiện tiên quyết

HTTP

Một tiện ích bổ sung của Google Workspace giúp mở rộng Google Chat. Để tạo một tiện ích bổ sung, hãy hoàn tất hướng dẫn bắt đầu nhanh về HTTP.

Apps Script

Một tiện ích bổ sung của Google Workspace giúp mở rộng Google Chat. Để tạo một tiện ích bổ sung, hãy hoàn tất hướng dẫn bắt đầu nhanh về Apps Script.

Thiết kế tin nhắn

Các ứng dụng trong Chat có thể bao gồm bất kỳ nội dung nào sau đây trong một tin nhắn:

  • Văn bản có chứa siêu liên kết, lượt đề cập bằng @ và biểu tượng cảm xúc.
  • Một hoặc nhiều thẻ có thể xuất hiện trong một tin nhắn hoặc mở trong một cửa sổ mới dưới dạng hộp thoại.
  • Một hoặc nhiều tiện ích bổ sung, là các nút xuất hiện sau bất kỳ văn bản hoặc thẻ nào trong một tin nhắn.

Để tìm hiểu về cách thiết kế tin nhắn, hãy xem tài liệu sau đây về API Google Chat:

Trả lời bằng tin nhắn

Các ứng dụng trong Chat có thể phản hồi bằng một tin nhắn cho bất kỳ trình kích hoạt hoặc lượt tương tác nào sau đây:

  • Trình kích hoạtTin nhắn, chẳng hạn như khi người dùng đề cập bằng @hoặc gửi tin nhắn trực tiếp cho một ứng dụng trong Chat.
  • Trình kích hoạt Đã thêm vào không gian, chẳng hạn như khi người dùng cài đặt ứng dụng trong Chat từ Google Workspace Marketplace hoặc thêm ứng dụng đó vào một không gian.
  • Lượt nhấp vào nút trên thẻ trong tin nhắn hoặc hộp thoại. Ví dụ: khi người dùng nhập thông tin và nhấp vào nút gửi.

Nếu không, các ứng dụng trong Chat có thể chủ động gửi tin nhắn bằng cách gọi API Google Chat.

Để trả lời bằng một tin nhắn, hãy trả về thao tác DataActions bằng đối tượng CreateMessageAction:

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

Thay thế MESSAGE bằng tài nguyên Message từ API Chat. Để tìm hiểu thêm về cách hoạt động của các thao tác, hãy xem bài viết Thao tác trong Chat.

Trong ví dụ sau, một ứng dụng trong Chat tạo và gửi một tin nhắn văn bản bất cứ khi nào ứng dụng đó được thêm vào một không gian. Để gửi một tin nhắn văn bản khi người dùng thêm ứng dụng trong Chat của bạn vào một không gian, ứng dụng trong Chat của bạn sẽ phản hồi trình kích hoạt Đã thêm vào không gian bằng cách trả về thao tác 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`.'
  }}}}};
}

Mã mẫu trả về tin nhắn văn bản sau:

Ví dụ về thông báo giới thiệu.

Để xem thêm các ví dụ về cách phản hồi bằng một tin nhắn, hãy xem các hướng dẫn sau:

Cập nhật tin nhắn

Các ứng dụng trong Chat cũng có thể cập nhật tin nhắn mà chúng gửi. Ví dụ: để cập nhật một tin nhắn sau khi người dùng gửi một hộp thoại hoặc nhấp vào một nút trong tin nhắn.

Để cập nhật một tin nhắn của ứng dụng trong Chat, hãy trả về thao tác DataActions bằng UpdateMessageAction, như minh hoạ trong ví dụ sau:

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

Thay thế MESSAGE bằng tài nguyên Message từ API Chat.

Để tìm hiểu thêm về cách hoạt động của các thao tác, hãy xem bài viết Thao tác trong Chat.

Các ứng dụng trong Chat cũng có thể cập nhật một tin nhắn của người dùng để trả về bản xem trước của một đường liên kết mà họ đã gửi. Để biết thông tin chi tiết, hãy xem bài viết Xem trước đường liên kết trong tin nhắn Google Chat.

Trả lời các lượt tương tác hoặc gửi tin nhắn chủ động bằng API Google Chat

Thay vì trả về một thao tác của tiện ích bổ sung, các ứng dụng trong Chat có thể cần sử dụng API Google Chat để phản hồi một lượt tương tác. Ví dụ: các ứng dụng trong Chat phải gọi API Google Chat để thực hiện bất kỳ thao tác nào sau đây:

  • Gửi tin nhắn theo lịch hoặc về những thay đổi đối với các tài nguyên bên ngoài. Ví dụ: thông báo về một vấn đề hoặc trường hợp mới.
  • Trả lời sau hơn 30 giây kể từ khi có lượt tương tác. Ví dụ: để phản hồi bằng một tin nhắn sau khi hoàn tất một tác vụ chạy trong thời gian dài.
  • Gửi một tin nhắn bên ngoài không gian nơi diễn ra lượt tương tác.
  • Gửi một tin nhắn thay mặt cho một người dùng Chat.

Để gửi một tin nhắn bằng API Chat, bạn phải thiết lập quy trình xác thực và gọi phương thức create() trên tài nguyên Message. Để xem các bước, hãy tham khảo bài viết Gửi tin nhắn bằng API Google Chat.