Python 및 Google Meet REST API로 회의 이벤트 관찰

이 가이드에서는 Google Meet REST API를 사용하는 방법을 이벤트를 관찰하고 대응하기 위한 Google Workspace Events API 및 Google Cloud Pub/Sub 회의에서 진행될 수 있습니다. 샘플 애플리케이션은 회의 시작 및 종료 시간, 참가자가 들어가거나 나가는 시간, 생성된 회의 아티팩트를 사용할 수 있습니다.

특정 회의 공간을 구독하는 대신 Meet 사용자가 보내는 회의 공간의 일정을 수신할 수 있습니다. 사용자가 소유하거나 조직합니다. 자세한 내용은 Google Meet 이벤트 구독하기 Google Workspace Events API 문서에 설명되어 있습니다.

기본 요건

조직에 이러한 기본 요건을 사용 설정해야 하는 경우 Google Workspace 관리자가 사용 설정하려면 다음 안내를 따르세요.

개발 환경 준비

이 섹션에서는 로컬 환경을 만들고 구성하는 방법과 Google Cloud 프로젝트입니다.

작업 디렉터리 및 Python 가상 환경 만들기

새 가상 머신을 만들고 활성화하기 위해 환경이 있는 경우 다음을 실행합니다. 명령합니다.

Linux/macOS

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
source env/bin/activate

Windows (명령 프롬프트)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.bat

Windows(PowerShell)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.ps1

Google Cloud 프로젝트 만들기

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 메뉴 로 이동합니다. > IAM 및 관리자 > 프로젝트 만들기를 클릭합니다.

    프로젝트 만들기로 이동

  2. 프로젝트 이름 필드에 프로젝트를 설명하는 이름을 입력합니다.

    선택사항: 프로젝트 ID를 수정하려면 수정을 클릭합니다. 프로젝트 ID는 변경할 수 없습니다. 따라서 수명 주기 동안 필요에 맞는 ID를 선택하세요. 살펴보겠습니다

  3. 위치 입력란에서 찾아보기를 클릭하여 내 비즈니스의 예상 위치를 표시합니다. 살펴보겠습니다 그런 다음 선택을 클릭합니다.
  4. 만들기를 클릭합니다. Google Cloud 콘솔이 대시보드 페이지로 이동하고 프로젝트가 생성됩니다. 몇 분 이내에 다시 시작할 수 있습니다.

gcloud CLI

다음 개발 환경 중 하나에서 Google Cloud CLI (`gcloud`):

  • Cloud Shell: gcloud CLI로 온라인 터미널 사용 설정되어 있다면 Cloud Shell을 활성화합니다
    Cloud Shell 활성화
  • 로컬 셸: 로컬 개발 환경을 사용하려면 install초기화 gcloud CLI에 연결할 수 있습니다
    Cloud 프로젝트를 만들려면 `gcloud projects create`명령어를 사용합니다.
    gcloud projects create PROJECT_ID
    만들려는 프로젝트의 ID를 설정하여 PROJECT_ID를 바꿉니다.

Google Cloud 프로젝트에 결제 사용 설정

<ph type="x-smartling-placeholder">

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 결제로 이동합니다. 클릭 메뉴 &gt; 결제 &gt; 내 프로젝트를 클릭합니다.

    내 프로젝트의 결제로 이동

  2. 조직 선택에서 Google Cloud 프로젝트에 액세스할 수 있습니다
  3. 프로젝트 행에서 작업 메뉴를 엽니다. (), 결제 변경을 클릭하고 Cloud Billing 계정
  4. 계정 설정을 클릭합니다.

gcloud CLI

  1. 사용 가능한 결제 계정을 나열하려면 다음을 실행합니다.
    gcloud billing accounts list
  2. 결제 계정을 Google Cloud 프로젝트에 연결합니다.
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    다음을 바꿉니다.

    • PROJECT_ID는 다음 프로젝트의 프로젝트 ID입니다. 결제를 사용 설정할 Cloud 프로젝트입니다.
    • BILLING_ACCOUNT_ID는 연결할 결제 계정 ID입니다. Google Cloud 프로젝트입니다

인증 및 승인 설정

