Şablon Sistemi - Dinamik Bildirim İçeriği

Değişkenler, ifadeler ve sistem değerleriyle dinamik bildirim şablonları oluşturun; net uyarı mesajları için en iyi uygulamalarla birlikte.


Echobell'deki şablonlar, bildirim başlıklarınıza ve gövdelerinize değişkenler ekleyerek dinamik ve bağlam açısından zengin bildirimler oluşturmanızı sağlar. Bu güçlü özellik, tetikleyici verisine göre uyarlanan kişiselleştirilmiş ve bilgilendirici uyarılar üretir; genel bildirimleri eyleme geçirilebilir bilgiye dönüştürür.

"Uyarı tetiklendi" gibi genel bir mesaj almak yerine şablonlar sayesinde "Üretim sunucusunun CPU'su %95" ya da "Derleme #142 dağıtım aşamasında başarısız oldu" gibi belirli bildirimler oluşturabilirsiniz; böylece ek araştırma yapmanıza gerek kalmadan bağlamı anında edinirsiniz.

Temel Şablon Sözdizimi

Echobell şablonlarında değişkenleri çift süslü parantez içine alarak kullanabilirsiniz:

{{variableName}}

Bir kanal tetiklendiğinde bu değişkenler, tetikleyiciyle aktarılan gerçek değerlerle değiştirilir. Örneğin başlık şablonunuz You have received ${{amount}} ise ve kanalı amount değeri 100 olacak şekilde tetiklerseniz, oluşan bildirim You have received $100 olarak görüntülenir.

Gelişmiş Şablon İfadeleri

Echobell şablonları, daha karmaşık senaryolar için çeşitli ifadeleri destekler:

  • Nesne Özelliklerine Erişme
{{user.name}}
{{data["value"]}}
  • Dizi Öğelerine Erişme
{{items[0]}}
  • Karşılaştırma Operatörlerini Kullanma
{{status == "active"}}
{{age > 18}}
  • Mantıksal Operatörler
{{isSubscribed && !isPaused}}
{{isUrgent || isHighPriority}}

Tüm standart operatörler desteklenir: ==, !=, <, >, <=, >=, &&, || ve !.

Farklı Tetikleyicilerden Gelen Şablon Değişkenleri

Webhook Tetikleyicileri

Webhook ile tetiklerken değişkenleri şu yollarla sağlayabilirsiniz:

  1. Sorgu dizesi parametreleri:

    GET https://hook.echobell.one/t/<channel-token>?amount=100&status=complete
  2. JSON gövdesi (POST istekleri için):

    POST https://hook.echobell.one/t/<channel-token>
    Content-Type: application/json
    
    {
      "amount": 100,
      "status": "complete",
      "user": {
        "name": "John",
        "id": 12345
      }
    }
  3. Özel değişkenler:

    • externalLink: Bildirim kayıtlarında tıklanabilir bir bağlantı sağlar
    • bodyAsText: Content-Type değeri text/plain ise istek gövdesinin düz metin içeriği
    • header: HTTP istek başlıklarına erişim sağlar (örneğin {{header["content-type"]}})

E-posta Tetikleyicileri

Bir kanal e-posta ile tetiklendiğinde şu değişkenler otomatik olarak kullanılabilir:

  • from: Gönderenin e-posta adresi
  • to: Alıcının e-posta adresi
  • subject: E-postanın konu satırı
  • text: E-postanın düz metin içeriği
  • html: E-postanın HTML içeriği

Şablon Kullanım Senaryoları

Karşılaştırmalar ve Boolean Değerler

Karşılaştırma veya mantıksal operatör kullanan ifadeler, boolean sonuçlarını true ya da false metni olarak görüntüler:

Payment over $1000: {{amount > 1000}}
High priority: {{isUrgent || isImportant}}

Echobell şablonları satır içi if/else (üçlü operatör) mantığını desteklemez. Farklı durumlarda farklı içerik göndermek için tetiklemeleri yönlendirmek üzere kanal Koşullarını kullanın ya da ham değerleri doğrudan yerleştirin.

Kanal Koşulları

Şablonları bildirim içeriğinde kullanmanın yanı sıra, kanalın gelişmiş ayarlarında bildirimlerin hiç gönderilip gönderilmeyeceğini belirleyen Koşullar tanımlayabilirsiniz. Bu koşullar aynı ifade sözdizimini kullanır (süslü parantezler olmadan).

Örneğin yalnızca belirli bir eşiğin üzerindeki tutarlar için bildirim göndermek üzere:

amount > 100

Bağlantı Şablonları

Bildirim kayıtlarında tıklanabilir bağlantılar oluşturmak için kanalın gelişmiş ayarlarında özel bir bağlantı şablonu yapılandırın:

https://dashboard.example.com/orders/{{orderId}}

Bir bağlantı şablonu ayarlanmadıysa varsayılan olarak externalLink değişkeninin değeri kullanılır.

Sistem Zamanı Değişkenleri (UTC)

