Google Chat
整合版本:2.0
產品權限
建立服務帳戶
- 在 Google Cloud 控制台中,選取現有 Google Cloud 專案或建立新專案。請注意,所選專案應屬於 Google Cloud Google Cloud中的機構。
- 按一下 ☰「選單」,然後選取「API 和服務」>「憑證」選單項目。
- 按一下頁面頂端的「+ 建立憑證」>「服務帳戶」。
- 輸入要顯示在控制台的服務帳戶名稱。
- 選用:輸入服務帳戶的說明。
- 依序點選「建立」、「繼續」和「完成」,即可完成建立服務帳戶。
建立服務帳戶憑證
- 建立服務帳戶後,系統會將您重新導向至可供 Google Cloud 專案使用的憑證清單。在「服務帳戶」部分下方,按一下新建立的服務帳戶。這會稱為:service-account-name@project-name-XXXXXX.iam.gserviceaccount.com。
- 依序點選「新增金鑰」>「建立新的金鑰」。
- 保留選取的 JSON,然後按一下「建立」。
系統會開始下載憑證檔案,您需要這個檔案才能以該服務帳戶身分存取 API。
設定新的 Apps Script 專案
- 前往 Google Apps Script。
- 建立新的 Apps Script 專案。
如要執行整合功能,請將下列程式碼新增至新建立的專案:
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), }); }
開啟從Google Cloud 主控台下載的服務帳戶憑證檔案。
複製 private_key 值 (開頭為「-----BEGIN PRIVATE KEY-----」),然後貼到 Apps Script 專案的 SERVICE_ACCOUNT_PRIVATE_KEY 中。
從憑證檔案複製 client_email 值,然後貼到 Apps Script 專案的 SERVICE_ACCOUNT_EMAIL 中。
將 Apps Script 專案連結至您建立的 Google Cloud 專案。
返回 Google Cloud 控制台,然後選取 ☰ >「IAM 與管理」>「設定」選單項目。
複製本頁面定義的專案編號。
在 Apps Script 專案中,依序選取「專案」設定 > Google Cloud 專案」選單項目,然後將專案號碼貼到「在此輸入專案號碼」對話方塊。
按一下「設定專案」。
啟用 Google Chat API
- 依序前往 ☰ >「API 和服務」,然後選取「程式庫」。
- 搜尋「Google Chat API」,然後點選唯一結果。
- 按一下「啟用」。
這樣一來,專案就會啟用 API。
部署機器人
- 在 Apps Script 使用者介面中,依序前往「部署」>「新增部署作業」。
- 選取新的部署類型「Add On」。
- 輸入部署名稱和說明,然後按一下「儲存」。
- 儲存完成後,按一下剛建立的部署作業旁邊的「取得 ID」,然後複製部署作業 ID 值。
設定 Google Chat 機器人:
- 在 Google Cloud 控制台中,依序前往 ☰ >「API 和服務」>「資訊主頁」。
- 在已啟用的 API 清單中,選取「Google Chat API」。
- 按一下「管理」,開啟 Google Chat API 頁面。
在開啟的頁面中,選取「設定」分頁標籤,然後設定機器人:
- 在「應用程式名稱」欄位中,輸入 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 專業人員尋求答案。