인증 및 승인을 통해 앱에서 Meet REST API에 액세스할 수 있습니다. 리소스를 배포합니다 Meet REST API를 호출하려면 사용자 승인이 필요합니다. 이 섹션에서는 사용자 인증 정보 및 요청을 구성하는 방법을 설명합니다. 있습니다.

OAuth 동의 화면 구성 및 범위 선택

다음 단계에서는 구성할 자리표시자 정보를 제안합니다. OAuth 동의 화면 있습니다. 앱을 외부에 게시하기 전에 이 정보를 업데이트하세요.

  1. Google Cloud 콘솔에서 메뉴 로 이동합니다. &gt; API 및 서비스 &gt; OAuth 동의 화면.

    OAuth 동의 화면으로 이동

  2. 사용자 유형에서 내부를 선택한 다음 만들기를 클릭합니다. <ph type="x-smartling-placeholder">
  3. 앱 이름Meet REST API Tutorial를 입력합니다.
  4. 앱 등록 양식을 작성한 다음 저장하고 계속하기를 클릭합니다.
  5. 범위 추가 또는 삭제를 클릭합니다. 범위 목록이 포함된 패널이 표시됨 .
  6. 수동으로 범위 추가 아래에 다음 범위를 붙여넣습니다. <ph type="x-smartling-placeholder">
      </ph>
    • https://www.googleapis.com/auth/meetings.space.created
  7. 테이블에 추가를 클릭합니다.
  8. 업데이트를 클릭합니다.
  9. 필요한 범위를 선택한 후 저장하고 계속하기를 클릭합니다.
  10. 사용자 유형으로 외부를 선택한 경우 테스트 사용자를 추가합니다. <ph type="x-smartling-placeholder">
      </ph>
    1. 테스트 사용자에서 사용자 추가를 클릭합니다.
    2. 이메일 주소 및 다른 승인된 테스트 사용자를 입력하고 다음을 클릭합니다. 저장하고 계속하기를 클릭합니다.
  11. 앱 등록 요약을 검토합니다. 변경하려면 수정을 클릭합니다. 앱이 등록이 확인되면 대시보드로 돌아가기를 클릭합니다.

클라이언트 ID 만들기

클라이언트 ID는 OAuth 2.0에서 애플리케이션의 사용자 인증 정보 역할을 합니다. 있습니다 앱이 로컬에서 실행되므로 데스크톱 클라이언트 ID를 만듭니다.

  1. Google Cloud 콘솔에서 메뉴 &gt; API 및 서비스 &gt; 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 &gt; OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 &gt; 데스크톱 앱을 클릭합니다.
  4. 이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud 콘솔에만 표시됩니다.
  5. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 표시되고 새 클라이언트 ID와 클라이언트 비밀번호가 표시됩니다.
  6. 확인을 클릭합니다. 새로 생성된 사용자 인증 정보가 OAuth 2.0 클라이언트 ID 아래에 표시됩니다.

Google 인증 라이브러리 설치

Google 인증 라이브러리를 설치합니다.

pip install google-auth google-auth-oauthlib

승인 실행

Meet REST API를 사용하려면 OAuth 2.0 형태의 사용자 인증 정보가 필요합니다. 액세스할 수 있습니다. 이 섹션에서는 OAuth 2.0 흐름을 구현하여 액세스 토큰 및 갱신 토큰이 필요합니다.

  1. 작업 디렉터리에서 main.py 파일을 만들고 다음을 추가합니다. 콘텐츠:

    import os
    import json
    
    from google.auth.transport import requests
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    
    def authorize() -> Credentials:
        """Ensure valid credentials for calling the Meet REST API."""
        CLIENT_SECRET_FILE = "./client_secret.json"
        credentials = None
    
        if os.path.exists('token.json'):
            credentials = Credentials.from_authorized_user_file('token.json')
    
        if credentials is None:
            flow = InstalledAppFlow.from_client_secrets_file(
                CLIENT_SECRET_FILE,
                scopes=[
                    'https://www.googleapis.com/auth/meetings.space.created',
                ])
            flow.run_local_server(port=0)
            credentials = flow.credentials
    
        if credentials and credentials.expired:
            credentials.refresh(requests.Request())
    
        if credentials is not None:
            with open("token.json", "w") as f:
                f.write(credentials.to_json())
    
        return credentials
    
    USER_CREDENTIALS = authorize()
    
  2. 코드를 실행하기 위해 앞에서 만든 클라이언트 ID와 보안 비밀이 모두 필요합니다. 다운로드한 클라이언트 보안 비밀번호 파일을 작업 중인 프로젝트에 복사 디렉터리를 client_secret.json로 바꿉니다.

  3. 승인이 어떻게 작동하는지 테스트하려면 다음 명령어를 실행합니다. 앱에서 승인을 요청하는 메시지를 표시하고 token.json 파일을 만듭니다. 프로젝트 작업 디렉터리에 저장됩니다.

    python3 main.py
    

