建立 Google Workspace 訂閱方案

本頁說明如何使用 Google Workspace Events API 建立 Google Workspace 資源的訂閱項目。訂閱 Google Workspace 後,應用程式就能接收 Google Workspace 事件相關資訊,這些事件代表 Google Workspace 資源的變更。如要瞭解 Google Workspace Events API 支援哪些資源和事件類型,請參閱 Google Workspace Events API 總覽

本頁面提供建立 Google Workspace 訂閱方案的步驟:

  1. 設定環境。
  2. 建立並訂閱 Google Cloud Pub/Sub 主題。您可以使用這個主題做為端點,接收 Google Workspace 事件。
  3. Subscription 資源上呼叫 Google Workspace 事件 API 的 create() 方法。
  4. 測試 Google Workspace 訂閱項目,確保您的 Pub/Sub 主題會收到您訂閱的事件。
  5. 您可以視需要設定如何將事件推送至應用程式端點,以便應用程式處理事件,並在必要時採取行動。

必要條件

Apps Script

  • 如要使用本指南中的 Google Cloud CLI 指令,請按照下列步驟操作:
    1. 安裝 Google Cloud CLI
    2. 如要 初始化 gcloud CLI,請執行下列程式碼:
    3.   gcloud init
        
  • 啟用計費功能的 Google Cloud 專案。如要訂閱 Chat,您還必須在 Cloud 專案中啟用 Chat API,並設定「應用程式名稱」、「顯示圖片網址」和「說明」欄位。詳情請參閱「建構 Google Chat 應用程式」。
  • 需要使用者驗證,並透過為應用程式設定的 OAuth 同意畫面。設定同意畫面時,您必須指定範圍,以便支援訂閱的每個事件類型。如要設定同意畫面並找出必要範圍,請參閱「選擇範圍」。
  • Apps Script 專案:
    • 請使用 Google Cloud 專案,而非由 Apps Script 自動建立的預設專案。
    • 對於您新增用於設定 OAuth 同意畫面的任何範圍,您也必須將範圍新增至 Apps Script 專案中的 appsscript.json 檔案。例如:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • 啟用 Google Workspace Events 進階服務。

Python

  • Python 3.6 以上版本
  • pip 套件管理工具
  • 最新的 Python 適用 Google 用戶端程式庫。如要安裝或更新這些項目,請在指令列介面中執行下列指令:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • 如要使用本指南中的 Google Cloud CLI 指令,請按照下列步驟操作:
    1. 安裝 Google Cloud CLI
    2. 如要 初始化 gcloud CLI,請執行下列程式碼:
    3.   gcloud init
        
  • 啟用計費功能的 Google Cloud 專案。如要訂閱 Chat,您還必須在 Cloud 專案中啟用 Chat API,並設定 應用程式名稱顯示圖片網址說明欄位。詳情請參閱「建構 Google Chat 應用程式」。
  • 需要使用者驗證,並透過為應用程式設定的 OAuth 同意畫面進行驗證。設定同意畫面時,您必須指定範圍,以便支援訂閱的每個事件類型。如要設定同意畫面並找出必要範圍,請參閱「選擇範圍」。

設定環境

以下章節將說明如何在建立 Google Workspace 訂閱前設定環境。

啟用 Google Workspace Events API 和 Google Cloud Pub/Sub API

使用 Google API 前,您必須先在 Google Cloud 專案中啟用這些 API。您可以在單一 Google Cloud 專案中啟用一或多個 API。

Google Cloud 控制台

在 Google Cloud 主控台中,開啟應用程式的 Google Cloud 專案,並啟用 Google Workspace Events API 和 Pub/Sub API:

啟用 API

gcloud

  1. 在工作目錄中登入 Google 帳戶:

    gcloud auth login
  2. 將專案設為應用程式的 Cloud 專案:

    gcloud config set project PROJECT_ID

    PROJECT_ID 替換為應用程式 Cloud 專案的專案 ID

  3. 啟用 Google Workspace Events API 和 Google Cloud Pub/Sub API:

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

建立 OAuth 用戶端 ID 憑證

