Nhận và phản hồi các sự kiện tương tác

Trang này mô tả cách ứng dụng Google Chat của bạn có thể nhận và phản hồi các hoạt động tương tác của người dùng, còn được gọi là sự kiện tương tác của ứng dụng Google Chat.

Trang này mô tả cách thực hiện những việc sau:

  • Định cấu hình ứng dụng Chat để nhận các sự kiện tương tác.
  • Xử lý sự kiện tương tác trên cơ sở hạ tầng của bạn.
  • Nếu thích hợp, hãy phản hồi các sự kiện tương tác.

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

Các loại sự kiện tương tác

Sự kiện tương tác của ứng dụng Google Chat biểu thị mọi hành động mà người dùng thực hiện để gọi hoặc tương tác với một ứng dụng Chat, chẳng hạn như @đề cập đến một ứng dụng Chat hoặc thêm ứng dụng đó vào một không gian.

Khi người dùng tương tác với một ứng dụng Chat, Google Chat sẽ gửi cho ứng dụng Chat đó một sự kiện tương tác, được biểu thị dưới dạng loại Event trong Chat API. Ứng dụng Chat có thể sử dụng sự kiện này để xử lý hoạt động tương tác và tuỳ ý phản hồi bằng một tin nhắn.

Đối với mỗi loại tương tác của người dùng, Google Chat sẽ gửi một loại sự kiện tương tác khác. Điều này giúp ứng dụng Chat của bạn xử lý từng loại sự kiện cho phù hợp. Loại sự kiện tương tác được biểu thị bằng đối tượng eventType.

Ví dụ: Google Chat sử dụng loại sự kiện ADDED_TO_SPACE cho mọi hoạt động tương tác khi người dùng thêm ứng dụng Chat vào một không gian, để ứng dụng Chat có thể ngay lập tức trả lời bằng một thông báo chào mừng trong không gian đó.

Ứng dụng trò chuyện đăng một tin nhắn chào mừng.
Hình 1: Khi người dùng thêm một ứng dụng Chat vào một không gian, ứng dụng Chat sẽ nhận được một sự kiện tương tác ADDED_TO_SPACE mà ứng dụng Chat xử lý để gửi một thông báo chào mừng trong không gian.

Bảng sau đây cho biết các hoạt động tương tác phổ biến của người dùng, loại sự kiện tương tác mà ứng dụng Chat nhận được và cách ứng dụng Chat thường phản hồi:

Tương tác với người dùng eventType Câu trả lời thông thường của ứng dụng Chat
Người dùng nhắn tin cho một ứng dụng Chat. Ví dụ: @đề cập đến ứng dụng Chat hoặc sử dụng lệnh dấu gạch chéo. MESSAGE Ứng dụng Chat sẽ phản hồi dựa trên nội dung của tin nhắn. Ví dụ: một ứng dụng Chat sẽ trả lời lệnh dấu gạch chéo /about bằng một tin nhắn giải thích những việc mà ứng dụng Chat có thể làm.
Người dùng thêm một ứng dụng Chat vào một không gian. ADDED_TO_SPACE Ứng dụng Chat sẽ gửi một tin nhắn giới thiệu giải thích chức năng của ứng dụng và cách người dùng trong không gian có thể tương tác với ứng dụng.
Người dùng xoá một ứng dụng Chat khỏi không gian. REMOVED_FROM_SPACE Ứng dụng Chat sẽ xoá mọi thông báo đến được định cấu hình cho không gian (chẳng hạn như xoá webhook) và xoá mọi bộ nhớ trong.
Người dùng nhấp vào một nút trên thẻ trong tin nhắn, hộp thoại hoặc trang chủ của ứng dụng Chat. CARD_CLICKED Ứng dụng Chat sẽ xử lý và lưu trữ mọi dữ liệu mà người dùng đã gửi hoặc trả về một thẻ khác.
Người dùng mở trang chủ của ứng dụng Chat bằng cách nhấp vào thẻ Trang chủ trong tin nhắn 1:1. APP_HOME Ứng dụng Chat trả về một thẻ tĩnh hoặc thẻ tương tác trên trang chủ.
Người dùng gửi biểu mẫu từ trang chủ của ứng dụng Chat. SUBMIT_FORM Ứng dụng Chat sẽ xử lý và lưu trữ mọi dữ liệu mà người dùng đã gửi hoặc trả về một thẻ khác.
Người dùng gọi một lệnh bằng cách sử dụng lệnh nhanh. APP_COMMAND Ứng dụng Chat sẽ phản hồi dựa trên lệnh đã được gọi. Ví dụ: một ứng dụng Chat sẽ trả lời lệnh Giới thiệu bằng một tin nhắn giải thích những việc mà ứng dụng Chat có thể làm.