Meet REST API 추가

이제 승인 코드가 완성되었으므로 사용 설정하고 REST API를 소개합니다.

API 사용 설정

이 섹션에서는 Meet REST API에 중점을 두지만 Google Cloud Pub/Sub 및 Google Workspace Events API.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 Google Meet REST API를 사용 설정합니다. Google Workspace Events API, Google Cloud Pub/Sub 등이 있죠

    API 사용 설정

  2. 올바른 Cloud 프로젝트에서 선택한 후 다음을 클릭합니다.

  3. 올바른 API를 사용 설정했는지 확인한 다음 사용 설정을 클릭합니다.

gcloud CLI

  1. 필요한 경우 현재 Cloud 프로젝트를 gcloud config set project 명령어로 생성됩니다.

    gcloud config set project PROJECT_ID
    

    PROJECT_ID프로젝트 ID로 Cloud 프로젝트입니다

  2. Google Meet REST API, Google Workspace Events API, gcloud services enable 명령어를 사용한 Google Cloud Pub/Sub:

    gcloud services enable meet.googleapis.com workspaceevents.googleapis.com pubsub.googleapis.com
    

Meet REST API 클라이언트 라이브러리 설치

Meet REST API 클라이언트 라이브러리를 설치하려면 다음 단계를 따르세요.

  1. 다음 명령어를 실행합니다.

    pip install google-apps-meet
    
  2. main.py 파일을 수정하여 클라이언트를 가져옵니다.

    from google.apps import meet_v2 as meet
    

스페이스 만들기

이제 Meet REST API를 사용할 수 있으므로 참여할 수 있는 회의 공간입니다.

main.py을 수정하고 다음을 추가합니다.

def create_space() -> meet.Space:
    """Create a meeting space."""
    client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
    request = meet.CreateSpaceRequest()
    return client.create_space(request=request)

이벤트 구독

회의 공간에 관한 일정을 수신하려면 다음을 사용하여 구독을 만드세요. Google Workspace Events API. 또한 알림 엔드포인트 역할을 하는 Google Cloud Pub/Sub 주제는 앱에서 이벤트를 수신합니다.

Google Cloud Pub/Sub 구성

Pub/Sub 주제를 만들고 구독하려면 다음 안내를 따르세요.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 메뉴 로 이동합니다. &gt; Pub/Sub로 이동합니다.

    Pub/Sub로 이동

    앱의 Cloud 프로젝트가 선택되어 있는지 확인합니다.

  2. 주제 만들기를 클릭하고 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    1. 주제 이름으로 workspace-events를 입력합니다.
    2. 기본 구독 추가를 선택된 상태로 둡니다.
    3. 만들기를 클릭합니다. 전체 주제 이름의 형식은 다음과 같습니다. projects/{project}/topics/{topic} 메모하기 나중에 사용할 수 있습니다.
  3. 주제에 Pub/Sub 메시지를 게시할 액세스 권한을 부여합니다. <ph type="x-smartling-placeholder">
      </ph>
    1. 측면 패널에서 권한
    2. 주 구성원 추가를 클릭합니다.
    3. 새 주 구성원에서 meet-api-event-push@system.gserviceaccount.com를 입력합니다.
    4. 역할 할당에서 Pub/Sub Publisher를 선택합니다.
    5. 저장을 클릭합니다.

    주제에 대한 권한을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다.

