Google Chat

整合版本:2.0

產品權限

建立服務帳戶

  1. 在 Google Cloud 控制台中,選取現有 Google Cloud 專案或建立新專案。請注意,所選專案應屬於 Google Cloud Google Cloud中的機構。
  2. 按一下 ☰「選單」,然後選取「API 和服務」>「憑證」選單項目。
  3. 按一下頁面頂端的「+ 建立憑證」>「服務帳戶」
  4. 輸入要顯示在控制台的服務帳戶名稱。
  5. 選用:輸入服務帳戶的說明。
  6. 依序點選「建立」、「繼續」和「完成」,即可完成建立服務帳戶。

建立服務帳戶憑證

  1. 建立服務帳戶後,系統會將您重新導向至可供 Google Cloud 專案使用的憑證清單。在「服務帳戶」部分下方,按一下新建立的服務帳戶。這會稱為:service-account-name@project-name-XXXXXX.iam.gserviceaccount.com
  2. 依序點選「新增金鑰」>「建立新的金鑰」
  3. 保留選取的 JSON,然後按一下「建立」

系統會開始下載憑證檔案,您需要這個檔案才能以該服務帳戶身分存取 API。

設定新的 Apps Script 專案

  1. 前往 Google Apps Script。
  2. 建立新的 Apps Script 專案。
  3. 如要執行整合功能,請將下列程式碼新增至新建立的專案:

    var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
    // The values below are copied from the JSON file downloaded upon
    // service account creation.
    // For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines of the private key
    var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
    var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';
    
    // Posts a message into the given space ID via the API, using
    // service account authentication.
    function postMessage(spaceId, message) {
      var service = OAuth2.createService('chat')
          .setTokenUrl('https://accounts.google.com/o/oauth2/token')
          .setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
          .setClientId(SERVICE_ACCOUNT_EMAIL)
          .setPropertyStore(PropertiesService.getUserProperties())
          .setScope(SCOPE);
      if (!service.hasAccess()) {
        Logger.log('Authentication error: %s', service.getLastError());
        return;
      }
      var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
      UrlFetchApp.fetch(url, {
        method: 'post',
        headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
        contentType: 'application/json',
        payload: JSON.stringify(message),
      });
    }
    
  4. 開啟從Google Cloud 主控台下載的服務帳戶憑證檔案。

  5. 複製 private_key 值 (開頭為「-----BEGIN PRIVATE KEY-----」),然後貼到 Apps Script 專案的 SERVICE_ACCOUNT_PRIVATE_KEY 中。

  6. 從憑證檔案複製 client_email 值,然後貼到 Apps Script 專案的 SERVICE_ACCOUNT_EMAIL 中。

  7. 將 Apps Script 專案連結至您建立的 Google Cloud 專案。

  8. 返回 Google Cloud 控制台,然後選取 ☰ >「IAM 與管理」>「設定」選單項目。

  9. 複製本頁面定義的專案編號。

  10. 在 Apps Script 專案中,依序選取「專案」設定 > Google Cloud 專案」選單項目,然後將專案號碼貼到「在此輸入專案號碼」對話方塊。

  11. 按一下「設定專案」

啟用 Google Chat API

  1. 依序前往 ☰ >「API 和服務」,然後選取「程式庫」
  2. 搜尋「Google Chat API」,然後點選唯一結果。
  3. 按一下「啟用」

這樣一來,專案就會啟用 API。

部署機器人

  1. 在 Apps Script 使用者介面中,依序前往「部署」>「新增部署作業」
  2. 選取新的部署類型「Add On」
  3. 輸入部署名稱和說明,然後按一下「儲存」
  4. 儲存完成後,按一下剛建立的部署作業旁邊的「取得 ID」,然後複製部署作業 ID 值。

