Google Chat으로 데이터 가져오기

Google Chat API를 사용하면 다른 메시지 플랫폼에서 데이터를 가져올 수 있습니다. 되었습니다. 기존 메시지, 첨부파일, 반응, 멤버십, 스페이스 항목을 다른 메시지 플랫폼에서 해당 Chat API 리소스. 다음 위치에서 Chat 스페이스를 만들어 이 데이터를 가져올 수 있습니다. 가져오기 모드 이러한 공간으로 데이터를 가져올 수 있습니다. 프로세스가 성공적으로 완료되면 이 스페이스는 표준 Chat 스페이스가 됩니다.

다음은 전체 가져오기 프로세스를 간략히 설명합니다.

  1. 가져오기 계획
  2. 채팅 앱의 승인 구성
  3. 가져오기 모드에서 스페이스 만들기
  4. 리소스 가져오기
  5. 가져온 리소스 유효성 검사
  6. 가져온 소스 데이터의 리소스 차이 조정하기
  7. 가져오기 모드 완료
  8. 가져오기 모드 후 스페이스 액세스 권한 부여하기
  9. 문제 해결

기본 요건

Apps Script

Python

  • Python 3.6 이상
  • pip 패키지 관리 도구
  • Python용 최신 Google 클라이언트 라이브러리입니다. 설치 또는 업데이트 명령줄 인터페이스에서 다음 명령어를 실행합니다.

    pip3 install --upgrade google-api-python-client google-auth
    
  • 게시된 채팅 앱 새로운 버전의 채팅 앱, 다음을 참고하세요. Google Chat 앱을 빌드합니다.

  • 채팅 앱에 승인이 구성되어 있습니다. 이 채팅 앱이 도메인 전체 권한을 위임해야 함 앱이 콘텐츠를 가져오는 모든 도메인에 있는 경우 채팅 앱을 승인합니다.

가져오기 계획하기

가져올 데이터 양을 적절히 계획하고, 사용량 한도 및 할당량이 가져오기 프로세스를 이해하고 Chat 공간의 유형을 파악하세요. 새 스페이스로 가져올 때 지원됩니다.

API 사용량 한도 검토

Chat으로 데이터를 가져오는 데 필요한 시간은 매우 다를 수 있습니다. 가져올 Chat 리소스의 양에 따라 달라집니다 채팅 앱의 사용 한도 및 소스 메시지 플랫폼에서 가져와서 예상 타임라인을 확인합니다.

스페이스로 메시지를 가져올 때 통화를 공유하는 것이 좋습니다. messages.create()(으)로 이동 메서드를 사용할 수 있습니다.

가져올 수 있는 스페이스 식별

가져오기 모드는 SPACESpaceType만 지원합니다. Kubernetes는 GROUP_CHAT 또는 DIRECT_MESSAGESpaceType입니다. 자세한 내용은 SpaceType 문서 를 참조하세요.

가져오기 모드에서 스페이스 만들기

가져오기 모드에서 스페이스를 만들려면 create 메서드리소스 Space importModetrue로 설정합니다.

가져오기 모드에서 스페이스를 만들 때는 다음 사항에 유의하세요.

  • 날짜 및 시간 - 가져오기 모드는 30분 이내에 완료되어야 합니다. 일 수 있습니다. 30일이 지난 후에도 스페이스가 가져오기 모드인 경우 spaces.create() 메서드가 호출된 후의 일수입니다. 자동으로 삭제되어 액세스할 수 없고 복구할 수 없게 됩니다.
    • 다음 값을 사용하지 마세요. createTime 필드를 사용하여 30일 기간의 만료를 추적할 수 있습니다. 이것은 spaces.create() 메서드를 호출할 때와 항상 동일합니다. 날짜 가져오기 모드를 사용하는 경우 createTime 필드를 이전 값으로 설정할 수 있습니다. 공간을 만들기 위해 소스에서 스페이스가 생성된 타임스탬프 원래 생성 시간을 보존할 수 있습니다
  • 스페이스 리소스 이름 (name) - 이 고유 식별자는 콘텐츠를 가져올 때 이후 단계에서 참조됩니다. 들어가 보겠습니다.

소스에서 동등한 공간 항목의 생성 시간을 보존합니다. 메시지 플랫폼의 경우 스페이스의 createTime를 설정할 수 있습니다. 이 createTime는 2000년 1월 1일부터 현재 시간 사이의 값으로 설정해야 합니다.

가져오기 모드에서 외부 스페이스를 만들려면 externalUserAllowedtrue로 설정합니다. 가져오기가 완료되면 외부 사용자를 추가할 수 있습니다.