gcloud CLI

  1. Cloud 프로젝트에서 다음을 실행하여 주제를 만듭니다.
    gcloud pubsub topics create workspace-events

    출력에는 projects/{project}/topics/{topic} 메모하기 나중에 사용할 수 있습니다.

  2. 주제에 메시지를 게시할 액세스 권한을 부여합니다.
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

    주제에 대한 권한을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다.

  3. 주제에 대한 Pub/Sub 구독을 만듭니다.
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

    다음을 바꿉니다.

    • TOPIC_NAME: 내가 만든 주제의 이름입니다. 이전 단계에서 설명하겠습니다.

주제 이름을 기록해 두고 {project}의 값이 앱의 Cloud 프로젝트 ID입니다. 주제 이름을 사용하여 나중에 Google Workspace를 구독할 수 있습니다.

서비스 계정 만들기

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 메뉴 로 이동합니다. &gt; IAM 및 관리자 &gt; 서비스 계정으로 이동합니다.

    서비스 계정으로 이동

  2. 서비스 계정 만들기를 클릭합니다.
  3. 서비스 계정 세부정보를 입력한 다음 만들고 계속하기를 클릭합니다.
  4. 선택사항: 서비스 계정에 역할을 할당하여 Google Cloud 프로젝트의 리소스에 대한 액세스 권한을 부여합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
  5. 계속을 클릭합니다.
  6. 선택사항: 이 서비스 계정으로 관리하고 작업을 수행할 수 있는 사용자 또는 그룹을 입력합니다. 자세한 내용은 서비스 계정 가장 기능 관리를 참고하세요.
  7. 완료를 클릭합니다. 서비스 계정의 이메일 주소를 기록해 둡니다.

gcloud CLI

  1. 서비스 계정을 만듭니다.
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. 선택사항: 서비스 계정에 역할을 할당하여 Google Cloud 프로젝트의 리소스에 대한 액세스 권한을 부여합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.

서비스 계정 사용

서비스 계정을 만든 후에는 서비스 계정을 만들 수 있습니다

Google Cloud 콘솔

  1. 새로 만든 서비스 계정의 작업 열에서 <ph type="x-smartling-placeholder"></ph> &gt; 권한 관리를 탭합니다.
  2. 키 추가를 클릭합니다. &gt; 액세스 권한 부여를 클릭합니다.
  3. 주 구성원 추가 아래에 이메일 주소를 입력합니다.
  4. 서비스 계정 &gt; 서비스 계정 토큰 생성자를 선택합니다. 를 역할로 지정합니다.
  5. 저장을 클릭합니다.
  6. 터미널로 돌아가 gcloud로 로그인하여 애플리케이션 기본 사용자 인증 정보를 서비스 계정을 만들 수 있습니다 승인을 요청하는 메시지가 표시되면 동일한 ID를 사용하여 로그인합니다. 계정을 만들 수 있습니다
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

gcloud CLI

  1. 권한을 추가하려면 gcloud iam service-accounts add-iam-policy-binding를 실행합니다. 서비스 계정의 이메일 주소와 사용자의 이메일 주소를 사용하여
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL \
      --role="roles/iam.serviceAccountTokenCreator"
  2. 로그인하여 애플리케이션 기본 사용자 인증 정보를 서비스 계정을 만들 수 있습니다 승인을 요청하는 메시지가 표시되면 동일한 ID를 사용하여 로그인합니다. 계정을 만들 수 있습니다
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

Pub/Sub 클라이언트 라이브러리 설치

  1. pip를 사용하여 Pub/Sub용 클라이언트 라이브러리를 설치합니다.

    pip install google-cloud-pubsub
    
  2. 그런 다음 main.py를 수정하여 클라이언트를 가져옵니다.

    from google.cloud import pubsub_v1
    

Google Workspace 구독 만들기

다음 코드를 main.py에 추가하여 다음을 구독하는 메서드를 정의합니다. Meet 일정을 탭합니다. 이 코드로 회의의 모든 일정을 구독합니다. 있습니다. 구독하면 이벤트가 Pub/Sub 주제에 게시됩니다.

