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

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

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

    כניסה לדף Create a Project

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

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

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

CLI של gcloud

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

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

    מעבר למסך ההסכמה ל-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. אחרי שבוחרים את ההיקפים הנדרשים ליד האפליקציה, לוחצים על שמירה והמשך.
  10. אם בחרתם בסוג המשתמש חיצוני, עליכם להוסיף משתמשים לבדיקה:
    1. בקטע Test users לוחצים על Add users.
    2. מזינים את כתובת האימייל שלכם ואת כל המשתמשים המורשים האחרים לבדיקה, ולאחר מכן לוחצים על שמירה והמשך.
  11. מעיינים בסיכום של רישום האפליקציה. כדי לבצע שינויים, לוחצים על עריכה. אם הרשמת האפליקציה נראית תקינה, לוחצים על Back to Dashboard.

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

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

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

    כניסה לדף 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 של Meet בארכיטקטורת REST

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

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

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

מסוף Google Cloud

  1. במסוף Google Cloud, מפעילים את Google Meet REST API, את Google Workspace Events 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 במזהה הפרויקט של הפרויקט ב-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

התקנה של ספריית הלקוח של 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. לוחצים על יצירת נושא ומבצעים את הפעולות הבאות: הבאים:
    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.

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

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

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

CLI של gcloud

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

    gcloud pubsub topics delete TOPIC_NAME

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

המסוף

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

    מעבר למנהל המשאבים

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

CLI של gcloud

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

    gcloud projects delete PROJECT_ID