Để xem tất cả các sự kiện tương tác được hỗ trợ, hãy xem tài liệu tham khảo về EventType.

Sự kiện tương tác từ hộp thoại

Nếu ứng dụng Chat của bạn mở hộp thoại, thì sự kiện tương tác sẽ chứa thông tin bổ sung sau đây mà bạn có thể dùng để xử lý phản hồi:

  • isDialogEvent được đặt thành true.
  • DialogEventType làm rõ liệu hoạt động tương tác có kích hoạt hộp thoại mở, gửi thông tin từ hộp thoại hay đóng hộp thoại hay không.

Bảng sau đây cho thấy các hoạt động tương tác thường gặp với hộp thoại, các loại sự kiện hộp thoại tương ứng và nội dung mô tả về cách các ứng dụng Chat thường phản hồi:

Tương tác của người dùng với hộp thoại Loại sự kiện hộp thoại Câu trả lời thông thường
Người dùng kích hoạt một yêu cầu hộp thoại. Ví dụ: họ sử dụng lệnh dấu gạch chéo hoặc nhấp vào một nút trong tin nhắn. REQUEST_DIALOG Ứng dụng Chat sẽ mở hộp thoại này.
Người dùng gửi thông tin trong hộp thoại bằng cách nhấp vào một nút. SUBMIT_DIALOG Ứng dụng Chat sẽ chuyển đến một hộp thoại khác hoặc đóng hộp thoại để hoàn tất lượt tương tác.
Người dùng thoát hoặc đóng hộp thoại trước khi gửi thông tin. CANCEL_DIALOG Không bắt buộc, ứng dụng Chat có thể phản hồi bằng một tin nhắn mới hoặc cập nhật tin nhắn hoặc thẻ mà người dùng đã mở hộp thoại.

Để biết thêm thông tin, hãy xem bài viết Mở hộp thoại tương tác.

Nhận sự kiện tương tác trên ứng dụng Chat

Phần này mô tả cách nhận và xử lý các sự kiện tương tác cho ứng dụng Chat của bạn.

Định cấu hình ứng dụng Chat để nhận sự kiện tương tác

Không phải ứng dụng Chat nào cũng có tính tương tác. Ví dụ: webhook đến chỉ có thể gửi tin nhắn đi và không thể phản hồi người dùng. Nếu đang tạo một ứng dụng Chat tương tác, bạn phải chọn một điểm cuối cho phép ứng dụng Chat của bạn nhận, xử lý và phản hồi các sự kiện tương tác. Để tìm hiểu thêm về cách thiết kế ứng dụng Chat, hãy xem bài viết Cấu trúc triển khai ứng dụng Chat.