Bu değişkenler şablonlarda (ve koşullarda) her zaman kullanılabilir ve UTC olarak hesaplanır.

Aşağıdaki değerler doğrudan (düz olarak) enjekte edilir ve adlarıyla kullanılabilir:

  • year, month (1–12)
  • dayOfMonth, dayOfWeek (0–6, Pazar = 0)
  • hour (0–23), minute, second
  • date (YYYY-MM-DD), time (HH:mm:ss)
  • iso: ISO‑8601 zaman damgası (örneğin 2025-05-06T12:34:56.789Z)

Diğer değerler yalnızca sys. ad alanı altında kullanılabilir (düz adlar olarak enjekte edilmezler):

  • sys.timezone: Her zaman "UTC"
  • sys.now: ISO‑8601 zaman damgası (iso ile aynı değer)
  • sys.epochMs, sys.epochSeconds: Unix epoch'tan bu yana geçen süre (sayı)
  • sys.monthName: Ay adı (JanuaryDecember)
  • sys.dayOfWeekName: Gün adı (SundaySaturday)

sys. ad alanı ayrıca tüm düz değerleri de yansıtır (örneğin sys.year, sys.hour).

Örnekler:

Sent at {{date}} {{time}} {{sys.timezone}}
Today is {{sys.dayOfWeekName}}, {{sys.monthName}} {{dayOfMonth}}, {{year}}
Epoch: {{sys.epochSeconds}}

En İyi Uygulamalar

Eksik Değişkenleri Ele Alın

Echobell'de varsayılan değer operatörü yoktur. || operatörü tamamen mantıksaldır; her iki tarafı da boolean olarak değerlendirir ve true ya da false üretir. Yani {{username || "Anonymous User"}} ifadesi kullanıcı adını veya yedek metni değil, birebir true ya da false metnini görüntüler.

Bir değişken eksik olduğunda {{variable}} yalnızca boş bir metin olarak işlenir. Etiketlerinizi, değer boş olsa bile anlaşılır kalacak şekilde tasarlayın:

User: {{username}}
Server: {{serverName}}
Errors detected: {{errorCount}}

Değerin kesinlikle bulunmasını istiyorsanız, bir şablon yedeğine güvenmek yerine onu tetikleyici yükünde açıkça gönderin.

Bilgilendirici Şablonlar

Bildirimlerin ek bağlam gerektirmeden eyleme geçirilebilir olması için şablonlarınıza temel bilgileri ekleyin:

İyi Örnekler:

Title: {{service}} {{status}} on {{environment}}
Body: {{errorMessage}} at {{timestamp}}
Action required: {{recommendedAction}}

Kaçının:

Title: Alert
Body: Check logs

Şablonları Kısa Tutun

Bildirimler, başlıklar ve gövdeler net ve öz olduğunda en iyi şekilde görüntülenir:

  • Başlıklar: ideal olarak 3-8 kelime, en fazla 20 kelime
  • Gövdeler: ideal olarak 1-3 cümle, metin yığınlarından kaçının
  • Öncelik: En önemli bilgiyi başa koyun

iOS bildirim kısıtları:

  • Başlık: daraltılmış görünümde yaklaşık 40 karakter görünür
  • Gövde: daraltılmış görünümde yaklaşık 60 karakter, genişletildiğinde daha fazlası

Tutarlı Adlandırma Kullanın

Kanallarınız arasında tutarlı bir değişken adlandırması sürdürün:

  • Açık ve açıklayıcı adlar kullanın: sn değil server_name
  • Bir kurala uyun: snake_case, camelCase veya kebab-case
  • İlişkili kanallar arasında tutarlı olun
  • Ekip üyeleri için beklenen değişkenleri belgeleyin

İyice Test Edin

Şablonlarınızın beklendiği gibi işlendiğinden emin olmak için onları farklı değişken birleşimleriyle test edin:

  1. Tüm değişkenler mevcutken test edin
  2. İsteğe bağlı değişkenler eksikken test edin
  3. Özel karakterler ve Unicode ile test edin
  4. Çok uzun değerlerle test edin
  5. Boş metinlerle test edin
  6. Sayılar, boolean değerler, diziler ve nesnelerle test edin

Okunabilir Bir Yapı Kurun

Bildirim içeriğinin kolayca taranabilmesi için biçimlendirmeden yararlanın:

🚨 Alert: {{alertName}}
━━━━━━━━━━━━━━━
Server: {{server}}
Metric: {{metric}}  
Value: {{value}}
Time: {{time}}
━━━━━━━━━━━━━━━
Details: {{message}}

Ya da basit etiketler kullanın:

Server: {{server}}
CPU Usage: {{cpu}}%
Memory: {{memory}}%
Status: {{status}}

İfadelerden Yararlanın

Hesaplanmış değerleri ve karşılaştırma sonuçlarını göstermek için ifadeleri kullanın:

Title: {{service}} alert — critical: {{severity == "critical"}}
Body: {{metric}} is {{value}} (over threshold: {{value > threshold}})

Karşılaştırma ve mantıksal ifadeler true veya false olarak görüntülenir; anlam kazandırmak için bunları sabit etiket metniyle birlikte kullanın.

Saat Dilimlerini Göz Önünde Bulundurun

Sistem zamanı değişkenlerinin UTC olduğunu unutmayın. Bunu belirtin ya da şablonlarınızda dönüştürün:

Alert triggered at {{time}} UTC
Triggered: {{date}} {{time}} (UTC)

Yaygın Desenler ve Örnekler

Sunucu İzleme

Title: {{hostname}} - {{metric}} Alert
Body: {{metric}} on {{hostname}} is at {{value}}{{unit}}
Threshold: {{threshold}}{{unit}}
Time: {{date}} {{time}}

CI/CD Hatları

Title: {{repository}} - Build {{status}}
Body: Build #{{buildNumber}} {{status}} in {{duration}}s
Branch: {{branch}}
Commit: {{commit_message}}
Author: {{author}}

E-ticaret

Title: New Order #{{orderNumber}}
Body: Customer: {{customerName}}
Items: {{itemCount}} items
Total: ${{totalAmount}}
Shipping: {{shippingAddress}}

Hata Takibi

Title: {{errorType}} in {{service}}
Body: {{errorMessage}}
File: {{filename}}:{{lineNumber}}
User: {{userId}}
Environment: {{environment}}

Gelişmiş Özellikler

Bağlantı Şablonları

Bildirim kayıtlarında tıklanabilir bağlantılar oluşturmak için kanalın gelişmiş ayarlarında özel bir bağlantı şablonu yapılandırın:

https://dashboard.example.com/orders/{{orderId}}
https://grafana.example.com/d/{{dashboardId}}
https://github.com/{{repo}}/actions/runs/{{runId}}

Bir bağlantı şablonu ayarlanmadıysa varsayılan olarak externalLink değişkeninin değeri kullanılır. Bu, ilgili panolara, günlüklere veya belgelere doğrudan bildirimden hızlıca erişmek için kullanışlıdır.

Hesaplanmış Değerleri Gösterme

Şablonlar üçlü operatör (? :) mantığıyla dallanamaz ve bir metin birleştirme operatörü (+) yoktur. Bunun yerine değerleri ve karşılaştırma sonuçlarını doğrudan yerleştirin, etiketler için sabit metin kullanın:

Online: {{isOnline}}
High severity: {{severity > 5}}
Errors detected: {{count}}

Karşılaştırma ifadeleri true veya false olarak görüntülenir. Duruma göre gerçekten farklı mesajlar göndermek için tek bir şablon içinde dallanmak yerine tetiklemeleri kanal Koşullarıyla yönlendirin.

Kanal Koşulları

Şablonları bildirim içeriğinde kullanmanın yanı sıra, kanalın gelişmiş ayarlarında bildirimlerin hiç gönderilip gönderilmeyeceğini belirleyen Koşullar tanımlayabilirsiniz. Bu koşullar aynı ifade sözdizimini kullanır (süslü parantezler olmadan).

Örneğin yalnızca belirli bir eşiğin üzerindeki tutarlar için bildirim göndermek üzere:

amount > 100
status == "critical"
temperature > 30 && location == "datacenter"

Bu, bildirimler gönderilmeden önce kritik olmayan olayları eleyerek uyarı yorgunluğunu önler. Daha fazlasını Koşullar kılavuzumuzda öğrenin.

İlgili Dokümantasyon

Sorun Giderme

Şablon değişkenleri işlemiyor:

  • Değişken adlarının tam olarak eşleştiğini kontrol edin (büyük/küçük harfe duyarlı)
  • Değişkenlerin webhook/e-posta tetikleyicisinde aktarıldığını doğrulayın
  • Önce basit değişkenlerle test edin, ardından karmaşıklığı artırın

Değişkenler boş görünüyor:

  • Değişkenin tetikleyici verisinde bulunduğunu onaylayın
  • Değişken adlarında yazım hatası olup olmadığını kontrol edin
  • İç içe özellikler için JSON yapısını doğrulayın

İfade hataları:

  • Önce basit ifadelerle sözdizimini doğrulayın
  • Operatörlerin doğru şekilde boşluklandığından emin olun
  • Özellik erişiminin doğru sözdizimini kullandığını kontrol edin

Yardıma mı ihtiyacınız var? Destek Merkezimizi ziyaret edin veya echobell@weelone.com adresine yazın.


Şablonlar; kullanıcılara tam olarak ihtiyaç duydukları bilgiyi, ihtiyaç duydukları anda veren dinamik ve bilgilendirici bildirimler oluşturmanın güçlü bir yoludur. Basit değişken yerleştirmeyle başlayın, ardından gelişmiş bildirim sistemleri kurmak için kademeli olarak ifadeler ve koşullu mantık ekleyin.