Mengamati acara rapat dengan Python dan REST API Google Meet

Tutorial ini menunjukkan cara menggunakan REST API Google Meet beserta Google Workspace Events API dan Google Cloud Pub/Sub untuk mengamati dan bereaksi terhadap acara rapat. Aplikasi contoh merekam saat konferensi dimulai dan berakhir, kapan peserta bergabung atau keluar, dan kapan artefak rapat yang dihasilkan tersedia.

Untuk mempelajari lebih lanjut cara menggunakan peristiwa, lihat Berlangganan peristiwa Google Meet di dokumentasi Google Workspace Events API.

Prasyarat

Jika Anda perlu mengaktifkan salah satu prasyarat tersebut untuk organisasi Anda, minta administrator Google Workspace untuk mengaktifkannya:

Menyiapkan lingkungan Anda

Bagian ini menunjukkan cara membuat dan mengonfigurasi lingkungan lokal dan project Google Cloud untuk tutorial ini.

Membuat direktori kerja dan lingkungan virtual Python

Untuk membuat dan mengaktifkan lingkungan virtual baru, jalankan perintah berikut di terminal Anda.

Linux/macOS

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

Windows (command prompt)

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

Membuat project Google Cloud

Konsol Google Cloud

  1. Di konsol Google Cloud, buka Menu > IAM & Admin > Create a Project.

    Buka Create a Project

  2. Di kolom Project Name, masukkan nama deskriptif untuk project Anda.

    Opsional: Untuk mengedit ID Project, klik Edit. Project ID tidak dapat diubah setelah project dibuat. Jadi, pilih ID yang sesuai dengan kebutuhan Anda sepanjang waktu project tersebut.

  3. Di kolom Location, klik Browse untuk menampilkan lokasi potensial project. Kemudian, klik Select.
  4. Klik Create. Konsol Google Cloud akan membuka halaman Dashboard dan project Anda akan dibuat dalam beberapa menit.

gcloud CLI

Di salah satu lingkungan pengembangan berikut, akses Google Cloud CLI (`gcloud`):

  • Cloud Shell: Untuk menggunakan terminal online dengan gcloud CLI yang sudah disiapkan, aktifkan Cloud Shell.
    Mengaktifkan Cloud Shell
  • Local Shell: Untuk menggunakan lingkungan pengembangan lokal, instal dan initialize gcloud CLI.
    Untuk membuat project Cloud, gunakan perintah `gcloud projects create`:
    gcloud projects create PROJECT_ID
    Ganti PROJECT_ID dengan menetapkan ID project yang ingin Anda buat.

Mengaktifkan penagihan untuk project Google Cloud

Konsol Google Cloud

  1. Di konsol Google Cloud, buka Billing. Klik Menu > Penagihan > Project Saya.

    Buka Billing for My Project

  2. Di bagian Select an organization, pilih organisasi yang terkait dengan project Google Cloud Anda.
  3. Di baris project, buka menu Actions (), klik Change billing, dan pilih akun Penagihan Cloud.
  4. Klik Tetapkan akun.

gcloud CLI

  1. Untuk menampilkan akun penagihan yang tersedia, jalankan:
    gcloud billing accounts list
  2. Tautkan akun penagihan dengan project Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Ganti kode berikut:

    • PROJECT_ID adalah Project ID untuk project Cloud yang ingin Anda aktifkan penagihannya.
    • BILLING_ACCOUNT_ID adalah ID akun penagihan yang akan ditautkan dengan project Google Cloud.

Menyiapkan autentikasi dan otorisasi

Dengan autentikasi dan otorisasi, aplikasi dapat mengakses resource REST API Meet. Otorisasi pengguna diperlukan untuk memanggil REST API Meet. Bagian ini menjelaskan cara mengonfigurasi kredensial pengguna dan meminta otorisasi.

Mengonfigurasi layar izin OAuth dan memilih cakupan

