Получение списка событий из чата Google

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

Ресурс SpaceEvent представляет собой изменение целевого пространства, включая дочерние ресурсы этого пространства, такие как сообщения, реакции и членство. Для получения дополнительной информации о списке поддерживаемых типов событий и полезных нагрузок событий см. поля eventType и payload в справочной документации по ресурсу SpaceEvent .

Вы можете перечислить события за период до 28 дней до момента запроса. Сервер возвращает события, содержащие самую последнюю версию затронутого ресурса. Например, если вы перечисляете события о новых участниках пространства, сервер возвращает ресурсы Membership , содержащие последние сведения о членстве. Если новые участники были удалены в течение запрошенного периода, полезная нагрузка события будет содержать пустой ресурс Membership .

Для отображения событий из пространства авторизованный пользователь или приложение чата должны быть участниками этого пространства.

Предварительные требования

Node.js

Python

Список событий в пространстве (аутентификация пользователя)

Чтобы вывести список событий в чате, передайте в запросе следующее:

  • Укажите одну или несколько областей авторизации для поддержки каждого типа событий в вашем запросе. В качестве рекомендации выбирайте наиболее ограничительную область, которая при этом позволяет вашему приложению функционировать. Чтобы выбрать область, см. раздел «Обзор аутентификации и авторизации» .

  • Вызовите метод ListSpaceEvents() , передав в список filter типов событий. Необходимо указать как минимум один тип события, также можно фильтровать по дате. Список поддерживаемых типов событий см. в поле eventType справочной документации по ресурсам SpaceEvent .

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

Node.js

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

// Authorization scopes based on the event types
const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.memberships.readonly',
  'https://www.googleapis.com/auth/chat.messages.readonly',
];

// This sample shows how to list space events 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',
    // A required filter. Filters events about new memberships and messages.
    filter:
      'eventTypes:"google.workspace.chat.membership.v1.created" OR eventTypes:"google.workspace.chat.message.v1.created"',
  };

  // Make the request
  const pageResult = chatClient.listSpaceEventsAsync(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();

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

API чата возвращает список событий в пространстве, отображаемый с постраничной разбивкой, касающихся новых членств и сообщений.

Список событий в пространстве (аутентификация в чат-приложении)

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

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

  • Укажите одну или несколько областей авторизации для поддержки каждого типа событий в вашем запросе. В качестве рекомендации выбирайте наиболее ограничительную область, которая при этом позволяет вашему приложению функционировать. Более подробную информацию о выборе области см. в разделе «Обзор аутентификации и авторизации» .
    • https://www.googleapis.com/auth/chat.app.memberships
    • https://www.googleapis.com/auth/chat.app.memberships.readonly
    • https://www.googleapis.com/auth/chat.app.messages.readonly
    • https://www.googleapis.com/auth/chat.app.spaces
    • https://www.googleapis.com/auth/chat.app.spaces.readonly
  • Вызовите метод list ресурса ` spaceEvents .
  • Укажите name пространства, из которого нужно вывести список сообщений.
  • Передайте filter для запроса определенных типов событий.

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

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

Python

  1. В рабочей директории создайте файл с именем chat_spaceevents_list_app.py .
  2. Добавьте следующий код в chat_spaceevents_list_app.py :

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # Set authorization scopes based on the
    # event type. For example, if you are getting a space event
    # about a new membership, use the `chat.app.memberships` scope.
    #
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships",
              "https://www.googleapis.com/auth/chat.app.memberships.readonly",
              "https://www.googleapis.com/auth/chat.app.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces",
              "https://www.googleapis.com/auth/chat.app.spaces.readonly"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then lists space events 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().spaceEvents().list(
    
            # The space to list events 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',
    
            # A required filter. Filters events by event type.
            #
            # Update this filter to match your requirements.
            filter='eventTypes:"google.workspace.chat.message.v1.created"'
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. В коде замените следующее:

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

    python3 chat_spaceevents_list_app.py

API чата возвращает список событий в пространстве, отсортированный по страницам, касающихся новых членств и сообщений.