Импортируйте данные в Google Chat

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

Ниже приводится обзор шагов, связанных с импортом данных с использованием пространства режима импорта:

  1. Ознакомьтесь с ограничениями на использование API и планируйте заранее .
  2. Настройте авторизацию для приложения Чат .
  3. Создайте пространство в режиме импорта .
  4. Импортируйте ресурсы .
  5. Проверка импортированных ресурсов .
  6. Согласуйте различия импортированных ресурсов с исходными данными .
  7. Полный режим импорта .
  8. Создайте ресурсы членства .

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

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

Питон

  • Python 3.6 или выше
  • Инструмент управления пакетами pip
  • Новейшие клиентские библиотеки Google для Python. Чтобы установить или обновить их, выполните следующую команду в интерфейсе командной строки:

    pip3 install --upgrade google-api-python-client google-auth
    
  • Опубликованное приложение чата. Чтобы создать и опубликовать приложение Chat, см. раздел Создание приложения Google Chat .

  • Авторизация настроена для приложения Чат. Приложению Chat необходимо делегировать полномочия на уровне домена во всех доменах, в которые приложение импортирует контент, см. раздел Авторизация приложений Chat .

Ознакомьтесь с ограничениями на использование API и планируйте заранее

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

Создать пространство в режиме импорта

Чтобы создать пространство в режиме импорта, вызовите метод create ресурса Space и задайте для importMode значение true . Чтобы сохранить время создания эквивалентного объекта пространства из исходной платформы обмена сообщениями, вы можете установить createTime пространства. Для этого createTime должно быть установлено значение между 1 января 2000 года и настоящим временем.

Запишите name создаваемого вами пространства, чтобы можно было ссылаться на него на последующих этапах при импорте контента в пространство.

С момента вызова метода create у приложений чата есть 30 дней на импорт ресурсов в пространство, завершение режима импорта и создание ресурсов членства с использованием области chat.import . Приложения чата по-прежнему могут создавать членство через 30 дней со стандартными областями членства Chat API. Если по истечении 30 дней пространство все еще находится в режиме импорта, оно автоматически удаляется и становится недоступным для приложения Chat. Планируйте заранее, просмотрев ограничения на использование вашего приложения Chat, чтобы гарантировать, что все запланированные ресурсы можно будет импортировать в Chat в течение этого периода времени.

В следующем примере показано, как создать пространство в режиме импорта:

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

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'Import Mode Space',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

Питон

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'Import Mode Space',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

Замените следующее:

  • EMAIL : адрес электронной почты учетной записи пользователя, которую вы выдаете за полномочия на уровне домена.

Импортировать ресурсы

Чтобы импортировать ресурсы с других платформ обмена сообщениями, вы создаете ресурсы Google Chat (такие как сообщения, реакции, вложения) в пространстве режима импорта. Когда вы создаете ресурс в пространстве, вы указываете данные из связанного ресурса с платформы сообщений, с которой вы мигрируете.

Сообщения

Ваши приложения чата могут импортировать сообщения, используя свои собственные полномочия или от имени пользователя, выдавая себя за другое лицо. (В качестве автора сообщения указывается олицетворенная учетная запись пользователя.) Дополнительные сведения см. в разделе Авторизация приложений чата . Чтобы импортировать сообщение в пространство режима импорта, вызовите метод create ресурса Message . Чтобы сохранить время создания исходного сообщения на исходной платформе обмена сообщениями, вы можете установить createTime сообщения. Для этого createTime должно быть установлено значение между временем создания пространства, которое вы ранее установили, и текущим временем.

Сообщения в одном пространстве не могут содержать одно и то же createTime , даже если предыдущие сообщения с этим временем были удалены.

Сообщения, содержащие сторонние URL-адреса в пространствах режима импорта, не могут отображать предварительный просмотр ссылок в Google Chat.

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

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

Питон

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

Замените следующее:

Реакции

Ваше приложение Chat может импортировать реакции на сообщения с помощью Chat API. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .

Вложения

Ваше приложение Chat может загружать вложения с помощью Chat API. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .

Историческое членство

Историческое членство — это членство, созданное для пользователей, которые уже покинули исходный объект пространства с исходной платформы обмена сообщениями, но вы хотите сохранить их данные в Chat . Информацию о добавлении новых участников после того, как пространство больше не находится в режиме импорта, см. в разделе Создание ресурса членства .

Во многих случаях, когда на этих исторических участников распространяется политика хранения данных в Google , вы хотите сохранить данные (например, сообщения и реакции), созданные историческими участниками в пространстве, прежде чем импортировать их в чат. Пока пространство находится в режиме импорта, вы можете импортировать в него исторические данные о членстве, используя метод create ресурса Membership . Чтобы сохранить время выхода из исторического членства, вы должны установить deleteTime членства. Время отпуска должно быть точным, поскольку оно влияет на то, какие данные об этих членствах следует сохранять. Более того, это deleteTime должно быть после метки времени создания пространства и не должно быть будущей меткой времени.