다음 예는 가져오기 모드에서 스페이스를 만드는 방법을 보여줍니다.

Apps Script

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

Python

"""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 앱에서 자체 권한을 사용하여 메시지를 가져올 수 있습니다. 명의 도용을 통해 사용자를 대리하는 행위 메시지 작성자는 사용자를 도용할 수 있습니다. 자세한 내용은 채팅 앱을 승인합니다. Google Cloud로 메시지를 가져오려면 create 메서드Message 리소스. 소스에서 원본 메일 생성 시간을 보존하기 위해 메시지 플랫폼을 사용한다면 메시지의 createTime를 설정할 수 있습니다. 이 createTime은(는) 스페이스 생성 시간 사이의 값으로 설정해야 합니다. 확인할 수 있습니다.

같은 스페이스에 있는 메시지는 같은 createTime을(를) 포함할 수 없습니다. 해당 시간이 있는 이전 메시지가 삭제됩니다.

가져오기 모드 스페이스에 서드 파티 URL이 포함된 메시지는 링크를 렌더링할 수 없습니다. 미리 볼 수 있습니다

가져오기 모드에서 메시지를 만들면 스페이스에서 알림을 보내거나 이메일을 전송하지 않습니다. 모든 사용자에게 메시지를 보낼 수 있으며 사용자 멘션

다음 예시에서는 가져오기 모드 스페이스에서 메시지를 만드는 방법을 보여줍니다.

Python

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

다음을 바꿉니다.

리액션

채팅 앱에서 가져올 수 있음 메시지 반응 채팅 API를 사용합니다 리소스 메서드와 가져오기 모드 공간에서의 인증 지원 유형에 대해 자세히 알아보려면 채팅 앱을 승인합니다.

첨부파일

채팅 앱에서 다음 작업을 할 수 있습니다. 첨부파일 업로드 채팅 API를 사용합니다. 리소스 메서드와 가져오기 모드 공간에서의 인증 지원 유형에 대해 자세히 알아보려면 채팅 앱을 승인합니다. 하지만 kubectl apply 명령어로 Google Drive API를 사용하여 첨부파일을 Google Drive 파일로 업로드하고 파일 URI를 가져오기 모드 스페이스의 각 메시지 Google Chat 내부 첨부파일 한도에 도달하지 않도록 메시지 플랫폼 있습니다.

이전 멤버십

이전 멤버십은 이미 탈퇴한 사용자를 위해 생성된 멤버십입니다. 원래 공간 엔터티를 가져올 수 있지만 Chat에 데이터를 보관할 수 있습니다. 스페이스를 더 이상 가져오지 않는 후에 새 멤버를 추가하는 방법에 대한 자세한 내용 멤버십 리소스 만들기를 참고하세요.

대부분의 경우 이러한 역사적인 구성원이 Google의 데이터 보관 정책에 따라 Google에 의해 생성된 데이터 (예: 메시지, 반응)를 보존하려는 경우 Chat으로 가져오기 전에 스페이스의 이전 멤버십 스페이스가 가져오기 모드에 있는 동안 이전 멤버십을 가져올 수 있습니다. 새로운 레이어로 create 메서드Membership 리소스. 이전 멤버십의 휴가 시간을 보존하려면 멤버십의 deleteTime입니다. 출발 시간은 멤버십의 보관 데이터에 영향을 미칩니다. 게다가 이번 deleteTime 스페이스 생성 타임스탬프 이후여야 하며 미래의 타임스탬프가 아니어야 합니다.

deleteTime 외에도 createTime를 설정하여 이전 멤버십의 원래 가입 시간입니다. deleteTime와 달리 createTime는 선택사항입니다. 설정하지 않으면 createTime은(는) 다음과 같이 자동으로 계산됩니다. deleteTime에서 1마이크로초를 뺍니다. 설정하는 경우 createTime은 이전이어야 합니다. deleteTime이며 스페이스 생성 시간 또는 그 이후여야 합니다. 이 createTime 정보가 데이터 보관 여부를 결정하는 데 사용되지 않으며 관리자에게 표시되지 않음 Google 관리 콘솔 및 Google Vault와 같은 도구를 사용합니다.

사용자가 소스 메시지 플랫폼 (초대, 직접 참여, 추가 채팅에서는 이러한 작업이 모두 이전 멤버십 createTimedeleteTime 필드 추가 중 또는 제거될 수 있습니다.

다음 예시는 가져오기에서 이전 멤버십을 만드는 방법을 보여줍니다. 모드 스페이스:

Python

"""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 API를 호출할 수 있습니다

