Trả lời lệnh của ứng dụng Google Chat

Trang này giải thích cách thiết lập và phản hồi các lệnh dưới dạng ứng dụng Google Chat.

Lệnh giúp người dùng khám phá và sử dụng các tính năng chính của ứng dụng Chat. Chỉ ứng dụng Chat mới có thể xem nội dung của lệnh. Ví dụ: nếu người dùng gửi tin nhắn có lệnh gạch chéo, thì chỉ người dùng và ứng dụng Chat mới thấy được tin nhắn đó.

Để quyết định xem bạn có nên tạo lệnh hay không và để hiểu cách thiết kế các lượt tương tác của người dùng, hãy xem phần Xác định tất cả hành trình của người dùng.

Các loại lệnh trong ứng dụng Chat

Bạn có thể tạo lệnh cho ứng dụng Chat dưới dạng lệnh dấu gạch chéo hoặc lệnh nhanh. Để khám phá và sử dụng từng loại lệnh, người dùng làm như sau:
  1. Lệnh dấu gạch chéo: Người dùng gửi lệnh dưới dạng tin nhắn bằng cách nhập dấu gạch chéo (/) rồi nhập văn bản được xác định trước, chẳng hạn như /about. Ứng dụng trò chuyện cũng có thể yêu cầu văn bản đối số cho lệnh gạch chéo. Ví dụ: lệnh gạch chéo /search có thể yêu cầu văn bản đối số được dùng cho cụm từ tìm kiếm.
  2. Lệnh nhanh: Người dùng sử dụng lệnh bằng cách mở trình đơn từ khu vực trả lời của tin nhắn Chat. Để sử dụng một lệnh, họ nhấp vào biểu tượng Thêm rồi chọn một lệnh trong trình đơn.
Các hình ảnh sau đây cho thấy cách người dùng khám phá trình đơn gồm các lệnh dấu gạch chéo và lệnh nhanh:
  • Người dùng khám phá các lệnh dấu gạch chéo.
    Hình 1. Người dùng khám phá và sử dụng các lệnh dấu gạch chéo bằng cách nhập dấu gạch chéo / vào phần trả lời, theo sau là tên của lệnh.
  • Người dùng xem các lệnh nhanh trong trình đơn.
    Hình 2. Người dùng khám phá và sử dụng các lệnh nhanh trong trình đơn ở khu vực trả lời của tin nhắn trong Chat.

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

Ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn tất hướng dẫn bắt đầu nhanh này.

Ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat có thể tương tác trong Apps Script, hãy hoàn thành hướng dẫn nhanh này.

Ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn tất hướng dẫn bắt đầu nhanh này.

Ứng dụng Google Chat đã bật các tính năng tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn tất hướng dẫn bắt đầu nhanh này.

Thiết lập lệnh

Phần này giải thích cách hoàn tất các bước sau để thiết lập lệnh:

  1. Tạo tên và nội dung mô tả cho lệnh.
  2. Định cấu hình lệnh trong Google Cloud Console.

Đặt tên và mô tả lệnh

Tên của lệnh là nội dung mà người dùng nhập hoặc chọn để gọi ứng dụng Chat. Một nội dung mô tả ngắn cũng xuất hiện bên dưới tên để nhắc người dùng thêm về cách sử dụng lệnh:

Tên và nội dung mô tả lệnh dấu gạch chéo
Hình 3: Tên và nội dung mô tả cho một lệnh dấu gạch chéo.

Khi chọn tên và nội dung mô tả cho lệnh, hãy cân nhắc những đề xuất sau:

Cách đặt tên cho lệnh:

  • Sử dụng các từ hoặc cụm từ ngắn gọn, mô tả và có thể hành động để người dùng hiểu rõ các lệnh. Ví dụ: thay vì tên Create a reminder, hãy sử dụng Remind me.
  • Cân nhắc sử dụng tên riêng biệt hoặc phổ biến cho lệnh của bạn. Nếu lệnh của bạn mô tả một tính năng hoặc hoạt động tương tác thông thường, bạn có thể sử dụng một tên phổ biến mà người dùng nhận ra và mong đợi, chẳng hạn như Settings hoặc Feedback. Nếu không, hãy cố gắng sử dụng tên lệnh riêng biệt, vì nếu tên lệnh của bạn giống với các ứng dụng Chat khác, thì người dùng phải lọc qua các lệnh tương tự để tìm và sử dụng lệnh của bạn.

