צפייה באירועי פגישות באמצעות Python ו-Google Meet REST API

המדריך הזה מסביר איך להשתמש ב-Google Meet REST API יחד עם Google Workspace Event API ו-Google Cloud Pub/Sub כדי לצפות באירועי פגישות ולהגיב להם. האפליקציה לדוגמה מתעדת מתי שיחות ועידה מתחילות ומסתיימות, מתי המשתתפים מצטרפים או יוצאים מהפגישה ואם פריטי המידע שנוצרו בפגישה זמינים.

למידע נוסף על עבודה עם אירועים, תוכלו לקרוא את המאמר הרשמה לאירועים ב-Google Meet במאמרי העזרה של Google Workspace Event 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 & Admin > יצירת פרויקט.

    כניסה לדף Create a Project

  2. בשדה Project Name (שם הפרויקט), מזינים שם תיאורי לפרויקט.

    אופציונלי: כדי לערוך את Project ID, לוחצים על Edit (עריכה). אי אפשר לשנות את מזהה הפרויקט אחרי יצירת הפרויקט, לכן חשוב לבחור מזהה שמתאים לצרכים שלכם לכל משך החיים של הפרויקט.

  3. בשדה Location לוחצים על Browse כדי להציג את המיקומים הפוטנציאליים של הפרויקט. לאחר מכן לוחצים על בחירה.
  4. לוחצים על יצירה. נכנסים לדף Dashboard במסוף Google Cloud והפרויקט נוצר תוך כמה דקות.

‫CLI של gcloud

באחת מסביבות הפיתוח הבאות, נכנסים ל-CLI של Google Cloud (`gcloud`):

  • Cloud Shell: כדי להשתמש בטרמינל אונליין שבו כבר מוגדר ה-CLI של gcloud, צריך להפעיל את Cloud Shell.
    הפעלת Cloud Shell
  • Local Shell: כדי להשתמש בסביבת פיתוח מקומית, מתקינים וinitialize את ה-CLI של gcloud.
    כדי ליצור פרויקט ב-Cloud, משתמשים בפקודה 'gcloud projects create':
    gcloud projects create PROJECT_ID
    מחליפים את הערך PROJECT_ID על ידי הגדרת המזהה של הפרויקט שרוצים ליצור.

הפעלת החיוב בפרויקט ב-Google Cloud

מסוף Google Cloud

  1. נכנסים לקטע Billing במסוף Google Cloud. לוחצים על תפריט > חיוב > My Projects.

    לדף Billing for My Projects

  2. בקטע Select an Organization (בחירת ארגון), בוחרים את הארגון שמשויך לפרויקט ב-Google Cloud.
  3. בשורת הפרויקט, פותחים את התפריט Actions (), לוחצים על Change billing ובוחרים את החשבון לחיוב ב-Cloud.
  4. לוחצים על Set account.

‫CLI של gcloud

  1. כדי להציג את רשימת החשבונות הזמינים לחיוב, מריצים את הפקודה:
    gcloud billing accounts list
  2. קישור החשבון לחיוב לפרויקט ב-Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID הוא מזהה הפרויקט ב-Cloud שבשבילו רוצים להפעיל את החיוב.
    • BILLING_ACCOUNT_ID הוא מזהה החשבון לחיוב לקישור לפרויקט ב-Google Cloud.

הגדרת אימות והרשאה

האימות וההרשאה מאפשרים לאפליקציה לגשת למשאבים של ה-API ל-REST של Meet. כדי להפעיל את ה-API ל-REST של Meet צריך הרשאת משתמש. בקטע הזה מוסבר איך להגדיר פרטי כניסה של משתמשים ולבקש הרשאה.

הגדרת מסך ההסכמה של OAuth ובחירת היקפים

