동기
Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자 데이터 (사용자 키로 식별)에 대한 정보를 GTAF에 전송할 수 있습니다. 이 페이지에서는 이러한 업데이트를 GTAF에 푸시하여 Google 애플리케이션에 푸시할 수 있는 메커니즘을 설명합니다. 현재 API를 통해 DPA는 GTAF에 데이터 요금제 상태를 전송하여 Google 클라이언트가 사용할 수 있습니다.
인증
GTAF에 대한 모든 데이터 요금제 공유 API 요청은 Google Cloud OAuth2 서버를 사용하여 인증해야 합니다. 요청은 DPA가 나타내는 ASN에 대해 ISP 포털에서 허용 목록에 추가된 서비스 계정으로 인증되어야 합니다. Google Cloud 서비스 계정으로 OAuth를 사용하는 방법은 서비스 계정용 Google Cloud OAuth 2.0을 참조하세요.
데이터 요금제 업데이트
현재 Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자의 데이터 요금제에 대한 업데이트를 공유할 수 있습니다.
- 데이터 요금제 상태: 사용자의 데이터 요금제의 현재 상태를 캡처합니다. 예를 들어 사용자의 데이터가 부족하면 운영자는 GTAF에 데이터 요금제 상태 업데이트를 푸시할 수 있습니다. 그러면 GTAF에서 이를 사용하여 요금제 상태 알림을 사용자에게 보낼 수 있습니다.
API 설명
그림 3. DPA가 데이터 요금제 상태를 GTAF와 공유하는 경우 GTAF-DPA 상호작용
애플리케이션은 다음 두 가지 방법 중 하나로 GTAF와 공유된 데이터 요금제 상태 정보를 수신할 수 있습니다.
- UE는 GTAF를 호출하여 데이터 요금제 상태 정보를 호출합니다.
- 이동통신사 DPA는 데이터 요금제 공유 API를 사용하여 사용자의 데이터 요금제 상태를 GTAF에 푸시합니다. GTAF는 이동통신사에서 지정한 만료 시간까지 요금제 상태와 관련 사용자 키를 저장합니다.
- UE에서 실행되는 Google 애플리케이션은 Google 내부 API를 사용하여 데이터 요금제 상태 정보를 요청합니다. 애플리케이션은 요청에 사용자 키를 포함합니다.
- 애플리케이션에서 캐시된 데이터 요금제 상태를 사용할 수 있는 경우 GTAF는 사용자 키를 사용하여 사용자의 데이터 요금제 상태를 조회합니다. 그러면 GTAF가 이 상태를 애플리케이션에 반환합니다.
- GTAF는 데이터 요금제 상태 정보를 UE에 푸시합니다.
- 관련이 있는 경우 연산자로부터 수신한 데이터 요금제 상태가 UE로 직접 푸시됩니다. 특히 푸시된 요금제 상태는 Google Play 서비스에 있는 모바일 데이터 요금제 모듈의 기기 내 캐시를 업데이트하는 데 사용됩니다.
데이터 요금제 상태 공유
DPA는 HTTPS POST를 사용하여 클라이언트가 사용할 사용자를 위한 기존 요금제 상태 항목을 생성하고 업데이트합니다. 현재 GTAF는 mobiledataplan 및 youtube를 유효한 클라이언트 식별자로 지원합니다. 다음은 asn 12345와 user key abcdef가 youtube 클라이언트의 GTAF와 요금제 정보를 공유하는 연산자에 대한 요청의 예입니다.
POST
요청 본문은 PlanStatus의 인스턴스입니다.
{
"plans": [{
"planName": "ACME1",
"planId": "1",
"planCategory": "PREPAID",
"expirationTime": "2017-01-29T01:00:03.14159Z", // req.
"planModules": [{
"moduleName": "Giga Plan", // req.
"trafficCategories": ["GENERIC"],
"expirationTime": "2017-01-29T01:00:03.14159Z", // req.
"overUsagePolicy": "BLOCKED",
"maxRateKbps": "1500",
"description": "1GB for a month", // req.
"coarseBalanceLevel": "HIGH_QUOTA"
}]
}],
"planInfoPerClient": {
"youtube": {
"rateLimitedStreaming": {
"maxMediaRateKbps": 569
}
}
},
"languageCode": "en-US", // req.
"expireTime": "2018-06-14T08:41:27-07:00", // req.
"updateTime": "2018-06-07T07:41:22-07:00", // req.
"title": "Prepaid Plan"
}
요청에 성공하면 GTAF는 HTTP 응답 코드 200과 알림이 사용자에게 전송된 경우 알림 항목과 함께 planStatus 항목을 푸시합니다. GTAF가 요청에서 문제를 식별하면 400~499 범위의 HTTP 상태 코드를 반환합니다. GTAF 오류로 인해 GTAF가 요청을 완료할 수 없는 경우 GTAF는 500~599 범위의 HTTP 코드를 반환합니다. 500~599 범위의 응답을 수신하는 요청은 재시도 가능한 것으로 간주되며 400~499 범위의 응답을 수신하는 요청은 일반적으로 재시도할 수 없습니다. Error Cases에서 GTAF의 오류 응답을 자세히 설명합니다.
기본 클라이언트의 계획 상태 푸시
GTAF는 요금제 상태를 사용할 수 있는 클라이언트를 지정하지 않고 운영자가 푸시하는 다음 호출을 지원합니다. 이 경우 요금제 상태는 mobiledataplan 클라이언트를 대상으로 하며 연산자가 사용자에게 알림을 전송하려고 한다고 가정합니다. 요청 본문은 PlanStatus의 인스턴스입니다.
POST
국제화
국제화를 지원하려면 DPAF는 GTAF로부터 직접 요청을 요청하지 않고도 사용자의 선호 언어를 알아야 합니다. 이 문제를 해결하기 위해 CPID 엔드포인트에 대한 요청은 사용자 언어 환경설정에 대한 클라이언트의 액세스 권한에 따라 Accept-Language 헤더를 포함할 수 있습니다(MAY). 헤더가 포함된 경우 DPA가 MDP API를 사용하여 전송하는 업데이트에 사람이 읽을 수 있는 문자열이 CPID 요청에 제공된 설정을 사용해야 합니다.
DPA는 Accept-Language 헤더가 있는 GTAF에서 요청을 받으면 사용자 언어 환경설정을 업데이트할 수 있으며 업데이트된 사용자 환경설정을 사용하여 GTAF에 대한 이후 요청에서 언어 코드를 결정할 수 있습니다.
DPA는 languageCode를 사용하여 사용자에게 표시되는 문자열에 사용할 언어를 지정해야 합니다(MUST). GTAF는 이를 사용하여 사용자에게 표시되는 제목과 본문을 구성합니다.