請選擇應用程式類型,查看如何建立 OAuth 用戶端 ID 的具體操作說明:

網頁應用程式

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「Application type」>「Web application」
  4. 在「Name」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 新增與應用程式相關的授權 URI:
    • 用戶端應用程式 (JavaScript):在「已授權的 JavaScript 來源」下方,按一下「新增 URI」。接著,輸入要用於瀏覽器要求的 URI。這會識別應用程式可將 API 要求傳送至 OAuth 2.0 伺服器的網域。
    • 伺服器端應用程式 (Java、Python 等):按一下「Authorized redirect URIs」下方的「Add URI」。接著,輸入 OAuth 2.0 伺服器可傳送回應的端點 URI。
  6. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,顯示新的用戶端 ID 和用戶端密碼。

    請記下用戶端 ID。網頁應用程式不會使用用戶端密鑰。

  7. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 Client IDs」下方。

Android

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「應用程式類型」>「Android」
  4. 在「名稱」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「套件名稱」欄位中,輸入 AndroidManifest.xml 檔案中的套件名稱。
  6. 在「SHA-1 憑證指紋」欄位中,輸入您產生的 SHA-1 憑證指紋
  7. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,並顯示新的用戶端 ID。
  8. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」下方。

iOS

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「iOS」
  4. 在「名稱」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「軟體包 ID」欄位中,輸入應用程式 Info.plist 檔案中列出的軟體包 ID。
  6. 選用:如果您的應用程式已在 Apple App Store 中上架,請輸入 App Store ID。
  7. 選用:在「團隊 ID」欄位中,輸入 Apple 產生並指派給您團隊的專屬字串 (共 10 個字元)。
  8. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  9. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」下方。

Chrome 應用程式

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「應用程式類型」>「Chrome 應用程式」
  4. 在「名稱」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「應用程式 ID」欄位中,輸入應用程式的專屬 32 個字元 ID 字串。您可以在應用程式的 Chrome 線上應用程式商店網址和 Chrome 線上應用程式商店開發人員資訊主頁中找到這個 ID 值。
  6. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  7. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」下方。

電腦版應用程式

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「桌面應用程式」
  4. 在「Name」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  6. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 Client IDs」下方。

電視和輸入受限裝置

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」「電視和輸入受限的裝置」
  4. 在「名稱」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  6. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」下方。

通用 Windows 平台 (UWP)

  1. 在 Google Cloud 控制台中,依序前往「Menu」 >「APIs & Services」>「Credentials」

    前往「憑證」

  2. 依序按一下「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「應用程式類型」>「通用 Windows 平台 (UWP)」
  4. 在「名稱」欄位中輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「商店 ID」欄位中,輸入應用程式的專屬 12 個字元 Microsoft 商店 ID 值。您可以在應用程式的 Microsoft Store 網址和 Partner Center 中找到這個 ID。
  6. 按一下「建立」,系統會顯示「OAuth client created」(已建立 OAuth 用戶端) 畫面,其中顯示新的用戶端 ID 和用戶端密碼。
  7. 按一下「確定」。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」下方。

下載用戶端密鑰 JSON 檔案

用戶端密鑰檔案是 OAuth 用戶端 ID 憑證的 JSON 表示法,可供應用程式在提供憑證時參照。

  1. 在 Google Cloud 控制台中,依序前往「選單」圖示 >「API 和服務」 >「憑證」

    前往「憑證」

  2. 在「OAuth 2.0 Client IDs」下方,點選您建立的用戶端 ID。

  3. 按一下「Download JSON」

  4. 將檔案儲存為 client_secrets.json

建立並訂閱 Pub/Sub 主題

在本節中,您將建立 Pub/Sub 主題和主題訂閱項目。Pub/Sub 主題是通知端點,可讓 Google Workspace 訂閱方案接收事件。

如要進一步瞭解如何建立及管理 Pub/Sub 主題,請參閱 Pub/Sub 說明文件

