Ana içeriğe atla
Veri Akışları, gönderim anında API’lerinizden doğrudan mesajlara gerçek zamanlı veri çekmenizi sağlar. Bu, verileri OneSignal’e önceden yüklemeden son derece kişiselleştirilmiş içerik sunmanıza olanak tanır. Veri Akışlarını verileriniz sık sık değiştiğinde kullanın, örneğin:
  • Kullanıcının mevcut ödül bakiyesi
  • En son sipariş durumu
  • Kişiselleştirilmiş ürün önerileri
Diğer kişiselleştirme yöntemleri (Etiketler veya Dinamik İçerik gibi) statik veriler için iyi çalışır. Veri Akışları, canlı ve hızla değişen değerler için en iyisidir.
Veri Akışları şu anda yalnızca Journeys aracılığıyla gönderilen e-posta mesajları için kullanılabilir. Başka bir kanala mı ihtiyacınız var? Bu kısa anketi doldurun.

Veri Akışları nasıl çalışır

  1. Bir Veri Akışı oluşturun – OneSignal’in API’nize nasıl bağlanacağını yapılandırın.
  2. Veri Akışını bir mesaj şablonuna ekleyin.
  3. Yanıt alanlarını mesajınıza Liquid sözdizimi kullanarak ekleyin.
  4. Gönderim anında, OneSignal her alıcı için bir API çağrısı yapar, yanıtı ayrıştırır ve verileri mesajınıza enjekte eder.

Örnek: Ödül puanlarını gösterme

Diyelim ki her müşteriye ödül bakiyesini göstermek istiyorsunuz:
Hi {{ first_name }},

You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.

Keep shopping to earn more points!
Sarah bu e-postayı aldığında, Liquid değişkenleri gerçek puan bakiyesi ve üyelik durumuyla değiştirilir. Aşağıdaki bölümler bu örneği adım adım kurmayı göstermektedir.

Veri Akışı oluşturma ve kullanma

1. Veri Akışı yapılandırmanızı ayarlayın

Mevcut Veri Akışlarının listesini görmek ve yeni bir tane oluşturmak için kenar çubuğunda Veri > Veri Akışları’na gidin. Her Veri Akışı şunlara sahip olmalıdır:
  • Ad: Akışları ayırt etmenize yardımcı olması için “Müşteri Ödülleri API’si” gibi açıklayıcı bir ad. Benzersiz adlar önerilir ancak zorunlu değildir.
  • Takma Ad: Liquid sözdiziminde kullanılan rewards gibi kısa bir tanımlayıcı (örn. {{ data_feed.rewards.points }}). Benzersiz, küçük harf, alfasayısal olmalı; boşluk veya özel karakter içermemelidir.
  • Yöntem: OneSignal’in API’nize ulaşmak için kullandığı HTTP yöntemi. Genellikle GET, ancak POST da desteklenir.
  • URL: API uç noktanız. OneSignal’in kullanıcıya özel veri çekebilmesi için Liquid sözdizimini destekler.
Örneğin, ödül uç noktanız URL parametresi olarak kullanıcının external_id’sini (OneSignal’de depolanan) kabul edebilir:
https://acme.com/customers/user_id={{ external_id }}/rewards
  • Başlıklar: API’nizin gerektirdiği anahtar-değer çiftleri (örn. kimlik doğrulama belirteçleri). Liquid sözdizimini destekler.
  • Gövde: İsteğe bağlı JSON istek gövdesi. Journey webhook’ları ile aynı şekilde Liquid sözdizimini destekler.
Örneğin, API’niz kullanıcının kimliğini URL yerine istek gövdesinde belirtmenizi gerektirebilir:
{
	"customer_id": "{{ subscription.external_id }}"
}
Tam bir Veri Akışı yapılandırması şöyle görünür:
Data Feed configuration showing name, alias, method, URL, and headers
Akışınızı üretimde kullanmadan önce test edin. Veri Akışı testleri test aboneliklerinize karşı çalışır; bu nedenle test aboneliği özniteliklerinizin API’nizden gerçek bir sonuç döndüreceğini doğrulayın.
Son olarak, kullanıma hazır olması için yeni Veri Akışınızı Etkinleştirin.

2. Veri Akışını mesaj şablonunuza ekleyin

OneSignal’in bunu kullanması gerektiğini bilmesi için Veri Akışınızı mesaj şablonunuza ekleyin.
  1. Mesajlar > Şablonlar’a gidin
  2. Mesaj bölümünde Kişiselleştirme düğmesini seçin
Personalization button in the message template editor
  1. Veri Akışları’nı açın ve akışınızı seçin
Data Feeds toggle and feed selector in the message composer
  1. Şablonunuzu kaydedin

3. Verileri mesajınızda kullanın

