CPID oluşturuluyor

GTAF, DPA ile iletişim kurarken aboneyi tanımlamak için kullanıcı anahtarını kullanır. Kullanıcının MSISDN'sine erişimi olan uygulamalar bunu bir user_key olarak kullanabilir. Diğer yandan, MSISDN'ye erişimi olmayan uygulamalar için kullanıcının MSISDN'sini keşfetmeden bir operatör planı tanımlayıcısı (CPID) oluşturulması gerekir. Sonraki bölümde, bir SQLID'yi oluşturan mekanizma açıklanmaktadır.

CPID Arama Akışı

2. Şekil: CPID'yi oluşturmak için arama akışı.

  1. UE'deki bir Google uygulaması, CPID uç noktasının URL'sini GTAF'den almak için Google'ın dahili bir API'sini kullanır. Operatör, istemcinin genel IP adresi ve etkin SIM kartın MM+MNC'si kullanılarak tanımlanır. MVNO'lar söz konusu olduğunda, Google, MVNO'yu belirlemek için SPN ve GID1'i kullanır.
  2. İstemci, CPID uç noktasına bir HTTP GET isteği gönderir. Operatör, isteğin HTTPS üzerinden gönderilmesini destekleyebilir.
  3. Operatörün, isteği tanımlamak ve kullanıcının telefon numarasını isteğe bir HTTP üst bilgisi olarak eklemek için Derin Paket Denetleme işlevini çalıştırması GEREKEBİLİR.
  4. CPID uç noktası isteği alır, CPID'yi oluşturur ve CPID'yi, UE'nin bu CPID'yi ne kadar süreyle kullanabileceğini gösteren bir geçerlilik süresi (TTL) ile UE'ye döndürür.

Tercihen operatör, CPID uç nokta URL'sinde alan adları yerine IP adreslerini de tercih edebilir. IP adresleri özel adres alanında OLABİLİR ancak bu operatörlerin operatörlerinin ağındaki Google istemcileri tarafından erişilebilir olması gerekir.

Operatör, ilk katılım sürecinin bir parçası olarak Google'a şu bilgileri sağlar:

  1. CPID'leri almak için uygulamaların iletişim kuracağı CPID_URL. Bir CPID_URL zorunludur ancak operatör, kullanılabilirliği artırmak için birden fazla URL sağlayabilir.
  2. Operatörün sahip olduğu IP ön eklerinin ve operatörün, sağlanan CPID_URL'lerle eşleştirilmesini istediği Mobil Ülke Kodu (MM) ve Mobil Ağ Kodları (MNC) listesi. Operatör, ağında MVNO'ları ayırt etmek için SPN veya GID1 kullanıyorsa bu bilgileri de sağlayacaktır. Google, bu bilgileri, Şekil 2'nin 1. Adımında gösterildiği gibi, müşterileri karşılık gelen CPID uç noktalarıyla eşleştirmek için kullanır.

İsteğin biçimi: GET CPID_URL Eski nedenlerle, CPID uç noktası aşağıdaki gibi bir isteği desteklemelidir:

GET CPID_URL?app={app_id}

CPID uç noktası, CPID oluşturulurken {app_id} URL parametresini yok sayabilir. Ancak, parametreyi içeren bir isteği işleyebilmesi GEREKİR.

CPID uç noktasına yapılan istek Accept-Language üst bilgisini içermeyebilir. Üstbilgi dahil edilirse DPA'nın Mobil Veri Planı Paylaşımı API'sini kullanarak gönderdiği güncellemelerde gerçek kullanıcıların okuyabileceği dizeler bulunması, CPID isteğinde sağlanan ayarları kullanmalıdır.

İstemci GET CPID_URL isteği gönderdiğinde, yeni bir CPID alması GEREKİR. CPID oluşturma işlemi başarılı olursa CPID uç noktasının 200 OK yanıtı döndürmesi ZORUNLUDUR. Yanıt gövdesinin bir CPIDResponse örneği içermesi ZORUNLUDUR.

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

Abone daha sonra başka CPID'ler istemiş olsa bile, döndürülen CPID'nin ttlsaniye saniye boyunca geçerli olması ZORUNLUDUR. Google, en iyi kullanıcı deneyimi için 30 günlük ancak 14 günden kısa olmayan bir TTL değeri kullanılmasını önerir. GTAF, DPA'ya sonraki çağrılarında RFC2396'ya göre CPID'yi kodlayacaktır.

CPID oluşturma

CPID uç noktasının CPID oluşturması için ÖNERİLEN yöntem:

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