如要建立及訂閱 Pub/Sub 主題,請按照下列步驟操作:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的 Pub/Sub 頁面:

    前往 Google Cloud Pub/Sub

    確認已選取應用程式的 Cloud 專案。

  2. 按一下 「Create topic」(建立主題),然後執行下列操作:

    1. 輸入主題名稱,例如 workspace-events-topic
    2. 保留「Add a default subscription」(新增預設訂閱) 的選取狀態。Pub/Sub 會為這個預設訂閱命名,名稱類似主題名稱,例如 workspace-events-topic-sub
    3. 選用步驟:更新或設定主題的其他屬性
  3. 按一下「建立」,完整的主題名稱格式為 projects/PROJECT_ID/topics/TOPIC_ID。您會在後續步驟中使用這個全名。

  4. 授予發布至主題的權限:

    1. 在主題頁面上,前往側邊面板並開啟「Permissions」分頁標籤。
    2. 按一下「新增主體」
    3. 在「新增主體」欄位中,新增服務帳戶,以便將事件傳送至訂閱項目的 Google Workspace 應用程式:
      1. 如為即時通訊事件,請使用 chat-api-push@system.gserviceaccount.com
      2. 如為 Meet 活動,請meet-api-event-push@system.gserviceaccount.com
    4. 在「Assign roles」(指派角色) 選單中,選取 Pub/Sub Publisher
    5. 按一下 [儲存]。更新主題的權限可能需要幾分鐘的時間。

gcloud

  1. 在 Cloud 專案中,執行下列指令建立主題:

    gcloud pubsub topics create TOPIC_ID

    TOPIC_ID 替換為主題的專屬 ID,例如 workspace-events-topic

    輸出結果會顯示完整的主題名稱,格式為 projects/PROJECT_ID/topics/TOPIC_ID。記下名稱,並確認 PROJECT_ID 的值是應用程式的 Cloud 專案 ID。您會在後續步驟中使用主題名稱,並稍後建立 Google Workspace 訂閱。

  2. 授予將訊息發布到主題的存取權:

    gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'

    更改下列內容:

    • TOPIC_NAME:完整主題名稱,為上一個步驟的輸出內容。格式為 projects/PROJECT_ID/topics/TOPIC_ID
    • GOOGLE_WORKSPACE_APPLICATION:必須將事件提交至訂閱項目的 Google Workspace 應用程式:

      • 如要接收 Chat 的事件,請使用 chat-api-push@system.gserviceaccount.com
      • 如要接收 Meet 的事件,請使用 meet-api-event-push@system.gserviceaccount.com

    更新主題的權限可能需要幾分鐘的時間。

  3. 為主題建立 Pub/Sub 訂閱項目:

     gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME

    更改下列內容:

    • SUBSCRIPTION_NAME:訂閱項目的名稱,例如 workspace-events-subscription
    • TOPIC_NAME:您在上一個步驟中建立的主題名稱。

訂閱 Google Workspace 資源

在本節中,您將訂閱要監控事件的 Google Workspace 資源。

選擇並識別目標資源

在 Google Workspace 訂閱方案中,目標資源是您用來監控事件的 Google Workspace 資源。目標資源會在訂閱項目的 targetResource 欄位中顯示,格式為完整資源名稱。舉例來說,如果訂閱項目用於監控 Google Chat 聊天室 (spaces/AAAABBBBBBB),targetResource 的值就是 //chat.googleapis.com/spaces/AAAABBBBBBB

建立訂閱項目前,請參閱下列各節,瞭解如何識別及設定目標資源的格式。

找出 Chat 的目標資源

目標資源 格式 限制
空格

//chat.googleapis.com/spaces/SPACE

其中 SPACE 是 Chat API space 資源的 資源名稱中的 ID。您可以從空間的網址或使用 spaces.list() 方法取得 ID。

授權訂閱的 Chat 使用者必須透過 Google Workspace 或 Google 帳戶成為聊天室的成員。
使用者的所有聊天室

//chat.googleapis.com/spaces/-

訂閱項目只會接收使用者透過 Google Workspace 或 Google 帳戶成為成員的聊天室活動。
使用者