Đối với mỗi tính năng tương tác mà bạn muốn tạo, bạn phải cập nhật cấu hình trong Chat API để Google Chat có thể gửi các sự kiện tương tác có liên quan đến ứng dụng Chat của bạn:

  1. Trong Google Cloud Console, hãy chuyển đến trang Chat API rồi nhấp vào trang Configuration (Cấu hình):

    Chuyển đến trang Cấu hình Chat API

  2. Trong mục Tính năng tương tác, hãy xem xét các chế độ cài đặt và cập nhật dựa trên những tính năng mà bạn muốn xây dựng:

    Trường Mô tả
    Chức năng Bắt buộc. Một tập hợp các trường xác định cách ứng dụng Chat có thể tương tác với người dùng. Theo mặc định, người dùng có thể tìm thấy và nhắn tin trực tiếp cho ứng dụng Chat trong Google Chat.
    • Tham gia không gian và cuộc trò chuyện nhóm: Người dùng có thể thêm ứng dụng Chat vào không gian và cuộc trò chuyện nhóm.
    Chế độ cài đặt kết nối Bắt buộc. Điểm cuối của ứng dụng Chat, là một trong những điểm cuối sau:
    • URL điểm cuối HTTP: Một điểm cuối HTTPS lưu trữ việc triển khai ứng dụng Chat.
    • Apps Script: Mã triển khai cho một dự án Apps Script triển khai ứng dụng Chat.
    • Tên chủ đề Cloud Pub/Sub: Một chủ đề Pub/Sub mà ứng dụng Chat đăng ký làm điểm cuối.
    • Dialogflow: Đăng ký ứng dụng Chat bằng một chế độ tích hợp Dialogflow. Để biết thêm thông tin, hãy xem bài viết Tạo một ứng dụng Dialogflow trên Google Chat có thể hiểu ngôn ngữ tự nhiên.
    Lệnh Không bắt buộc. Lệnh dấu gạch chéo và lệnh nhanh cho ứng dụng Chat. Lệnh cho phép người dùng yêu cầu một hành động hoặc sử dụng một tính năng cụ thể của ứng dụng Chat. Để biết thêm thông tin, hãy xem phần Phản hồi các lệnh của ứng dụng Google Chat.
    Bản xem trước đường liên kết Không bắt buộc. Các mẫu URL mà ứng dụng Chat nhận dạng và cung cấp nội dung bổ sung khi người dùng gửi đường liên kết. Để biết thêm thông tin, hãy xem bài viết Xem trước đường liên kết.
    Chế độ hiển thị Không bắt buộc. Tối đa 5 cá nhân hoặc một hoặc nhiều nhóm trên Google có thể xem và cài đặt ứng dụng Chat của bạn. Hãy dùng trường này để kiểm thử ứng dụng Chat hoặc chia sẻ ứng dụng Chat với nhóm của bạn. Để biết thêm thông tin, hãy xem bài viết Kiểm thử các tính năng tương tác.
  3. Nhấp vào Lưu. Khi bạn lưu cấu hình ứng dụng Chat, ứng dụng Chat của bạn sẽ có sẵn cho những người dùng được chỉ định trong tổ chức Google Workspace của bạn.

Ứng dụng Chat của bạn hiện đã được định cấu hình để nhận các sự kiện tương tác từ Google Chat.

Xử lý các lần thử lại lệnh gọi HTTP cho dịch vụ của bạn

Nếu yêu cầu HTTPS đến dịch vụ của bạn không thành công (chẳng hạn như hết thời gian chờ, lỗi mạng tạm thời hoặc mã trạng thái HTTPS không phải 2xx), thì Google Chat có thể thử lại việc gửi vài lần trong vòng vài phút (nhưng không đảm bảo). Do đó, ứng dụng trò chuyện có thể nhận được cùng một thông báo vài lần trong một số trường hợp. Nếu yêu cầu hoàn tất thành công nhưng trả về tải trọng thông báo không hợp lệ, thì Google Chat sẽ không thử lại yêu cầu.

Xử lý hoặc phản hồi các sự kiện tương tác

Phần này giải thích cách các ứng dụng Google Chat có thể xử lý và phản hồi các sự kiện tương tác.