Yanıt verilerini mesajınızın herhangi bir yerine eklemek için Liquid sözdizimini kullanın. Ödül örneğine devam edersek, external_id’si a1-b2c3 olan Sarah için API yanıtı şöyle görünebilir:
{
	"external_id": "a1-b2c3",
	"points": 193,
	"status_level": "Gold"
}
Puan sayısını ve durum seviyesini eklemek için Veri Akışı takma adına ve yanıt alanlarına nokta notasyonuyla başvurun:
You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.
Bu, OneSignal’e şunu söyler:
  • Bir Veri Akışı kullan
  • rewards Veri Akışını kullan
    • Hatırlatma: rewards akışı, API’yi alıcının external_id’si ile çağırmayı bilir
  • Yanıttan, points öğesinin değerini (193) ve status_level öğesinin değerini (Gold) ekle

Gereksinimler ve sınırlar

API’nizin şunları yapması gerekir:
  • Başlıklarda kimlik doğrulama belirteçleriyle tek adımlı kimlik doğrulamayı kabul etmek
  • Hızlı yanıt vermek. 250ms altı önerilir (bu, gönderim hızını doğrudan etkiler)
  • JSON döndürmek. Diğer formatlar şu anda desteklenmiyor.
  • Gönderim hacminizi karşılamak. API’nizdeki düşük oran sınırı mesaj teslimini yavaşlatır.
  • Makul boyutlu yükler döndürmek. En iyi performans için yanıtları 50 KB altında tutun.
Mevcut sınırlar:
  • Şablon başına bir Veri Akışı. İhtiyacınız olan her şeyi tek bir API yanıtında alın.
  • Mesaj başına Veri Akışı başına bir API çağrısı.
  • Yalnızca Journeys. Henüz diğer gönderim yöntemleri için kullanılamıyor.
  • Çağrı zincirlemesi yok. Bir Veri Akışından gelen yük, başka birini çağırmak için kullanılamaz.
Şablon başına birden fazla Veri Akışına veya diğer kanallar için desteğe mi ihtiyacınız var? Bu özelliklere öncelik verilmesine yardımcı olmak için kullanım durumunuzu paylaşın.

API’nizi ayarlama

Bir Veri Akışı oluşturmadan önce, API’nizin bu gereksinimleri karşılayabildiğinden emin olun:

Kimlik doğrulama

API’niz başlıklar aracılığıyla kimlik doğrulamayı kabul etmelidir:
Authorization: Bearer YOUR_TOKEN
veya
X-API-Key: YOUR_KEY

JSON istek gövdesi

İsteğe bir gövde eklemeniz gerekiyorsa, API’niz JSON’u kabul etmelidir. Bu, başlıklarınızın Content-Type: application/json içermesi gerektiği anlamına gelebilir.

JSON yanıtı

API’niz bir JSON nesnesi döndürmelidir. Tipik olarak bu, başlıklarınızın Accept: application/json içereceği anlamına gelir.

Kişiselleştirme parametreleri

Genellikle kullanıcı tanımlayıcılarını URL’de şu şekilde geçireceksiniz:
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
Ve/veya gövdede:
{
	"customer_id": "{{ external_id }}",
	"email": "{{ subscription.email }}"
}
Bu verilerin OneSignal’de var olacağından emin olun (genellikle Etiketler olarak, ancak özel olay özellikleri gibi diğer seçenekler de mevcuttur).

Oran sınırları

API’nizin oran sınırlarını göz önünde bulundurun. 10.000 kullanıcıya gönderim, hızlı art arda 10.000 API çağrısı anlamına gelir. API’nizin bu hacmi kaldırabileceğinden emin olun.

Hata işleme

API’niz bir hata döndürürse veya bir kullanıcı için veriye sahip değilse, mesaj o alıcıya gönderilmeyecektir. API’nizin beklenen tüm kullanıcılar için veri döndürdüğünden emin olun.

Başlangıç kontrol listesi

Veri Akışlarını uygulamadan önce şu soruları yanıtlayın:
  • Mesajımda hangi verileri göstermek istiyorum? API’nizden doldurulacak öğelerin tanımlandığı basit bir taslaktan geriye doğru çalışmak, düşüncelerinizi organize etmenize yardımcı olacaktır.
  • Bu veriler tek bir API uç noktası üzerinden kullanılabilir mi?
  • API isteklerini nasıl doğrulayacağım?
  • Kişiselleştirilmiş verileri almak için hangi tanımlayıcıyı veya diğer veri öğesini kullanacağım?
  • Bu tanımlayıcı zaten OneSignal’de depolanıyor mu? Değilse, nasıl doldurulacak?
  • API’m üreteceğim istek hacmini kaldırabilir mi?
  • API’m bir kullanıcı için veriye sahip değilse ne olur?

Örnekler ve gelişmiş kullanım durumları