def subscribe_to_space(space_name: str = None, topic_name: str = None):
    """Subscribe to events for a meeting space."""
    session = requests.AuthorizedSession(USER_CREDENTIALS)
    body = {
        'targetResource': f"//meet.googleapis.com/{space_name}",
        "eventTypes": [
            "google.workspace.meet.conference.v2.started",
            "google.workspace.meet.conference.v2.ended",
            "google.workspace.meet.participant.v2.joined",
            "google.workspace.meet.participant.v2.left",
            "google.workspace.meet.recording.v2.fileGenerated",
            "google.workspace.meet.transcript.v2.fileGenerated",
        ],
        "payloadOptions": {
            "includeResource": False,
        },
        "notificationEndpoint": {
            "pubsubTopic": topic_name
        },
        "ttl": "86400s",
    }
    response = session.post("https://workspaceevents.googleapis.com/v1/subscriptions", json=body)
    return response

그런 다음 이벤트를 가져와서 처리할 코드를 추가합니다.

이벤트 수신 대기 및 처리

계속해서 main.py를 수정하고 다음 샘플 코드를 추가합니다. 이 코드 수신 측을 구현하고 Google Cloud Pub/Sub API를 사용하여 이벤트를 준비하는 데 사용됩니다. 다양한 핸들러 메서드 출력 정보 확인할 수 있습니다

def format_participant(participant: meet.Participant) -> str:
    """Formats a participant for display on the console."""
    if participant.anonymous_user:
        return f"{participant.anonymous_user.display_name} (Anonymous)"

    if participant.signedin_user:
        return f"{participant.signedin_user.display_name} (ID: {participant.signedin_user.user})"

    if participant.phone_user:
        return f"{participant.phone_user.display_name} (Phone)"

    return "Unknown participant"


def fetch_participant_from_session(session_name: str) -> meet.Participant:
    """Fetches the participant for a session."""
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    # Use the parent path of the session to fetch the participant details
    parsed_session_path = client.parse_participant_session_path(session_name)
    participant_resource_name = client.participant_path(
        parsed_session_path["conference_record"],
        parsed_session_path["participant"])
    return client.get_participant(name=participant_resource_name)


def on_conference_started(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when started."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) started at {conference.start_time.rfc3339()}")


def on_conference_ended(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when ended."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) ended at {conference.end_time.rfc3339()}")


def on_participant_joined(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they join a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} joined at {session.start_time.rfc3339()}")


def on_participant_left(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they leave a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} left at {session.end_time.rfc3339()}")


def on_recording_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a recorded meeting when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("recording").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    recording = client.get_recording(name=resource_name)
    print(f"Recording available at {recording.drive_destination.export_uri}")


def on_transcript_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a meeting transcript when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("transcript").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    transcript = client.get_transcript(name=resource_name)
    print(f"Transcript available at {transcript.docs_destination.export_uri}")


def on_message(message: pubsub_v1.subscriber.message.Message) -> None:
    """Handles an incoming event from the Google Cloud Pub/Sub API."""
    event_type = message.attributes.get("ce-type")
    handler = {
        "google.workspace.meet.conference.v2.started": on_conference_started,
        "google.workspace.meet.conference.v2.ended": on_conference_ended,
        "google.workspace.meet.participant.v2.joined": on_participant_joined,
        "google.workspace.meet.participant.v2.left": on_participant_left,
        "google.workspace.meet.recording.v2.fileGenerated": on_recording_ready,
        "google.workspace.meet.transcript.v2.fileGenerated": on_transcript_ready,
    }.get(event_type)

    try:
        if handler is not None:
            handler(message)
        message.ack()
    except Exception as error:
        print("Unable to process event")
        print(error)


def listen_for_events(subscription_name: str = None):
    """Subscribe to events on the subscription."""
    subscriber = pubsub_v1.SubscriberClient()
    with subscriber:
        future = subscriber.subscribe(subscription_name, callback=on_message)
        print("Listening for events")
        try:
            future.result()
        except KeyboardInterrupt:
            future.cancel()
    print("Done")

코드 완료

