이 페이지에서는 Google Workspace Events API를 사용하여 Google Workspace 리소스에 대한 구독을 만드는 방법을 설명합니다. Google Workspace 구독을 사용하면 앱이 Google Workspace 리소스의 변경사항을 나타내는 Google Workspace 이벤트에 관한 정보를 수신할 수 있습니다. Google Workspace Events API에서 지원하는 리소스 및 이벤트 유형에 대해 알아보려면 Google Workspace Events API 개요를 참고하세요.
이 페이지에는 Google Workspace 구독을 만드는 다음 단계가 포함되어 있습니다.
- 환경을 설정합니다.
- Google Cloud Pub/Sub 주제를 만들고 구독합니다. 이 문서를 Google Workspace 이벤트를 수신하는 엔드포인트로 사용합니다.
Subscription리소스에서 Google Workspace Events API의create메서드를 호출합니다.- Google Workspace 구독을 테스트하여 Pub/Sub 주제가 구독한 이벤트를 수신하는지 확인합니다.
- 선택적으로 앱이 이벤트를 처리하고 필요한 경우 조치를 취할 수 있도록 앱의 엔드포인트로 이벤트를 푸시하는 방법을 구성합니다.
기본 요건
Apps Script
- 이 가이드에서 Google Cloud CLI 명령어를 사용하려면 다음 안내를 따르세요.
- Google Cloud CLI 설치
gcloudCLI를 초기화하려면 다음 코드를 실행합니다.
gcloud init
- Apps Script 프로젝트:
- Apps Script에서 자동으로 생성된 기본 프로젝트 대신 Google Cloud 프로젝트를 사용합니다.
- OAuth 동의 화면을 구성하기 위해 추가한 모든 범위에 대해 Apps Script 프로젝트의
appsscript.json파일에도 범위를 추가해야 합니다. 예를 들어chat.messages범위를 지정한 경우 다음을 추가합니다. Google Workspace Events고급 서비스를 사용 설정합니다.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
- 결제가 사용 설정된 Google Cloud 프로젝트 Chat 구독의 경우 Cloud 프로젝트에서 Chat API를 사용 설정하고 앱 이름, 아바타 URL, 설명 필드를 구성해야 합니다. 자세한 내용은 Google Chat 앱 빌드를 참고하세요.
-
인증과 구독의 각 이벤트 유형에 적합한 승인 범위가 필요합니다.
- 일반적으로 앱에 대해 구성된 OAuth 동의 화면을 사용한 사용자 인증이 필요합니다. 동의 화면을 구성할 때 정기 결제의 각 이벤트 유형을 지원하는 범위를 지정해야 합니다. 동의 화면을 구성하고 필수 범위를 식별하려면 범위 선택을 참고하세요.
- 채팅 앱으로 채팅 이벤트를 구독하려면 일회성 관리자 승인을 통한 앱 인증이 필요합니다.
Python
- Python 3.6 이상
- pip 패키지 관리 도구
- 최신 Python용 Google 클라이언트 라이브러리 이를 설치하거나 업데이트하려면 명령줄 인터페이스에서 다음 명령어를 실행하세요.
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- 이 가이드에서 Google Cloud CLI 명령어를 사용하려면 다음 안내를 따르세요.
- Google Cloud CLI 설치
gcloudCLI를 초기화하려면 다음 코드를 실행합니다.
gcloud init
- 결제가 사용 설정된 Google Cloud 프로젝트 Chat 구독의 경우 Cloud 프로젝트에서 Chat API를 사용 설정하고 앱 이름, 아바타 URL, 설명 필드를 구성해야 합니다. 자세한 내용은 Google Chat 앱 빌드를 참고하세요.
-
인증과 구독의 각 이벤트 유형에 적합한 승인 범위가 필요합니다.
- 일반적으로 앱에 대해 구성된 OAuth 동의 화면을 사용한 사용자 인증이 필요합니다. 동의 화면을 구성할 때 정기 결제의 각 이벤트 유형을 지원하는 범위를 지정해야 합니다. 동의 화면을 구성하고 필수 범위를 식별하려면 범위 선택을 참고하세요.
- 채팅 앱으로 채팅 이벤트를 구독하려면 일회성 관리자 승인을 통한 앱 인증이 필요합니다.
환경 설정
다음 섹션에서는 Google Workspace 구독을 만들기 전에 환경을 설정하는 방법을 설명합니다.
Google Workspace Events API 및 Google Cloud Pub/Sub API 사용 설정
Google API를 사용하려면 먼저 Google Cloud 프로젝트에서 사용 설정해야 합니다. 단일 Google Cloud 프로젝트에서 하나 이상의 API를 사용 설정할 수 있습니다.Google Cloud 콘솔
Google Cloud 콘솔에서 앱의 Google Cloud 프로젝트를 열고 Google Workspace Events API와 Pub/Sub API를 사용 설정합니다.
gcloud
작업 디렉터리에서 Google 계정에 로그인합니다.
gcloud auth login프로젝트를 앱의 Cloud 프로젝트로 설정합니다.
gcloud config set project PROJECT_IDPROJECT_ID를 앱의 Cloud 프로젝트의 프로젝트 ID로 바꿉니다.Google Workspace Events API 및 Google Cloud Pub/Sub API를 사용 설정합니다.
gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com
OAuth 클라이언트 ID 사용자 인증 정보 만들기
OAuth 클라이언트 ID를 만드는 방법에 관한 구체적인 안내는 애플리케이션 유형을 선택하세요.
웹 애플리케이션
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > 웹 애플리케이션을 클릭합니다.
- 이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- 앱과 관련된 승인된 URI를 추가합니다.
- 클라이언트 측 앱(JavaScript): 승인된 JavaScript 출처에서 URI 추가를 클릭합니다. 그런 다음 브라우저 요청에 사용할 URI를 입력합니다. 이를 통해 애플리케이션이 OAuth 2.0 서버에 API 요청을 보낼 수 있는 도메인이 식별됩니다.
- 서버 측 앱(Java, Python 등): 승인된 리디렉션 URI에서 URI 추가를 클릭합니다. 그런 다음 OAuth 2.0 서버가 응답을 보낼 수 있는 엔드포인트 URI를 입력합니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 OAuth 2.0 클라이언트 ID 아래에 표시됩니다.
클라이언트 ID를 기록해 둡니다. 클라이언트 보안 비밀번호는 웹 애플리케이션에 사용되지 않습니다.
Android
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > Android를 클릭합니다.
- '이름' 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- '패키지 이름' 필드에
AndroidManifest.xml파일의 패키지 이름을 입력합니다. - 'SHA-1 인증서 지문' 필드에 생성된 SHA-1 인증서 지문을 입력합니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
iOS
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > iOS를 클릭합니다.
- '이름' 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- '번들 ID' 필드에 앱의
Info.plist파일에 나열된 번들 식별자를 입력합니다. - 선택사항: 앱이 Apple App Store에 표시되는 경우 App Store ID를 입력합니다.
- 선택사항: '팀 ID' 필드에 Apple에서 생성하여 팀에 할당한 고유한 10자리 문자열을 입력합니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
Chrome 앱
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > Chrome 확장 프로그램을 클릭합니다.
- '이름' 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- '상품 ID' 필드에 앱의 고유한 32자 ID 문자열을 입력합니다. 이 ID 값은 앱의 Chrome 웹 스토어 URL과 Chrome 웹 스토어 개발자 대시보드에서 확인할 수 있습니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
데스크톱 앱
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > 데스크톱 앱을 클릭합니다.
- 이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
TV 및 입력 제한 기기
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > TV 및 제한된 입력 기기를 클릭합니다.
- '이름' 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
Universal Windows Platform(UWP)
- Google API 콘솔에서 메뉴 > Google 인증 플랫폼 > 클라이언트로 이동합니다.
- 클라이언트 만들기를 클릭합니다.
- 애플리케이션 유형 > 유니버설 Windows 플랫폼 (UWP)을 클릭합니다.
- '이름' 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google API 콘솔에만 표시됩니다.
- '스토어 ID' 필드에 앱의 고유한 12자리 Microsoft Store ID 값을 입력합니다. 이 ID는 앱의 Microsoft Store URL과 파트너 센터에서 확인할 수 있습니다.
- 만들기를 클릭합니다.
새로 만든 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.
클라이언트 보안 비밀번호 JSON 파일 다운로드
클라이언트 보안 비밀번호 파일은 사용자 인증 정보를 제공할 때 앱이 참조할 수 있는 OAuth 클라이언트 ID 사용자 인증 정보의 JSON 표현입니다.
Google API 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.
OAuth 2.0 클라이언트 ID에서 만든 클라이언트 ID를 클릭합니다.
JSON 다운로드를 클릭합니다.
파일을
credentials.json로 저장합니다.
Pub/Sub 주제를 만들고 구독하기
이 섹션에서는 Pub/Sub 주제와 해당 주제에 대한 구독을 만듭니다. Pub/Sub 주제는 Google Workspace 구독이 이벤트를 수신하는 알림 엔드포인트 역할을 합니다.
Pub/Sub 주제를 만들고 관리하는 방법을 자세히 알아보려면 Pub/Sub 문서를 참고하세요.
Pub/Sub 주제를 만들고 구독하려면 다음 단계를 따르세요.
Google API 콘솔
Google API 콘솔에서 Pub/Sub 페이지로 이동합니다.
앱의 Cloud 프로젝트가 선택되어 있는지 확인합니다.
주제 만들기를 클릭하고 다음을 실행합니다.
- 주제 이름(예:
workspace-events-topic)을 입력합니다. - 기본 구독 추가를 선택된 상태로 둡니다. Pub/Sub는 이 기본 구독의 이름을 주제 이름과 유사하게 지정합니다(예:
workspace-events-topic-sub). - 선택사항: 주제의 추가 속성을 업데이트하거나 구성합니다.
- 주제 이름(예:
만들기를 클릭합니다. 전체 주제 이름은
projects/PROJECT_ID/topics/TOPIC_ID형식으로 지정됩니다. 이 전체 이름은 이후 단계에서 사용합니다.주제에 Pub/Sub 메시지를 게시할 수 있는 액세스 권한을 부여합니다.
- 주제 페이지에서 측면 패널로 이동하여 권한 탭을 엽니다.
- 주 구성원 추가를 클릭합니다.
- 주 구성원 추가 필드에 구독에 이벤트를 제공하는 Google Workspace 애플리케이션의 서비스 계정을 추가합니다.
- 채팅 이벤트의 경우:
- 채팅 앱이 채팅을 확장하는 Google Workspace 부가기능인 경우 Chat API 구성 페이지에서 서비스 계정 이메일을 사용하세요. 자세한 내용은 Pub/Sub를 사용하는 Google Chat 앱 빌드를 참고하세요.
- Chat 앱이 Chat API 상호작용 이벤트를 사용하는 경우
chat-api-push@system.gserviceaccount.com를 사용하세요.
- 개발자 프리뷰: Drive 이벤트의 경우
drive-api-event-push@system.gserviceaccount.com입니다. - Meet 이벤트의 경우
meet-api-event-push@system.gserviceaccount.com를 참고하세요.
- 채팅 이벤트의 경우:
- 역할 할당 메뉴에서
Pub/Sub Publisher를 선택합니다. - 저장을 클릭합니다. 주제에 대한 권한을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다.
gcloud
Cloud 프로젝트에서 다음 명령어를 실행하여 주제를 만듭니다.
gcloud pubsub topics create TOPIC_IDTOPIC_ID를 주제의 고유 ID(예:workspace-events-topic)로 바꿉니다.출력에는
projects/PROJECT_ID/topics/TOPIC_ID형식으로 지정된 전체 주제 이름이 표시됩니다. 이름을 기록하고 PROJECT_ID 값이 앱의 Cloud 프로젝트 ID인지 확인합니다. 다음 단계에서 주제 이름을 사용하고 나중에 Google Workspace 구독을 만듭니다.주제에 메시지를 게시할 수 있는 액세스 권한을 부여합니다.
gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'다음을 바꿉니다.
TOPIC_NAME: 전체 주제 이름입니다. 이전 단계의 출력입니다. 형식은projects/PROJECT_ID/topics/TOPIC_ID입니다.GOOGLE_WORKSPACE_APPLICATION: 구독에 이벤트를 전달해야 하는 Google Workspace 애플리케이션입니다.- Chat에서 이벤트를 수신하려면 다음 서비스 계정 중 하나를 사용하세요.
- 채팅 앱이 채팅을 확장하는 Google Workspace 부가기능인 경우 Chat API 구성 페이지에서 서비스 계정 이메일을 사용하세요. 자세한 내용은 Pub/Sub를 사용하는 Google Chat 앱 빌드를 참고하세요.
- Chat 앱이 Chat API 상호작용 이벤트를 사용하는 경우
chat-api-push@system.gserviceaccount.com를 사용하세요.
- 개발자 프리뷰: Drive에서 이벤트를 수신하려면
drive-api-event-push@system.gserviceaccount.com를 사용하세요. - Meet에서 이벤트를 수신하려면
meet-api-event-push@system.gserviceaccount.com을 사용하세요.
- Chat에서 이벤트를 수신하려면 다음 서비스 계정 중 하나를 사용하세요.
주제에 대한 권한을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다.
주제의 Pub/Sub 구독을 만듭니다.
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME다음을 바꿉니다.
SUBSCRIPTION_NAME: 구독 이름입니다(예:workspace-events-subscription).TOPIC_NAME: 이전 단계에서 만든 주제의 이름입니다.
Google Workspace 리소스 구독
이 섹션에서는 이벤트에 대해 모니터링하려는 Google Workspace 리소스를 구독합니다.
타겟 리소스 선택 및 식별
Google Workspace 구독에서 타겟 리소스는 이벤트를 모니터링하는 Google Workspace 리소스입니다. 타겟 리소스는 전체 리소스 이름을 사용하여 형식이 지정된 구독의 targetResource 필드에 표시됩니다. 예를 들어 Chat 스페이스 (spaces/AAAABBBBBBB)를 모니터링하는 구독의 경우 targetResource 값은 //chat.googleapis.com/spaces/AAAABBBBBBB입니다.
Chat의 타겟 리소스 식별
| 타겟 리소스 | 방식 | 제한사항 |
|---|---|---|
| 공백 |
여기서 SPACE은 Chat API |
구독을 승인하는 Chat 사용자 또는 Chat 앱은 Google Workspace 또는 Google 계정을 통해 스페이스의 구성원이어야 합니다. 지원: |
| 사용자의 모든 스페이스 |
|
구독은 사용자가 Google Workspace 또는 Google 계정을 통해 회원인 스페이스의 이벤트만 수신합니다. 사용자 인증만 지원합니다. |
| 사용자 |
여기서 USER은 Chat API |
구독은 구독을 승인한 사용자에 관한 이벤트만 수신합니다. 사용자는 다른 사용자를 대신하여 구독을 승인할 수 없습니다. 사용자 인증만 지원합니다. |
Drive의 타겟 리소스 식별
| 타겟 리소스 | 방식 | 제한사항 (해당하는 경우) |
|---|---|---|
| 파일 |
//drive.googleapis.com/files/FILE
여기서 FILE은 Drive API |
정기 결제를 승인하는 사용자에게는 정기 결제 내에서 이벤트 구독과 관련된 파일에 대한 권한이 있어야 합니다. |
| 공유 드라이브 |
//drive.googleapis.com/drives/DRIVE
여기서 DRIVE은 Drive API |
구독은 사용자가 Google Workspace 계정 또는 Google 계정을 통해 회원인 공유 드라이브의 항목에 대한 이벤트만 수신합니다. |
Meet의 대상 리소스 식별
| 타겟 리소스 | 방식 | 제한사항 (해당하는 경우) |
|---|---|---|
| 회의 공간 | //meet.googleapis.com/spaces/SPACE
여기서 SPACE은 Meet REST API |
|
| 사용자 | //cloudidentity.googleapis.com/users/USER
여기서 USER는 Meet REST API |
사용자가 회의 스페이스의 소유자인 모든 회의 스페이스에 관한 이벤트를 구독에서 수신합니다. 일반적으로 회의실 소유자는 회의실과 연결된 Google Calendar 일정의 주최자이기도 합니다. |
Google Workspace 구독 만들기
구독을 만들려면 Google Workspace Events API의 subscriptions.create 메서드를 사용하여 Subscription 리소스를 만듭니다.
다음 필드를 지정합니다.
targetResource: 이전 섹션에서 식별한 Google Workspace로, 전체 리소스 이름을 사용하여 형식이 지정됩니다.eventTypes: 리소스에 관해 수신하려는 하나 이상의 이벤트 유형의 배열입니다. 예를 들어 앱이 Chat 스페이스에 게시된 새 메시지에 대해서만 알아야 하는 경우 앱은 생성된 메시지에 관한 이벤트만 구독하면 됩니다.notificationEndpoint: Google Workspace 구독에서 이벤트를 전송하는 알림 엔드포인트입니다. 이전 섹션에서 만든 Pub/Sub 주제를 사용합니다.payloadOptions: 이벤트 페이로드에 포함할 리소스 데이터의 양을 지정하는 옵션입니다. 이 구성은 구독의 만료 시간에 영향을 미칩니다. 자세한 내용은 이벤트 데이터를 참고하세요.
Google Workspace 구독을 만들려면 다음 단계를 따르세요.
Apps Script
Apps Script 프로젝트에서
createSubscription라는 새 스크립트 파일을 만들고 다음 코드를 추가합니다.function createSubscription() { // The Google Workspace resource to monitor for events. const targetResource = 'TARGET_RESOURCE'; // The types of events to receive. const eventTypes = [EVENT_TYPES]; // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. const pubsubTopic = 'TOPIC_NAME'; // Whether to include resource data or not. const resourceData = RESOURCE_DATA; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.create({ targetResource: targetResource, eventTypes: eventTypes, notificationEndpoint: { pubsubTopic: pubsubTopic, }, payloadOptions: { includeResource: resourceData } }); console.log(response); }다음을 바꿉니다.
TARGET_RESOURCE: 구독 중인 Google Workspace 리소스입니다. 전체 리소스 이름으로 형식이 지정됩니다. 예를 들어 스페이스 ID가AAAABBBB인 Chat 스페이스를 구독하려면//chat.googleapis.com/spaces/AAAABBBB를 사용합니다.EVENT_TYPES: 대상 리소스에서 구독하려는 하나 이상의 이벤트 유형입니다.'google.workspace.chat.message.v1.created'과 같은 문자열 배열로 형식을 지정합니다.TOPIC_NAME: Cloud 프로젝트에서 생성한 Pub/Sub 주제의 전체 이름입니다. 형식은projects/PROJECT_ID/topics/TOPIC_ID입니다.RESOURCE_DATA: 구독에 페이로드의 리소스 데이터가 포함되는지 여부를 지정하는 불리언입니다.True: 모든 리소스 데이터를 포함합니다. 포함되는 필드를 제한하려면fieldMask필드를 추가하고 변경된 리소스에 대해 하나 이상의 필드를 지정합니다. Chat 리소스 구독만 리소스 데이터 포함을 지원합니다.False: 리소스 데이터를 제외합니다.
Google Workspace 구독을 만들려면 Apps Script 프로젝트에서
createSubscription함수를 실행합니다.
Python
작업 디렉터리에
create_subscription.py라는 파일을 만들고 다음 코드를 추가합니다."""Create subscription.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = [SCOPES] # Authenticate with Google Workspace and get user authentication. flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) CREDENTIALS = flow.run_local_server() # The Google Workspace resource to monitor for events. TARGET_RESOURCE = 'TARGET_RESOURCE' # The types of events to receive. EVENT_TYPES = [EVENT_TYPES] # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. TOPIC = 'TOPIC_NAME' # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) BODY = { 'target_resource': TARGET_RESOURCE, 'event_types': EVENT_TYPES, 'notification_endpoint': {'pubsub_topic': TOPIC}, 'payload_options': {'include_resource': RESOURCE_DATA}, } response = service.subscriptions().create(body=BODY).execute() print(response)다음을 바꿉니다.
SCOPES: 정기 결제의 각 이벤트 유형을 지원하는 하나 이상의 OAuth 범위입니다. 문자열 배열로 형식이 지정됩니다. 여러 범위를 나열하려면 쉼표로 구분하세요.'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'를 예로 들 수 있습니다.TARGET_RESOURCE: 구독 중인 Google Workspace 리소스입니다. 전체 리소스 이름으로 형식이 지정됩니다. 예를 들어 스페이스 ID가AAAABBBB인 Chat 스페이스를 구독하려면//chat.googleapis.com/spaces/AAAABBBB를 사용합니다.EVENT_TYPES: 대상 리소스에서 구독하려는 하나 이상의 이벤트 유형입니다.'google.workspace.chat.message.v1.created'과 같은 문자열 배열로 형식을 지정합니다.TOPIC_NAME: Cloud 프로젝트에서 생성한 Pub/Sub 주제의 전체 이름입니다. 형식은projects/PROJECT_ID/topics/TOPIC_ID입니다.RESOURCE_DATA: 구독에 페이로드의 리소스 데이터가 포함되는지 여부를 지정하는 불리언입니다.True: 모든 리소스 데이터를 포함합니다. 포함되는 필드를 제한하려면fieldMask필드를 추가하고 변경된 리소스에 대해 하나 이상의 필드를 지정합니다. Chat 리소스 구독만 리소스 데이터 포함을 지원합니다.False: 리소스 데이터를 제외합니다.
Google Workspace 구독을 만들려면 터미널에서 다음을 실행하세요.
python3 create_subscription.py
Google Workspace Events API는 생성한 Subscription 리소스의 인스턴스가 포함된 완료된 장기 실행 작업을 반환합니다.
Google Workspace 구독 테스트하기
Google Workspace 이벤트를 수신하는지 테스트하려면 이벤트를 트리거하고 Pub/Sub 구독으로 메시지를 가져오면 됩니다.
Google Workspace 구독을 테스트하려면 다음 단계를 따르세요.
Google API 콘솔
Google Workspace 구독의 타겟 리소스에서 하나 이상의 이벤트 유형을 트리거합니다. 예를 들어 Chat 스페이스의 새 메시지를 구독한 경우 스페이스에 메시지를 게시합니다.
Google API 콘솔에서 Pub/Sub 페이지로 이동합니다.
앱의 Cloud 프로젝트가 선택되어 있는지 확인합니다.
Pub/Sub 메뉴에서 구독을 클릭합니다.
표에서 주제의 Pub/Sub 구독을 찾아 구독 이름을 클릭합니다.
메시지 탭을 클릭합니다.
가져오기를 클릭합니다. 이벤트에서 Pub/Sub 메시지를 생성하는 데 몇 분 정도 걸릴 수 있습니다.
gcloud
Google Workspace 구독의 타겟 리소스에서 하나 이상의 이벤트 유형을 트리거합니다. 예를 들어 Chat 스페이스의 새 메시지를 구독한 경우 스페이스에 메시지를 게시합니다.
다음 명령어를 실행합니다.
gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack다음을 바꿉니다.
PUBSUB_SUBSCRIPTION_NAME: Pub/Sub 구독의 전체 이름입니다. 형식은projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID입니다.MESSAGE_COUNT: 가져오려는 Pub/Sub 메시지의 최대 개수입니다.
이벤트에서 Pub/Sub 메시지를 생성하는 데 몇 분 정도 걸릴 수 있습니다.
트리거한 각 Google Workspace 이벤트에 대해 이벤트가 포함된 메시지가 Pub/Sub 구독에 전송됩니다. 자세한 내용은 Google Cloud Pub/Sub 메시지로 이벤트 수신을 참고하세요.
앱에서 이벤트를 수신하는 방식 구성
생성한 Pub/Sub 구독은 풀 기반입니다. Pub/Sub 구독을 테스트한 후 전송 유형을 업데이트하여 앱이 이벤트를 수신하는 방식을 변경할 수 있습니다. 예를 들어 앱이 앱 엔드포인트로 직접 이벤트를 수신할 수 있도록 푸시 전송 유형으로 Pub/Sub 구독을 구성할 수 있습니다.
Pub/Sub 구독 구성에 대해 알아보려면 Pub/Sub 문서를 참고하세요.
Google Chat 앱으로 Chat 스페이스 이벤트 구독
Chat 앱이 회원으로 속한 스페이스에서 Chat 앱으로 Chat 이벤트를 구독할 수 있습니다. Chat 앱은 사용자 이벤트를 구독할 수 없습니다.
Google Workspace Events API를 호출하는 스크립트 작성
앱 인증 및 관리자 승인을 사용하여 Chat 스페이스 이벤트 구독을 만드는 방법은 다음과 같습니다.
- 필요한 경우 Chat 앱을 빌드합니다.
-
- 사용자 인증 대신 일회성 관리자 승인으로 Chat 앱으로 인증합니다.
Chat 앱이 Chat 이벤트를 구독할 수 있도록 허용하는 승인 범위를 지정합니다. 이러한 승인 범위는 항상
chat.app로 시작하며 다음을 포함합니다.https://www.googleapis.com/auth/chat.app.memberships: Chat 스페이스 회원 이벤트를 구독합니다.https://www.googleapis.com/auth/chat.app.memberships.readonly: Chat 스페이스 회원 이벤트를 구독합니다.https://www.googleapis.com/auth/chat.app.messages.readonly: Chat 스페이스 메시지 및 반응 이벤트를 구독합니다.https://www.googleapis.com/auth/chat.app.spaces: Chat 스페이스 이벤트를 구독합니다.https://www.googleapis.com/auth/chat.app.spaces.readonly: Chat 스페이스 이벤트를 구독합니다.
다음 코드 샘플은 지정된 Chat 스페이스의 메시지 이벤트를 구독합니다.
Python
"""Create subscription."""
from google.oauth2 import service_account
from apiclient.discovery import build
# Specify required scopes.
SCOPES = ['https://www.googleapis.com/auth/chat.app.messages.readonly']
# Specify service account details.
CREDENTIALS = (
service_account.Credentials.from_service_account_file('credentials.json')
.with_scopes(SCOPES)
)
# The Google Workspace resource to monitor for events.
TARGET_RESOURCE = '//chat.googleapis.com/spaces/SPACE_ID'
# The types of events to receive.
EVENT_TYPES = [
'google.workspace.chat.message.v1.created',
'google.workspace.chat.message.v1.updated',
'google.workspace.chat.message.v1.deleted',
]
# The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
TOPIC = 'TOPIC_NAME'
# Call the Workspace Events API using the service endpoint.
service = build(
'workspaceevents',
'v1beta',
credentials=CREDENTIALS,
)
BODY = {
'target_resource': TARGET_RESOURCE,
'event_types': EVENT_TYPES,
'notification_endpoint': {'pubsub_topic': TOPIC},
'payload_options': {'include_resource': RESOURCE_DATA},
}
response = service.subscriptions().create(body=BODY).execute()
print(response)
다음을 바꿉니다.
SPACE_ID: 스페이스 이름입니다. Chat API의spaces.list메서드 또는 스페이스의 URL에서 가져올 수 있습니다.TOPIC_NAME: Cloud 프로젝트에서 생성한 Pub/Sub 주제의 전체 이름입니다. 형식은projects/PROJECT_ID/topics/TOPIC_ID입니다.RESOURCE_DATA: 구독에 페이로드의 리소스 데이터가 포함되는지 여부를 지정하는 불리언입니다.True: 모든 리소스 데이터를 포함합니다. 포함되는 필드를 제한하려면fieldMask필드를 추가하고 변경된 리소스에 대해 하나 이상의 필드를 지정합니다. Chat 리소스 구독만 리소스 데이터 포함을 지원합니다.False: 리소스 데이터를 제외합니다.