設定 Google Chat 機器人:

  1. 在 Google Cloud 控制台中,依序前往 ☰ >「API 和服務」>「資訊主頁」
  2. 在已啟用的 API 清單中,選取「Google Chat API」
  3. 按一下「管理」,開啟 Google Chat API 頁面。
  4. 在開啟的頁面中,選取「設定」分頁標籤,然後設定機器人:

    • 在「應用程式名稱」欄位中,輸入 Google Security Operations Chat App。
    • 在「Avatar URL」(虛擬人偶網址) 欄位中,輸入 https://developers.google.com/chat/images/chat-product-icon.png。
    • 在「Description」欄位中,輸入 Google SecOps Chat App,這個應用程式可用於將訊息從 Google SecOps 傳送至 Google Chat 聊天室。
    • 在「功能」部分,選取「應用程式可以在有多位使用者的聊天室中運作」
    • 在「連線設定」部分中,選取「Apps Script 專案」,然後貼上從「部署機器人」程序取得的部署 ID。
    • 在「權限」部分,選取「僅限您網域中的特定使用者和群組」,並指定可與機器人互動的使用者。
    • 按一下 [儲存]。應用程式設定完成。

由於 Google Chat 應用程式無法建立聊天室 (發起對話),因此必須將 Google SecOps Chat 應用程式加入應傳送訊息的聊天室。

設定整合後,即可使用「列出聊天室」動作,擷取 Google SecOps 應用程式有權存取 (可傳送訊息) 的聊天室。

如果「列出聊天室」動作未顯示任何可用聊天室,表示應用程式無法在任何聊天室中傳送訊息。請返回上方的詳細操作說明,確認你已仔細按照每個步驟操作

在 Google SecOps 中設定 Google Chat 整合

請參閱這篇說明文章,瞭解在 Google SecOps 中設定整合功能的詳細操作說明。

整合參數

請使用下列參數設定整合:

參數顯示名稱 類型 預設值 為必填項目 說明
API 根層級網址 字串 https://chat.googleapis.com/ 整合功能用來連線至 Google Chat 服務的 API 根網址。
服務帳戶 密碼 不適用 服務帳戶 JSON 檔案內容,聊天機器人會使用這些內容與 Google Chat 服務互動。
驗證 SSL 核取方塊 已勾選 如果已啟用,請確認連線至 Google Chat 服務的 SSL 憑證是否有效。

動作

乒乓

說明

在 Google Security Operations Marketplace 分頁的整合設定頁面中,使用提供的參數測試與 Google Chat 的連線。

執行時間

這項動作不會在實體上執行,也沒有強制輸入參數。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
is_success True/False is_success:False
案件總覽
結果類型 值/說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

如果成功:「Successfully connected to the Google Chat service with the provided connection parameters!」(已使用提供的連線參數成功連線至 Google Chat 服務!)

動作應會失敗並停止執行應對手冊:

如果系統回報重大錯誤,例如憑證錯誤或連線中斷:「無法連線至 Google Chat 服務!錯誤為「{0}」。format(exception.stacktrace)

一般

列出空間

說明

列出目前設定的 Google Chat 機器人已加入的聊天室。

參數

參數顯示名稱 類型 預設值 為必填項目 說明
篩選鍵 DDL

選取一個

可能的值:

  • 名稱
  • 顯示名稱
  • 類型
指定用來篩選 Google Chat 聊天室的金鑰。
篩選邏輯 DDL

未指定

可能的值:

  • 未指定
  • 等於
  • 包含
指定要套用哪些篩選器邏輯。篩選邏輯會根據「篩選鍵」參數中提供的值運作。
篩選條件值 字串 不適用

指定篩選器中應使用的值。

如果選取「等於」,動作會嘗試在結果中尋找完全相符的項目。

如果選取「包含」,動作會嘗試找出包含指定子字串的結果。

如果這個參數未提供任何值,系統就不會套用篩選條件。篩選邏輯會根據「篩選鍵」參數中提供的值運作。

