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

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

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

דרישות מוקדמות

אם אתם צריכים להפעיל בארגון אחת מהדרישות המוקדמות האלה, תוכלו לבקש מהאדמין ב-Google Workspace להפעיל אותה:

הכנת הסביבה

בקטע הזה נסביר איך ליצור ולהגדיר את הסביבה המקומית ואת הפרויקט ב-Google Cloud לצורך המדריך הזה.

יצירת ספריית עבודה וסביבה וירטואלית של Python

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

Linux/macOS

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

Windows (שורת הפקודה)

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

‏Windows (PowerShell)

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

יצירת פרויקט של Google Cloud

מסוף Google Cloud

  1. במסוף Google Cloud, עוברים לתפריט > IAM & Admin > Create a Project.

    כניסה לדף Create a Project

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

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

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

CLI של gcloud

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

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

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

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

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

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

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

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

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

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

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

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

    כניסה לדף Credentials

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

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

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

pip install google-auth google-auth-oauthlib

ביצוע ההרשאה

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

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

מסוף Google Cloud

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

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

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

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

CLI של gcloud

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

    gcloud config set project PROJECT_ID

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

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

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

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

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

  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 Events 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. לוחצים על Add Principal.
    3. בשדה New principals, מזינים meet-api-event-push@system.gserviceaccount.com.
    4. בקטע Assign roles (הקצאת תפקידים), בוחרים באפשרות 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.

    לדף 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. מזינים את כתובת האימייל בקטע Add principals.
  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

מוסיפים את הקוד הבא ל-main.py כדי להגדיר שיטה להרשמה לאירועים ב-Meet. הקוד הזה מאפשר להירשם לכל האירועים במרחב המשותף לפגישות. כשנרשמים, האירועים מתפרסמים בנושא Pub/Sub.

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

בשלב הבא, מוסיפים את הקוד המתאים כדי למשוך ולעבד את האירועים.

האזנה לאירועים וטיפול בהם

ממשיכים לערוך את הקובץ main.py ומוסיפים את דוגמת הקוד הבאה. הקוד הזה מטמיע את הצד המקבל ומשתמש ב-Google Cloud Pub/Sub API כדי למשוך אירועים ברגע שהם זמינים. שיטות הטיפול השונות מדפיסות מידע על האירועים המתאימים.

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

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

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

    return "Unknown participant"


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


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


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


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


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


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


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


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

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


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

השלמת הקוד

מוסיפים את הקוד הבא ל-main.py כדי לקרוא לשיטות ליצירת המרחב המשותף, להרשמה לאירועים ולשמיעה. מעדכנים את הקבועים TOPIC_NAME ו-SUBSCRIPTION_NAME בשמות של הנושא והמינוי שיצרתם קודם.

  1. מוסיפים את הקוד אל main.py:

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

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

    • PROJECT_ID: מזהה הפרויקט הייחודי ב-Cloud של האפליקציה, למשל 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.

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

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

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

אופציונלי: ניקוי

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

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

המסוף

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

    כניסה לדף 'מינויים'

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

  3. לוחצים על מחיקה. החלון Delete subscription יופיע.

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

CLI של gcloud

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

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME

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

המסוף

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

    כניסה לדף Topics

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

  3. לוחצים על מחיקה. החלון Delete topic יופיע.

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

CLI של gcloud

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

    gcloud pubsub topics delete TOPIC_NAME

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

המסוף

  1. במסוף Google Cloud, עוברים לדף Manage resources. לוחצים על תפריט > IAM & Admin > Manage Resources.

    כניסה ל-Resource Manager

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

CLI של gcloud

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

    gcloud projects delete PROJECT_ID