בשלבים הבאים תמצאו הצעות לפרטי placeholder כדי להגדיר את מסך ההסכמה של OAuth לאפליקציה שלכם. לפני שמפרסמים את האפליקציה באופן חיצוני, חשוב לעדכן את המידע הזה.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > מסך ההסכמה של OAuth.

    מעבר למסך ההסכמה ל-OAuth

  2. בקטע סוג משתמש, בוחרים באפשרות פנימי ולוחצים על יצירה.
  3. בשדה App name, מזינים Meet REST API Tutorial.
  4. ממלאים את טופס הרישום של האפליקציה ולוחצים על שמירה והמשך.
  5. לוחצים על הוספה או הסרה של היקפי הרשאות. תופיע חלונית עם רשימת היקפים של כל API שהפעלתם בפרויקט ב-Google Cloud.
  6. בקטע הוספה ידנית של היקפים, מדביקים את ההיקפים הבאים:
    • https://www.googleapis.com/auth/meetings.space.created
  7. לוחצים על הוספה לטבלה.
  8. לוחצים על עדכון.
  9. אחרי שבוחרים את היקפי ההרשאות שנדרשים לאפליקציה, לוחצים על Save and Continue (שמירה והמשך).
  10. אם בוחרים בסוג המשתמש חיצוני, מוסיפים משתמשים לבדיקה:
    1. בקטע Test users לוחצים על Add users.
    2. מזינים את כתובת האימייל שלכם ואת כל המשתמשים המורשים האחרים לבדיקה ולוחצים על Save and Continue (שמירה והמשך).
  11. מעיינים בסיכום של רישום האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם נראה שרישום האפליקציה תקין, לוחצים על Back to Dashboard.

יצירת מזהה לקוח

מזהה הלקוח משמש כפרטי כניסה לאפליקציה בתהליכים ב-OAuth 2.0. מכיוון שהאפליקציה פועלת באופן מקומי, צריך ליצור מזהה לקוח למחשב.

  1. במסוף Google Cloud, נכנסים לתפריט > APIs & Services > Credentials.

    כניסה לדף Credentials

  2. לוחצים על Create Credentials > OAuth client ID.
  3. לוחצים על סוג אפליקציה > אפליקציית מחשב.
  4. בשדה Name, מקלידים שם לפרטי הכניסה. השם הזה מוצג רק במסוף Google Cloud.
  5. לוחצים על יצירה. יופיע המסך שנוצר על ידי לקוח OAuth ומוצג בו מזהה הלקוח החדש וסוד הלקוח שלכם.
  6. לוחצים על אישור. פרטי הכניסה החדשים שנוצרו יופיעו בקטע מזהי לקוח OAuth 2.0.

התקנה של ספריות האימות של Google

מתקינים את ספריות האימות של Google:

pip install google-auth google-auth-oauthlib

הפעלת הרשאה

ב-API ל-REST של Meet נדרשים פרטי כניסה של משתמשים, כמו אסימון גישה מסוג 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. כדי להריץ את הקוד, נדרשים גם מזהה הלקוח וגם הסוד שיצרתם קודם. מעתיקים את הקובץ של סוד הלקוח שהורדתם לספריית העבודה של הפרויקט, ומשנים את השם שלו ל-client_secret.json.

  3. כדי לבדוק איך ההרשאה עובדת, מריצים את הפקודה הבאה. אחרי שהבקשה תאושר, האפליקציה מבקשת הרשאה ויוצרת קובץ token.json בספריית העבודה של הפרויקט.

    python3 main.py
    

הוספת API של Meet בארכיטקטורת REST

קוד ההרשאה הושלם, ועכשיו אפשר להפעיל את ה-API ל-REST של Meet ולקרוא אותו.

הפעלת ממשקי ה-API

הקטע הזה מתמקד ב-API ל-REST של Meet, אבל המדריך הזה משתמש גם ב-Google Cloud Pub/Sub וב-Google Workspace Event API.

מסוף Google Cloud

  1. במסוף Google Cloud, מפעילים את ה-API ל-REST של Google Meet, את Google Workspace Event API ואת Google Cloud Pub/Sub.

    הפעלת ה-API

  2. מוודאים שאתם מפעילים את ממשקי ה-API בפרויקט הנכון ב-Cloud, ואז לוחצים על Next.

  3. מוודאים שאתם מפעילים את ממשקי ה-API הנכונים ולוחצים על הפעלה.

‫CLI של gcloud

  1. אם יש צורך, מגדירים את הפרויקט הנוכחי ב-Cloud לפרויקט שיצרתם באמצעות הפקודה gcloud config set project:

    gcloud config set project PROJECT_ID
    

    מחליפים את PROJECT_ID ב-Project ID של הפרויקט ב-Cloud שיצרתם.

  2. מפעילים את Google Meet REST API, את Google Workspace Event API ואת Google Cloud Pub/Sub באמצעות הפקודה gcloud services enable:

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

התקנה של ספריית הלקוח של API ל-REST של Meet

