동기
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에서 이를 사용하여 저잔액 알림을 사용자에게 보낼 수 있습니다.
관련성 높은 사용자 파악
DPA는 GTAF에 전송할 사용자 데이터를 결정할 방법이 필요합니다. GTAF는 다음 사용자의 업데이트를 수신할 것으로 예상합니다.
- 활성 CPID: 활성 CPID가 있는 사용자. CPID 엔드포인트에 의해 생성된 CPID가 유효하기 전에는 DPA가 사용자의 데이터 요금제에 관한 업데이트를 전송해야 합니다(SHOULD).
CPID 생성 시
Accept-Language
헤더가 설정된 경우 데이터 요금제 상태의 사람이 읽을 수 있는 문자열은 해당 언어로 표시되어야 합니다(MUST). - 등록된 MSISDN: GTAF는 MSISDN에 액세스할 수 있는 애플리케이션을 제공하기 위해 Data Plan 에이전트 API의 msisdn 등록 섹션에 설명된 대로 MSISDN을 DPA에 등록합니다. MSISDN이 등록되면 등록이 만료될 때까지 DPA가 사용자의 데이터 요금제 업데이트를 전송해야 합니다(SHOULD).
API 설명
데이터 요금제 상태 공유
그림 3. DPA가 데이터 요금제 상태를 GTAF와 공유하는 경우 GTAF-DPA 상호작용
애플리케이션에서는 다음 두 가지 방법으로 데이터 요금제 상태 정보를 수신할 수 있습니다.
- UE는 GTAF를 호출하여 데이터 요금제 상태 정보를 호출합니다.
- 이동통신사 DPA는 데이터 요금제 공유 API를 사용하여 사용자의 데이터 요금제 상태를 GTAF에 푸시합니다. GTAF는 요금제 상태와 관련 사용자 키를 저장합니다.
- UE에서 실행되는 Google 애플리케이션은 Google 내부 API를 사용하여 데이터 요금제 상태 정보를 요청합니다. 애플리케이션은 요청에 사용자 키를 포함합니다.
- 애플리케이션에서 캐시된 데이터 요금제 상태를 사용할 수 있는 경우 GTAF는 사용자 키를 사용하여 사용자의 데이터 요금제 상태를 조회합니다. 그러면 GTAF가 이 상태를 UE에 반환합니다.
- GTAF는 데이터 요금제 상태 정보를 UE에 푸시합니다.
- 관련이 있는 경우 연산자로부터 수신한 데이터 요금제 상태가 UE로 직접 푸시됩니다.
GTAF-DPA 상호작용
DPA는 HTTPS POST를 사용하여 클라이언트가 사용할 사용자를 위한 기존 요금제 상태 항목을 생성하고 업데이트합니다. 현재 GTAF는 mobiledataplan 및 youtube를 유효한 클라이언트 식별자로 지원합니다. 다음은 asn 12345와 user key abcdef가 youtube 클라이언트의 GTAF와 요금제 정보를 공유하는 연산자에 대한 요청의 예입니다.
POST
{
"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 범위의 응답을 수신하는 요청은 일반적으로 재시도할 수 없습니다.
기본 클라이언트의 계획 상태 푸시
GTAF는 요금제 상태를 사용할 수 있는 클라이언트를 지정하지 않고 운영자가 푸시하는 다음 호출을 계속 지원합니다. 이 경우에는 요금제 상태가 mobiledataplan 클라이언트를 대상으로 하고 연산자가 사용자에게 알림을 전송하려고 한다고 가정합니다. 요청 본문은 클라이언트별 사용 사례와 기본 클라이언트 사용 사례의 경우와 동일합니다.
POST
국제화
국제화를 지원하려면 DPAF는 GTAF로부터 직접 요청을 요청하지 않고도 사용자의 선호 언어를 알아야 합니다. 이 문제를 해결하기 위해 CPID 엔드포인트에 대한 요청에 Accept-Language 헤더가 포함될 수 있습니다(MAY). 헤더가 포함된 경우 DPA가 MDP API를 사용하여 전송하는 업데이트에 사람이 읽을 수 있는 문자열이 CPID 요청에 제공된 설정을 사용해야 합니다.