CPID uç noktası MSISDN'yi, istemcinin Kabul-Dil üstbilgisinde gönderdiği dili, yüksek çözünürlüklü bir zaman damgasını birleştirir ve secret tuşunu kullanarak AES aracılığıyla şifreler. Zaman damgası, CPID'nin sona erdiği zamana karşılık gelmelidir. Şifrelenmiş çıkış, Base64 olarak kodlanmıştır. Ayrıca, CPID bir URL'de kullanıldığında, Base64'te kullanılan özel karakterleri (/+=) işlemek için URL kodlamalı olmalıdır. Özellikle GTAF, DPA'yı veya mobil veri planı paylaşım API'sini çağırdığında CPID'nin URL kodlamalı olması ZORUNLUDUR.

Belirli bir operatör durumuna bağlı olarak, CPID uç noktasını uygulamak kolay olmayabilir. Sık karşılaşılan belirli bir zorluk, CPID uç noktasında MSISDN'ye erişmektir. Öğrenilen ilk katılım operatörlerini paylaşmaktan memnuniyet duyuyoruz. Herhangi bir zorlukla karşılaşırsanız lütfen bize ulaşın.

CPID Depolama Alanı

Yukarıda açıklanan mekanizma kullanılarak oluşturulan bir CPID'nin veritabanında depolanması gerekmez. DPA çağrılarını işlemek için kullanılan alakalı bilgiler CPID'den türetilebilir.

  1. DPA, plan durumu veya teklifleri için GTAF'dan bir çağrı aldığında MSISDN, CPID'nin şifresi çözülüp MSISDN çıkarılarak elde edilebilir.
  2. CPID'nin son geçerlilik zamanı, CPID'nin şifresi çözülüp geçerlilik sonu zaman damgası çıkarılarak elde edilebilir.

Kullanılabilirlik ve Kapasite Koşulları

CPID'yi alamayan müşteriler, Mobile Data Plan API'den hiçbir bilgiye erişemez. Bu nedenle operatör, CPID uç noktasının kullanılabilirliğini sağlamak için gerekli önlemleri alır. Bu önlemler arasında CPID uç noktası ve DPI işlevlerinin birden fazla kez bulunması ve her iki işlev için fiziksel, site ve ağ yedekliliğinin olması ve sistem kaynaklarının ve kapasitesinin yeterli olduğundan emin olunması vardır. Ayrıca, CPID uç noktasının yanı sıra üstbilgiyi yerleştiren DPI işlevi, CPID isteyen tüm Google istemcilerinin yükünü kaldırabilmek için yeterli kapasiteye sahip olmalıdır. CPID uç noktası, CPID oluşturma sıklığını azaltmak için ttlSeconds alanında daha büyük değerler kullanabilir.

Hata Durumları

Bir hata oluşursa CPID uç noktası, ErrorResponse örneğini içermesi GEREKEN bir yanıt gövdesine sahip HTTP hatası döndürmelidir. İyi bir hata mesajı, hatanın nedeninin hata ayıklamasına yardımcı olabilecek bilgiler içerir. Örneğin, süresi dolmuş bir CPID olması durumunda, CPID oluşturma ve geçerlilik bitiş zamanını eklemek, CPID uç noktasının tasarlandığı gibi çalıştığını doğrulamamıza yardımcı olur.

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

CPID uç noktası, senaryoya bağlı olarak aşağıdakileri döndürmelidir:

  1. Operatör ağına ait olmayan (ör. başka bir operatöre ait olan ancak bu CPID uç noktası tarafından sunulan ağda dolaşan bir kullanıcı) veya veri planı bilgilerini Google ile paylaşmayı seçmemiş bir kullanıcı için CPID isteği alınırsa CPID uç noktasının, USER_ROAMING, USER_OPT_OUT veya INELIGIBLE_FOR_SERVICE ile HTTP durum kodunu 403 hatası döndürmesi ZORUNLUDUR.
  2. Geçersiz telefon numarasıyla bir CPID isteği alınırsa CPID uç noktasının INVALID_NUMBER hata nedenine sahip HTTP 400 döndürmesi GEREKİR.
  3. CPID uç noktasına yapılan istek başka herhangi bir şekilde bozuksa, CPID uç noktasının hata nedeni olarak ERROR_CAUSE_UNSPECIFIED ile HTTP 400'ü döndürmesi GEREKİR.
  4. Diğer hata nedenleri için uyumlu herhangi bir HTTP hata kodu kabul edilir. HTTP 500, CPID uç noktasındaki dahili hatalar için özellikle uygun bir hata nedenidir.