כדי להתקין את ספריית הלקוח של Meet ל-REST API, פועלים לפי השלבים הבאים:

  1. מריצים את הפקודה:

    pip install google-apps-meet
    
  2. עורכים את הקובץ main.py כדי לייבא את הלקוח:

    from google.apps import meet_v2 as meet
    

איך יוצרים מרחבים משותפים

עכשיו, כשה-API ל-REST של Meet זמין, מגדירים פונקציה כדי ליצור מרחב ישיבות שאפשר להירשם אליו.

עריכת 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 Event API. בנוסף, צריך ליצור נושא Google Cloud Pub/Sub ולהירשם אליו, שמשמש כנקודת הקצה של ההתראות שבהן האפליקציה מקבלת את האירועים.

הגדרת Google Cloud Pub/Sub

כדי ליצור נושא Pub/Sub ולהירשם אליו:

מסוף Google Cloud

  1. במסוף Google Cloud, נכנסים לתפריט > Pub/Sub.

    כניסה ל-Pub/Sub

    מוודאים שהפרויקט ב-Cloud עבור האפליקציה נבחר.

  2. לוחצים על Create topic ומבצעים את הפעולות הבאות:
    1. מזינים workspace-events בתור שם הנושא.
    2. משאירים את הסימון של האפשרות הוספת מינוי ברירת מחדל.
    3. לוחצים על יצירה. הפורמט של שם הנושא המלא הוא projects/{project}/topics/{topic}. כדאי לרשום את השם הזה ולהשתמש בו בשלבים הבאים.
  3. מעניקים גישה כדי לפרסם הודעות Pub/Sub בנושא:
    1. בחלונית הצדדית, פותחים את הכרטיסייה Permissions.
    2. לוחצים על הוספת חשבון משתמש.
    3. בשדה New principals, מזינים meet-api-event-push@system.gserviceaccount.com.
    4. בקטע הקצאת תפקידים, בוחרים באפשרות Pub/Sub Publisher.
    5. לוחצים על שמירה.

    יכול להיות שיעברו כמה דקות עד שההרשאות לנושא יתעדכן.

‫CLI של gcloud

  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 של האפליקציה. בהמשך תשתמשו בשם הנושא כדי ליצור את המינוי ל-Google Workspace.

יצירה של חשבון שירות

מסוף Google Cloud

  1. במסוף Google Cloud, נכנסים לתפריט > IAM & Admin > חשבונות שירות.

    לדף Service accounts

  2. לוחצים על Create service account.
  3. ממלאים את פרטי חשבון השירות ולוחצים על Create and continue.
  4. אופציונלי: מקצים תפקידים לחשבון השירות כדי לתת גישה למשאבים של הפרויקט ב-Google Cloud. פרטים נוספים זמינים במאמר הענקה, שינוי וביטול גישה למשאבים.
  5. לוחצים על המשך.
  6. אופציונלי: מזינים משתמשים או קבוצות שיכולים לנהל ולבצע פעולות באמצעות חשבון השירות הזה. פרטים נוספים זמינים במאמר ניהול התחזות לחשבון שירות.
  7. לוחצים על סיום. רושמים בצד את כתובת האימייל של חשבון השירות.

‫CLI של gcloud

  1. יוצרים את חשבון השירות:
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. אופציונלי: מקצים תפקידים לחשבון השירות כדי לתת גישה למשאבים של הפרויקט ב-Google Cloud. פרטים נוספים זמינים במאמר הענקה, שינוי וביטול גישה למשאבים.

שימוש בחשבון השירות

אחרי יצירת חשבון השירות, מעניקים לעצמכם גישה כדי להתחזות לחשבון השירות.

מסוף Google Cloud

  1. בעמודה Actions של חשבון השירות החדש שנוצר, לוחצים על > Manage permissions.
  2. לוחצים על Add key > Grant access.
  3. מזינים את כתובת האימייל בקטע הוספת חשבונות משתמשים.
  4. בוחרים באפשרות Service accounts (חשבונות שירות) > Service Account Token Creator בתור התפקיד.
  5. לוחצים על שמירה.
  6. חוזרים לטרמינל ונכנסים באמצעות gcloud כדי להגדיר את פרטי הכניסה שמוגדרים כברירת מחדל לאפליקציה לחשבון השירות. כשמוצגת בקשה לקבלת הרשאה, נכנסים עם אותו חשבון שבו השתמשתם בשלבים הקודמים.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

