С помощью API Google Chat вы можете импортировать данные с других платформ обмена сообщениями в Google Chat. Вы можете импортировать существующие сообщения, вложения, реакции, членство и пространственные объекты с других платформ обмена сообщениями в соответствующие ресурсы Chat API . Вы можете импортировать эти данные, создав пространства чата в режиме импорта и импортировав данные в эти пространства. После успешного завершения процесса эти пространства становятся стандартными пространствами чата.
Ниже описан полный процесс импорта:
- Планируйте свой импорт
- Настройте авторизацию для приложения Чат
- Создать пространство в режиме импорта
- Импортировать ресурсы
- Проверка импортированных ресурсов
- Согласование различий импортированных ресурсов с исходными данными
- Полный режим импорта
- Предоставить доступ к пространству после режима импорта
- Поиск неисправностей
Предварительные условия
Скрипт приложений
- Аккаунт Google Workspace для бизнеса или предприятия с доступом к Google Chat .
- Создайте проект Google Cloud .
- Включите и настройте API Google Chat , указав имя, значок и описание для вашего приложения Chat.
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Приложению Chat необходимо делегировать полномочия на уровне домена во всех доменах, в которые приложение импортирует контент, см. раздел Авторизация приложений Chat .
Питон
- Аккаунт Google Workspace для бизнеса или предприятия с доступом к Google Chat .
- Создайте проект Google Cloud .
- Включите и настройте API Google Chat , указав имя, значок и описание для вашего приложения Chat.
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Приложению Chat необходимо делегировать полномочия на уровне домена во всех доменах, в которые приложение импортирует контент, см. раздел Авторизация приложений Chat .
Планируйте свой импорт
Соответствующим образом спланируйте объем импортируемых данных, поймите, как ограничения и квоты использования могут повлиять на процесс импорта, а также ознакомьтесь с типами чат-групп, поддерживаемых при импорте в новое пространство. Если вы администратор, прочитайте Импорт данных сообщений в Google Chat из другой службы и внимательно следуйте инструкциям.
Просмотрите ограничения на использование API
Время, необходимое для импорта данных в Chat, может сильно различаться в зависимости от количества импортируемых ресурсов Chat. Просмотрите ограничения на использование вашего приложения Chat и объем данных, запланированных для импорта с исходной платформы обмена сообщениями, чтобы определить ориентировочные сроки.
При импорте сообщений в пространство мы рекомендуем распределять вызовы метода messages.create()
по разным потокам сообщений.
Определите поддерживаемые пространства для импорта
Режим импорта поддерживает только SpaceType
SPACE
и GROUP_CHAT
. Он не поддерживает DIRECT_MESSAGE
. Дополнительную информацию см. в документации по SpaceType
.
Создать пространство в режиме импорта
Чтобы создать пространство в режиме импорта, вызовите метод create
ресурса Space
и задайте importMode
значение true
.
При создании пространства в режиме импорта обратите внимание на следующее.
- Дата и время . Помните, режим импорта должен быть завершен в течение 90 дней. Если пространство все еще находится в режиме импорта по истечении 90 дней с момента вызова метода
spaces.create()
, оно автоматически удаляется и становится недоступным и не подлежащим восстановлению.- Используйте значение поля
importModeExpireTime
, чтобы отслеживать истечение 90-дневного периода времени. - Не используйте значение поля
createTime
для отслеживания истечения 90-дневного периода времени. Это не всегда то же самое, что при вызове методаspaces.create()
. При использовании режима импорта в полеcreateTime
можно установить историческую временную метку создания пространства в источнике, чтобы сохранить исходное время создания.
- Используйте значение поля
- Имя ресурса пространства (
name
) — уникальный идентификатор, который используется для получения информации о конкретном пространстве и используется на последующих этапах при импорте контента в пространство.
Чтобы сохранить время создания эквивалентного объекта пространства из исходной платформы обмена сообщениями, вы можете установить createTime
пространства. Для этого createTime
должно быть установлено значение между 1 января 2000 года и настоящим временем.
Чтобы создать внешнее пространство в режиме импорта, установите для externalUserAllowed
значение true
. После успешного завершения импорта вы можете добавить внешних пользователей.
В следующем примере показано, как создать пространство в режиме импорта:
Скрипт приложений
function createSpaceInImportMode() {
const space = Chat.Spaces.create({
spaceType: 'SPACE',
displayName: 'DISPLAY_NAME',
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': 'DISPLAY_NAME',
'importMode': True,
'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
}
)
.execute()
)
print(result)
Замените следующее:
-
EMAIL
: адрес электронной почты учетной записи пользователя, которую вы выдаете за полномочия на уровне домена. -
DISPLAY_NAME
: имя пространства, созданного в режиме импорта. Это должно быть уникальное имя пространства, которое отображается пользователям чата. Мы рекомендуем использовать то же отображаемое имя, что и пространство, из которого вы импортируете данные.
Импортировать ресурсы
Чтобы импортировать ресурсы с других платформ обмена сообщениями, вы создаете ресурсы Google Chat (такие как сообщения, реакции, вложения) в пространстве режима импорта. Когда вы создаете ресурс в пространстве, вы указываете данные из связанного ресурса с платформы сообщений, с которой вы мигрируете.
Сообщения
Ваши приложения чата могут импортировать сообщения, используя свои собственные полномочия или от имени пользователя, выдавая себя за другое лицо. В качестве автора сообщения указана олицетворенная учетная запись пользователя. Дополнительную информацию см. в разделе Авторизация приложений 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)
Замените следующее:
-
EMAIL
: адрес электронной почты учетной записи пользователя, которую вы выдаете за полномочия на уровне домена. -
SPACE_NAME
: имя пространства, созданного в режиме импорта .
Реакции
Ваше приложение Chat может импортировать реакции на сообщения с помощью Chat API. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .
Вложения
Ваше приложение Chat может загружать вложения с помощью Chat API. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата . Однако мы настоятельно рекомендуем вам использовать Google Drive API для загрузки вложений в виде файлов Google Диска и связать URI файлов с соответствующими сообщениями в пространствах режима импорта, чтобы импортировать вложения с других платформ обмена сообщениями, чтобы избежать достижения внутреннего ограничения Google Chat на загрузку вложений.
Историческое членство
Историческое членство — это членство, созданное для пользователей, которые уже покинули исходный объект пространства с исходной платформы обмена сообщениями, но вы хотите сохранить их данные в 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)
Замените следующее:
-
EMAIL
: адрес электронной почты учетной записи пользователя, которую вы выдаете за полномочия на уровне домена. -
SPACE_NAME
: имя пространства, созданного в режиме импорта . -
USER_ID
: уникальный идентификатор пользователя .
Импортировать ресурсы во внешнее пространство
Вы можете создать внешнее пространство с режимом импорта только с использованием учетных данных, принадлежащих пользователям внутри вашей организации Workspace. Это применимо только тогда, когда пространство находится в режиме импорта. Как только пространство завершит режим импорта , внешних пользователей можно будет пригласить присоединиться к импортированным пространствам (см. раздел «Доступ »), а их учетные данные можно будет использовать для вызова Chat API.
Проверка импортированных ресурсов
Ваше приложение Chat может считывать и проверять содержимое пространства режима импорта, вызывая метод list
ресурса Message
. Вы можете прочитать ресурсы Reaction
и Attachment
из полей emojiReactionSummaries
и attachment
любого возвращенного сообщения. Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat .
Ваше приложение Chat также может читать отдельные сообщения для проверки, вызывая метод get
ресурса Message
. Приложения чата могут вызывать этот метод только для чтения собственных сообщений, используя свои собственные полномочия. Дополнительную информацию см. в разделе Авторизация приложений Chat .
Приложения чата также могут отображать исторические сведения о членстве, вызывая метод list
ресурса Membership
. После выхода пространства из режима импорта метод list
больше не раскрывает историческое членство. Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat .
Вы можете прочитать свойства пространства в режиме импорта, вызвав метод get
ресурса Space
. В ответе также будет указано значение importModeExpireTime
, поэтому вы сможете правильно отслеживать временные рамки для завершения процесса импорта. Приложения чата могут вызывать этот метод только с использованием собственных полномочий. Дополнительную информацию см. в разделе Авторизация приложений Chat .
Согласование различий импортированных ресурсов с исходными данными
Если какой-либо импортированный ресурс больше не соответствует исходному объекту из исходной платформы обмена сообщениями из-за изменений в исходном объекте во время импорта, приложения чата могут вызвать API чата для изменения импортированного ресурса чата. Например, если пользователь редактирует сообщение на исходной платформе обмена сообщениями после того, как это сообщение было создано в Chat, приложения Chat могут обновить импортированное сообщение, чтобы оно отражало текущее содержимое исходного сообщения.
Сообщения
Чтобы обновить поддерживаемые поля сообщения в пространстве режима импорта, вызовите метод update
ресурса Message
. Приложения чата могут вызывать этот метод только с использованием тех же прав доступа, которые использовались при создании исходного сообщения. Если вы использовали олицетворение пользователя во время создания первоначального сообщения, вы должны использовать того же олицетворенного пользователя для обновления этого сообщения.
Чтобы удалить сообщение в пространстве режима импорта, вызовите метод delete
ресурса Message
. Сообщения в пространстве режима импорта не обязательно должны удаляться создателем исходного сообщения, и их можно удалить, выдав себя за любого пользователя в домене. Приложения чата могут удалять собственные сообщения только с использованием собственных полномочий. Дополнительную информацию см. в разделе Авторизация приложений Chat .
Реакции
Чтобы удалить реакцию на сообщение в пространстве режима импорта, используйте метод delete
ресурса reactions
. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .
Вложения
Чтобы обновить вложения к сообщению в пространстве режима импорта, используйте метод upload
на media
ресурсе. Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .
Историческое членство
Чтобы удалить историческое членство в пространстве режима импорта, используйте метод delete
ресурса Membership
. После того, как пространство выходит из режима импорта, метод delete
больше не позволяет удалять исторические членства.
Вы не можете обновить историческое членство в пространстве режима импорта. Если вы хотите исправить неправильно импортированное историческое членство, вам необходимо сначала удалить его, а затем создать заново, пока пространство все еще находится в режиме импорта.
Пространства
Чтобы обновить поддерживаемые поля в пространстве режима импорта, используйте метод patch
для ресурса spaces
.
Чтобы удалить пространство режима импорта, используйте метод delete
ресурса spaces
.
Сведения о методах ресурсов и типах поддержки аутентификации в пространствах режима импорта см. в разделе Авторизация приложений чата .
Полный режим импорта
Перед вызовом метода completeImport
необходимо убедиться, что проверка и согласование различий в ресурсах завершены. Выход пространства из режима импорта является необратимым процессом и преобразует пространство режима импорта в обычное пространство. В Chat нет индикатора, который связывал бы эти пробелы с импортом данных.
Запишите дату и время вызова completeImport
, имя ресурса пользователя, совершившего вызов, и возвращенный ответ. Это может быть полезно, если вы столкнулись с какими-либо проблемами и должны их изучить.
Чтобы завершить режим импорта и сделать пространство доступным для пользователей, приложение Chat может вызвать метод completeImport
ресурса Space
. Приложения чата могут вызывать этот метод только от имени пользователя посредством олицетворения. Дополнительную информацию см. в разделе Авторизация приложений Chat . Олицетворенный пользователь добавляется в пространство в качестве менеджера пространства после завершения этого метода. Этот метод необходимо вызвать в течение 90 дней с момента первоначального вызова метода create.space
. Если вы попытаетесь вызвать этот метод по истечении 90 дней, вызов приведет к сбою, поскольку пространство режима импорта будет удалено и больше не будет доступно приложению Chat.
Олицетворенный пользователь в методе completeImport
не обязательно должен быть создателем пространства.
Не вызывайте completeImport
слишком близко к importModeExpireTime
, так как мы не можем гарантировать, что запрос поступит раньше importModeExpireTime
, и могут возникнуть конфликты с обработкой данных в системах, запускаемых по истечении срока действия. Мы рекомендуем вызывать completeImport
по крайней мере за 30 минут до importModeExpireTime
.
В следующем примере показано, как завершить режим импорта:
Питон
"""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)
Замените следующее:
-
EMAIL
: адрес электронной почты учетной записи пользователя, которую вы выдаете за полномочия на уровне домена. -
SPACE_NAME
: имя пространства, созданного в режиме импорта .
Предоставить доступ к пространству после режима импорта
Чтобы предоставить пользователям Chat доступ к недавно импортированному пространству, приложения Chat могут продолжать использовать область chat.import
и олицетворение пользователя в течение 90 дней с момента первоначального вызова метода create.space()
чтобы выполнять следующие действия:
- Добавьте участников в пространство : вызовите метод
create()
ресурсаMembership
. Мы рекомендуем приложениям чата создавать ресурсыMembership
сразу после завершения импорта пространства, чтобы приложения чата могли продолжать использовать областьchat.import
и гарантировать, что все импортированные участники имеют доступ к пространству. Вам следует уделить первоочередное внимание добавлению участников, на которых может распространяться политика хранения Сейфа , которая позволяет сохранять импортированные сообщения, даже если срок их хранения истек. - Установите целевую аудиторию : вызовите метод
update()
ресурсаSpace
. Чтобы узнать, как создавать и добавлять целевые аудитории, см. статью Как сделать пространство Google Chat доступным для просмотра определенным пользователям в организации Google Workspace .
Чтобы использовать эти методы с областью chat.import
, олицетворяемый пользователь должен быть менеджером пространства.
Для внешних пространств метод членства create()
также позволяет приглашать пользователей за пределами вашей организации Workspace. Убедитесь, что вы понимаете все известные ограничения для внешних пользователей.
Поиск неисправностей
Если у вас возникли проблемы при импорте пространств чата, обратитесь за помощью к следующим вопросам. Если вы столкнулись с сообщением об ошибке, запишите его (скопируйте/вставьте текст в документ или сохраните снимок экрана) для дальнейшего использования и устранения неполадок.
Когда пространство успешно импортировано, CompleteImportSpace
завершается со статусом OK
.
Импорт не завершен до истечения 90-дневного периода.
Как описано ранее в разделе Создание пространства в режиме импорта , если пространство по-прежнему находится в режиме импорта по истечении 90 дней с момента вызова метода создания, оно автоматически удаляется и становится недоступным и не подлежащим восстановлению.
К сожалению, удаленное пространство больше не доступно и не подлежит восстановлению, и процесс импорта необходимо начинать заново.
Найдите недостающие места
Если вам не удается найти новое пространство чата, просмотрите следующую таблицу ответа, полученного от CompleteImportSpace
чтобы увидеть объяснение и способы его решения.
Ответ получен | Этапы расследования | Объяснение | Разрешение |
---|---|---|---|
CompleteImportSpace выдает исключение, а вызов GetSpace возвращает PERMISSION_DENIED . | Проверьте свои записи, когда было создано пространство, и если оно старше 90 дней, оно было автоматически удалено. Кроме того, в инструменте управления пространством или журнале аудита нет записей об импортированном пространстве. | С момента запуска процесса импорта прошло более 90 дней, и для пространства не удалось успешно завершить миграцию. | Создайте новое пространство и снова запустите процесс импорта. |
CompleteImportSpace возвращает OK , а вызов GetSpace возвращает PERMISSION_DENIED . | В инструменте управления пространством нет записей об импортированном пространстве, но в журнале аудита оно показано как удаленное. | Пространство было успешно импортировано, но впоследствии удалено. | Создайте новое пространство и снова запустите процесс импорта. |