Google Chat API를 사용하면 다른 메시지 플랫폼에서 Google Chat으로 데이터를 가져올 수 있습니다. 다른 메시지 플랫폼에서 기존 메시지, 첨부파일, 반응, 멤버십, 스페이스 항목을 해당 Chat API 리소스로 가져올 수 있습니다. 가져오기 모드에서 Chat 스페이스를 만들고 해당 스페이스로 데이터를 가져와 이 데이터를 가져올 수 있습니다.
다음은 가져오기 모드 공간을 사용하여 데이터를 가져오는 단계의 개요입니다.
- API 사용량 한도를 검토하고 미리 계획하세요.
- 채팅 앱에 대한 승인을 구성합니다.
- 가져오기 모드에서 스페이스 만들기
- 리소스를 가져옵니다.
- 가져온 리소스의 유효성을 검사합니다.
- 가져온 리소스와 소스 데이터의 차이를 조정합니다.
- 가져오기 모드를 완료합니다.
- 멤버십 리소스를 만듭니다.
기본 요건
Apps Script
- Google Chat에 액세스할 수 있는 Google Workspace 계정
- 게시된 채팅 앱입니다. 채팅 앱을 빌드하려면 이 quickstart을 따르세요.
Python
- Python 3.6 이상
- pip 패키지 관리 도구
최신 Python용 Google 클라이언트 라이브러리입니다. 이를 설치하거나 업데이트하려면 명령줄 인터페이스에서 다음 명령어를 실행합니다.
pip3 install --upgrade google-api-python-client google-auth
게시된 채팅 앱. 채팅 앱을 만들고 게시하려면 Google Chat 앱 빌드를 참고하세요.
채팅 앱에 구성된 승인. 채팅 앱은 앱이 콘텐츠를 가져오는 모든 도메인에서 도메인 전체 권한을 위임해야 합니다. 채팅 앱 승인을 참조하세요.
API 사용량 한도를 검토하고 미리 계획하세요.
Chat으로 데이터를 가져오는 데 필요한 시간은 가져올 Chat 리소스의 양에 따라 크게 다를 수 있습니다. 채팅 앱의 사용량 한도와 소스 메시지 플랫폼에서 가져올 데이터의 양을 검토하여 예상 타임라인을 결정하여 미리 계획을 세웁니다.
가져오기 모드에서 스페이스 만들기
가져오기 모드에서 스페이스를 만들려면 Space
리소스에서 create
메서드를 호출하고 importMode
를 true
로 설정합니다. 소스 메시지 플랫폼에서 상응하는 공간 항목의 생성 시간을 보존하려면 공간의 createTime
를 설정하면 됩니다. 이 createTime
는 2000년 1월 1일부터 현재 시간 사이의 값으로 설정해야 합니다.
만드는 스페이스의 name
을 기록해 두고 이후 단계에서 콘텐츠를 스페이스로 가져올 때 참조할 수 있도록 합니다.
create
메서드가 호출된 시점부터 채팅 앱은 30일 이내에 스페이스로 리소스를 가져오고, 가져오기 모드를 완료하고, chat.import
범위를 사용하여 멤버십 리소스를 생성해야 합니다. 채팅 앱은 표준 Chat API 멤버십 범위를 사용하여 30일 후에도 멤버십을 만들 수 있습니다.
30일 후에도 스페이스가 아직 가져오기 모드인 경우 자동으로 삭제되어 액세스할 수 없으며 Chat 앱에서 복구할 수 없습니다. Chat 앱의 사용량 한도를 검토하여 이 기간 내에 예약된 모든 리소스를 Chat으로 가져올 수 있도록 미리 계획하세요.
다음 예는 가져오기 모드에서 스페이스를 만드는 방법을 보여줍니다.
Apps Script
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);
}
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': 'Import Mode Space',
'importMode': True,
'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
}
)
.execute()
)
print(result)
다음을 바꿉니다.
EMAIL
: 도메인 전체 권한으로 가장하고 있는 사용자 계정의 이메일 주소입니다.
리소스 가져오기
다른 메시징 플랫폼에서 리소스를 가져오려면 가져오기 모드 공간에서 Google Chat 리소스 (예: 메시지, 반응, 첨부파일)를 만듭니다. 스페이스에 리소스를 만들 때 이전하려는 메시지 플랫폼에서 관련 리소스의 데이터를 지정합니다.
메시지
채팅 앱에서 자체 권한을 사용하거나 사용자를 대신하여 가장을 통해 메시지를 가져올 수 있습니다. 메시지 작성자는 가장된 사용자 계정으로 설정됩니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
가져오기 모드 공간에서 메시지를 가져오려면 Message
리소스에서 create
메서드를 호출합니다.
소스 메시지 플랫폼에서 원본 메시지를 만드는 시간을 보존하려면 메시지의 createTime
를 설정하면 됩니다. 이 createTime
는 이전에 설정한 스페이스 생성 시간과 표시 시간 사이의 값으로 설정해야 합니다.
동일한 스페이스에 있는 메시지는 이전 메시지가 삭제되더라도 동일한 createTime
를 포함할 수 없습니다.
가져오기 모드 스페이스에서 서드 파티 URL이 포함된 메시지는 Google Chat 내에서 링크 미리보기를 렌더링할 수 없습니다.
가져오기 모드에서 메시지를 만들면 스페이스에서 사용자 멘션이 포함된 메시지를 비롯하여 다른 사용자에게 알림을 보내거나 이메일을 전송하지 않습니다.
다음 예는 가져오기 모드 스페이스에서 메시지를 만드는 방법을 보여줍니다.
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)
다음을 바꿉니다.
EMAIL
: 도메인 전체 권한으로 가장하고 있는 사용자 계정의 이메일 주소입니다.SPACE_NAME
: 가져오기 모드에서 만든 스페이스의 이름입니다.
리액션
채팅 앱은 Chat API를 사용하여 메시지에 대한 반응을 가져올 수 있습니다. 가져오기 모드 스페이스의 리소스 메서드 및 인증 지원 유형에 관한 자세한 내용은 채팅 앱 승인을 참고하세요.
첨부파일
채팅 앱은 Chat API를 사용하여 첨부파일을 업로드할 수 있습니다. 가져오기 모드 스페이스의 리소스 메서드 및 인증 지원 유형에 관한 자세한 내용은 채팅 앱 승인을 참고하세요.
이전 멤버십
이전 멤버십은 소스 메시지 플랫폼에서 원래 스페이스 항목을 이미 나갔지만 Chat에 관련 데이터를 유지하려는 사용자를 위해 만들어진 멤버십입니다. 스페이스가 더 이상 가져오기 모드가 해제된 후 새 구성원을 추가하는 방법에 대한 자세한 내용은 멤버십 리소스 만들기를 참고하세요.
대부분의 경우 이전 멤버에게 Google의 데이터 보관 정책이 적용되는 경우 Chat으로 가져오기 전에 스페이스의 이전 멤버십으로 생성된 데이터 (예: 메시지 및 반응)를 보존하려고 합니다.
스페이스가 가져오기 모드에 있는 동안 Membership
리소스에서 create
메서드를 사용하여 이러한 이전 멤버십을 스페이스로 가져올 수 있습니다.
이전 멤버십의 탈퇴 시간을 보존하려면 멤버십의 deleteTime
를 설정해야 합니다. 휴가 시간은 해당 멤버십을 위해 보관할 데이터에 영향을 주므로 정확해야 합니다. 또한 이 deleteTime
는 스페이스 생성 타임스탬프 이후여야 하며 미래의 타임스탬프가 아니어야 합니다.
deleteTime
외에 createTime
를 설정하여 이전 멤버십의 원래 가입 시간을 보존할 수도 있습니다. deleteTime
와 달리 createTime
는 선택사항입니다. 설정하지 않으면 deleteTime
에서 1마이크로초를 빼서 createTime
가 자동으로 계산됩니다. 설정된 경우 createTime
는 deleteTime
이전이어야 하며 스페이스 생성 시간 또는 그 이후여야 합니다. 이 createTime
정보는 데이터 보관을 결정하는 데 사용되지 않으며 Google 관리 콘솔 및 Google Vault와 같은 관리 도구에 표시되지 않습니다.
사용자가 소스 메시지 플랫폼에서 스페이스에 참여하고 나갈 수 있는 방법은 여러 가지가 있을 수 있지만 (초대를 통하거나, 혼자 참여하거나, 다른 사용자가 추가함) Chat에서는 이러한 작업이 모두 추가 또는 삭제되는 이전 멤버십 createTime
및 deleteTime
필드로 표시됩니다.
다음 예는 가져오기 모드 공간에서 이전 멤버십을 만드는 방법을 보여줍니다.
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)
다음을 바꿉니다.
EMAIL
: 도메인 전체 권한으로 가장하고 있는 사용자 계정의 이메일 주소입니다.SPACE_NAME
: 가져오기 모드에서 만든 스페이스의 이름입니다.USER_ID
: 사용자의 고유 ID입니다.
가져온 리소스 검증
채팅 앱은 Message
리소스에서 list
메서드 를 호출하여 가져오기 모드 공간의 콘텐츠를 다시 읽고 검사할 수 있습니다.
반환된 모든 메시지의 emojiReactionSummaries
및 attachment
필드에서 Reaction
및 Attachment
리소스를 읽을 수 있습니다. 채팅 앱은 가장을 통해 사용자를 대신하여 이 메서드를 호출할 수 있습니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
채팅 앱은 Message
리소스에서 get
메서드를 호출하여 유효성 검사를 위해 개별 메시지를 읽을 수도 있습니다.
채팅 앱은 자체 권한을 사용하여 메시지를 읽기 위해서만 이 메서드를 호출할 수 있습니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
채팅 앱은 Membership
리소스에서 list
메서드를 호출하여 이전 멤버십 목록을 나열할 수도 있습니다.
스페이스가 가져오기 모드를 종료하면 list
메서드는 더 이상 이전 멤버십을 노출하지 않습니다. 채팅 앱은 가장을 통해 사용자를 대신해서만 이 메서드를 호출할 수 있습니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
Space
리소스에서 get
메서드를 호출하여 가져오기 모드 공간의 속성을 읽을 수 있습니다.
채팅 앱은 자체 권한을 통해서만 이 메서드를 호출할 수 있습니다.
자세한 내용은 채팅 앱 승인을 참고하세요.
가져온 리소스와 소스 데이터의 차이 조정
가져오기 중에 원래 항목이 변경되어 가져온 리소스가 소스 메시징 플랫폼의 원래 항목과 더 이상 일치하지 않는 경우 채팅 앱은 Chat API를 호출하여 가져온 채팅 리소스를 수정할 수 있습니다. 예를 들어 Chat에서 메시지를 만든 후 사용자가 원본 메시지 플랫폼에서 메시지를 수정하면 채팅 앱은 가져온 메시지를 업데이트하여 원본 메시지의 현재 내용을 반영할 수 있습니다.
메시지
가져오기 모드 공간의 메시지에서 지원되는 필드를 업데이트하려면 Message
리소스에서 update
메서드를 호출합니다.
채팅 앱은 최초 메시지를 만들 때 사용한 것과 동일한 권한을 사용해서만 이 메서드를 호출할 수 있습니다. 최초 메시지를 만들 때 사용자 가장을 사용한 경우 동일한 가장한 사용자를 사용하여 해당 메시지를 업데이트해야 합니다.
가져오기 모드 스페이스에서 메시지를 삭제하려면 Message
리소스에서 delete
메서드를 호출합니다.
가져오기 모드 공간의 메시지는 원래 메시지 작성자가 삭제할 필요가 없으며 도메인의 모든 사용자를 가장하여 삭제할 수 있습니다.
채팅 앱은 자체 권한을 사용하여 메시지만 삭제할 수 있습니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
리액션
가져오기 모드 공간에서 메시지에 대한 반응을 삭제하려면 reactions
리소스에서 delete
메서드를 사용합니다. 가져오기 모드 스페이스의 리소스 메서드 및 인증 지원 유형에 관한 자세한 내용은 채팅 앱 승인을 참고하세요.
첨부파일
가져오기 모드 스페이스에서 메시지 첨부파일을 업데이트하려면 media
리소스의 upload
메서드를 사용합니다. 가져오기 모드 스페이스의 리소스 메서드 및 인증 지원 유형에 관한 자세한 내용은 채팅 앱 승인을 참조하세요.
이전 멤버십
가져오기 모드 공간에서 이전 멤버십을 삭제하려면 Membership
리소스에서 delete
메서드를 사용합니다. 스페이스가 가져오기 모드를 종료한 후에는 delete
메서드를 사용하여 더 이상 이전 멤버십을 삭제할 수 없습니다.
가져오기 모드 스페이스에서는 이전 멤버십을 업데이트할 수 없습니다. 잘못 가져온 이전 멤버십을 수정하려면 먼저 삭제한 다음 스페이스가 가져오기 모드일 때 다시 만들어야 합니다.
스페이스
가져오기 모드 공간에서 지원되는 필드를 업데이트하려면 spaces
리소스에서 patch
메서드를 사용합니다.
가져오기 모드 공간을 삭제하려면 spaces
리소스에서 delete
메서드를 사용합니다.
가져오기 모드 공간에서의 리소스 메서드 및 인증 지원 유형에 대한 자세한 내용은 채팅 앱 승인을 참조하세요.
가져오기 모드 완료
completeImport
메서드를 호출하기 전에 유효성 검사 및 리소스 차이 조정이 완료되었는지 확인해야 합니다. 가져오기 모드에서 스페이스를 나가면 되돌릴 수 없으며 가져오기 모드 공간이 일반 스페이스로 변환됩니다. Chat에는 이러한 스페이스를 데이터 가져오기에서 비롯한다고 표시하는 표시가 없습니다.
가져오기 모드를 완료하고 사용자가 스페이스에 액세스할 수 있도록 하려면 Chat 앱은 Space
리소스에서 completeImport
메서드를 호출하면 됩니다.
채팅 앱은 사용자를 대신하여 가장을 통해서만 이 메서드를 호출할 수 있습니다. 자세한 내용은 채팅 앱 승인을 참고하세요.
이 메서드가 완료되면 가장된 사용자가 스페이스 관리자로 스페이스에 추가됩니다. 이 메서드는 create.space
메서드를 처음 호출한 후 30일 이내에 호출해야 합니다. 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)
다음을 바꿉니다.
EMAIL
: 도메인 전체 권한으로 가장하고 있는 사용자 계정의 이메일 주소입니다.SPACE_NAME
: 가져오기 모드에서 만든 스페이스의 이름입니다.
멤버십 리소스 만들기
가져오기 모드가 완료된 스페이스의 사용자 멤버십을 추가하려면 Membership
리소스에서 create
메서드를 호출합니다.
채팅 앱은 처음 create.space
메서드 호출 후 30일 이내에 chat.import
범위와 사용자 가장을 사용하여 이 메서드를 계속 호출할 수 있습니다. 가장된 사용자는 스페이스 관리자여야 합니다.
30일이 경과한 후 채팅 앱에서 이 메서드를 호출하려면 추가 멤버십 범위가 필요합니다.
채팅 앱이 멤버십 생성을 위해 chat.import
범위를 계속 사용하고 가져온 스페이스에 대한 액세스 권한을 모든 구성원에게 제공할 수 있도록 가져오기가 완료된 직후에 채팅 앱에서 멤버십 리소스를 만드는 것이 좋습니다.