워치 컬렉션의 메서드를 사용하여 양식에서 데이터가 변경될 때 알림을 받을 수 있습니다. 이 페이지에서는 푸시 알림을 설정하고 수신하는 방법에 관한 개념적 개요와 안내를 제공합니다.
개요
Google Forms API 푸시 알림 기능을 사용하면 애플리케이션이 양식에서 데이터가 변경될 때 알림을 구독할 수 있습니다. 알림은 일반적으로 변경 후 몇 분 이내에 Cloud Pub/Sub 주제에 전송됩니다.
푸시 알림을 받으려면 Cloud Pub/Sub 주제를 설정하고 적절한 이벤트 유형의 보기를 만들 때 해당 주제의 이름을 제공해야 합니다.
다음은 이 문서에서 사용되는 주요 개념의 정의입니다.
- 타겟은 알림이 전송되는 위치입니다. 지원되는 유일한 타겟은 Cloud Pub/Sub 주제입니다.
- 이벤트 유형은 서드 파티 애플리케이션이 구독할 수 있는 알림의 카테고리입니다.
- 시청은 특정 양식의 특정 이벤트 유형에 대한 알림을 타겟에 전달하도록 Forms API에 지시하는 것입니다.
특정 양식에서 이벤트 유형의 보기를 만들면 보기의 타겟 (Cloud Pub/Sub 주제)이 보기가 만료될 때까지 해당 양식의 이벤트에서 알림을 수신합니다. 시계는 일주일 동안 지속되지만 만료되기 전에 언제든지 watches.renew()를 요청하여 연장할 수 있습니다.
Cloud Pub/Sub 주제는 제공한 사용자 인증 정보로 볼 수 있는 양식에 대한 알림만 수신합니다. 예를 들어 사용자가 애플리케이션에서 권한을 취소하거나 보기 형식에 대한 수정 액세스 권한을 잃으면 더 이상 알림이 전송되지 않습니다.
사용 가능한 이벤트 유형
Google Forms API는 현재 다음과 같은 두 가지 카테고리의 이벤트를 제공합니다.
EventType.SCHEMA
: 양식의 콘텐츠 및 설정 수정사항을 알립니다.EventType.RESPONSES
: 양식 응답 (신규 및 업데이트된 응답 모두)이 제출될 때 알림을 보냅니다.
알림 응답
알림은 JSON으로 인코딩되며 다음을 포함합니다.
- 트리거 양식의 ID입니다.
- 트리거 시계의 ID입니다.
- 알림을 트리거한 이벤트 유형
- Cloud Pub/Sub에서 설정한 기타 필드(예:
messageId
및publishTime
)
알림에는 자세한 양식 또는 응답 데이터가 포함되지 않습니다. 각 알림을 수신한 후에는 최신 데이터를 가져오기 위해 별도의 API를 호출해야 합니다. 이 작업을 실행하는 방법은 권장 사용을 참고하세요.
다음 스니펫은 스키마 변경에 관한 샘플 알림을 보여줍니다.
{
"attributes": {
"eventType": "SCHEMA",
"formId": "18Xgmr4XQb-l0ypfCNGQoHAw2o82foMr8J0HPHdagS6g",
"watchId": "892515d1-a902-444f-a2fe-42b718fe8159"
},
"messageId": "767437830649",
"publishTime": "2021-03-31T01:34:08.053Z"
}
다음 스니펫은 새 응답에 대한 샘플 알림을 보여줍니다.
{
"attributes": {
"eventType": "RESPONSES",
"formId": "18Xgmr4XQb-l0ypfCNGQoHAw2o82foMr8J0HPHdagS6g",
"watchId": "5d7e5690-b1ff-41ce-8afb-b469912efd7d"
},
"messageId": "767467004397",
"publishTime": "2021-03-31T01:43:57.285Z"
}
Cloud Pub/Sub 주제 설정
알림은 Cloud Pub/Sub 주제에 전송됩니다. Cloud Pub/Sub에서는 웹 후크에서 또는 구독 엔드포인트를 폴링하여 알림을 받을 수 있습니다.
Cloud Pub/Sub 주제를 설정하려면 다음 단계를 따르세요.
- Cloud Pub/Sub 기본 요건을 완료합니다.
- Cloud Pub/Sub 클라이언트 설정
- Cloud Pub/Sub 요금을 검토하고 Developer Console 프로젝트에 결제를 사용 설정합니다.
다음 세 가지 방법 중 하나로 Cloud Pub/Sub 주제를 만듭니다.
- 개발자 콘솔 사용(가장 쉬움)
- 명령줄 도구 사용(간단한 프로그래매틱 사용)
- Cloud Pub/Sub API를 사용합니다.
Cloud Pub/Sub에서 구독을 만들어 Cloud Pub/Sub에 알림을 전송하는 방법을 알려줍니다.
마지막으로 주제를 타겟팅하는 보기를 만들기 전에 Forms 알림 서비스 계정(forms-notifications@system.gserviceaccount.com)에 주제에 게시할 수 있는 권한을 부여해야 합니다.
시계 만들기
Forms API 푸시 알림 서비스 계정이 게시할 수 있는 주제가 있으면 watches.create() 메서드를 사용하여 알림을 만들 수 있습니다. 이 메서드는 제공된 Cloud Pub/Sub 주제에 푸시 알림 서비스 계정에서 연결할 수 있는지 확인하고 주제에 연결할 수 없는 경우 실패합니다. 예를 들어 주제가 없거나 주제에 게시 권한을 부여하지 않은 경우입니다.
시계 삭제
승인
모든 Forms API 호출과 마찬가지로 watches.create()
호출은 승인 토큰으로 승인되어야 합니다. 토큰에는 전송 중인 알림에 관한 데이터에 대한 읽기 액세스 권한을 부여하는 범위가 포함되어야 합니다.
- 스키마 변경의 경우 forms.get()을 사용하여 forms에 읽기 액세스 권한을 부여하는 모든 범위를 의미합니다.
- 응답의 경우 양식 응답에 대한 읽기 액세스 권한을 부여하는 모든 범위(예: forms.responses.list() 사용)를 의미합니다.
알림을 전송하려면 애플리케이션이 승인된 사용자로부터 필요한 범위의 OAuth 부여를 유지해야 합니다. 사용자가 애플리케이션 연결을 해제하면 알림이 중지되고 시계가 오류와 함께 정지될 수 있습니다. 승인을 다시 얻은 후 알림을 다시 시작하려면 시계 갱신을 참고하세요.
양식의 시계 나열
시계 갱신
제한
알림은 제한됩니다. 각 시계는 30초마다 최대 1개의 알림을 받을 수 있습니다. 이 빈도 기준점은 변경될 수 있습니다.
제한으로 인해 단일 알림이 여러 이벤트에 해당할 수 있습니다. 즉, 알림은 마지막 알림 이후 하나 이상의 이벤트가 발생했음을 나타냅니다.
한도
언제든지 각 Cloud 콘솔 프로젝트는 특정 양식 및 이벤트 유형에 대해 다음을 보유할 수 있습니다.
- 총 20개까지 시청 가능
- 최종 사용자당 최대 1개
또한 모든 Cloud 콘솔 프로젝트에서 언제든지 각 양식은 이벤트 유형당 총 50개의 보기로 제한됩니다.
시계는 해당 사용자의 사용자 인증 정보로 생성되거나 갱신될 때 최종 사용자와 연결됩니다. 연결된 최종 사용자가 양식에 대한 액세스 권한을 잃거나 앱의 양식 액세스 권한을 취소하면 보기가 정지됩니다.
안정성
각 시계는 특별한 상황을 제외하고 각 이벤트 후 최소 한 번 알림을 받습니다. 대부분의 경우 이벤트 발생 후 몇 분 이내에 알림이 전송됩니다.
오류
시계의 알림이 지속적으로 전송되지 않으면 시계 상태가 SUSPENDED
이 되고 시계의 errorType
필드가 설정됩니다. 일시중지된 시계의 상태를 ACTIVE
로 재설정하고 알림을 재개하려면 시계 갱신을 참고하세요.
추천 용도
- 단일 Cloud Pub/Sub 주제를 여러 개의 워치의 대상으로 사용합니다.
- 주제에 관한 알림을 수신하면 양식 ID가 알림 페이로드에 포함됩니다. 이벤트 유형과 함께 사용하여 가져올 데이터와 가져올 양식을 파악합니다.
EventType.RESPONSES
알림 후 업데이트된 데이터를 가져오려면 forms.responses.list()를 호출합니다.- 요청의 필터를
timestamp > timestamp_of_the_last_response_you_fetched
로 설정합니다.
- 요청의 필터를
EventType.SCHEMA
를 사용하여 알림 후 업데이트된 데이터를 가져오려면 forms.get()을 호출합니다.