Hướng dẫn này trình bày cách sử dụng API REST của Google Meet cùng với Google Workspace Events API và Google Cloud Pub/Sub để quan sát và phản ứng với các sự kiện trong không gian tổ chức cuộc họp trên Meet. Ứng dụng mẫu sẽ ghi lại khi hội nghị truyền hình bắt đầu và kết thúc, khi người tham gia tham gia hoặc rời khỏi và khi có dữ liệu cuộc họp đã tạo sẽ có sẵn.
Thay vì đăng ký một không gian họp cụ thể, bạn có thể đăng ký người dùng Meet sẽ nhận sự kiện trong mọi không gian họp mà người dùng sở hữu hoặc sắp xếp. Để biết thông tin chi tiết, hãy xem Đăng ký theo dõi sự kiện trên Google Meet trong tài liệu về API Sự kiện của Google Workspace.
Điều kiện tiên quyết
Nếu bạn cần bật bất kỳ điều kiện tiên quyết nào sau đây cho tổ chức của mình, hãy hỏi quản trị viên Google Workspace của bạn để bật các tính năng này:
- Tài khoản Google Workspace có quyền truy cập vào Google Meet.
- Có quyền truy cập để tạo dự án trên Google Cloud.
- Đã cài đặt Python 3.
- Đã cài đặt gcloud CLI.
Chuẩn bị môi trường
Phần này trình bày cách tạo và định cấu hình môi trường cục bộ cũng như Dự án Google Cloud của phần hướng dẫn này.
Tạo thư mục làm việc và môi trường ảo Python
Để tạo và kích hoạt một bản đồ ảo mới môi trường, hãy chạy lệnh sau trong thiết bị đầu cuối của mình.
Linux/macOS
mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
source env/bin/activate
Windows (lời nhắc lệnh)
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
Tạo một dự án trên Google Cloud
bảng điều khiển Google Cloud
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tạo dự án.
-
Trong trường Tên dự án, hãy nhập tên mô tả cho dự án của bạn.
Không bắt buộc: Để chỉnh sửa Mã dự án, hãy nhấp vào Chỉnh sửa. Bạn không thể thay đổi mã dự án sau khi tạo dự án, vì vậy, hãy chọn một mã đáp ứng nhu cầu của bạn trong suốt thời gian hoạt động của dự án.
- Trong trường Vị trí, hãy nhấp vào Duyệt qua để hiển thị các vị trí tiềm năng cho dự án. Sau đó nhấp vào Chọn.
- Nhấp vào Tạo. Bảng điều khiển Google Cloud sẽ chuyển đến trang Trang tổng quan và dự án của bạn sẽ được tạo trong vòng vài phút.
Giao diện dòng lệnh (CLI) của gcloud
Truy cập vào Google Cloud ở một trong các môi trường phát triển sau đây CLI (`gcloud`):
-
Cloud Shell: Để sử dụng thiết bị đầu cuối trực tuyến với gcloud CLI
đã thiết lập, hãy kích hoạt Cloud Shell.
Kích hoạt Cloud Shell -
Local Shell: Để sử dụng môi trường phát triển cục bộ,
cài đặt và
khởi chạy
giao diện dòng lệnh (CLI) của gcloud.
Để tạo dự án trên Cloud, hãy sử dụng lệnh `gcloud projects create`: Thay thế PROJECT_ID bằng cách đặt mã nhận dạng cho dự án bạn muốn tạo.gcloud projects create PROJECT_ID
Bật tính năng thanh toán cho dự án trên Google Cloud
bảng điều khiển Google Cloud
- Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Thanh toán. Nhấp chuột Thực đơn > Thanh toán > Dự án của tôi.
- Trong phần Chọn tổ chức, hãy chọn tổ chức được liên kết với dự án Google Cloud của bạn.
- Trong hàng dự án, hãy mở trình đơn Hành động ( ), hãy nhấp vào Thay đổi thông tin thanh toán rồi chọn Tài khoản thanh toán Cloud.
- Nhấp vào Đặt tài khoản.
Giao diện dòng lệnh (CLI) của gcloud
- Để liệt kê các tài khoản thanh toán hiện có, hãy chạy:
gcloud billing accounts list
- Cách liên kết tài khoản thanh toán với một dự án trên Google Cloud:
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID
Thay thế đoạn mã sau:
PROJECT_ID
là Mã dự án của Dự án trên đám mây mà bạn muốn bật tính năng thanh toán.BILLING_ACCOUNT_ID
là mã tài khoản thanh toán để liên kết với dự án trên Google Cloud.
Thiết lập tính năng xác thực và uỷ quyền
Tính năng xác thực và uỷ quyền cho phép ứng dụng truy cập vào API REST của Meet của chúng tôi. Bạn cần phải cho phép người dùng để gọi API REST của Meet. Phần này hướng dẫn cách thiết lập thông tin xác thực của người dùng và yêu cầu uỷ quyền.
Định cấu hình màn hình xin phép bằng OAuth và chọn phạm vi
Các bước sau đây đề xuất thông tin phần giữ chỗ để định cấu hình màn hình đồng ý OAuth cho ứng dụng. Trước khi phát hành ứng dụng ra bên ngoài, hãy cập nhật thông tin này.
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và Dịch vụ > Màn hình xin phép bằng OAuth.
- Trong mục Loại người dùng, hãy chọn Nội bộ, rồi nhấp vào Tạo.
- Trong Tên ứng dụng, hãy nhập
Meet REST API Tutorial
. - Hoàn tất biểu mẫu đăng ký ứng dụng, sau đó nhấp vào Lưu và tiếp tục.
- Nhấp vào Add or Remove Scopes (Thêm hoặc xoá phạm vi). Một bảng điều khiển sẽ xuất hiện với danh sách phạm vi cho từng API mà bạn đã bật trong dự án trên Google Cloud.
- Trong phần Thêm phạm vi theo cách thủ công, hãy dán các phạm vi sau:
https://www.googleapis.com/auth/meetings.space.created
- Nhấp vào Thêm vào bảng.
- Nhấp vào Cập nhật.
- Sau khi chọn phạm vi cần thiết bên cạnh ứng dụng, hãy nhấp vào Lưu và tiếp tục.
- Nếu bạn chọn Bên ngoài cho loại người dùng, hãy thêm người dùng thử nghiệm:
- Trong phần Người dùng thử nghiệm, hãy nhấp vào Thêm người dùng.
- Nhập địa chỉ email của bạn và bất kỳ người dùng thử nghiệm nào khác được uỷ quyền, rồi nhấp vào Lưu và tiếp tục.
- Xem lại thông tin tóm tắt về việc đăng ký ứng dụng. Để chỉnh sửa, hãy nhấp vào Chỉnh sửa. Nếu bạn thấy quá trình đăng ký ứng dụng đã hoàn tất, hãy nhấp vào Quay lại trang tổng quan.
Tạo một mã ứng dụng khách
Mã ứng dụng khách đóng vai trò là thông tin đăng nhập cho ứng dụng trong OAuth 2.0 luồng. Vì ứng dụng chạy trên máy, nên hãy tạo một mã ứng dụng khách dành cho máy tính.
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và Dịch vụ > Thông tin xác thực.
- Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
- Nhấp vào Loại ứng dụng > Ứng dụng dành cho máy tính.
- Trong trường Name (Tên), hãy nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
- Nhấp vào Tạo. Màn hình OAuth do ứng dụng tạo sẽ xuất hiện, cho biết Mã ứng dụng khách và Mật khẩu ứng dụng mới của bạn.
- Nhấp vào OK. Thông tin đăng nhập mới được tạo sẽ xuất hiện trong phần Mã ứng dụng OAuth 2.0.
Cài đặt thư viện xác thực của Google
Cài đặt thư viện xác thực của Google:
pip install google-auth google-auth-oauthlib
Thực thi việc uỷ quyền
API REST của Meet yêu cầu thông tin đăng nhập của người dùng ở dạng OAuth 2.0 mã truy cập. Trong phần này, bạn sẽ triển khai luồng OAuth 2.0 để yêu cầu mã truy cập và mã làm mới cho người dùng.
Trong thư mục đang hoạt động, hãy tạo tệp
main.py
rồi thêm nội dung sau: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()
Để chạy mã, cả mã ứng dụng khách và mã bí mật được tạo trước đó đều là là bắt buộc. Sao chép tệp mật khẩu ứng dụng khách đã tải xuống vào dự án đang hoạt động và đổi tên thư mục đó thành
client_secret.json
.Nếu bạn muốn kiểm tra cách hoạt động của quá trình uỷ quyền, hãy chạy lệnh sau. Ứng dụng này nhắc yêu cầu uỷ quyền và tạo một tệp
token.json
trong thư mục hoạt động của dự án sau khi yêu cầu được phê duyệt.python3 main.py
Thêm API Kiến trúc chuyển trạng thái đại diện (REST) cho Meet
Giờ đây, mã uỷ quyền đã hoàn tất, đã đến lúc bật và gọi hàm Làm quen với API REST.
Bật API
Mặc dù phần này tập trung vào API REST của Meet, nhưng hướng dẫn này cũng sử dụng Google Cloud Pub/Sub và API Sự kiện của Google Workspace.
bảng điều khiển Google Cloud
Trong bảng điều khiển Google Cloud, hãy bật Google Meet REST API, Google Workspace Event API và Google Cloud Pub/Sub.
Xác nhận rằng bạn đang bật các API theo đúng cách Dự án trên đám mây, rồi nhấp vào Tiếp theo.
Xác nhận rằng bạn đang bật đúng API, sau đó nhấp vào Bật.
Giao diện dòng lệnh (CLI) của gcloud
Nếu cần, hãy đặt dự án hiện tại trên Google Cloud thành dự án bạn được tạo bằng lệnh
gcloud config set project
:gcloud config set project PROJECT_ID
Thay thế PROJECT_ID bằng Mã dự án của Dự án trên đám mây mà bạn đã tạo.
Bật API REST của Google Meet, API Sự kiện của Google Workspace và Google Cloud Pub/Sub bằng lệnh
gcloud services enable
:gcloud services enable meet.googleapis.com workspaceevents.googleapis.com pubsub.googleapis.com
Cài đặt thư viện ứng dụng Meet REST API
Hãy làm theo các bước sau để cài đặt thư viện ứng dụng Meet REST API:
Chạy lệnh:
pip install google-apps-meet
Chỉnh sửa tệp
main.py
để nhập ứng dụng:from google.apps import meet_v2 as meet
Tạo không gian
API REST của Meet hiện đã có sẵn, hãy xác định một hàm để tạo một không gian họp mà họ có thể đăng ký.
Chỉnh sửa main.py
và thêm:
def create_space() -> meet.Space:
"""Create a meeting space."""
client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
request = meet.CreateSpaceRequest()
return client.create_space(request=request)
Đăng ký nhận thông báo về sự kiện
Để nhận sự kiện về không gian hội họp, bạn cần tạo một gói thuê bao bằng API Sự kiện của Google Workspace. Bạn cũng phải tạo và đăng ký Chủ đề Google Cloud Pub/Sub đóng vai trò là điểm cuối thông báo mà tại đó ứng dụng nhận được các sự kiện.
Định cấu hình Google Cloud Pub/Sub
Để tạo và đăng ký một chủ đề Pub/Sub, hãy làm như sau:
bảng điều khiển Google Cloud
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > Pub/Sub.
Hãy nhớ chọn Dự án trên đám mây cho ứng dụng của bạn.
- Nhấp vào
- Nhập
workspace-events
làm tên chủ đề. - Chọn Thêm gói thuê bao mặc định.
- Nhấp vào Tạo. Tên chủ đề đầy đủ của bạn có định dạng là
projects/{project}/topics/{topic}
. Tạo ghi chú của tên này để sử dụng trong các bước sau này.
Tạo chủ đề rồi thực hiện
sau:
- Nhập
- Cấp quyền truy cập để đăng thông báo Pub/Sub lên chủ đề của bạn:
- Trên bảng điều khiển bên, hãy mở thẻ Quyền.
- Nhấp vào Thêm hiệu trưởng.
- Trong phần New principals (Tài khoản chính mới), hãy nhập
meet-api-event-push@system.gserviceaccount.com
. - Trong phần Chỉ định vai trò, hãy chọn
Pub/Sub Publisher
. - Nhấp vào Lưu.
Quá trình cập nhật quyền cho chủ đề của bạn có thể mất vài phút.
Giao diện dòng lệnh (CLI) của gcloud
- Trong dự án trên Google Cloud, hãy tạo một chủ đề bằng cách chạy đoạn mã sau:
gcloud pubsub topics create workspace-events
Kết quả hiển thị tên đầy đủ của chủ đề, có định dạng là
projects/{project}/topics/{topic}
. Ghi lại tên này để sử dụng trong các bước sau. - Cấp quyền truy cập để đăng thông báo cho chủ đề của bạn:
gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'
Có thể mất vài phút để cập nhật quyền cho chủ đề của bạn.
- Tạo gói thuê bao Pub/Sub cho chủ đề:
gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME
Thay thế đoạn mã sau:
TOPIC_NAME
: Tên chủ đề mà bạn đã tạo ở bước trước.
Ghi lại tên chủ đề và đảm bảo giá trị của {project}
là mã dự án trên Google Cloud cho ứng dụng của bạn. Bạn sẽ sử dụng tên chủ đề này để tạo gói thuê bao Google Workspace sau.
Tạo một tài khoản dịch vụ
Google Cloud Console
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.
- Nhấp vào Tạo tài khoản dịch vụ.
- Điền thông tin chi tiết về tài khoản dịch vụ, sau đó nhấp vào Tạo và tiếp tục.
- Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ của bạn để cấp quyền truy cập vào tài nguyên của dự án Google Cloud. Để biết thêm thông tin, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.
- Nhấp vào Tiếp tục.
- Không bắt buộc: Nhập những người dùng hoặc nhóm có thể quản lý và thực hiện hành động với tài khoản dịch vụ này. Để biết thêm thông tin chi tiết, hãy tham khảo bài viết Quản lý hành vi mạo danh tài khoản dịch vụ.
- Nhấp vào Xong. Ghi lại địa chỉ email của tài khoản dịch vụ.
Giao diện dòng lệnh (CLI) của gcloud
- Tạo tài khoản dịch vụ:
gcloud iam service-accounts create meet-event-listener \ --display-name="meet-event-listener"
- Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ để cấp quyền truy cập vào tài nguyên của dự án Google Cloud. Để biết thêm thông tin, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.
Sử dụng tài khoản dịch vụ
Sau khi tạo tài khoản dịch vụ, hãy cấp cho chính bạn quyền mạo danh tài khoản dịch vụ.
bảng điều khiển Google Cloud
- Trong cột Hành động cho tài khoản dịch vụ mới tạo, hãy nhấp vào > Quản lý quyền.
- Nhấp vào Thêm khoá > Cấp quyền truy cập.
- Nhập địa chỉ email của bạn trong phần Thêm người dùng chính.
- Chọn Tài khoản dịch vụ > Người tạo mã thông báo tài khoản dịch vụ vai trò.
- Nhấp vào Lưu.
- Quay lại dòng lệnh của bạn và đăng nhập bằng
gcloud
để đặt thông tin xác thực mặc định của ứng dụng thành tài khoản dịch vụ của bạn. Khi được nhắc yêu cầu uỷ quyền, hãy đăng nhập bằng tài khoản được sử dụng ở các bước trước.gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
Giao diện dòng lệnh (CLI) của gcloud
- Để thêm quyền, hãy chạy
gcloud iam service-accounts add-iam-policy-binding
thông qua địa chỉ email của tài khoản dịch vụ và người dùng.gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --member="user:YOUR_EMAIL \ --role="roles/iam.serviceAccountTokenCreator"
- Đăng nhập để đặt thông tin xác thực mặc định của ứng dụng thành
tài khoản dịch vụ của bạn. Khi được nhắc yêu cầu uỷ quyền, hãy đăng nhập bằng
tài khoản được sử dụng ở các bước trước.
gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
Cài đặt thư viện ứng dụng Pub/Sub
Sử dụng
pip
để cài đặt thư viện ứng dụng cho Pub/Sub:pip install google-cloud-pubsub
Sau đó, hãy chỉnh sửa
main.py
để nhập ứng dụng:from google.cloud import pubsub_v1
Tạo gói thuê bao của Google Workspace
Thêm mã sau vào main.py
để xác định một phương thức đăng ký
Sự kiện trên Meet. Mã này đăng ký tất cả sự kiện trong một cuộc họp
. Khi bạn đăng ký, các sự kiện sẽ được đăng lên chủ đề 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
Tiếp theo, hãy thêm mã tương ứng để lấy và xử lý các sự kiện.
Nghe và xử lý các sự kiện
Tiếp tục chỉnh sửa main.py
và thêm mã mẫu sau. Mã này
triển khai bên nhận và sử dụng API Google Cloud Pub/Sub để kéo
sự kiện khi chúng được cung cấp. Các phương thức trình xử lý khác nhau sẽ in thông tin về các sự kiện tương ứng.
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")
Hoàn tất mã
Thêm mã sau vào main.py
để gọi các phương thức tạo không gian, đăng ký sự kiện và nghe. Cập nhật TOPIC_NAME
và SUBSCRIPTION_NAME
hằng số với chủ đề của riêng bạn
và tên gói thuê bao mà bạn trước đây
đã tạo.
Thêm mã vào
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)
Thay thế đoạn mã sau:
PROJECT_ID
: Mã dự án trên Google Cloud duy nhất cho ứng dụng của bạn, chẳng hạn nhưmy-sample-project-191923
.TOPIC_ID
: Tên của chủ đề Pub/Sub mà bạn đã tạo trong dự án trên Cloud.SUBSCRIPTION_ID
: Tên gói thuê bao của bạn, chẳng hạn như dưới tênworkspace-events-sub
.
Chạy chương trình:
python3 main.py
Nếu trước đó bạn chưa chạy chương trình, chương trình sẽ nhắc bạn uỷ quyền lần đầu tiên. Cấp quyền truy cập vào ứng dụng để gọi API REST của Meet. Sau khi chương trình chạy thành công, bạn sẽ thấy kết quả tương tự như:
Join the meeting at https://meet.google.com/abc-mnop-xyz
Tham gia hội nghị
Để tạo sự kiện cho ứng dụng, hãy tham gia hội nghị này bằng URL mà ứng dụng hiển thị. Sau khi tham gia, bạn có thể thử làm những việc sau để kích hoạt các sự kiện:
- Rời khỏi và tham gia lại cuộc họp.
- Mời người khác hoặc gọi điện bằng điện thoại của bạn.
- Bật bản ghi âm và bản chép lời.
Mỗi hoạt động trong số này tạo ra một sự kiện mà ứng dụng nhận được và nhật ký vào bảng điều khiển Google Cloud.
Sử dụng ctrl-c
để gián đoạn chương trình khi bạn hoàn tất.
Không bắt buộc: Các bước khác mà bạn có thể thử thực hiện
Ứng dụng ghi lại thông tin cơ bản về các sự kiện. Để tiếp tục khám phá Làm quen với API REST, hãy thử sửa đổi ứng dụng để thực hiện các thao tác bổ sung này hành động.
- Sử dụng People API để truy xuất thêm thông tin về những người tham gia đã đăng nhập.
- Sử dụng API Google Drive để tải các bản ghi xuống và bản chép lời.
- Thay vì tải bản chép lời xuống từ Google Drive, hãy truy xuất bản chép lời bằng bản chép lời có cấu trúc phương thức trong API REST của Meet.
Không bắt buộc: Dọn dẹp
Để tránh bị tính phí vào tài khoản trên bảng điều khiển Google Cloud của bạn dùng trong hướng dẫn này, bạn nên dọn dẹp mọi tài nguyên và dự án đã tạo.
Cách xoá gói thuê bao:
Giao diện dòng lệnh
Trong Google Cloud Console, hãy chuyển đến Trình đơn > Pub/Sub > Gói thuê bao
Chọn gói thuê bao rồi nhấp vào biểu tượng
Thao tác khác.Nhấp vào Xóa. Cửa sổ Delete subscription (Xoá gói thuê bao) sẽ xuất hiện.
Nhấp vào Xóa.
Giao diện dòng lệnh (CLI) của gcloud
Xoá gói thuê bao:
gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
Cách xoá chủ đề:
Giao diện dòng lệnh
Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > Pub/Sub > Chủ đề
Chọn chủ đề rồi nhấp vào biểu tượng
Thao tác khác.Nhấp vào Xóa. Cửa sổ Xoá chủ đề sẽ xuất hiện.
Nhập
delete
rồi nhấp vào Delete (Xoá).
Giao diện dòng lệnh (CLI) của gcloud
Xoá chủ đề:
gcloud pubsub topics delete TOPIC_NAME
Cách xoá dự án:
Giao diện dòng lệnh
- Trong Google Cloud Console, hãy chuyển đến trang Quản lý tài nguyên. Nhấp chuột Thực đơn > IAM và Quản trị viên > Quản lý tài nguyên.
- Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá rồi nhấp vào Xoá .
- Trong hộp thoại, nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
Giao diện dòng lệnh (CLI) của gcloud
Để xoá một dự án, hãy dùng các dự án gcloud xoá :
gcloud projects delete PROJECT_ID
Chủ đề có liên quan
- Tìm hiểu về các loại sự kiện trên Meet mà bạn có thể đăng ký tham gia.
- Tìm hiểu thêm về những việc mà API REST của Google Meet có thể làm và hãy xem tài liệu tham khảo.
- Tạo gói thuê bao của Google Workspace đến không gian họp hoặc người dùng trên Meet bằng API Sự kiện của Google Workspace.
- Để tìm hiểu thêm về tính năng xác thực, hãy xem bài viết Định cấu hình màn hình xin phép bằng OAuth và chọn phạm vi.