가져온 리소스 검증

채팅 앱에서 콘텐츠를 읽고 확인할 수 있습니다. 가져오기 모드 공간을 차지할 수 있도록 list 메서드 Message 리소스. 반환된 모든 메일의ReactionAttachment emojiReactionSummariesattachment 필드 채팅 앱에서 할 수 있는 작업 가장을 통해 사용자를 대신하여만 이 메서드를 호출합니다. 자세한 내용은 자세한 내용은 채팅 앱을 승인합니다.

채팅 앱에서도 개별 메시지를 읽을 수 있습니다. 유효성 검사 get 메서드 (Message 리소스에 있음) 채팅 앱은 다음의 경우에만 자체 메시지를 읽을 수 있도록 이 메서드를 호출할 수 있습니다. 지양합니다. 자세한 내용은 채팅 앱을 승인합니다.

채팅 앱은 또한 다음을 호출하여 이전 멤버십을 나열할 수 있습니다. list 메서드Membership 리소스. 스페이스에서 가져오기 모드를 종료하면 list 메서드가 이전 기록을 노출하지 않습니다. 멤버십을 이용할 수 없습니다. 채팅 앱은 다음에서만 이 메서드를 호출할 수 있습니다. 명의 도용을 통해 사용자를 대리하는 행위 자세한 내용은 채팅 앱을 승인합니다.

다음 메서드를 호출하여 가져오기 모드 공간의 속성을 읽을 수 있습니다. get 메서드Space 리소스. 채팅 앱은 자체 권한을 사용해서만 이 메서드를 호출할 수 있습니다. 자세한 내용은 채팅 앱을 승인합니다.

소스 데이터와 가져온 리소스 차이 조정

가져온 리소스가 소스의 원래 항목과 더 이상 일치하지 않는 경우 가져오기 중에 원래 항목의 변경으로 인해 채팅 앱은 Chat API를 호출하여 가져온 채팅 리소스에 사용할 수 있습니다. 예를 들어 사용자가 소스 메시지에서 메시지를 수정하는 경우 플랫폼에 관계없이 채팅 앱은 가져온 메시지를 업데이트하여 원본 메일의 현재 콘텐츠를 반환합니다.

메시지

업데이트 방법 지원되는 필드 메시지를 가져오려면 update 메서드Message 리소스. 채팅 앱은 처음 메시지를 작성할 때 사용되었습니다. 사용자 가장을 사용한 경우 처음 메시지를 작성하는 동안 동일한 가장된 사용자를 사용하여 해당 메시지를 업데이트합니다.

가져오기 모드 스페이스에서 메일을 삭제하려면 delete 메서드Message 리소스. 가져오기 모드 스페이스의 메시지는 원본에서 삭제할 필요가 없습니다. 도메인의 모든 사용자를 사칭하여 삭제할 수 있습니다. 채팅 앱은 앱의 메시지만 삭제할 수 있습니다. 있습니다 자세한 내용은 채팅 앱을 승인합니다.

리액션

가져오기 모드 스페이스에서 메시지에 대한 반응을 삭제하려면 delete 메서드 (reactions 리소스에) 리소스 메서드와 가져오기 모드 공간에서의 인증 지원 유형에 대해 자세히 알아보려면 채팅 앱을 승인합니다.

첨부파일

가져오기 모드 스페이스에서 메일의 첨부파일을 업데이트하려면 다음을 사용하세요. mediaupload 메서드 리소스도 제공합니다 리소스 메서드 및 인증 유형에 대한 정보 자세한 내용은 가져오기 모드 스페이스에 대한 채팅 앱을 승인합니다.

이전 멤버십

가져오기 모드 스페이스에서 이전 멤버십을 삭제하려면 다음을 사용하세요. delete 메서드Membership 리소스. 스페이스에서 가져오기 모드가 종료되어도 delete 메서드가 이전 기록을 삭제할 수 없음 멤버십을 이용할 수 없습니다.

가져오기 모드 스페이스에서는 이전 멤버십을 업데이트할 수 없습니다. 원하는 경우 잘못 가져온 이전 멤버십을 수정하는 경우 삭제해야 합니다. 스페이스가 가져오기 모드일 때 다시 만들어야 합니다.

스페이스

업데이트 방법 지원되는 필드를 가져오기 모드 공간을 사용하려면 patch 메서드 (spaces 리소스에서)

가져오기 모드 스페이스를 삭제하려면 다음을 사용하세요. delete 메서드 (spaces 리소스에)