В дополнение к deleteTime вы также можете установить createTime , чтобы сохранить исходное время присоединения исторического членства. В отличие от deleteTime , createTime не является обязательным. Если значение не установлено, createTime автоматически рассчитывается путем вычитания 1 микросекунды из deleteTime . Если установлено, createTime должно быть раньше deleteTime и должно быть не позже времени создания пространства. Эта информация createTime не используется для определения срока хранения данных и не отображается в инструментах администрирования, таких как консоль администратора Google и Google Vault.

Хотя может быть несколько способов, которыми пользователь может присоединиться и покинуть пространство на исходной платформе обмена сообщениями (через приглашения, присоединение самостоятельно, добавление другим пользователем), в Chat все эти действия представлены полями истории членства createTime и deleteTime . как добавление или удаление.

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

Питон

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

Замените следующее:

Проверка импортированных ресурсов

Ваше приложение Chat может считывать и проверять содержимое пространства режима импорта, вызывая метод list ресурса Message . Вы можете прочитать ресурсы Reaction и Attachment из полей emojiReactionSummaries и attachment любого возвращенного сообщения. Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat .

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

Приложения чата также могут отображать исторические сведения о членстве, вызывая метод list ресурса Membership . После выхода пространства из режима импорта метод list больше не раскрывает историческое членство. Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat .

Вы можете прочитать свойства пространства в режиме импорта, вызвав метод get ресурса Space . Приложения чата могут вызывать этот метод только с использованием собственных полномочий. Дополнительную информацию см. в разделе Авторизация приложений Chat .

Согласование различий импортированных ресурсов с исходными данными

Если какой-либо импортированный ресурс больше не соответствует исходному объекту из исходной платформы обмена сообщениями из-за изменений в исходном объекте во время импорта, приложения чата могут вызвать API чата для изменения импортированного ресурса чата. Например, если пользователь редактирует сообщение на исходной платформе обмена сообщениями после того, как это сообщение было создано в Chat, приложения Chat могут обновить импортированное сообщение, чтобы оно отражало текущее содержимое исходного сообщения.

Сообщения

Чтобы обновить поддерживаемые поля сообщения в пространстве режима импорта, вызовите метод update ресурса Message . Приложения чата могут вызывать этот метод только с теми же правами доступа, которые использовались при создании первоначального сообщения. Если вы использовали олицетворение пользователя во время создания первоначального сообщения, вы должны использовать того же олицетворенного пользователя для обновления этого сообщения.

Чтобы удалить сообщение в пространстве режима импорта, вызовите метод delete ресурса Message . Сообщения в пространстве режима импорта не обязательно должны удаляться создателем исходного сообщения, и их можно удалить, выдав себя за любого пользователя в домене. Приложения чата могут удалять собственные сообщения только с использованием собственных полномочий. Дополнительную информацию см. в разделе Авторизация приложений Chat .

Реакции

Чтобы удалить реакцию на сообщение в пространстве режима импорта, используйте метод delete ресурса reactions . Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .

Вложения

Чтобы обновить вложения к сообщению в пространстве режима импорта, используйте метод upload на media ресурсе. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .

Историческое членство

Чтобы удалить историческое членство в пространстве режима импорта, используйте метод delete ресурса Membership . После выхода пространства из режима импорта метод delete больше не позволяет удалять исторические членства.

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

Пространства

Чтобы обновить поддерживаемые поля в пространстве режима импорта, используйте метод patch для ресурса spaces .

Чтобы удалить пространство режима импорта, используйте метод delete ресурса spaces .

Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .

Полный режим импорта

Перед вызовом метода completeImport необходимо убедиться, что проверка и согласование различий в ресурсах завершены. Выход пространства из режима импорта является необратимым процессом и преобразует пространство режима импорта в обычное пространство. В Chat нет индикатора, который связывал бы эти пробелы с импортом данных.

Чтобы завершить режим импорта и сделать пространство доступным для пользователей, приложение Chat может вызвать метод completeImport ресурса Space . Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat . Олицетворенный пользователь добавляется в пространство в качестве менеджера пространства после завершения этого метода. Этот метод необходимо вызвать в течение 30 дней с момента первоначального вызова метода create.space . Если вы попытаетесь вызвать этот метод по истечении 30-дневного периода, вызов приведет к сбою, поскольку пространство режима импорта будет удалено и больше не будет доступно приложению Chat.

Олицетворенный пользователь в методе completeImport не обязательно должен быть создателем пространства.

В следующем примере показано, как завершить режим импорта:

Питон

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

Замените следующее:

Создание ресурсов членства

Чтобы добавить членство пользователей в пространстве, которое завершило режим импорта, вызовите метод create для ресурса Membership . Приложения чата могут продолжать использовать область chat.import и олицетворение пользователя для вызова этого метода в течение 30 дней с момента первоначального вызова метода create.space . Олицетворяющий пользователь должен быть менеджером пространства.

По истечении 30-дневного периода приложениям чата потребуются дополнительные области членства для вызова этого метода.

Мы рекомендуем приложениям чата создавать ресурсы членства сразу после завершения импорта, чтобы приложения чата могли продолжать использовать область chat.import для создания членства и предоставлять всем участникам доступ к импортированному пространству.