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

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

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

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

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

Предпосылки

Node.js

Питон

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

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

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

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 чата возвращает постраничный список событий в пространстве, касающихся новых участников и сообщений.

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

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

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

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

Создать ключ 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_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.readonly` 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.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces"]
    
    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, 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().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. В коде замените следующее:

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

    python3 chat_spaceevents_list_app.py

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