Langkah berikut menyarankan informasi placeholder untuk mengonfigurasi layar izin OAuth untuk aplikasi Anda. Sebelum memublikasikan aplikasi secara eksternal, perbarui informasi ini.

  1. Di konsol Google Cloud, buka Menu > APIs & Services > OAuth consent screen.

    Buka layar izin OAuth

  2. Di bagian Jenis pengguna, pilih Internal, lalu klik Buat.
  3. Di App name, masukkan Meet REST API Tutorial.
  4. Lengkapi formulir pendaftaran aplikasi, lalu klik Simpan dan Lanjutkan.
  5. Klik Tambahkan atau Hapus Cakupan. Sebuah panel berisi daftar cakupan untuk setiap API yang telah diaktifkan di project Google Cloud Anda akan muncul.
  6. Pada bagian Tambahkan cakupan secara manual, tempel cakupan berikut:
    • https://www.googleapis.com/auth/meetings.space.created
  7. Klik Add to Table.
  8. Klik Perbarui.
  9. Setelah memilih cakupan yang dibutuhkan oleh aplikasi Anda, klik Simpan dan Lanjutkan.
  10. Jika memilih Eksternal untuk jenis pengguna, tambahkan pengguna pengujian:
    1. Di bagian Pengguna uji coba, klik Tambahkan pengguna.
    2. Masukkan alamat email Anda dan pengguna pengujian yang diotorisasi lainnya, lalu klik Simpan dan Lanjutkan.
  11. Tinjau ringkasan pendaftaran aplikasi Anda. Untuk melakukan perubahan, klik Edit. Jika pendaftaran aplikasi terlihat baik-baik saja, klik Back to Dashboard.

Membuat client ID

Client ID berfungsi sebagai kredensial untuk aplikasi Anda selama alur OAuth 2.0. Karena aplikasi berjalan secara lokal, buat client ID desktop.

  1. Di konsol Google Cloud, buka Menu > APIs & Services > Credentials.

    Buka Kredensial

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Aplikasi desktop.
  4. Di kolom Name, ketik nama untuk kredensial tersebut. Nama ini hanya ditampilkan di Konsol Google Cloud.
  5. Klik Create. Layar yang dibuat klien OAuth akan muncul, yang menampilkan Client ID dan Rahasia klien Anda yang baru.
  6. Klik OK. Kredensial yang baru dibuat akan muncul di Client ID OAuth 2.0.

Menginstal library autentikasi Google

Instal library autentikasi Google:

pip install google-auth google-auth-oauthlib

Menjalankan otorisasi

REST API Meet memerlukan kredensial pengguna dalam bentuk token akses OAuth 2.0. Di bagian ini, Anda akan menerapkan alur OAuth 2.0 untuk meminta token akses dan token refresh untuk pengguna.

  1. Di direktori kerja, buat file main.py dan tambahkan konten berikut:

    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. Untuk menjalankan kode, client ID dan rahasia yang dibuat sebelumnya diperlukan. Salin file rahasia klien yang didownload ke direktori kerja project dan ganti namanya menjadi client_secret.json.

  3. Jika Anda ingin menguji cara kerja otorisasi, jalankan perintah berikut. Aplikasi meminta otorisasi dan membuat file token.json dalam direktori kerja project setelah permintaan disetujui.

    python3 main.py
    

Menambahkan REST API Meet

Setelah kode otorisasi selesai, saatnya untuk mengaktifkan dan memanggil REST API Meet.

Mengaktifkan API

Meskipun bagian ini berfokus pada REST API Meet, tutorial ini juga menggunakan Google Cloud Pub/Sub dan Google Workspace Events API.

Konsol Google Cloud

  1. Di konsol Google Cloud, aktifkan REST API Google Meet, Google Workspace Events API, dan Google Cloud Pub/Sub.

    Mengaktifkan API

  2. Pastikan Anda mengaktifkan API di project Cloud yang benar, lalu klik Next.

  3. Pastikan Anda mengaktifkan API yang benar, lalu klik Enable.

gcloud CLI

  1. Jika perlu, tetapkan project Cloud saat ini ke project yang Anda buat menggunakan perintah gcloud config set project:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan Project ID dari project Cloud yang Anda buat.

  2. Aktifkan REST API Google Meet, Google Workspace Events API, dan Google Cloud Pub/Sub dengan perintah gcloud services enable:

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

Menginstal library klien Meet REST API

Ikuti langkah-langkah berikut untuk menginstal library klien Meet REST API:

  1. Jalankan perintah:

    pip install google-apps-meet
    
  2. Edit file main.py untuk mengimpor klien:

    from google.apps import meet_v2 as meet
    

Membuat ruang

Setelah REST API Meet tersedia, tentukan fungsi untuk membuat ruang rapat yang dapat dijadikan langganan.

Edit main.py dan tambahkan:

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

Berlangganan acara