다음 코드를 main.py에 추가하여 공간을 만드는 메서드를 호출합니다. 이벤트를 구독하고 리슨합니다 TOPIC_NAME 업데이트 자체 주제가 있는 상수 SUBSCRIPTION_NAME개 구독 이름과 생성됨.

  1. 코드를 main.py에 추가합니다.

    space = create_space()
    print(f"Join the meeting at {space.meeting_uri}")
    
    TOPIC_NAME = "projects/PROJECT_ID/topics/TOPIC_ID"
    SUBSCRIPTION_NAME = "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    
    subscription = subscribe_to_space(topic_name=TOPIC_NAME, space_name=space.name)
    listen_for_events(subscription_name=SUBSCRIPTION_NAME)
    

    다음을 바꿉니다.

    • PROJECT_ID: 다음에 대한 고유한 Cloud 프로젝트 ID: 앱(예: my-sample-project-191923)

    • TOPIC_ID: 생성하는 Pub/Sub 주제의 이름입니다. 생성됩니다

    • SUBSCRIPTION_ID: 구독의 이름입니다. 예: workspace-events-sub 형식으로 전송합니다.

  2. 프로그램을 실행합니다.

    python3 main.py
    

이전에 프로그램을 실행하지 않은 경우 확인할 수 있습니다 Meet REST API를 호출할 수 있는 액세스 권한을 애플리케이션에 부여합니다. 프로그램이 성공적으로 실행되면 다음과 비슷한 출력이 표시됩니다.

Join the meeting at https://meet.google.com/abc-mnop-xyz

회의 참여

애플리케이션의 이벤트를 생성하려면 URL을 사용하여 회의에 참여하세요. 표시됩니다. 참여 후 다음 작업을 시도해 볼 수 있습니다. 트리거 이벤트:

  • 회의에서 나갔다가 다시 참여합니다.
  • 다른 사용자를 초대하거나 휴대전화로 전화로 참여하세요.
  • 녹음 및 스크립트를 사용 설정합니다.

이러한 각 활동은 애플리케이션이 이벤트를 수신하고 Google Cloud 콘솔에 로그를 기록합니다

완료되면 ctrl-c를 사용하여 프로그램을 중단합니다.

선택사항: 추가 단계

앱이 이벤트에 대한 기본 세부정보를 기록합니다. 계속해서 REST API를 사용해 보세요. 다음 추가 작업을 수행하도록 애플리케이션을 수정해 보세요. 있습니다.

  • People API를 사용하여 다음에 관한 추가 정보를 검색 표시됩니다.
  • Google Drive API를 사용하여 녹화 파일 다운로드 사용할 수 있습니다
  • Google Drive에서 스크립트를 다운로드하는 대신 구조화된 스크립트 메서드 Meet REST API에서 찾을 수 있습니다.

선택사항: 삭제

Google Cloud 콘솔 계정에 리소스 비용이 청구되지 않도록 하려면 다음 안내를 따르세요. 리소스 및 프로젝트를 모두 삭제하는 것이 좋습니다. 생성됨.

구독을 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 메뉴로 이동합니다. &gt; Pub/Sub &gt; 구독

    구독 페이지로 이동

  2. 구독을 선택하고 추가 작업.

  3. 삭제를 클릭합니다. 구독 삭제 창이 나타납니다.

  4. 삭제를 클릭합니다.

gcloud CLI

  1. 구독을 삭제합니다.

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
    

주제를 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 메뉴로 이동합니다. &gt; Pub/Sub &gt; 주제

    주제로 이동

  2. 주제를 선택하고 추가 작업.

  3. 삭제를 클릭합니다. 주제 삭제 창이 나타납니다.

  4. delete를 입력한 후 삭제를 클릭합니다.

gcloud CLI

  1. 주제 삭제:

    gcloud pubsub topics delete TOPIC_NAME
    

프로젝트를 삭제하는 방법은 다음과 같습니다.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다. 클릭 메뉴 &gt; IAM 및 관리자 &gt; 리소스 관리를 클릭합니다.

    <ph type="x-smartling-placeholder"></ph> Resource Manager로 이동 를 통해 개인정보처리방침을 정의할 수 있습니다.

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택한 후 삭제합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 삭제합니다. 프로젝트입니다

gcloud CLI

  1. 프로젝트를 삭제하려면 gcloud projects 삭제 명령어:

    gcloud projects delete PROJECT_ID