Veri Akışları, Liquid sözdizimi ile veya daha karmaşık kişiselleştirme üretmek için diğer özelliklerle birlikte yaratıcı şekillerde kullanılabilir.
Diyelim ki kullanıcının sepetindeki öğelerin bir dizisini ve sepet toplam dolar tutarını döndüren bir cart Veri Akışınız var:
{
  "items": [
    {
      "name": "Blue Running Shoes",
      "price": 84.00,
      "image_url": "https://acme.com/blue-running-shoes.png"
    },
    {
      "name": "Protein Bar",
      "price": 5.99,
      "image_url": "https://acme.com/protein-bar.png"
    }
  ],
  "total": 89.99
}
Sepetteki her öğeyi ve sepet toplamını göstermek istiyorsanız, Liquid’de bir for döngüsü kullanabilirsiniz:
<ul>
  {% for item in data_feed.cart.items %}
    <li>
      <strong>{{ item.name }}</strong><br>
      ${{ item.price }}<br>
      <img src="{{ item.image_url }}" alt="{{ item.name }}">
    </li>
  {% endfor %}
</ul>

<p>Cart total: ${{ data_feed.cart.total }}</p>

Bu şu sonucu verecektir:
- Blue Running Shoes
- $84.00
- <running shoes image>
- Protein Bar
- $5.99
- <protein bar image>
Cart total: $89.99
E-posta blok düzenleyicisini kullanıyorsanız, bu tür karmaşık Liquid sözdizimini eklerken, özellikle resimler veya bağlantılar eklemeniz gerekiyorsa, en iyi sonuçlar için özel HTML blok öğesini kullanın.
Bu terk edilmiş sepet e-postasını özel olayları kullanarak nasıl tetikleyeceğinizi görmek ister misiniz? Tam iş akışı için Özel olay özellikleri sekmesine bakın.

SSS

Veri Akışı değerleri mesajda görünmüyor. Ne kontrol etmeliyim?

Bunları sırayla doğrulayın:
  1. Veri Akışının şablona eklendiğini kontrol edin (Kişiselleştirme > Veri Akışları altında).
  2. Liquid sözdiziminin JSON yanıt yapısıyla tam olarak eşleştiğini kontrol edin — {{ data_feed.<alias>.<field> }}.
  3. API uç noktasının aynı tanımlayıcılarla manuel olarak çağrıldığında geçerli JSON döndürdüğünü doğrulayın.
  4. Alıcının OneSignal’de gerekli tanımlayıcıya (örn. external_id) sahip olduğunu kontrol edin.

Mesajlar neden yavaş gönderiliyor?

Veri Akışı API çağrıları her alıcı için gönderim anında çalışır. API’niz yavaş yanıt verirse veya eş zamanlı istekleri karşılayamazsa, mesaj teslimi orantılı olarak yavaşlar. 250 ms altında yanıt süresi hedefleyin ve altyapınızın gönderim hacminizi kaldırabildiğinden emin olun.

Bazı alıcılar neden mesaj almıyor?

Bir alıcı için Veri Akışı API çağrısı başarısız olursa — 404, zaman aşımı veya eksik veri nedeniyle — OneSignal o alıcıyı atlar. Veri Akışı yapılandırmanızdaki hata günlüğünü ve hatalar için kendi API günlüklerinizi kontrol edin. Bu kullanıcıların OneSignal’de gerekli tanımlayıcılara sahip olduğunu doğrulayın.

Bir şablonda birden fazla Veri Akışı kullanabilir miyim?

Şu anda hayır. Her şablon bir Veri Akışını destekler. İhtiyacınız olan tüm verileri tek bir API yanıtında alın. Birden fazla akışa ihtiyacınız varsa, kullanım durumunuzu paylaşın.

Veri Akışları push bildirimleri veya SMS için kullanılabilir mi?

Hayır. Veri Akışları şu anda yalnızca Journeys aracılığıyla gönderilen e-posta mesajları için kullanılabilir. Ek kanallar için destek planlanmaktadır — önceliklendirmeye yardımcı olmak için kullanım durumunuzu paylaşın.

Mesaj gönderilirken API’im çökmüşse ne olur?

OneSignal, Veri Akışı çağrısı başarısız olan alıcıları atlar. Mesaj o alıcıya gönderilmez ve yedek değer eklenmez. Planlı gönderimlerde API çalışma sürenizi ve hata oranlarınızı izleyin.

İlgili sayfalar

Liquid sözdizimi

OneSignal mesajlarında Liquid şablonlama için tam referans.

Journeys

Veri Akışı e-postalarını tetikleyen otomatik mesajlaşma iş akışları oluşturun.

Özel olaylar

Journey’leri tetikleyin ve Veri Akışı URL’leri için olay özelliklerini geçirin.

Mesaj kişiselleştirme

Tüm kişiselleştirme yöntemlerine genel bakış — etiketler, Liquid, dinamik içerik ve Veri Akışları.