צפייה באירועי פגישות באמצעות 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.

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

    כניסה לדף 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. בקטע שם האפליקציה, מזינים 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. בקטע משתמשים לבדיקה, לוחצים על הוספת משתמשים.
    2. מזינים את כתובת האימייל שלכם ואת שאר המשתמשים המורשים לבדיקה, ואז לוחצים על Save and Continue (שמירה והמשך).
  11. לבדוק את הסיכום של רישום האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם הרישום של האפליקציה נראה בסדר, לוחצים על Back to Dashboard (חזרה למרכז השליטה).

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

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

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

    כניסה לדף Credentials

  2. לוחצים על יצירת פרטי כניסה > מזהה לקוח OAuth.
  3. לוחצים על סוג האפליקציה > אפליקציה למחשב.
  4. בשדה שם, מקלידים שם לפרטי הכניסה. השם הזה מוצג רק במסוף 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 ל-REST של Meet

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

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

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

מסוף Google Cloud

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

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

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

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

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

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

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

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 כדי להגדיר את פרטי הכניסה בברירת המחדל של האפליקציה לחשבון השירות. כשמוצגת בקשה להרשאה, נכנסים עם אותו חשבון שבו השתמשתם בשלבים הקודמים.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

התקנת ספריית הלקוח Pub/Sub

  1. כדי להתקין את ספריית הלקוח ל-Pub/Sub משתמשים ב-pip:

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

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

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

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

המסוף

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

    לדף המינויים

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

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

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

CLI של gcloud

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

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
    

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

המסוף

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

    לדף Topics

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

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

  4. מזינים 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