Список сообщений

В этом руководстве объясняется, как использовать метод list() в ресурсе Message API Google Chat для просмотра постраничного фильтруемого списка сообщений в чате.

В API чата сообщение чата представлено ресурсом Message . Хотя пользователи чата могут отправлять только текстовые сообщения, приложения чата могут использовать множество других функций обмена сообщениями, включая отображение статических или интерактивных пользовательских интерфейсов, сбор информации от пользователей и частную доставку сообщений. Подробнее о функциях обмена сообщениями, доступных в API чата, см. в обзоре сообщений Google Chat .

Предпосылки

Node.js

Питон

Ява

Скрипт приложений

Список сообщений от имени пользователя

Чтобы вывести список сообщений с аутентификацией пользователя , передайте в запрос следующее:

  • Укажите область авторизации chat.messages.readonly или chat.messages .
  • Вызовите метод ListMessages() .

В следующем примере перечислены сообщения в чат-пространстве:

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);   } }  main().catch(console.error);

Питон

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()

Ява

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));       }     }   } }

Скрипт приложений

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) {       responsePage.messages.forEach((message) => console.log(message));     }     // Update the page token to the next one     pageToken = responsePage.nextPageToken;   } while (pageToken); }

Чтобы запустить этот пример, замените SPACE_NAME на идентификатор из поля name пространства. Идентификатор можно получить, вызвав метод ListSpaces() или перейдя по URL-адресу пространства.

API чата возвращает список сообщений, отправленных в указанном пространстве. Если в запросе нет сообщений, ответ API чата возвращает пустой объект. При использовании интерфейса REST/HTTP ответ содержит пустой JSON-объект {} .

Список сообщений в виде чат-приложения

Аутентификация приложения требует однократного одобрения администратора .

Чтобы вывести список сообщений из пространства с аутентификацией приложения с помощью Chat REST API , передайте в запросе следующее:

  • Укажите одну из следующих областей авторизации:
    • https://www.googleapis.com/auth/chat.app.messages.readonly
  • Вызовите метод list для ресурса messages .
  • Передайте name пространства, из которого необходимо вывести список сообщений.

Создать ключ API

Для вызова метода API Developer Preview необходимо использовать закрытую версию документа API Discovery, доступную для разработчиков. Для аутентификации запроса необходимо передать ключ API.

Чтобы создать ключ API, откройте проект Google Cloud вашего приложения и выполните следующие действия:

  1. В консоли Google Cloud перейдите в > API и службы > Учетные данные .

    Перейти к учетным данным

  2. Нажмите Создать учетные данные > Ключ API .
  3. Отобразится ваш новый ключ API.
    • Нажмите «Копировать , чтобы скопировать ключ API для использования в коде вашего приложения. Ключ API также можно найти в разделе «Ключи API» учётных данных вашего проекта.
    • Чтобы предотвратить несанкционированное использование, мы рекомендуем ограничить, где и для каких API можно использовать ключ API. Подробнее см. в разделе «Добавление ограничений API» .

Напишите скрипт, который вызывает Chat API

Вот как вывести список сообщений с аутентификацией приложения и API REST чата :

Питон

  1. В рабочем каталоге создайте файл с именем chat_messages_list_app.py .
  2. Включите следующий код в 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, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')      # 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. В коде замените следующее:

    • API_KEY : ключ API, созданный вами для создания конечной точки службы для API чата.

    • SPACE_NAME : имя пространства, которое можно получить из метода spaces.list в API чата или из URL-адреса пространства.

  4. В вашем рабочем каталоге соберите и запустите пример:

    python3 chat_messages_list_app.py

API чата возвращает список сообщений, отправленных в указанном пространстве. Если в запросе нет сообщений, ответ API чата возвращает пустой объект. При использовании интерфейса REST/HTTP ответ содержит пустой JSON-объект {} .