‫CLI של gcloud

  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. אפשר להיכנס לחשבון כדי להגדיר את פרטי הכניסה שמוגדרים כברירת המחדל לאפליקציה. כשמוצגת בקשה לקבלת הרשאה, נכנסים עם אותו חשבון שבו השתמשתם בשלבים הקודמים.
    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

כדי להגדיר שיטה להרשמה לאירועים ב-Meet, צריך להוסיף את הקוד הבא ל-main.py. הקוד הזה נרשם לכל האירועים במרחב פגישות. כשנרשמים, האירועים מתפרסמים בנושא 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 כדי לשלוף אירועים ברגע שהם הופכים לזמינים. שיטות ה-handler השונות מדפיסות מידע על האירועים התואמים.

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 כדי לקרוא ל-methods ליצירת המרחב, להירשם לאירועים ולהאזין. מעדכנים את הקבועים 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, כמו my-sample-project-191923.

    • TOPIC_ID: שם נושא Pub/Sub שיצרתם בפרויקט ב-Cloud.

    • SUBSCRIPTION_ID: שם המינוי, למשל workspace-events-sub.

  2. מפעילים את התוכנית:

    python3 main.py
    

אם לא הפעלתם את התוכנית בעבר, היא תבקש הרשאה בפעם הראשונה. כדי לשלוח קריאה ל-API ל-REST של Meet, צריך לתת לאפליקציה גישה. אחרי שהתוכנה תופעל בהצלחה, הפלט אמור להיראות כך:

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

הצטרפות לשיחת הוועידה

כדי ליצור אירועים לאפליקציה, מצטרפים לשיחת הוועידה באמצעות כתובת ה-URL שהאפליקציה מציגה. אחרי ההצטרפות, תוכלו לנסות את הפעולות הבאות כדי להפעיל אירועים:

  • לעזוב את הפגישה ולהצטרף אליה מחדש.
  • אפשר להזמין אנשים נוספים או להצטרף באמצעות הטלפון.
  • להפעיל את ההקלטות והתמלולים.

כל אחת מהפעילויות האלו יוצרת אירוע שהאפליקציה מקבלת ומתעדת במסוף Google Cloud.

בסיום, יש להשתמש ב-ctrl-c כדי להפסיק את התוכנית.

אופציונלי: שלבים נוספים שאפשר לנסות

האפליקציה מתעדת פרטים בסיסיים על האירועים. כדי להמשיך להשתמש ב-API ל-REST של Meet, כדאי לשנות את האפליקציה ולבצע את הפעולות הנוספות האלה.

  • כדי לאחזר מידע נוסף על משתתפים שמחוברים לחשבון אפשר להשתמש ב-People API
  • משתמשים ב-Google Drive API כדי להוריד הקלטות ותמלילים.
  • במקום להוריד תמלילים מ-Google Drive, אפשר לאחזר אותם באמצעות שיטות התמליל המובנות ב-API ל-REST של Meet.

אופציונלי: הסרת המשאבים

כדי להימנע מצבירת חיובים בחשבון במסוף Google Cloud בגלל השימוש במשאבים שנעשה במסגרת מדריך זה, מומלץ למחוק את המשאבים והפרויקטים שנוצרו.

כדי למחוק את המינוי:

המסוף

  1. במסוף Google Cloud, נכנסים לתפריט > Pub/Sub > מינויים

    לדף 'מינויים'

  2. בוחרים את המינוי ולוחצים על More actions.

  3. לוחצים על מחיקה. החלון מחיקת מינוי יופיע.

  4. לוחצים על מחיקה.

‫CLI של gcloud

  1. מוחקים את המינוי:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
    

כדי למחוק נושא:

המסוף

  1. במסוף Google Cloud, נכנסים לתפריט > Pub/Sub > נושאים

    לדף Topics

  2. בוחרים את הנושא ולוחצים על More actions.

  3. לוחצים על מחיקה. החלון מחיקת הנושא יופיע.

  4. מזינים delete ולוחצים על Delete.

‫CLI של gcloud

  1. מוחקים את הנושא:

    gcloud pubsub topics delete TOPIC_NAME
    

כדי למחוק את הפרויקט:

המסוף

  1. במסוף Google Cloud, עוברים לדף Manage resources. לוחצים על תפריט > IAM ואדמין > ניהול משאבים.

    כניסה למנהל המשאבים

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete .
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

‫CLI של gcloud

  1. כדי למחוק פרויקט, משתמשים בפקודה gcloud projects delete:

    gcloud projects delete PROJECT_ID