REST API를 사용하여 Google 채팅에 메시지 보내기 (Google 예제가 2020에서 작동하지 않음)
어디서부터 시작해야하나요 ... (구글, 왜 이런 식으로 나를 다치게해야합니까?)
배경 정보
Google Apps Script를 사용하여 새 챗봇 을 만들었습니다.이 챗봇 은 Google 채팅 에서 사용자의 메시지를 수신 하고 단일 메시지로 동기식 으로 응답 합니다 (각 메시지는 챗봇에서 하나의 응답 만 가질 수 있음).
이제 봇이 자체적으로 메시지를 보내거나 한 번에 여러 개의 개별 응답을 보낼 수 있도록 비동기 메시지 를 보내는 방법이 필요합니다 .
문제
Google 채팅 REST API를 사용 하는 방법이 비동기 적으로 메시지를 작성 , 하지만이 방법은 ( spaces.messages.create
) 작동하지 않습니다! 2020 년부터는이 방법의 작동 예가 없습니다.
다음은 REST API를 사용하여 메시지를 만드는 Google의 예제 코드 입니다.
문제는이 예제에서 더 이상 종료되지 않는 URLSCOPE
로 설정되어 있다는 것입니다 .
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
해당 URL로 이동하면 다음 404 오류가 표시됩니다.
Not Found
Error 404
또한 사용 가능한 OAuth2 범위 목록 을 확인하면 행 아웃 또는 채팅 과 관련된 범위 가 없으며 chat.bot
예제 코드에 사용 된 범위에 대한 언급이 없음을 알 수 있습니다.
내가 무엇을 시도 했습니까?
이 Chat API와 관련된 StackOverflow의 모든 질문과 REST API에 대한 모든 자습서를 읽었습니다.
chat.bot
범위가 더 이상 존재하지 않기 때문에 Google의 공식 Apps Script 가이드가 작동하지 않습니다 .- Apps Script를 사용한 비동기 메시지
- 이러한 StackOverflow 솔루션은 모두 존재하지 않는 동일한
chat.bot
범위를 사용합니다.- 이벤트없이 비공개 메시지 보내기
- Rest API를 사용하여 새 행 아웃 채팅에서 비동기식으로 응답
- Apps Script Bot에서 404 잘린 서버 응답
- 이 StackOverflow 사용자는
chat
범위 (예 :)를 사용할 수 있다고 말googleapis.com/auth/chat
했지만 해당 범위도 존재하지 않습니다.- 오류 400 : invalid_scope
결론적으로
어떻게 메시지를 보낼 에서 Google 애플리케이션 스크립트 에 사용하여 Google 채팅 Google 채팅 REST API를 ?
Google의 문서는 구식이며이 API에 대한 예제는 2020 년 8 월 현재 작동하지 않는 것 같습니다. 그들은 REST API가 작동하지 않는다는 사실을 모르거나 아무에게도 알리지 않고 REST API를 사용하지 않습니다.
답변
대답:
chat.bot
범위가 실제로 존재 하는지 확인할 수 있습니다. 나머지 API를 채팅 봇을 설정하려면, 당신은 해야한다 용도 서비스 계정을 .
추가 정보:
트리거시 비동기 메시지를 보내기 위해 Apps Script로 봇 개발에 링크 한 문서에 따라 :
... 현재이를 달성하는 유일한 방법은 외부 HTTP API를 사용하는 것입니다 ( 문서 참조 ). 이를 위해서는 OAuth2 for Apps Script 라이브러리를 통해 클라우드 서비스 계정 (문서 참조)을 사용해야 합니다 .
즉, chat.bot
이러한 메시지에 범위를 사용할 수 있도록 먼저 GCP 콘솔에서 서비스 계정을 설정해야 합니다. 처음부터 끝까지 전체 과정이 매우 어려울 수 있으므로 여기서는 처음부터 끝까지 단계를 제공하겠습니다.
과정:
서비스 계정 생성 :
- Google Cloud Console로 이동하여 새 GCP 프로젝트를 만듭니다.
Select a project
페이지 상단을 누르고을 클릭NEW PROJECT
합니다.- 를 제공
Project name
해야하며 다른 필드는 자동으로 채워 져야합니다.
- 를 제공
- 누르기
CREATE
-새 프로젝트가 생성되고 있음을 확인하는 새 팝업이 화면 오른쪽 상단에 나타납니다. 로드되면을 클릭 할 수 있습니다VIEW
. ☰
왼쪽 상단 의 아이콘을 클릭하고APIs & Services > Credentials
메뉴 항목을 따릅니다 .- 이 페이지 상단에서을 클릭
+ CREATE CREDENTIALS > Service Account
합니다.- 서비스 계정의 이름과 설명, 눌러주고
CREATE
, 다음CONTINUE
, 마지막을DONE
.
- 서비스 계정의 이름과 설명, 눌러주고
이제 서비스 계정이 생성되었습니다.
서비스 계정 자격 증명 생성 :
Apps Script로 봇 개발 페이지 의 예제에 제공된 코드에 필요 합니다.
- 서비스 계정을 만든 후에는 GCP 프로젝트에 사용할 수있는 사용자 인증 정보 목록으로 다시 리디렉션됩니다.
Service Accounts
섹션 아래에서 새로 만든 서비스 계정을 클릭합니다. 이것은 호출됩니다[email protected]
- 딸깍 하는 소리
ADD KEY > Create new key
JSON
선택한 상태를 유지 하고를 누릅니다CREATE
.- 이 서비스 계정으로 API에 액세스하는 데 사용해야하는 자격 증명 파일의 다운로드가 시작됩니다. 이 파일을 잃어 버리거나 공유하지 마십시오. 분실 한 경우이 계정에 대한 새 자격 증명을 삭제하고 생성해야합니다.
Hangouts Chat API 활성화 :
- 로 돌아가를
☰ > APIs & Services
선택Library
합니다. Hangouts Chat API
유일한 결과를 검색 하고 클릭합니다.- 를 클릭하십시오
ENABLE
. 그러면 프로젝트에 API가 활성화됩니다.
참고 : 아직이 탭을 닫지 마십시오! 나중에 GCP 콘솔을 사용해야합니다.
Apps Script 프로젝트 설정 :
- 새 Apps Script 프로젝트를 만듭니다.
- 이제 비동기 메시지 페이지 의 예제를 새 프로젝트에 복사하여 붙여 넣을 수 있습니다 .
- GCP 콘솔에서 다운로드 한 사용자 인증 정보 파일을 엽니 다.
private_key
값 (로 시작 하는 값)을 복사하여 Apps Script 프로젝트의-----BEGIN PRIVATE KEY-----
값에 붙여 넣습니다SERVICE_ACCOUNT_PRIVATE_KEY
.- 또한
client_email
자격 증명 파일에서 값을 복사하여SERVICE_ACCOUNT_EMAIL
Apps Script 프로젝트에 붙여 넣습니다 .
예와 같이 Google Apps Script OAuth2 라이브러리를 사용하려면 라이브러리의 스크립트 ID를 사용하여 프로젝트에 라이브러리를 추가해야합니다.
- Apps Script 프로젝트 UI에서
Resources > Libraries...
메뉴 항목을 따라 OAuth2 스크립트 ID를 복사하여Add a library
상자에 붙여 넣습니다.- 스크립트 ID는
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- 이 라이브러리와 나머지 라이브러리는 Apps Script 용 OAuth2 GitHub 저장소 에서 찾을 수 있습니다.
- 스크립트 ID는
- 안정적인 최신 버전의 라이브러리를 선택해야합니다 (작성 당시 버전 38).
- 를 누릅니다
Save
.
다음으로 Apps Script 프로젝트를 이전에 만든 GCP 프로젝트에 연결해야합니다.
- GCP 콘솔 탭으로 돌아가서
☰ > IAM & Admin > Settings
메뉴 항목을 따릅니다 . Project number
이 페이지에 정의 된 내용을 복사 하십시오.- Apps Script 프로젝트에서
Resources > Cloud Platform project...
메뉴 항목을 따라 프로젝트 번호를Enter Project Number here
대화 상자에 붙여 넣습니다 . - 를 클릭하십시오
Set Project
.
프로젝트 매니페스트 설정 : Apps Script에서 채팅 봇을 사용하려면 프로젝트 매니페스트 에 chat
키를 포함해야합니다 .
- Apps Script UI에서을 클릭
View > Show manifest file
합니다. - 마지막 키-값 쌍 뒤에 다음을 추가합니다.
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
이제 전체 매니페스트 파일은 다음과 같습니다.
{
"timeZone": "Europe/Paris",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "Drive",
"serviceId": "drive",
"version": "v2"
}],
"libraries": [{
"userSymbol": "OAuth2",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF",
"version": "38"
}]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
"addToSpaceFallbackMessage": "Thank you for adding me!"
}
}
- 프로젝트를 저장하십시오.
마지막 단계 :
거의 완료되었습니다! 이제 매니페스트에서 봇을 배포하고 GCP에서 구성을 설정하고 실제 호출을 수행 할 트리거를 설정해야합니다.
봇 배포 :
- 앱 스크립트 UI에서 이동
Publish > Deploy from manifest...
및 공격Create
새롭게 문을 연 대화 상자에서.- 참고 : 전체 도메인에이를 사용하려는 경우 헤드 배포를 사용할 수 없으므로 새 배포를 만들어야합니다.
- 배포에 이름과 설명을 입력하고를 누릅니다
Save
. - 저장이 완료되면
Get ID
방금 생성 한 배포 옆에있는을 누르고Deployment ID
.
GCP 구성 설정 :
- Cloud Console로 돌아가서 이제로 이동해야
☰ > APIs & Services > Dashboard
합니다. - 이 페이지 하단의 활성화 된 API 목록에서
Hangouts Chat API
. - 왼쪽 메뉴에서을 선택
Configuration
합니다. - 봇 구성을 설정합니다. 당신은을 제공해야합니다
Bot name
,Avatar URL
하고Description
. 회의실에서 작동하도록 기능 설정을 구성합니다. - 에서
Connection Settings
를 선택Apps Script project
하고 이전 섹션의 배포 ID를 붙여 넣습니다. - Apps Script 봇에 관련 권한을 부여하고을 누릅니다
Save
.
애매한 트리거 :
이제해야 할 일은 트리거를 설정하는 것뿐입니다. 이는 Apps Script의
Edit > Current project's triggers
메뉴 항목에서 일반 Apps Script 트리거와 같이 수행됩니다 . 예제를 완료하려면 오른쪽 하단의 + 트리거 추가 버튼을 클릭하고 다음과 같이 트리거 설정을 구성합니다.실행할 기능을 선택하십시오.
onTrigger
실행할 배포 선택 : 헤드
이벤트 소스 선택 : 시간 기반
시간 기반 트리거 유형 선택 :
Minutes timer
분 간격 선택 :
Every minute
그리고 저장을 누릅니다.
그리고 당신은 끝났습니다! 이 생성 된 봇은 이제 매분 현재 시간에있는 모든 회의실에 게시됩니다.
이 설명이 도움이 되었기를 바랍니다.
참조 :
- 서비스 계정 | Cloud IAM 문서
- 서비스 계정 이해 | Cloud IAM 문서
- Apps Script로 봇 개발 | Google Chat API | Google 개발자
- 봇이 시작한 메시지-새 봇 생성 | Google Chat API | Google 개발자
- GitHub-gsuitedevs / apps-script-oauth2 : Google Apps Script 용 OAuth2 라이브러리입니다.
- 구글 클라우드 콘솔