Bu eğiticide, Google Meet REST API'nin Google Workspace Events API ve Google Cloud Pub/Sub ile birlikte nasıl kullanılacağı gösterilmektedir. Bu sayede, Meet toplantı alanındaki etkinlikleri gözlemleyebilir ve bu etkinliklere tepki verebilirsiniz. Örnek uygulama, konferansların başlangıç ve bitiş zamanlarını, katılımcıların katılım ve ayrılma zamanlarını ve oluşturulan toplantı öğelerinin ne zaman kullanıma sunulduğunu kaydeder.
Belirli bir toplantı alanına abone olmak yerine, kullanıcının sahip olduğu veya düzenlediği tüm toplantı alanlarındaki etkinlikleri almak için bir Meet kullanıcısına abone olabilirsiniz. Ayrıntılar için Google Workspace Events API belgelerindeki Google Meet etkinliklerine abone olma başlıklı makaleyi inceleyin.
Ön koşullar
Kuruluşunuz için bu ön koşullardan herhangi birinin etkinleştirilmesi gerekiyorsa Google Workspace yöneticinizden bunları etkinleştirmesini isteyin:
- Google Meet'e erişimi olan bir Google Workspace hesabı.
- Google Cloud projesi oluşturma erişimi.
- Python 3 yüklü olmalıdır.
- gcloud CLI yüklü olmalıdır.
Ortamınızı hazırlayın
Bu bölümde, yerel ortamınızı ve bu eğitim için Google Cloud projesini nasıl oluşturup yapılandıracağınız gösterilmektedir.
Çalışma dizini ve Python sanal ortamı oluşturma
Yeni bir sanal ortam oluşturup etkinleştirmek için terminalinizde aşağıdaki komutları çalıştırın.
Linux/macOS
mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
source env/bin/activate
Windows (komut istemi)
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 projesi oluşturma
Google Cloud konsolu
- Google Cloud Console'da Menü > IAM & Admin > Proje Oluştur'a gidin.
-
Proje Adı alanına projeniz için açıklayıcı bir ad girin.
İsteğe bağlı: Proje kimliğini düzenlemek için Düzenle'yi tıklayın. Proje kimliği, proje oluşturulduktan sonra değiştirilemez. Bu nedenle, projenin kullanım ömrü boyunca ihtiyaçlarınızı karşılayacak bir kimlik seçin.
- Konum alanında, projeniz için olası konumları görüntülemek üzere Göz at'ı tıklayın. Ardından Seç'i tıklayın.
- Oluştur'u tıklayın. Google Cloud Console, Kontrol Paneli sayfasına gider ve projeniz birkaç dakika içinde oluşturulur.
gcloud CLI
Aşağıdaki geliştirme ortamlarından birinde Google Cloud KSA'ya (gcloud
) erişin:
-
Cloud Shell: gcloud KSA'nın önceden ayarlandığı bir online terminal kullanmak için Cloud Shell'i etkinleştirin.
Cloud Shell'i etkinleştirin. -
Yerel kabuk: Yerel geliştirme ortamı kullanmak için gcloud CLI'yı yükleyin ve başlatın.
Cloud projesi oluşturmak içingcloud projects create
komutunu kullanın: Oluşturmak istediğiniz projenin kimliğini ayarlayarak PROJECT_ID yerine kendi kimliğinizi girin.gcloud projects create PROJECT_ID
Google Cloud projesi için faturalandırmayı etkinleştirme
Google Cloud konsolu
- Google Cloud Console'da Faturalandırma'ya gidin. Şunu tıklayın: Menü > Faturalandırma > Projelerim.
- Bir kuruluş seçin bölümünde, Google Cloud projenizle ilişkili kuruluşu seçin.
- Proje satırında İşlemler menüsünü ( ) açın, Faturalandırmayı değiştir'i tıklayın ve Cloud Faturalandırma hesabını seçin.
- Hesap belirle'yi tıklayın.
gcloud CLI
- Kullanılabilir faturalandırma hesaplarını listelemek için şu komutu çalıştırın:
gcloud billing accounts list
- Bir faturalandırma hesabını Google Cloud projesiyle bağlama:
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
Aşağıdakini değiştirin:
PROJECT_ID
, faturalandırmayı etkinleştirmek istediğiniz Cloud projesinin proje kimliğidir.BILLING_ACCOUNT_ID
, Google Cloud projesiyle ilişkilendirilecek faturalandırma hesabı kimliğidir.
Kimlik doğrulama ve yetkilendirme ayarlarını yapma
Kimlik doğrulama ve yetkilendirme, uygulamanın Meet REST API kaynaklarına erişmesine olanak tanır. Meet REST API'yi çağırmak için kullanıcı yetkilendirmesi gerekir. Bu bölümde, kullanıcı kimlik bilgilerini nasıl yapılandıracağınız ve yetkilendirme isteğinde nasıl bulunacağınız açıklanmaktadır.
OAuth kullanıcı rızası ekranını yapılandırma ve kapsamları seçme
Aşağıdaki adımlarda, uygulamanız için OAuth izin ekranını yapılandırmak üzere yer tutucu bilgiler önerilmektedir. Uygulamayı harici olarak yayınlamadan önce bu bilgileri güncelleyin.
- Google Cloud Console'da Menü > Google Auth platform > Markalama'ya gidin.
- Google Auth platformyapılandırdıysanız Markalama, Kitle ve Veri Erişimi'nde aşağıdaki OAuth kullanıcı rızası ekranı ayarlarını yapılandırabilirsiniz. Google Auth platform henüz yapılandırılmadı mesajını görürseniz Başlayın'ı tıklayın:
- Uygulama Bilgileri bölümündeki Uygulama adı alanına
Meet REST API Tutorial
girin. - Kullanıcı destek e-postası bölümünde, kullanıcıların rızalarıyla ilgili soruları olduğunda sizinle iletişime geçebileceği bir destek e-posta adresi seçin.
- İleri'yi tıklayın.
- Kitle bölümünde Dahili'yi seçin.
- İleri'yi tıklayın.
- İletişim bilgileri bölümünde, projenizde yapılan değişikliklerle ilgili bildirim alabileceğiniz bir e-posta adresi girin.
- İleri'yi tıklayın.
- Bitir bölümünde Google API Hizmetleri Kullanıcı Verileri Politikası'nı inceleyin ve kabul ediyorsanız Google API Hizmetleri: Kullanıcı Verileri Politikası'nı kabul ediyorum'u seçin.
- Devam'ı tıklayın.
- Oluştur'u tıklayın.
- Kullanıcı türü için Harici'yi seçtiyseniz test kullanıcıları ekleyin:
- Kitle'yi tıklayın.
- Test kullanıcıları bölümünde Kullanıcı ekle'yi tıklayın.
- E-posta adresinizi ve yetkili diğer test kullanıcılarını girip Kaydet'i tıklayın.
- Veri Erişimi > Kapsam Ekleme veya Kaldırma'yı tıklayın. Google Cloud projenizde etkinleştirdiğiniz her API'nin kapsamlarının listelendiği bir panel gösterilir.
- Kapsamları manuel olarak ekleme bölümünde aşağıdaki kapsamları yapıştırın:
https://www.googleapis.com/auth/meetings.space.created
- Tabloya ekle'yi tıklayın.
- Güncelle'yi tıklayın.
- Uygulamanızın gerektirdiği kapsamları seçtikten sonra Kaydet'i tıklayın.
OAuth kullanıcı rızası ekranını yapılandırma hakkında daha fazla bilgi için Google Auth platform başlıklı makaleyi inceleyin.
İstemci kimliği oluşturma
İstemci kimliği, OAuth 2.0 akışları sırasında uygulamanızın kimlik bilgileri olarak işlev görür. Uygulama yerel olarak çalıştığından bir masaüstü istemci kimliği oluşturun.
- Google Cloud Console'da Menü > Google Auth platform > İstemciler'e gidin.
- Create Client'ı (İstemci Oluştur) tıklayın.
- Uygulama türü > Masaüstü uygulaması'nı tıklayın.
- Ad alanına, kimliğin adını yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- Oluştur'u tıklayın.
Yeni oluşturulan kimlik bilgisi, "OAuth 2.0 İstemci Kimlikleri" bölümünde görünür.
Google kimlik doğrulama kitaplıklarını yükleme
Google kimlik doğrulama kitaplıklarını yükleyin:
pip install google-auth google-auth-oauthlib
Yetkilendirmeyi yürütme
Meet REST API'si için OAuth 2.0 erişim jetonu biçiminde kullanıcı kimlik bilgileri gerekir. Bu bölümde, kullanıcı için erişim jetonu ve yenileme jetonu istemek üzere OAuth 2.0 akışını uygulayacaksınız.
Çalışma dizininizde
main.py
dosyasını oluşturun ve aşağıdaki içerikleri ekleyin: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()
Kodu çalıştırmak için daha önce oluşturulan istemci kimliği ve gizli anahtarın her ikisi de gereklidir. İndirilen istemci gizli anahtarı dosyasını proje çalışma dizinine kopyalayın ve
client_secret.json
olarak yeniden adlandırın.Yetkilendirmenin nasıl çalıştığını test etmek istiyorsanız aşağıdaki komutu çalıştırın. Uygulama, yetkilendirme ister ve istek onaylandıktan sonra proje çalışma dizininde
token.json
dosyası oluşturur.python3 main.py
Meet REST API'sini ekleme
Yetkilendirme kodu tamamlandığına göre Meet REST API'yi etkinleştirip çağırmanın zamanı geldi.
API'leri etkinleştirme
Bu bölüm Meet REST API'ye odaklanmış olsa da bu eğitimde Google Cloud Pub/Sub ve Google Workspace Events API de kullanılmaktadır.
Google Cloud konsolu
Google Cloud Console'da Google Meet REST API, Google Workspace Events API ve Google Cloud Pub/Sub'ı etkinleştirin.
API'leri doğru Cloud projesinde etkinleştirdiğinizi onaylayın ve İleri'yi tıklayın.
Doğru API'leri etkinleştirdiğinizi onaylayın ve Etkinleştir'i tıklayın.
gcloud CLI
Gerekirse mevcut Cloud projesini
gcloud config set project
komutuyla oluşturduğunuz projeye ayarlayın:gcloud config set project PROJECT_ID
PROJECT_ID kısmını, oluşturduğunuz Cloud projesinin proje kimliği ile değiştirin.
gcloud services enable
komutuyla Google Meet REST API, Google Workspace Events API ve Google Cloud Pub/Sub'ı etkinleştirin:gcloud services enable meet.googleapis.com workspaceevents.googleapis.com pubsub.googleapis.com
Meet REST API istemci kitaplığını yükleme
Meet REST API istemci kitaplığını yüklemek için aşağıdaki adımları uygulayın:
Komutu çalıştırın:
pip install google-apps-meet
İstemciyi içe aktarmak için
main.py
dosyasını düzenleyin:from google.apps import meet_v2 as meet
Alan oluşturma
Meet REST API kullanıma sunulduğuna göre, abone olunabilecek bir toplantı alanı oluşturmak için bir işlev tanımlayın.
main.py
öğesini düzenleyin ve şunları ekleyin:
def create_space() -> meet.Space:
"""Create a meeting space."""
client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
request = meet.CreateSpaceRequest()
return client.create_space(request=request)
Etkinliklere abone olma
Bir toplantı alanı hakkındaki etkinlikleri almak için Google Workspace Events API'yi kullanarak bir abonelik oluşturursunuz. Ayrıca, uygulamanızın etkinlikleri aldığı bildirim uç noktası olarak hizmet veren bir Google Cloud Pub/Sub konusu oluşturup bu konuya abone olmanız gerekir.
Google Cloud Pub/Sub'ı yapılandırma
Pub/Sub konusu oluşturmak ve bu konuya abone olmak için:
Google Cloud konsolu
- Google Cloud Console'da Menü > Pub/Sub'a gidin.
Uygulamanızın Bulut projesinin seçildiğinden emin olun.
- Konu adı olarak
workspace-events
girin. - Varsayılan abonelik ekle seçeneğini işaretli bırakın.
- Oluştur'u tıklayın. Tam konu adınız
projects/{project}/topics/{topic}
olarak biçimlendirilir. Sonraki adımlarda kullanmak üzere bu adı not edin.
Konu oluştur'u tıklayın ve aşağıdakileri yapın:
- Konu adı olarak
- Konunuza Pub/Sub mesajları yayınlama erişimi verin:
- Yan panelde İzinler sekmesini açın.
- Ana Hesap Ekle'yi tıklayın.
- Yeni ana hesaplar bölümüne
meet-api-event-push@system.gserviceaccount.com
girin. - Rol ata bölümünde
Pub/Sub Publisher
simgesini seçin. - Kaydet'i tıklayın.
Konunuzun izinlerinin güncellenmesi birkaç dakika sürebilir.
gcloud CLI
- Cloud projenizde aşağıdaki komutu çalıştırarak bir konu oluşturun:
gcloud pubsub topics create workspace-events
Çıkışta,
projects/{project}/topics/{topic}
olarak biçimlendirilmiş tam konu adı gösterilir. Sonraki adımlarda kullanmak üzere bu adı not edin. - Konunuzda mesaj yayınlama erişimi verme:
gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'
Konunuzun izinlerinin güncellenmesi birkaç dakika sürebilir.
- Konu için bir Pub/Sub aboneliği oluşturun:
gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME
Aşağıdakini değiştirin:
TOPIC_NAME
: Önceki adımda oluşturduğunuz konunuzun adı.
Konu adını not edin ve {project}
değerinin uygulamanızın Cloud proje kimliği olduğundan emin olun. Daha sonra Google Workspace aboneliği oluşturmak için konu adını kullanacaksınız.
Hizmet hesabı oluşturma
Google Cloud konsolu
- Google Cloud Console'da Menü > IAM ve Yönetici > Hizmet Hesapları'na gidin.
- Hizmet hesabı oluştur'u tıklayın.
- Hizmet hesabı ayrıntılarını girip Oluştur ve devam et'i tıklayın.
- Bu hizmet hesabına projeye erişim izni ver bölümünde aşağıdaki rolleri ekleyin:
roles/pubsub.subscriber
- Devam'ı tıklayın.
- İsteğe bağlı: Bu hizmet hesabıyla işlemleri yönetebilecek ve gerçekleştirebilecek kullanıcıları veya grupları girin. Daha fazla bilgi için Hizmet hesabı kimliğine bürünmeyi yönetme başlıklı makaleyi inceleyin.
- Bitti'yi tıklayın. Hizmet hesabının e-posta adresini not edin.
gcloud CLI
- Hizmet hesabını oluşturun:
gcloud iam service-accounts create meet-event-listener \ --display-name="meet-event-listener"
- Hizmet hesabına gerekli rolleri verin:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:meet-event-listener@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber"
PROJECT_ID
kısmını Google Cloud proje kimliğinizle değiştirin.
Hizmet hesabını kullanma
Hizmet hesabını oluşturduktan sonra, hizmet hesabına kimliğine bürünme erişimi verin.
Google Cloud konsolu
- Yeni oluşturulan hizmet hesabının İşlemler sütununda > İzinleri yönet'i tıklayın.
- Anahtar ekle > Erişim izni ver'i tıklayın.
- Ana hesap ekle bölümüne e-posta adresinizi girin.
- Rol olarak Hizmet hesapları > Hizmet Hesabı Jeton Oluşturucu'yu seçin.
- Kaydet'i tıklayın.
- Terminalinize dönün ve
gcloud
ile oturum açarak uygulamanın varsayılan kimlik bilgilerini hizmet hesabına ayarlayın. Yetkilendirme istendiğinde önceki adımlarda kullanılan hesapla oturum açın.gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
gcloud CLI
- İzni eklemek için hizmet hesabının ve kullanıcının e-posta adresini kullanarak
gcloud iam service-accounts add-iam-policy-binding
komutunu çalıştırın.gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --member="user:YOUR_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
- Uygulama varsayılan kimlik bilgilerini hizmet hesabına ayarlamak için oturum açın. Yetkilendirme istendiğinde önceki adımlarda kullanılan hesapla oturum açın.
gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
Pub/Sub istemci kitaplığını yükleme
Pub/Sub için istemci kitaplığını yüklemek üzere
pip
kullanın:pip install google-cloud-pubsub
Ardından, istemciyi içe aktarmak için
main.py
dosyasını düzenleyin:from google.cloud import pubsub_v1
Google Workspace aboneliğini oluşturma
Meet etkinliklerine abone olma yöntemini tanımlamak için main.py
bölümüne aşağıdaki kodu ekleyin. Bu kod, bir toplantı alanındaki tüm etkinliklere abone olur. Abone olunduğunda etkinlikler Pub/Sub konusuna gönderilir.
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
Ardından, etkinlikleri çekip işlemek için ilgili kodu ekleyin.
Etkinlikleri dinleme ve işleme
main.py
dosyasını düzenlemeye devam edin ve aşağıdaki örnek kodu ekleyin. Bu kod, alma tarafını uygular ve etkinlikler kullanıma sunuldukça bunları çekmek için Google Cloud Pub/Sub API'sini kullanır. Çeşitli işleyici yöntemleri, ilgili etkinlikler hakkında bilgi yazdırır.
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")
Kodu tamamlayın
Aşağıdaki kodu main.py
öğesine ekleyerek alan oluşturma, etkinliklere abone olma ve dinleme yöntemlerini çağırın. TOPIC_NAME
ve SUBSCRIPTION_NAME
sabitlerini, daha önce oluşturduğunuz kendi konu ve abonelik adlarınızla güncelleyin.
Kodu
main.py
adresine ekleyin: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) if (subscription.status_code) == 200: listen_for_events(subscription_name=SUBSCRIPTION_NAME) else: print(f"Subscription to Meet events failed, response data: {subscription.content}")
Aşağıdakini değiştirin:
PROJECT_ID
: Uygulamanızın benzersiz Cloud proje kimliği (ör.my-sample-project-191923
).TOPIC_ID
: Cloud projenizde oluşturduğunuz Pub/Sub konusunun adı.SUBSCRIPTION_ID
: Aboneliğinizin adı (ör.workspace-events-sub
).
Programı çalıştırın:
python3 main.py
Programı daha önce çalıştırmadıysanız ilk kez yetkilendirme yapmanız istenir. Meet REST API'yi çağırmak için uygulamaya erişim izni verin. Program başarıyla çalıştırıldıktan sonra şuna benzer bir çıkış görürsünüz:
Join the meeting at https://meet.google.com/abc-mnop-xyz
Konferansa katılma
Uygulama için etkinlik oluşturmak üzere, uygulama tarafından gösterilen URL'yi kullanarak konferansa katılın. Katıldıktan sonra etkinlikleri tetiklemek için aşağıdaki işlemleri deneyebilirsiniz:
- Toplantıdan ayrılıp tekrar katılın.
- Başkalarını davet edin veya telefonunuzla görüşmeye katılın.
- Kayıtları ve transkriptleri etkinleştirin.
Bu etkinliklerin her biri, uygulamanın aldığı ve Google Cloud Console'a kaydettiği bir etkinlik oluşturur.
İşiniz bittiğinde programı duraklatmak için ctrl-c
tuşunu kullanın.
İsteğe bağlı: Deneyebileceğiniz ek adımlar
Uygulama, etkinliklerle ilgili temel ayrıntıları günlüğe kaydeder. Meet REST API'yi keşfetmeye devam etmek için uygulamayı değiştirerek aşağıdaki ek işlemleri gerçekleştirmeyi deneyin.
Oturum açmış katılımcılar hakkında ek bilgi almak için People API'yi kullanın.
def subscribe_to_user(user_name: str = None, topic_name: str = None) -> requests_lib.Response: """Subscribe to events for a user.""" session = requests.AuthorizedSession(USER_CREDENTIALS) body = { "targetResource": f"//cloudidentity.googleapis.com/users/{user_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 service = build("people", "v1", credentials=USER_CREDENTIALS) response = ( service.people() .get(resourceName="people/me", personFields="names,emailAddresses") .execute() ) resource_name = response.get("resourceName") if resource_name.startswith("people/"): resource_name = resource_name[len("people/") :] subscription = subscribe_to_user(topic_name=TOPIC_NAME, user_name=resource_name)
Yukarıdaki kimlik bilgisi örneklerinde yetkilendirme yöntemine "https://www.googleapis.com/auth/userinfo.profile" adresini eklediğinizden emin olun.
Kayıtları ve transkriptleri indirmek için Google Drive API'yi kullanın.
Google Drive'dan transkript indirmek yerine, Meet REST API'deki yapılandırılmış transkript yöntemlerini kullanarak transkriptleri alın.
alan oluşturmak yerine alan edinme
def get_space(meeting_code: str) -> meet.Space: """Get a meeting space.""" client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS) return client.get_space(name="spaces/" + meeting_code)
Yukarıdaki kimlik bilgisi örneklerindeki yetkilendirme yöntemine "https://www.googleapis.com/auth/meetings.space.readonly" adresini eklediğinizden emin olun.
İsteğe bağlı: Temizleme
Bu eğiticide kullanılan kaynaklar için Google Cloud Console hesabınızın ücretlendirilmesini istemiyorsanız oluşturulan tüm kaynakları ve projeleri temizlemenizi öneririz.
Aboneliği silmek için:
Konsol
Google Cloud Console'da Menü > Pub/Sub > Abonelikler'e gidin.
Aboneliği seçin ve
Diğer işlemler'i tıklayın.Sil'i tıklayın. Aboneliği sil penceresi açılır.
Sil'i tıklayın.
gcloud CLI
Aboneliği silme:
gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
Konuyu silmek için:
Konsol
Google Cloud Console'da Menü > Pub/Sub > Konular'a gidin.
Konuyu seçin ve
Diğer işlemler'i tıklayın.Sil'i tıklayın. Konuyu sil penceresi açılır.
delete
girip Sil'i tıklayın.
gcloud CLI
Konuyu silme:
gcloud pubsub topics delete TOPIC_NAME
Projeyi silmek için:
Konsol
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin. Şunu tıklayın: Menü > IAM ve Yönetici > Kaynakları Yönetin.
- Proje listesinde, silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İletişim kutusunda proje kimliğini yazın ve ardından projeyi silmek için Kapat'ı tıklayın.
gcloud CLI
Bir projeyi silmek için gcloud projects delete komutunu kullanın:
gcloud projects delete PROJECT_ID
İlgili konular
- Abone olabileceğiniz Meet etkinlik türleri hakkında bilgi edinin.
- Google Meet REST API'nin neler yapabileceği hakkında daha fazla bilgi edinin ve referans belgelerini inceleyin.
- Google Workspace Events API'yi kullanarak Meet toplantı alanları veya kullanıcıları ile tanışmak için Google Workspace aboneliği oluşturun.
- Kimlik doğrulama hakkında daha fazla bilgi edinmek için OAuth kullanıcı rızası ekranını yapılandırma ve kapsamları seçme başlıklı makaleyi inceleyin.