Untuk menerima acara tentang ruang rapat, Anda perlu membuat langganan menggunakan Google Workspace Events API. Anda juga harus membuat dan berlangganan topik Google Cloud Pub/Sub yang berfungsi sebagai endpoint notifikasi tempat aplikasi menerima peristiwa.

Mengonfigurasi Google Cloud Pub/Sub

Untuk membuat dan berlangganan topik Pub/Sub:

Konsol Google Cloud

  1. Di konsol Google Cloud, buka Menu > Pub/Sub.

    Buka Pub/Sub

    Pastikan bahwa project Cloud untuk aplikasi Anda sudah dipilih.

  2. Klik Create topic dan lakukan tindakan berikut:
    1. Masukkan workspace-events sebagai nama topik.
    2. Biarkan Add a default subscription dipilih.
    3. Klik Create. Nama topik lengkap Anda diformat sebagai projects/{project}/topics/{topic}. Catat nama ini untuk digunakan di langkah-langkah berikutnya.
  3. Berikan akses untuk memublikasikan pesan Pub/Sub ke topik Anda:
    1. Di panel samping, buka tab Izin.
    2. Klik Add Principal.
    3. Di New principals, masukkan meet-api-event-push@system.gserviceaccount.com.
    4. Di Tetapkan peran, pilih Pub/Sub Publisher.
    5. Klik Save.

    Diperlukan waktu beberapa menit untuk memperbarui izin topik Anda.

gcloud CLI

  1. Dalam project Cloud Anda, buat topik dengan menjalankan perintah berikut:
    gcloud pubsub topics create workspace-events

    Output menampilkan nama topik lengkap, yang diformat sebagai projects/{project}/topics/{topic}. Catat nama ini untuk digunakan di langkah-langkah berikutnya.

  2. Berikan akses untuk memublikasikan pesan ke topik Anda:
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

    Diperlukan waktu beberapa menit untuk memperbarui izin topik Anda.

  3. Buat langganan Pub/Sub untuk topik:
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

    Ganti kode berikut:

    • TOPIC_NAME: Nama topik yang Anda buat di langkah sebelumnya.

Catat nama topik dan pastikan nilai untuk {project} adalah project ID Cloud untuk aplikasi Anda. Nama topik akan digunakan untuk membuat langganan Google Workspace pada lain waktu.

Membuat akun layanan

Konsol Google Cloud

  1. Di konsol Google Cloud, buka Menu > IAM & Admin > Service Accounts.

    Buka Akun Layanan

  2. Klik Create service account.
  3. Isi detail akun layanan, lalu klik Buat dan lanjutkan.
  4. Opsional: Tetapkan peran ke akun layanan Anda untuk memberikan akses ke resource project Google Cloud Anda. Untuk detail selengkapnya, lihat Memberikan, mengubah, dan mencabut akses ke resource.
  5. Klik Continue.
  6. Opsional: Masukkan pengguna atau grup yang dapat mengelola dan melakukan tindakan dengan akun layanan ini. Untuk detail selengkapnya, lihat Mengelola peniruan akun layanan.
  7. Klik Done. Catat alamat email untuk akun layanan.

gcloud CLI

  1. Buat akun layanan:
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. Opsional: Tetapkan peran ke akun layanan Anda untuk memberikan akses ke resource project Google Cloud Anda. Untuk detail selengkapnya, lihat Memberikan, mengubah, dan mencabut akses ke resource.

Menggunakan akun layanan

Setelah membuat akun layanan, beri diri Anda akses untuk meniru identitas akun layanan.

Konsol Google Cloud

  1. Di kolom Tindakan untuk akun layanan yang baru dibuat, klik > Kelola izin.
  2. Klik Tambahkan kunci > Berikan akses.
  3. Masukkan alamat email Anda di bagian Tambahkan akun utama.
  4. Pilih Service accounts > Service Account Token Creator sebagai peran.
  5. Klik Save.

gcloud CLI

  1. Untuk menambahkan izin, jalankan gcloud iam service-accounts add-iam-policy-binding menggunakan alamat email akun layanan dan pengguna.
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL \
      --role="roles/iam.serviceAccountTokenCreator"
  2. Login dengan gcloud untuk menetapkan kredensial default aplikasi ke akun layanan layanan. Saat dimintai otorisasi, login menggunakan akun yang sama dengan yang digunakan pada langkah sebelumnya.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

