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 UI에서 배포 > 새 배포로 이동합니다.
- 새 배포 유형에 대해 부가기능을 선택합니다.
- 배포 이름과 설명을 입력하고 저장을 클릭합니다.
- 저장이 완료되면 방금 만든 배포 옆에 있는 ID 가져오기를 클릭하고 배포 ID 값을 복사합니다.
Google Chat 봇 구성:
- Google Cloud 콘솔에서 ☰ > API 및 서비스 > 대시보드로 이동합니다.
- 사용 설정된 API 목록에서 Google Chat API를 선택합니다.
- 관리를 클릭하여 Google Chat API 페이지를 엽니다.
열린 페이지에서 구성 탭을 선택하고 봇 구성을 설정합니다.
- 앱 이름 필드에 Google Security Operations Chat App을 입력합니다.
- 아바타 URL 필드에 https://developers.google.com/chat/images/chat-product-icon.png를 입력합니다.
- 설명 필드에 Google SecOps에서 Google Chat 스페이스로 메시지를 보내는 데 사용할 수 있는 Google SecOps Chat App을 입력합니다.
- 기능 섹션에서 앱이 여러 사용자가 있는 스페이스에서 작동함을 선택합니다.
- 연결 설정 섹션에서 Apps Script 프로젝트를 선택하고 봇 배포 절차에서 얻은 배포 ID를 붙여넣습니다.
- 권한 섹션에서 내 도메인의 특정 사용자 및 그룹을 선택하고 봇과 상호작용할 수 있는 사용자를 지정합니다.
- 저장을 클릭합니다. 앱 구성이 완료되었습니다.
Google Chat 앱은 스페이스를 만들 수 없으므로 (대화 시작) 메시지를 보내야 하는 스페이스에 Google SecOps Chat 앱을 추가해야 합니다.
통합이 구성되면 '스페이스 목록' 작업을 사용하여 Google SecOps 앱이 액세스할 수 있는 스페이스 (메시지를 보낼 수 있는 스페이스)를 가져올 수 있습니다.
'스페이스 목록' 작업에 사용 가능한 스페이스가 표시되지 않으면 앱이 어떤 스페이스에서도 메시지를 보낼 수 없음을 의미합니다. 위의 자세한 안내로 돌아가 각 단계를 주의 깊게 따랐는지 확인하세요.
Google SecOps에서 Google Chat 통합 구성
Google SecOps에서 통합을 구성하는 방법에 대한 자세한 안내는 통합 구성을 참고하세요.
통합 매개변수
다음 매개변수를 사용하여 통합을 구성합니다.
| 매개변수 표시 이름 | 유형 | 기본값 | 필수 항목 | 설명 |
|---|---|---|---|---|
| API 루트 URL | 문자열 | https://chat.googleapis.com/ | 예 | 통합이 Google Chat 서비스에 연결하는 데 사용하는 API 루트 URL입니다. |
| 서비스 계정 | 비밀번호 | 해당 사항 없음 | 예 | 챗봇이 Google Chat 서비스와 함께 작동하는 데 사용하는 서비스 계정 JSON 파일 콘텐츠입니다. |
| SSL 확인 | 체크박스 | 선택 | 예 | 사용 설정하면 Google Chat 서비스에 대한 연결의 SSL 인증서가 유효한지 확인합니다. |
작업
핑
설명
Google Security Operations Marketplace 탭의 통합 구성 페이지에서 제공된 매개변수를 사용하여 Google Chat에 대한 연결을 테스트합니다.
실행
이 작업은 항목에서 실행되지 않거나 필수 입력 매개변수가 없습니다.
작업 결과
스크립트 결과
| 스크립트 결과 이름 | 값 옵션 | 예 |
|---|---|---|
| is_success | True/False | is_success:False |
케이스 월
| 결과 유형 | 값/설명 | 유형 |
|---|---|---|
| 출력 메시지* | 작업이 실패하거나 플레이북 실행을 중지하지 않습니다. 성공한 경우: '제공된 연결 매개변수를 사용하여 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): 'Google Chat에서 제공된 기준에 따라 추가된 스페이스를 찾았습니다.' 데이터를 사용할 수 없는 경우 (is_success=false): 'Google Chat에서 제공된 기준에 맞는 스페이스를 찾을 수 없습니다.' '필터 값' 매개변수에 값이 없는 경우 (is_success=true): '매개변수 '필터 값'이 비어 있어 필터가 적용되지 않았습니다.' 작업이 실패하고 플레이북 실행을 중지합니다. 필터 키 매개변수가 '하나 선택'으로 설정되고 필터 논리 매개변수가 '같음' 또는 '포함'으로 설정된 경우: 'Error executing action "List Spaces". 이유: '필터 키' 매개변수에서 필드를 선택해야 합니다.' 반환할 최대 레코드 매개변수에 잘못된 값이 제공된 경우: 'Error executing action "List Spaces". 이유: '반환할 최대 레코드 수'에 잘못된 값이 제공되었습니다. 양수를 입력해야 합니다.' 잘못된 사용자 인증 정보, 서버 연결 없음과 같은 치명적인 오류가 보고되는 경우: 'Error executing action "List Spaces". 이유: {0}'.format(error.Stacktrace) |
일반 |
| 케이스 월 테이블 | 표 이름: 사용 가능한 스페이스 봇이 추가됨 표 열: {fields} 참고: '사용자 멤버십 포함' 체크박스를 선택하면 스페이스 회원의 표시 이름이 있는 열이 추가됩니다. |
일반 |
메시지 보내기
설명
Google SecOps 애플리케이션이 추가된 Google Chat 스페이스에 메시지를 보냅니다.
매개변수
| 매개변수 표시 이름 | 유형 | 기본값 | 필수 항목 | 설명 |
|---|---|---|---|---|
| 스페이스 이름 | 문자열 | 해당 사항 없음 | 예 | 메시지를 보낼 스페이스 이름을 지정합니다. 스페이스 이름 예: AAAAdaTsel0 |
| 메시지 텍스트 | 문자열 | 해당 사항 없음 | 예 | 전송할 메시지의 텍스트를 지정합니다. |
실행
이 작업은 항목에서 실행되지 않습니다.
작업 결과
스크립트 결과
| 스크립트 결과 이름 | 값 옵션 | 예 |
|---|---|---|
| is_success | True/False | is_success:False |
케이스 월
| 결과 유형 | 값 / 설명 | 유형 |
|---|---|---|
| 출력 메시지* | 작업이 실패하거나 플레이북 실행을 중지하지 않습니다. 메시지가 전송된 경우 (is_success=true): '메시지가 전송되었습니다.' 작업이 실패하고 플레이북 실행을 중지합니다. 연결 없음 또는 잘못된 사용자 인증 정보와 같은 심각한 오류가 보고되는 경우: ''메시지 보내기' 작업 실행 중에 오류가 발생했습니다. 이유: {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): '메시지가 전송되었습니다.' 작업이 실패하고 플레이북 실행을 중지합니다. 제공된 JSON 페이로드가 유효하지 않은 경우: 'Error executing action "Send Advanced Message". 이유: 제공된 메시지 JSON 페이로드가 유효하지 않습니다. " 연결 없음 또는 잘못된 사용자 인증 정보와 같은 심각한 오류가 보고되는 경우: ''고급 메시지 보내기' 작업을 실행하는 중에 오류가 발생했습니다. 이유: {0}'.format(error.Stacktrace) |
일반 |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.