Ana içeriğe atla

Kişiselleştirme nasıl çalışır

Liquid sözdizimini kullanarak mesajlara, şablonlara, Journey Webhook’larına ve Event Streams’e özel veriler ekleyebilirsiniz. Veriler şu kaynaklardan elde edilebilir:
  • Data feeds: API’lerinizden gerçek zamanlı veriler.
  • Custom Events: Journey mesajlarını kişiselleştirmek için gerçek zamanlı kullanıcı olayları.
  • Properties & Tags: Yerleşik kullanıcı, journey, mesaj, şablon, uygulama veya org değerleri.
  • API: custom_data: Create Message API’mize doğrudan ilettiğiniz özel veriler.
  • Dynamic content: Pano yüklemeleri yoluyla CSV tabanlı kişiselleştirme.

Temel hususlar

Kişiselleştirme, kullanıcıların uygulamanızla daha derin bağlantı kurmasına yardımcı olarak potansiyel olarak etkileşimi ve geliri artırır. Yaygın örnekler, kişinin adını veya belirli bilgileri (terk edilmiş sepet öğeleri gibi) bir mesaja koymaktır, ancak kullanım durumları sonsuzdur. Amaç nedir? Mesajda ne göndermek istiyorsunuz? Örnekler:
  • Ad veya ID gibi bir kullanıcı özelliği ekleyin
  • Fatura veya OTP gösterin
  • CSV’den dinamik içerik gönderin
Veriler nerede bulunuyor?
  • Veriler OneSignal’de bir özellik veya etiket olarak mı saklanıyor?
  • Veriler kendi veritabanınızda mı saklanıyor?
  • Backend’inizden OneSignal’e veri aktarmanız gerekiyor mu?
Mesajı nasıl göndermek istiyorsunuz?
  • Tek seferlik mesajlar: Mesajı sunucunuzdan mı yoksa OneSignal panosu üzerinden mi göndermek istiyorsunuz?
  • Yinelenen mesajlar: Journeys veya diğer otomatik iş akışlarını mı kullanıyorsunuz?
Örnek:
  • Amaç: Bir kullanıcının giriş yapmasına yardımcı olmak için bir kerelik şifre gönderin.
  • Veriler:
    • Backend’inizde saklanan OTP.
    • OneSignal’de etiket olarak saklanan kullanıcı adı.
    • OneSignal’de özellik olarak saklanan External ID.
  • Gönder:
    • REST API’mizi kullanarak sunucunuzdan.
    • Journeys kullanarak otomatik iş akışından.
Bu örneğin ayrıntılı bir açıklaması Verification, Magic Link, & OTP örnek öğreticisi’nde mevcuttur.Aşağıda daha fazla Tutorial örneklerine bakın.

Veri kaynakları

Kişiselleştirme için mevcut seçenekler.

Dinamik İçerik

Kişiselleştirme hakkındaki bu mevcut kılavuz, mesajlarınıza, şablonlarınıza, Journey’lerinize ve Event Streams’inize dinamik içerik eklemeyi açıklar. OneSignal ayrıca kendi veritabanınızdaki verilere dayalı olarak mesajları özelleştirmek için bir CSV verisi yükleme yöntemi sunar. Daha fazla ayrıntı için Dynamic Content’e bakın.

Veri beslemeleri

Data Feeds, gönderim zamanında API’lerinizden doğrudan mesajlara gerçek zamanlı veri çekmenin bir yoludur. Sadece bir şablonu veri kaynağınıza bağlayın ve verileri sunucunuzdan çekip mesaja enjekte edeceğiz.

Özel Olaylar

Journeys’de kullanılan Şablonlar içinde Custom Events’e referans verin. Journey yapılandırmasına bağlı olarak, kullanıcı adına bir veya daha fazla Custom Event saklayabilir. Bu saklanan olayların özelliklerini görüntülemek veya olaylara dayalı olarak mesajınızın bölümlerini koşullu olarak görüntülemek için Liquid sözdizimini kullanabilirsiniz.
  • Custom Event Özellikleri
  • Örnek Custom Event Yapısı
  • Şablonlarda Olayları Kullanma
journey.first_event
Olay tetiklemeli Journey’ler için bu, her zaman kullanıcının Journey’ye girmesine neden olan olay olacaktır.Journey’nin giriş kuralı olay tetiklemeli değilse, bu bir Wait Until koşulu tarafından eşleştirilen ilk olay olacaktır.
{% assign event = journey.first_event %}
journey.last_event
Saklanan en son Custom Event. Sadece bir saklı custom event varsa, first_event ve last_event aynı şeyi döndürecektir.
{% assign event = journey.last_event %}
journey.event.most_recent_event_name
Belirli bir ada sahip en son olay (most_recent_event_name’i referans vermek istediğiniz olayın adıyla değiştirin). Aynı olay birden fazla kez kullanılırsa, bu en son örneği döndürecektir. Örnek: purchase.
{% assign event = journey.event.purchase %}
Özel karakterler için (örn. boşluklar), olay adı alfasayısal olmayan karakterler içeriyorsa hash notation kullanın. Örneğin, olay adı “order status” ise, journey.event["order status"] ile referans verebilirsiniz.
{% assign event = journey.event["order status"] %}
journey.all_events
Kullanıcı için bu Journey için saklanan tüm olayların bir dizisini, alındıkları sırayla sağlar. Bunların üzerinde yinelemek için for döngüleri kullanabilirsiniz.
{% for event in journey.all_events %}
  {{ event.name }}
{% endfor %}
first_event ve last_event, sırasıyla all_events[0] ve all_events[-1] için kısayoldur.

Özellikler