要傳回的記錄數量上限 整數 50

指定要傳回的記錄數。

如果未提供任何內容,動作會傳回 50 筆記錄。

納入使用者會員資格 核取方塊 已取消勾選 啟用後,系統會將使用者會員資訊新增至「案件牆」資料表和 JSON 結果。

執行日期

這項操作不會對實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
is_success True/False is_success:False
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

如果資料可用 (is_success=true):「Successfully found added spaces for the provided criteria in Google Chat.」(已在 Google Chat 中成功找到符合所提供條件的已新增空間)。

如果沒有可用資料 (is_success=false):「Google Chat 中沒有符合所提供條件的聊天室」

如果「篩選值」參數沒有值 (is_success=true):

「篩選器未套用,因為參數『篩選器值』的值為空白。」

動作應會失敗並停止執行應對手冊:

如果篩選器鍵參數設為「選取一項」,且篩選器邏輯參數設為「等於」或「包含」

「執行『列出空間』動作時發生錯誤。原因:您需要從「篩選鍵」參數中選取欄位。

如果為「要傳回的記錄數上限」參數提供無效值:

「執行『列出空間』動作時發生錯誤。原因:「提供的『要傳回的記錄數上限』值無效。請提供正數。」

如果系統回報嚴重錯誤,例如憑證錯誤、無法連線至伺服器或其他錯誤:

「執行『列出空間』動作時發生錯誤。原因:{0}''.format(error.Stacktrace)

一般
案件總覽表格

資料表名稱:已新增機器人的可用空間資料表欄:{fields}

注意:如果勾選「包含使用者成員資格」核取方塊,系統會新增額外欄位,顯示聊天室成員的顯示名稱。

一般

傳送訊息

說明

傳送訊息至已加入 Google SecOps 應用程式的 Google Chat 聊天室。

參數

參數顯示名稱 類型 預設值 為必填項目 說明
聊天室名稱 字串 不適用

指定要傳送訊息的聊天室名稱。

聊天室名稱範例:AAAAdaTsel0

訊息文字 字串 不適用 指定要傳送的訊息文字。

執行日期

這項操作不會對實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
is_success True/False is_success:False
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

如果訊息傳送成功 (is_success=true):「Message was sent successfully.」(訊息已成功傳送)。

動作應會失敗並停止執行應對手冊:

如果系統回報重大錯誤,例如沒有連線或憑證錯誤:「執行『傳送訊息』動作時發生錯誤。原因:{0}''.format(error.Stacktrace)

一般

傳送進階訊息

說明

根據提供的訊息 JSON 酬載,傳送進階訊息至 Google Chat 聊天室。

參數

參數顯示名稱 類型 預設值 為必填項目 說明
聊天室名稱 字串 不適用

指定要傳送訊息的聊天室名稱。

聊天室名稱範例:AAAAdaTsel0

訊息 JSON 酬載 字串 {"cards":[{"sections":[{"widgets":[{"image":{"imageUrl":"https://..."}},{"buttons":[{"textButton":{"text":"OPEN IN GOOGLE MAPS","onClick":{"openLink":{"url":"https://..."}}}}]}]}]}]}

指定要隨訊息傳送的 JSON 酬載。

如需訊息酬載範例,請參閱這篇文章

執行日期

這項操作不會對實體執行。

動作執行結果

指令碼執行結果
指令碼結果名稱 值選項 範例
is_success True/False is_success:False
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

如果訊息傳送成功 (is_success=True):「Message was sent successfully」(訊息已成功傳送)。

動作應會失敗並停止執行應對手冊:

如果提供的 JSON 酬載無效:「Error executing action "Send Advanced Message". 原因:提供的訊息 JSON 酬載無效。」

如果系統回報重大錯誤,例如沒有連線或憑證錯誤:「執行『傳送進階訊息』動作時發生錯誤。原因:{0}''.format(error.Stacktrace)

一般

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。