Sau khi nhận được một sự kiện tương tác từ Google Chat, ứng dụng Chat của bạn có thể phản hồi theo nhiều cách. Trong nhiều trường hợp, các ứng dụng Chat tương tác sẽ trả lời người dùng bằng một tin nhắn. Ứng dụng Google Chat cũng có thể tra cứu một số thông tin từ nguồn dữ liệu, ghi lại thông tin về sự kiện tương tác hoặc bất kỳ thông tin nào khác. Hành vi xử lý này về cơ bản là những gì xác định ứng dụng Google Chat.

Để phản hồi đồng bộ, một ứng dụng Chat phải phản hồi trong vòng 30 giây và phản hồi phải được đăng trong không gian nơi xảy ra hoạt động tương tác. Nếu không, ứng dụng Chat có thể phản hồi không đồng bộ.

Đối với mỗi sự kiện tương tác, các ứng dụng Chat sẽ nhận được một nội dung yêu cầu, đây là tải trọng JSON đại diện cho sự kiện. Bạn có thể dùng thông tin này để xử lý phản hồi. Để xem ví dụ về tải trọng sự kiện, hãy xem Các loại sự kiện tương tác của ứng dụng Chat.

Sơ đồ sau đây minh hoạ cách ứng dụng Google Chat thường xử lý hoặc phản hồi các loại sự kiện tương tác:

Cấu trúc về cách các ứng dụng Google Chat xử lý các sự kiện tương tác.

Trả lời theo thời gian thực

Các sự kiện tương tác cho phép ứng dụng Chat phản hồi theo thời gian thực hoặc đồng bộ. Các phản hồi đồng bộ không yêu cầu xác thực.

Để phản hồi theo thời gian thực, ứng dụng Chat phải trả về một đối tượng Message. Để trả lời bằng tin nhắn trong không gian, đối tượng Message có thể chứa các đối tượng text, cardsV2accessoryWidgets. Để sử dụng với các loại phản hồi khác, hãy xem các hướng dẫn sau:

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

Trong ví dụ này, ứng dụng Chat của bạn sẽ tạo và gửi 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. Để tìm hiểu về các phương pháp hay nhất để giới thiệu cho người dùng, hãy xem bài viết Giới thiệu cho người dùng về ứng dụng Chat của bạn.

Để gửi tin nhắn văn bản khi người dùng thêm ứng dụng Chat của bạn vào một không gian, ứng dụng Chat của bạn sẽ phản hồi một ADDED_TO_SPACE sự kiện tương tác. Để phản hồi các sự kiện tương tác ADDED_TO_SPACE bằng tin nhắn văn bản, hãy sử dụng đoạn mã sau:

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. An onboarding message that
 * introduces the app and helps people get started with it.
 */
exports.onMessage = function onMessage(req, res) {
  if (req.method === 'GET' || !req.body.message) {
    res.send(
      'Hello! This function is meant to be used in a Google Chat space.');
  }

  // 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`.'
    });
  }
};

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. An onboarding message that
 * introduces the app and helps people get started with it.
 */
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`.'
  }
}

Mã mẫu trả về thông báo văn bản sau:

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

Phản hồi không đồng bộ

Đôi khi, các ứng dụng trò chuyện phải phản hồi một sự kiện tương tác sau 30 giây hoặc thực hiện các tác vụ bên ngoài không gian nơi sự kiện tương tác được tạo. Ví dụ: một ứng dụng Trò chuyện có thể cần phản hồi người dùng sau khi hoàn tất một tác vụ chạy trong thời gian dài. Trong trường hợp này, các ứng dụng Chat có thể phản hồi không đồng bộ bằng cách gọi Google Chat API.

Để tạo tin nhắn bằng API Chat, hãy xem phần Tạo tin nhắn. Để xem hướng dẫn về cách sử dụng các phương thức bổ sung của Chat API, hãy xem Tổng quan về Chat API.