開始使用行動數據方案分享

術語

  • GTAF:Google 流量應用程式函式。這項 Google 服務會實作 Data Plan Shared API,並代表 Google 應用程式與 DPA 互動。Google 應用程式可以查詢 GTAF 的使用者資料方案資訊。如果 Google 應用程式向 GTAF 註冊,GTAF 可以傳送關於使用者數據方案的最新資訊。
  • MSISDN:Mobile Station International Subscriptionr Directory Number (數字),專門用來識別行動網路中的訂閱項目。通常稱為電話號碼。
  • CPID 端點:由行動網路業者實作的服務,這類服務會產生電信業者方案 ID (CPID),可用於查詢使用者的數據方案資訊。CPID 可讓應用程式查詢使用者的資料方案詳細資料,而無需存取使用者的 MSISDN。下方將說明產生 CPID 的程序。
  • 使用者金鑰使用者金鑰是可用於識別使用者數據方案的字串。可以是可存取 MSISDN 的應用程式的 CPID 或 MSISDN。
  • DPA:數據方案代理程式,由行動網路業者實作服務,與 GTAF 分享使用者資料方案資訊。DPA 可使用 Google Mobile Data Plan Shared API 結合資料實作 Data Plan Agent API,將資訊與 GTAF 分享。DPA 也可選擇做為 CPID 端點。
  • UE:使用者設備,使用者使用的裝置。

條件用語

關鍵字「必須」、「、」和「不得」和「不得」和「描述」表示

行動數據方案分享

大致來說,行動數據方案共用分為三個部分:

  1. 用於建立及更新電信業者方案 ID (CPID) 的機制,這種機制可當做使用者金鑰。可以存取 MSISDN 的應用程式可以使用 MSISDN 做為使用者名稱
  2. 透過 Google Mobile Data Plan Shared API,可讓 DPA 傳送使用者資料方案的相關資訊給 Google。舉例來說,如果 DPA 想要通知使用者方案,可以通知 GTAF,接著通知使用者。
  3. 由 DPA 實作的資料方案代理人 API,可讓 GTAF 查詢 DPA 關於使用者數據方案的相關資訊。舉例來說,如果應用程式想要向使用者顯示目前的數據方案餘額,可以查詢 GTAF,接著查詢 DPA。

本頁其餘部分將介紹數據方案的術語,並說明如何建立 CPID。接下來將遵循 Google Mobile Data Plan Shared API 及 Data Plan Agent API 規格。

數據方案術語

API 中定義的 planStatus 結構定義必須能代表運算子提供給資料方案。這個 API 支援定義資料方案,以不同費率向特定網址組的所有使用者收取費用 (例如,傳送至 *.acmefake.com 的所有流量都會以不同的費率計費)。這個 API 也支援數據方案,可針對應用程式內的特定動作提供不同的費率。我們稱之為子應用程式資料方案。子應用程式資料方案的例子是提供免費影片瀏覽 (即零率) 的影片瀏覽,而從應用程式內觀看影片,則會從訂閱者的資料數據中扣除資料。影片應用程式在查詢數據方案資訊時,「必須」知道這些資訊。

在此處介紹一些與資料方案相關的字詞。圖 1 提供範例,說明資料方案代表我們想要擷取的概念。

數據方案:訂閱者購買的頂層行動服務套件。它可以簡單如「10 GB 的 30 天行動數據」),也可以定義為一組元件,也稱為模組。數據方案具備:

  • 數據方案名稱,例如「ACME Red」。
  • 數據方案 ID,用於參照方案,例如購買期間。
  • 到期時間:資料方案到期。
  • 方案類別:無論方案是預付方案還是後付方案,

企劃書模組:數據方案的元件。具體來說,方案模組有:

  • 模組名稱,例如「免費影片之夜」。
  • 「Max Rate」,由這個模組提供給使用者的頻寬。
  • Flex Time Windows:接受折扣的期間。
  • Plan Module Traffic Category (PMTC),是模組適用的資料流量說明。PMTC 通常可以當做 *所有網際網路流量*,或是單一應用程式、網站,甚至是單一應用程式中使用者歷程中產生的流量。後者的例子包括「無限音樂」、「100 MB 影片資料套件 (VDP)」、「無限制遊戲資料」和「無限影片瀏覽」。為協助定義 PMTC,我們定義了以下 PMTC:GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE1, MUSIC, GAMING, SOCIAL, MESSAGINGPMTC_UNSPECIFIED.

  • 資料量或時間限制:一旦啟用,方案模組會在資料量或時間限制 (例如以時間為準的方案,例如在未來 7 天內超過 600 分鐘的網際網路連線)。在下方圖 1 中,訂閱者可以購買方案模組 (此為「ACME Blue」的一部分),提供 1 GB 的一般使用者流量,必須在啟用前一週使用完畢。

Data Plan API 範例方案

圖 1. 數據方案範例。

建立 CPID

GTAF 使用使用者金鑰與 DPA 通訊時識別訂閱者。有權存取使用者 MSISDN 的應用程式可以使用 user_key。另一方面,無法存取 MSISDN 的應用程式必須建立電信業者方案 ID (CPID),而無需探索使用者的 MSISDN。下文將說明建立 CPID 的機制。

CPID 通話流程

圖 2:建立 CPID 的呼叫流程。

  1. UE 中的 Google 應用程式使用 Google 內部 API,從 GTAF 擷取 CPID 端點的網址。請使用用戶端的公開 IP 位址和有效 SIM 卡的 MCC+MNC 來識別運算子。以 MVNO 來說,Google 會使用 SPNGID1 來判斷 MVNO
  2. 用戶端會向 CPID 端點發出 HTTP GET 要求。運算子「可能」支援透過 HTTPS 傳送要求。
  3. 運算子 MAY 可利用其深度檢查檢查函式來識別要求,並將要求的電話號碼插入 HTTP 標頭。
  4. CPID 端點會收到要求、建構 CPID,然後將 CPID 傳回 UE 並提供存留時間 (TTL) 來說明 UE 可以使用這個 CPID 的時間長度。

