Liệt kê tin nhắn

Hướng dẫn này giải thích cách sử dụng list() phương thức trên tài nguyên Message của API Google Chat để xem danh sách tin nhắn có thể lọc và phân trang trong một không gian.

Trong API Chat, tin nhắn Chat được biểu thị bằng tài nguyên Message. Mặc dù người dùng Chat chỉ có thể gửi tin nhắn có chứa văn bản, nhưng ứng dụng Chat có thể sử dụng nhiều tính năng nhắn tin khác, bao gồm cả việc hiển thị giao diện người dùng tĩnh hoặc tương tác, thu thập thông tin từ người dùng và gửi tin nhắn riêng tư. Để tìm hiểu thêm về các tính năng nhắn tin có sẵn cho API Chat, hãy xem bài viết Tổng quan về tin nhắn Google Chat.

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

Node.js

Python

Java

Apps Script

Liệt kê tin nhắn với tư cách là người dùng

Để liệt kê tin nhắn bằng tính năng xác thực người dùng, hãy truyền thông tin sau trong yêu cầu:

  • Chỉ định phạm vi uỷ quyền chat.messages.readonly hoặc chat.messages.
  • Gọi ListMessages() phương thức.

Ví dụ sau đây liệt kê tin nhắn trong một phòng Chat:

Node.js

chat/client-libraries/cloud/list-messages-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.messages.readonly',
];

// This sample shows how to list messages with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
  };

  // Make the request
  const pageResult = chatClient.listMessagesAsync(request);

  // Handle the response. Iterating over pageResult will yield results
  // and resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

await main();

Python

chat/client-libraries/cloud/list_messages_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.messages.readonly"]

# This sample shows how to list messages with user credential
def list_messages_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.ListMessagesRequest(
        # Replace SPACE_NAME here
        parent = 'spaces/SPACE_NAME',
        # Number of results that will be returned at once
        page_size = 100
    )

    # Make the request
    page_result = client.list_messages(request)

    # Handle the response. Iterating over page_result will yield results and
    # resolve additional pages automatically.
    for response in page_result:
        print(response)

list_messages_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/ListMessagesUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ListMessagesRequest;
import com.google.chat.v1.ListMessagesResponse;
import com.google.chat.v1.Message;

// This sample shows how to list messages with user credential.
public class ListMessagesUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages.readonly";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      ListMessagesRequest.Builder request = ListMessagesRequest.newBuilder()
        // Replace SPACE_NAME here.
        .setParent("spaces/SPACE_NAME")
        // Number of results that will be returned at once.
        .setPageSize(10);

      // Iterate over results and resolve additional pages automatically.
      for (Message response :
          chatServiceClient.listMessages(request.build()).iterateAll()) {
        System.out.println(JsonFormat.printer().print(response));
      }
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to list messages with user credential
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.readonly'
 * referenced in the manifest file (appsscript.json).
 */
function listMessagesUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here
  const parent = "spaces/SPACE_NAME";

  // Iterate through the response pages using page tokens
  let responsePage;
  let pageToken = null;
  do {
    // Request response pages
    responsePage = Chat.Spaces.Messages.list(parent, {
      pageSize: 10,
      pageToken: pageToken,
    });
    // Handle response pages
    if (responsePage.messages) {
      for (const message of responsePage.messages) {
        console.log(message);
      }
    }
    // Update the page token to the next one
    pageToken = responsePage.nextPageToken;
  } while (pageToken);
}

Để chạy mẫu này, hãy thay thế SPACE_NAME bằng mã nhận dạng từ trường name của không gian. Bạn có thể lấy mã nhận dạng bằng cách gọi ListSpaces() phương thức hoặc từ URL của không gian.

API Chat trả về a danh sách tin nhắn được gửi trong không gian đã chỉ định. Nếu không có tin nhắn nào từ yêu cầu, thì phản hồi API Chat sẽ trả về một đối tượng trống. Khi sử dụng giao diện REST/HTTP, phản hồi sẽ chứa một đối tượng JSON trống, {}.

Liệt kê tin nhắn với tư cách là ứng dụng Chat

Tính năng xác thực ứng dụng yêu cầu quản trị viên phê duyệt một lần quản trị viên phê duyệt.

Để liệt kê tin nhắn từ một không gian bằng tính năng xác thực ứng dụng thông qua API REST Chat, hãy truyền thông tin sau trong yêu cầu:

  • Chỉ định một trong các phạm vi uỷ quyền sau:
    • https://www.googleapis.com/auth/chat.app.messages.readonly
  • Gọi phương thức list trên tài nguyên messages.
  • Truyền name của không gian để liệt kê tin nhắn.

Viết một tập lệnh gọi API Chat

Sau đây là cách liệt kê tin nhắn bằng tính năng xác thực ứng dụngAPI REST Chat:

Python

  1. Trong thư mục làm việc, hãy tạo một tệp có tên là chat_messages_list_app.py.
  2. Đưa mã sau vào chat_messages_list_app.py:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.messages.readonly"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then lists messages from a specified space.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().messages().list(
    
            # The space to list messages from.
            #
            # Replace SPACE_NAME with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE_NAME'
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Trong mã, hãy thay thế thông tin sau:

    • SPACE_NAME: tên không gian mà bạn có thể lấy từ phương thức spaces.list trong API Chat hoặc từ URL của không gian.
  4. Trong thư mục làm việc, hãy tạo và chạy mẫu:

    python3 chat_messages_list_app.py

API Chat trả về a danh sách tin nhắn được gửi trong không gian đã chỉ định. Nếu không có tin nhắn nào từ yêu cầu, thì phản hồi API Chat sẽ trả về một đối tượng trống. Khi sử dụng giao diện REST/HTTP, phản hồi sẽ chứa một đối tượng JSON trống, {}.