//cloudidentity.googleapis.com/users/USER

其中 USER 是 Chat API user 資源的 資源名稱中的 ID。詳情請參閱「找出並指定 Google Chat 使用者」。

訂閱項目只會收到授權訂閱的使用者相關事件。使用者無法代表其他使用者授權訂閱。

找出 Meet 的目標資源

目標資源 格式 限制 (如有)
會議空間 //meet.googleapis.com/spaces/SPACE

其中 SPACE 是 Meet REST API space 資源的 資源名稱中的 ID。詳情請參閱「Meet 如何識別會議空間」。

使用者 //cloudidentity.googleapis.com/users/USER

其中 USER 是 Meet REST API participant 資源的 signedinUser.user 欄位中的 ID。詳情請參閱「與參與者合作」。

訂閱項目會接收會議空間的事件,其中使用者為下列任一類別:

  • 會議空間的擁有者。
  • 與會議空間相關聯的 Google 日曆活動主辦人

建立 Google Workspace 訂閱方案

如要建立訂閱項目,請使用 Google Workspace Events API 的 subscriptions.create() 方法建立 Subscription 資源。您可以指定下列欄位:

  • targetResource:您在上一節中指定的 Google Workspace,其格式為完整資源名稱。
  • eventTypes:一或多個事件類型的陣列,您可以接收資源相關的事件。舉例來說,如果您的應用程式只需要知道已發布至 Chat 聊天室的新訊息,則可訂閱有關建立訊息的事件。
  • notificationEndpoint:Google Workspace 訂閱方案用來傳送事件的通知端點。您會使用在上一節建立的 Pub/Sub 主題。
  • payloadOptions:選項,可用來指定事件酬載中要納入多少資源資料。這項設定會影響訂閱項目的到期時間。詳情請參閱「事件資料」。

如要建立 Google Workspace 訂閱方案,請按照下列步驟操作:

Apps Script

  1. 在 Apps 指令碼專案中,建立名為 createSubscription 的新指令碼檔案,然後加入下列程式碼:

    function createSubscription() {
      // The Google Workspace resource to monitor for events.
      const targetResource = 'TARGET_RESOURCE';
    
      // The types of events to receive.
      const eventTypes = [EVENT_TYPES];
    
      // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
      const pubsubTopic = 'TOPIC_NAME';
    
      // Whether to include resource data or not.
      const resourceData = RESOURCE_DATA;
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.create({
        targetResource: targetResource,
        eventTypes: eventTypes,
        notificationEndpoint: {
          pubsubTopic: pubsubTopic,
        },
        payloadOptions: {
          includeResource: resourceData
        }
      });
      console.log(response);
    }
    

    更改下列內容:

    • TARGET_RESOURCE:您訂閱的 Google Workspace 資源,格式為完整資源名稱。舉例來說,如要訂閱 ID 為 AAAABBBB 的 Google Chat 聊天室,請使用 //chat.googleapis.com/spaces/AAAABBBB
    • EVENT_TYPES:您要在目標資源中訂閱的一或多個事件類型。格式為字串陣列,例如 'google.workspace.chat.message.v1.created'
    • TOPIC_NAME:您在 Cloud 專案中建立的 Pub/Sub 主題全名。格式為 projects/PROJECT_ID/topics/TOPIC_ID
    • RESOURCE_DATA:布林值,指定訂閱項目是否在酬載中包含資源資料:

      • True:包含所有資源資料。如要限制要納入的欄位,請新增 fieldMask 欄位,並為已變更的資源指定至少一個欄位。只有 Chat 資源的訂閱項目支援納入資源資料。
      • False:排除資源資料。
  2. 如要建立 Google Workspace 訂閱,請在 Apps Script 專案中執行 createSubscription 函式。

