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

במדריך הזה מוסבר איך משתמשים ב-API ל-REST של Google Meet 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 & אדמין > יצירת פרויקט.

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

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

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

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

    כניסה לדף 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

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

הפעלת ממשקי ה-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 במזהה הפרויקט של הפרויקט ב-Cloud שיצרתם.

  2. להפעיל את ה-API ל-REST של Google Meet, את 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. לוחצים על יצירת נושא ומבצעים את הפעולות הבאות: הבאים:
    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 & אדמין > חשבונות שירות.

    לדף 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 מחיקה הפקודה:

    gcloud projects delete PROJECT_ID