Cách mô tả một lệnh:

  • Hãy giữ cho nội dung mô tả ngắn gọn và rõ ràng để người dùng biết những gì sẽ xảy ra khi sử dụng lệnh.
  • Thông báo cho người dùng biết nếu có yêu cầu định dạng nào đối với lệnh. Ví dụ: nếu bạn tạo một lệnh gạch chéo yêu cầu văn bản đối số, hãy đặt nội dung mô tả thành một nội dung như Remind me to do [something] at [time].
  • Cho người dùng biết liệu ứng dụng Chat có trả lời tất cả mọi người trong không gian hay chỉ trả lời riêng cho người dùng gọi lệnh. Ví dụ: đối với lệnh nhanh About, bạn có thể mô tả lệnh này là Learn about this app (Only visible to you).

Định cấu hình lệnh trong Google Cloud Console

Để tạo lệnh nhanh hoặc dấu gạch chéo, bạn chỉ định thông tin về lệnh đó trong cấu hình của ứng dụng Chat cho API Google Chat.

Để định cấu hình một lệnh trong API Google Chat, hãy hoàn tất các bước sau:

  1. Trong Google Cloud Console, hãy nhấp vào biểu tượng Trình đơn > API và Dịch vụ > API và Dịch vụ đã bật > Google Chat API

    Chuyển đến trang API Google Chat

  2. Nhấp vào Cấu hình.

  3. Trong phần Lệnh, hãy nhấp vào Thêm lệnh.

  4. Nhập mã lệnh, tên, nội dung mô tả và loại lệnh cho lệnh:

    • Mã lệnh: một số từ 1 đến 1000 mà ứng dụng Chat của bạn sử dụng để nhận dạng lệnh và trả về phản hồi.
    • Name (Tên): tên hiển thị của lệnh. Tên có thể chứa tối đa 50 ký tự và có thể bao gồm cả ký tự đặc biệt.
    • Mô tả: văn bản mô tả chức năng của lệnh. Nội dung mô tả có thể chứa tối đa 50 ký tự và có thể bao gồm các ký tự đặc biệt.
    • Loại lệnh: chọn Lệnh nhanh hoặc Lệnh gạch chéo.
    • Nếu bạn đang định cấu hình lệnh gạch chéo, hãy nhập một giá trị cho trường Tên lệnh gạch chéo để chỉ định nội dung người dùng nhập để gọi lệnh. Phải bắt đầu bằng dấu gạch chéo, chỉ chứa văn bản và có thể dài tối đa 50 ký tự. Ví dụ: /remindMe.
  5. Không bắt buộc: Nếu bạn muốn ứng dụng Chat phản hồi lệnh bằng một hộp thoại, hãy chọn hộp đánh dấu Mở hộp thoại.

  6. Nhấp vào Lưu.

Lệnh này hiện đã được định cấu hình cho ứng dụng Chat.

Phản hồi lệnh

Khi người dùng sử dụng một lệnh, ứng dụng Chat sẽ nhận được một sự kiện tương tác. Trọng tải sự kiện chứa siêu dữ liệu với thông tin chi tiết về lệnh đã được gọi (bao gồm cả mã lệnh và loại lệnh) để bạn có thể trả về phản hồi thích hợp.

Tin nhắn riêng tư cho ứng dụng Chat của Cymbal Labs. Tin nhắn cho biết ứng dụng Chat do Cymbal Labs tạo và chia sẻ một đường liên kết đến tài liệu cũng như một đường liên kết để liên hệ với nhóm hỗ trợ.
Ứng dụng Chat phản hồi riêng tư lệnh gạch chéo /help để giải thích cách yêu cầu hỗ trợ.

Để phản hồi từng loại lệnh, bạn phải xử lý nhiều loại sự kiện và đối tượng siêu dữ liệu trong tải trọng sự kiện:

Loại lệnh Loại sự kiện Siêu dữ liệu về lệnh
Lệnh dấu gạch chéo MESSAGE message.slashCommand hoặc message.annotation.slashCommand
Lệnh nhanh APP_COMMAND appCommandMetadata

Để tìm hiểu cách trả lời một lệnh bằng thông báo, hãy xem các phần sau.

Phản hồi lệnh dấu gạch chéo

Mã sau đây cho thấy ví dụ về một ứng dụng Chat trả lời lệnh gạch chéo /about. Ứng dụng Chat xử lý các sự kiện tương tác MESSAGE, phát hiện xem sự kiện tương tác có chứa mã lệnh trùng khớp hay không và trả về một tin nhắn riêng tư:

node/avatar-app/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}
apps-script/avatar-app/avatar-app.gs
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}
python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}
java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

Thay thế ABOUT_COMMAND_ID bằng mã lệnh mà bạn đã chỉ định khi định cấu hình lệnh trong Google Cloud Console.

Phản hồi lệnh nhanh

Mã sau đây cho thấy ví dụ về một ứng dụng Chat trả lời lệnh nhanh Help (Trợ giúp). Ứng dụng Chat xử lý các sự kiện tương tác APP_COMMAND, phát hiện xem sự kiện tương tác có chứa mã lệnh trùng khớp hay không và trả về một tin nhắn riêng tư:

node/avatar-app/index.js
/**
 * Handles slash and quick commands.
 *
 * @param {Object} event - The Google Chat event.
 * @param {Object} res - The HTTP response object.
 */
function handleAppCommands(event, res) {
  const {appCommandId, appCommandType} = event.appCommandMetadata;

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
    case HELP_COMMAND_ID:
      return res.send({
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      });
  }
}
apps-script/avatar-app/avatar-app.gs
// Checks for the presence of a slash command in the message.
if (event.message.slashCommand) {
  // Executes the slash command logic based on its ID.
  // Slash command IDs are set in the Google Chat API configuration.
  switch (event.message.slashCommand.commandId) {
    case ABOUT_COMMAND_ID:
      return {
        privateMessageViewer: event.user,
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}
python/avatar-app/main.py
def handle_app_commands(event: Mapping[str, Any]) -> Mapping[str, Any]:
    """Handles slash and quick commands.

    Args:
        Mapping[str, Any] event: The Google Chat event.

    Returns:
        Mapping[str, Any]: the response
    """
    app_command_id = event["appCommandMetadata"]["appCommandId"]

    if app_command_id == ABOUT_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    elif app_command_id == HELP_COMMAND_ID:
        return {
            "privateMessageViewer": event["user"],
            "text": "The Avatar app replies to Google Chat messages.",
        }
    return {}
java/avatar-app/src/main/java/AvatarApp.java
/**
 * Handles slash and quick commands.
 *
 * @param event    The Google Chat event.
 * @param response The HTTP response object.
 */
private void handleAppCommands(JsonObject event, HttpResponse response) throws Exception {
  int appCommandId = event.getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt();

  switch (appCommandId) {
    case ABOUT_COMMAND_ID:
      Message aboutMessage = new Message();
      aboutMessage.setText("The Avatar app replies to Google Chat messages.");
      aboutMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(aboutMessage));
      return;
    case HELP_COMMAND_ID:
      Message helpMessage = new Message();
      helpMessage.setText("The Avatar app replies to Google Chat messages.");
      helpMessage.setPrivateMessageViewer(new User()
          .setName(event.getAsJsonObject("user").get("name").getAsString()));
      response.getWriter().write(gson.toJson(helpMessage));
      return;
  }
}

Thay thế HELP_COMMAND_ID bằng mã lệnh mà bạn đã chỉ định khi định cấu hình lệnh trong Google Cloud Console.

Kiểm thử lệnh

Để kiểm thử lệnh và mã, hãy xem phần Kiểm thử các tính năng tương tác cho ứng dụng Google Chat.

Để tìm hiểu cách kiểm thử và sử dụng lệnh trong giao diện người dùng Chat, hãy xem phần Sử dụng ứng dụng trong Google Chat trong tài liệu Trợ giúp của Google Chat.