Python

  1. 在工作目錄中建立名為 create_subscription.py 的檔案,並新增下列程式碼:

    """Create subscription."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = [SCOPES]
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('client_secrets.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # The Google Workspace resource to monitor for events.
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    # The types of events to receive.
    EVENT_TYPES = [EVENT_TYPES]
    
    # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
    TOPIC = 'TOPIC_NAME'
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    BODY = {
        'target_resource': TARGET_RESOURCE,
        'event_types': EVENT_TYPES,
        'notification_endpoint': {'pubsub_topic': TOPIC},
        'payload_options': {'include_resource': RESOURCE_DATA},
    }
    response = service.subscriptions().create(body=BODY).execute()
    print(response)
    

    更改下列內容:

    • SCOPES:一或多個支援訂閱項目各個事件類型的 OAuth 範圍。格式為字串陣列。如要列出多個範圍,請以半形逗號分隔。例如:'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'
    • TARGET_RESOURCE:您訂閱的 Google Workspace 資源,格式為完整資源名稱。舉例來說,如要訂閱 ID 為 AAAABBBB 的 Google Chat 聊天室,請使用 //chat.googleapis.com/spaces/AAAABBBB
    • EVENT_TYPES:您要在目標資源中訂閱的一或多個事件類型。格式為字串陣列,例如 'google.workspace.chat.message.v1.created'
    • TOPIC_NAME:您在 Cloud 專案中建立的 Pub/Sub 主題全名。格式為 projects/PROJECT_ID/topics/TOPIC_ID
    • RESOURCE_DATA:布林值,指定訂閱項目是否在酬載中包含資源資料:

      • True:包含所有資源資料。如要限制要納入的欄位,請新增 fieldMask 欄位,並為已變更的資源指定至少一個欄位。只有 Chat 資源的訂閱項目支援納入資源資料。
      • False:排除資源資料。
  2. 如要建立 Google Workspace 訂閱,請在終端機中執行下列指令:

    python3 create_subscription.py

Google Workspace Events API 會傳回已完成的長時間執行作業,其中包含您建立的 Subscription 資源例項。

測試 Google Workspace 訂閱方案

如要測試是否接收 Google Workspace 事件,您可以觸發事件,並將訊息提取至 Pub/Sub 訂閱。

如要測試 Google Workspace 訂閱方案,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Workspace 訂閱方案的目標資源中觸發一或多種事件類型。舉例來說,如果你已訂閱 Chat 聊天室中的新訊息,請在聊天室中張貼訊息。

  2. 前往 Google Cloud 控制台的 Pub/Sub 頁面:

    前往 Pub/Sub

    確認已選取應用程式的 Cloud 專案。

  3. 在「Pub/Sub」選單中,按一下「訂閱項目」

  4. 在表格中找出主題的 Pub/Sub 訂閱項目,然後按一下訂閱項目名稱。

  5. 按一下「Messages」(訊息) 分頁標籤。

  6. 按一下「Pull」。事件產生 Pub/Sub 訊息可能需要幾分鐘的時間。

gcloud

  1. 在 Google Workspace 訂閱方案的目標資源中觸發一或多種事件類型。舉例來說,如果你已訂閱 Chat 聊天室中的新訊息,請在聊天室中張貼訊息。

  2. 執行下列指令:

    gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack

    更改下列內容:

    • PUBSUB_SUBSCRIPTION_NAME:Pub/Sub 訂閱的完整名稱,格式為 projects/SUBSCRIPTION_ID/subscriptions/SUBSCRIPTION_ID
    • MESSAGE_COUNT:您要擷取的 Pub/Sub 訊息數量上限。

    事件產生 Pub/Sub 訊息最多可能需要幾分鐘的時間。

每當您觸發 Google Workspace 事件,系統就會將訊息傳送至包含該事件的 Pub/Sub 訂閱項目。詳情請參閱「以 Google Cloud Pub/Sub 訊息格式接收事件」。

設定應用程式接收事件的方式

您建立的 Pub/Sub 訂閱項目是採用「拉」式架構。測試 Pub/Sub 訂閱後,您可以更新傳送類型,變更應用程式接收事件的方式。舉例來說,您可以將 Pub/Sub 訂閱設為推送提交類型,讓應用程式能夠直接在應用程式端點接收事件。

如要瞭解如何設定 Pub/Sub 訂閱項目,請參閱 Pub/Sub 說明文件