Menginstal library klien Pub/Sub

  1. Gunakan pip untuk menginstal library klien untuk Pub/Sub:

    pip install google-cloud-pubsub
    
  2. Lalu edit main.py untuk mengimpor klien:

    from google.cloud import pubsub_v1
    

Membuat langganan Google Workspace

Tambahkan kode berikut ke main.py untuk menentukan metode berlangganan peristiwa Meet. Kode ini berlangganan semua acara untuk ruang rapat. Jika berlangganan, peristiwa akan diposting ke topik 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

Selanjutnya, tambahkan kode yang sesuai untuk menarik dan memproses peristiwa.

Memproses dan menangani peristiwa

Lanjutkan mengedit main.py dan menambahkan kode contoh berikut. Kode ini menerapkan sisi penerima dan menggunakan Google Cloud Pub/Sub API untuk menarik peristiwa saat tersedia. Berbagai metode pengendali akan mencetak informasi tentang peristiwa yang sesuai.

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

Menyelesaikan kode

Tambahkan kode berikut ke main.py untuk memanggil metode untuk membuat ruang, berlangganan peristiwa, dan memproses. Perbarui konstanta TOPIC_NAME dan SUBSCRIPTION_NAME dengan nama topik dan langganan Anda sendiri yang sebelumnya Anda buat.

  1. Tambahkan kode ke 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)
    

    Ganti kode berikut:

    • PROJECT_ID: Project ID Cloud unik untuk aplikasi Anda, seperti my-sample-project-191923.

    • TOPIC_ID: Nama topik Pub/Sub yang Anda buat di project Cloud.

    • SUBSCRIPTION_ID: Nama langganan Anda, misalnya workspace-events-sub.

  2. Jalankan program:

    python3 main.py
    

Jika Anda belum pernah menjalankan program, program akan meminta otorisasi untuk pertama kalinya. Berikan akses ke aplikasi untuk memanggil REST API Meet. Setelah program berhasil berjalan, Anda akan melihat output seperti ini:

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

Gabung ke konferensi

Untuk membuat peristiwa bagi aplikasi, bergabunglah ke konferensi menggunakan URL yang ditampilkan oleh aplikasi. Setelah bergabung, Anda dapat mencoba tindakan berikut untuk memicu peristiwa:

  • Keluar dan bergabung kembali ke rapat.
  • Undang orang lain atau bergabung melalui telepon.
  • Aktifkan perekaman dan transkrip.

Setiap aktivitas ini menghasilkan peristiwa yang diterima aplikasi dan dicatat ke konsol Google Cloud.

Gunakan ctrl-c untuk menginterupsi program setelah Anda selesai.

Opsional: Langkah tambahan yang dapat dicoba

Aplikasi mencatat detail dasar tentang peristiwa ke dalam log. Untuk terus menjelajahi REST API Meet, coba ubah aplikasi untuk melakukan tindakan tambahan ini.

  • Gunakan People API untuk mengambil informasi tambahan tentang peserta yang login.
  • Gunakan Google Drive API untuk mendownload rekaman dan transkrip.
  • Daripada mendownload transkrip dari Google Drive, ambil transkrip menggunakan metode transkrip terstruktur di REST API Meet.

Opsional: Pembersihan

Agar tidak menimbulkan biaya pada akun Konsol Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, sebaiknya bersihkan semua resource dan project yang dibuat.

Untuk menghapus langganan:

Konsol

  1. Di konsol Google Cloud, buka Menu > Pub/Sub > Subscriptions

    Buka Langganan

  2. Pilih langganan, lalu klik Tindakan lainnya.

  3. Klik Delete. Jendela Hapus langganan akan muncul.

  4. Klik Delete.

gcloud CLI

  1. Menghapus langganan:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
    

Untuk menghapus topik:

Konsol

  1. Di konsol Google Cloud, buka Menu > Pub/Sub > Topics

    Buka Topik

  2. Pilih topik, lalu klik Tindakan lainnya.

  3. Klik Delete. Jendela Delete topic akan muncul.

  4. Masukkan delete, lalu klik Delete.

gcloud CLI

  1. Menghapus topik:

    gcloud pubsub topics delete TOPIC_NAME
    

Untuk menghapus project:

Konsol

  1. Pada Konsol Google Cloud, buka halaman Kelola resource Klik Menu > IAM & Admin > Manage Resources.

    Buka Resource Manager

  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete .
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

gcloud CLI

  1. Untuk menghapus project, gunakan perintah gcloud projects delete:

    gcloud projects delete PROJECT_ID