인증 지원의 리소스 메서드 및 유형에 대한 정보 살펴보고 채팅 앱을 승인합니다.

가져오기 모드 완료

completeImport를 호출하기 전 유효성 검사리소스 차이 조정 완료됩니다. 가져오기 모드를 벗어난 스페이스를 나가면 되돌릴 수 없으며 가져오기 모드 공간을 일반 공백으로 변환합니다. 여기에는 Chat: 이러한 스페이스가 데이터 가져오기에 기여했다고 간주합니다.

리소스 이름인 completeImport를 호출하는 날짜와 시간을 기록합니다. 응답 및 응답을 반환합니다. 이렇게 하면 에 신고하시기 바랍니다.

가져오기 모드를 완료하고 사용자가 스페이스에 액세스할 수 있도록 하려면 채팅 앱은 다음에서 completeImport 메서드를 호출할 수 있습니다. Space 리소스. 채팅 앱은 다음을 통해서만 사용자를 대신하여 이 메서드를 호출할 수 있습니다. 명의 도용 자세한 내용은 채팅 앱을 승인합니다. 가장된 사용자는 스페이스에 스페이스 관리자 이 메서드가 완료되면 이 메서드는 30일 이내에 초기 create.space 메서드 호출 30일이 경과하면 가져오기가 실행되지 않으므로 호출이 실패하게 됩니다. 모드 스페이스가 삭제되어 채팅 앱

completeImport 메서드에서 가장된 사용자는 할 수 있습니다.

다음 예시에서는 가져오기 모드를 완료하는 방법을 보여줍니다.

Python

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

다음을 바꿉니다.

가져오기 모드 후에 스페이스 액세스 권한 부여

Chat 사용자에게 최근에 가져온 스페이스에 대한 액세스 권한을 부여하려면 다음 단계를 따르세요. 채팅 앱은 chat.import 범위 및 사용자를 계속 사용할 수 있습니다. 최초 create.space() 메서드 호출 후 30일 이내에 가장 다음과 같습니다.

이러한 메서드를 chat.import 범위에서 사용하려면 가장된 사용자가 스페이스 매니저가 될 수 있습니다.

외부 스페이스의 경우 멤버십이 create() 메서드 Workspace 조직 외부의 사용자를 초대할 수도 있습니다. 모든 스킬을 알려진 제한사항에 대한 액세스할 수 있습니다.

문제 해결

Chat 스페이스를 가져올 때 문제가 발생하는 경우 다음을 검토하세요. 다음 문제에 대한 지원을 받을 수 있습니다. 오류 응답이 발생하면 (텍스트를 문서에 복사하여 붙여넣거나 스크린샷을 저장) 향후 참조 및 문제 해결에 대해 자세히 알아보세요.

스페이스를 가져오면 CompleteImportSpace가 다음으로 완료됩니다. OK 상태입니다.

30일 기간이 만료되기 전에 가져오기를 완료하지 못함

앞서 가져오기 모드에서 스페이스 만들기에 설명된 대로 다음과 같은 경우 만들기 메서드가 생성된 시점으로부터 30일이 지나도 스페이스는 여전히 가져오기 모드입니다. 호출되면 자동으로 삭제되어 액세스할 수 없게 되며 있습니다.

삭제된 스페이스는 더 이상 사용 또는 복구할 수 없으며 가져오기 프로세스를 다시 시작해야 합니다.

누락된 공백 찾기

새로운 Chat 스페이스를 찾을 수 없는 경우 다음은 CompleteImportSpace에서 설명과 해결 방법을 볼 수 있습니다.

대답 수신됨 조사 단계 설명 해상도
CompleteImportSpace에서 예외가 발생하고 다음을 호출합니다. GetSpacePERMISSION_DENIED을 반환합니다. 스페이스를 만든 시기 및 오래된 경우 기록을 확인합니다. 자동으로 삭제되었습니다. 또한 가져온 공간에 대한 기록을 공간 관리 도구 또는 감사 로그. 가져오기 프로세스가 시작된 후 30일이 지남 스페이스가 이전을 종료하지 못했습니다. 새 스페이스를 만들고 가져오기 프로세스를 다시 실행하세요.
CompleteImportSpaceOK를 반환하고 GetSpacePERMISSION_DENIED를 반환합니다. 공간에 가져온 스페이스 기록이 없습니다. 스페이스 관리 도구, 하지만 스페이스는 감사 로그. 스페이스를 성공적으로 가져왔지만 이후에 삭제되었습니다. 새 스페이스를 만들고 가져오기 프로세스를 다시 실행하세요.