運算子 MAY 也可能會使用 IP 位址,而不是 CPID 端點網址中的網域名稱。IP 位址可能位於私人位址空間,但 Google 用戶端必須可透過電信業者的網路存取。

業者「應該」在新手上路流程中向 Google 提供以下資訊: 1. 應用程式要用來取得 CPID 的 CPID_URL。一個 CPID_URL 為必填欄位,但運算子可提供多個網址來提高可用性。1. 業者擁有的 IP 前置字元清單,以及運算子想要對應至所提供的 CPID_URLs 的行動裝置國家/地區代碼 (MCC) 和行動網路代碼 (MNC)。如果運算子使用 SPN 或 GID1 來區分其網路中的 MVNO,運算子「必須」提供這項資訊。Google 會使用這項資訊將用戶端與對應的 CPID 端點進行比對,如圖 2 所示。

要求的格式如下: GET CPID_URL 基於舊版原因,CPID 端點應能支援如下所示的要求:

GET CPID_URL?app={app_id}

產生 CPID 時,CPID 端點可忽略 {app_id} 網址參數。但「必須」能處理包含參數的要求。

傳送給 CPID 端點的要求可以包含 Accept-Language 標頭。如果包含標頭,則 DPA 使用 Mobile Data Plan Shared API 傳送的更新中使用者可理解的字串「必須」使用 CPID 要求中提供的設定。

每次用戶端發出 GET CPID_URL 要求時,都「必須」收到新的 CPID。如果 CPID 建立成功,則 CPID 端點「必須」傳回 200 OK 回應。回應主體「必須」包含 CPIDResponse 的執行個體。

{
    "cpid": "<CPID_string>",
    "ttlSeconds": 2592000
}

傳回的 CPID 必須有效,時間為 ttlSeconds 秒。GTAF 會根據後續的 DPA 呼叫,依照 RFC2396 編碼 CPID。

如果發生錯誤,CPID 端點「必須」傳回包含 <錯誤回應> 例項的 HTTP 錯誤,如要查看可能的原因值和 HTTP 錯誤代碼,請參閱這個網頁

{
    "errorMessage": "<error message>",
    "cause": "INVALID_NUMBER"
}

具體來說,如果針對不屬於電信業者網路的使用者 (例如屬於其他運算子的使用者,以及由這個 CPID 端點提供網路進行漫遊的使用者) 接收 CPID 要求,或是未使用 Google 分享數據方案資訊的 CPID 端點,則「必須」傳回 HTTP 狀態碼 403。

產生 CPID

建立 CPID 端點的 CPID 端點建議如下:

CPID_string = Base64(AES(MSISDN + TimeStamp + language, secret))

CPID 端點會串連 MSISDN (用戶端在 Accept-Language 標頭中傳送的語言),以及高解析度的時間戳記,並使用 secret 以 AES 進行加密。時間戳記「必須」與 CPID 到期的時間對應。加密輸出內容採用 Base64 編碼。此外,在網址中使用 CPID 時,網址必須經過編碼處理,才能用於 Base64 中使用的特殊字元 (/+=)。特別是在 GTAF 呼叫 DPA 或 DPA 呼叫 Mobile Data Plan Plan Shared API 時,CPID 「必須」經過網址編碼。使用這個方法產生 CPID 的一個優點,是 DPA 和 CPID 端點不需要具有有效 CPID 和 MSISDN 的資料庫。

視特定運算子的情況而定,執行 CPID 端點可能並不容易。透過 CPID 端點存取 MSISDN,是經常遇到的一項特定挑戰。我們很樂意分享新手入門課程。如有疑問,歡迎與我們聯絡。

安全性要求

業者「必須」採取所有必要措施,以保護訂閱者的私人資訊。具體來說,為了盡可能減少訂閱者的電話號碼外洩,CPID 端點應在安全性範圍內。此外,如果運算子採用 DPI,運算子將先在 MSISDN 加密,再將其插入 HTTP 要求。如果 CPID 端點不是您的安全範圍 (例如,將 CPID 端點部署在公有雲上),業者就「不應」透過公開網際網路傳輸 MSISDN。運算子可以在 DPI 和 CPID 端點之間建立 VPN (請參閱圖 1),或先將 MSISDN 加密,再插入標頭。在後者,我們假設 CPID 端點可以解密插入的標頭,在產生 CPID 之前復原 MSISDN。此外,運算子「應該」保護用來產生 CPID 的密鑰,並依據運算子的安全性政策輪替金鑰。

可用性和容量需求

如果用戶端無法擷取 CPID,就無法透過 Mobile Data Plan API 存取任何資訊。因此,電信業者「必須」採取必要措施,以確保 CPID 端點的可用性。這類措施包括有多個 CPID 端點和 DPI 函式的執行個體,且兩個函式具有實體、網站和網路備援功能,並確保系統資源和容量均充足。此外,CPID 端點和插入標頭的 DPI 函式都必須有足夠的負載量,才能處理所有要求 CPID 的 Google 用戶端負載。CPID 端點可在 ttlSeconds 欄位中使用較大的值,以降低其產生 CPID 的頻率。Google 建議使用 30 天的存留時間值。

Notes


  1. VIDEO_OFFLINE PMTC 表示這個方案僅適用於離線環境 (例如串流 QoE 效能不佳)。它與 FlexTime 視窗無關。