OneSignal’de kaydedilen önceden tanımlanmış alanlar.
Özellikler, Uygulama İçi Mesajlar veya Live Activities içinde değiştirmek için kullanılamaz.

Kullanıcı & Abonelik özellikleri

Verilere erişmeniz gereken yere göre sağlanan adımları izleyin.
  • Mesajlar ve şablonlarda mevcut özellikler
  • Journey Webhook'larda ve Event Streams'de mevcut özellikler
Mesajlarda ve şablonlarda Subscription düzeyindeki özelliklere erişmek için subscription nesnesini kullanın. Etiketlere anahtar adı üzerinden doğrudan da erişilebilir. Örneğin:
Merhaba {{ first_name | default: "arkadaş" }}!
{{ level | default: "1" }}. seviyeye ulaştığınız için tebrikler!
Kullanıcı A için first_name: Jon ve level: 5, Kullanıcı B için first_name: Jeff ve level: 100 etiketleriniz varsa, her biri mesajda kendi adını ve seviyesini görecektir. Aksi takdirde varsayılan değerleri göreceklerdir.
subscription.external_id
Subscription ile ilişkili External ID.
Kullanıcı ID'niz {{ subscription.external_id }}.
subscription.email
Mesajın gönderildiği e-posta Subscription’ının e-posta adresi.
{{ subscription.email }} e-postası ile abone olduğunuz için teşekkürler.
subscription.phone_number
Mesajın gönderildiği SMS Subscription’ının telefon numarası.
{{ subscription.phone_number }} telefon numarası ile abone olduğunuz için teşekkürler.
subscription.language
Kullanıcının dil kodu.
Tercih edilen dil: {{ subscription.language }}
subscription.unsubscribe_token
Unsubscribe email with token API ile kullanılan token.
liquid
Abonelikten çık: https://your-domain.com/unsubscribe?token={{ subscription.unsubscribe_token }}

Journey özellikleri

journey nesnesi, Journey adını izlemek veya Journeys’de kullanılan Şablonlar içinde Custom Events’e referans vermek için yararlıdır.
journey.name
Journey’nin adı.
JSON
{
  "journey.name": "{{ journey.name }}"
}

Mesaj özellikleri

message nesnesi, backend’inizden gönderilen custom_data’ya erişmek veya Event Streams ile mesajın özelliklerini izlemek için yararlıdır.
message.id
OneSignal mesaj ID’si.
JSON
{
  "message.id": "{{ message.id }}"
}
message.name
Mesajın adı.
JSON
{
  "message.name": "{{ message.name }}"
}
message.template_id
OneSignal şablon ID’si.
JSON
{
  "message.template_id": "{{ message.template_id }}"
}

Şablon özellikleri

template nesnesi, mesajı göndermek için kullanılan Template hakkındaki ayrıntılara erişmek için yararlıdır.
template.id
OneSignal şablon ID’si.
JSON
{
  "template.id": "{{ template.id }}"
}
template.name
Şablonun adı.
JSON
{
  "template.name": "{{ template.name }}"
}

OneSignal özellikleri

app ve org nesneleri, mesajı gönderen App ve Organization hakkındaki ayrıntılara erişmek için yararlıdır.
app.id
OneSignal App ID.
JSON
{
  "app.id": "{{ app.id }}"
}
app.name
OneSignal App’in adı.
JSON
{
  "app.name": "{{ app.name }}"
}
org.id
OneSignal Organization ID.
JSON
{
  "org.id": "{{ org.id }}"
}
org.name
OneSignal Organization’ın adı.
JSON
{
  "org.name": "{{ org.name }}"
}

API custom_data

Backend’inizden custom_data ve Create message API’mizi kullanarak doğrudan kişiselleştirme ekleyin. Adımlar:
  1. Bir template oluşturun
  2. {{ message.custom_data.key }} formatıyla Liquid Syntax kullanın
  3. custom_data nesnesi ve template_id ile API isteği gönderin

Örnek: Düz JSON

Template
{{message.custom_data.product_name}} için faturanız hazır.
URL: https://your-domain.com/invoice={{message.custom_data.invoice_id}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "invoice_id": "463246732",
    "product_name": "Widget"
  }
}
Müşteri şunu görür:
  • “Widget için faturanız hazır.”
  • Son URL: https://your-domain.com/invoice=463246732

Örnek: Dizi verileri

Template
{{message.custom_data.cart_items[0].item_name}}'ınız sizi bekliyor!
Görsel: {{message.custom_data.cart_items[0].image_url}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "cart_items": [
      {
        "item_name": "sweater",
        "img_url": "https://.../sweater.png"
      },{
        "item_name": "socks",
        "img_url": "https://.../socks.png"
      }
    ]
  }
}
Müşteri şunu görür:
  • “Sweater’ınız sizi bekliyor!”
  • Görsel: https://.../sweater.png

Örnek: Toplu kişiselleştirme

Tek bir istekte birçok kullanıcı için tek bir mesajı kişiselleştirmek için:
Template
{% assign eid = message.custom_data.users[subscription.external_id] %}
Merhaba {{ eid.first_name }}, {{ eid.points }} puanınız var. Seviyeniz {{ eid.level }}.
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_aliases": {
    "external_id": ["user123", "user456"]
  },
  "custom_data": {
    "users": {
      "user123": { "first_name": "John", "points": "150", "level": "Gold" },
      "user456": { "first_name": "Sarah", "points": "200", "level": "Platinum" }
    }
  }
}
Müşteri şunu görür:
  • “Merhaba John, 150 puanınız var. Seviyeniz Gold.”
  • “Merhaba Sarah, 200 puanınız var. Seviyeniz Platinum.”

Öğreticiler