Sistem Templat - Isi Notifikasi yang Dinamis
Bangun templat notifikasi dinamis dengan variabel, ekspresi, dan nilai sistem - lengkap dengan praktik terbaik untuk pesan peringatan yang jelas.
Templat di Echobell memungkinkan Anda membuat notifikasi yang dinamis dan kaya konteks dengan menyisipkan variabel ke judul dan isi notifikasi. Fitur tangguh ini menghadirkan peringatan yang personal dan informatif, yang menyesuaikan diri dengan data pemicunya, sehingga notifikasi generik berubah menjadi informasi yang bisa langsung ditindaklanjuti.
Alih-alih menerima pesan generik "Alert triggered", templat memungkinkan Anda membuat notifikasi spesifik seperti "Production server CPU at 95%" atau "Build #142 failed in deploy stage" - memberi konteks langsung tanpa perlu penelusuran tambahan.
Sintaks Dasar Templat
Di templat Echobell, Anda bisa memakai variabel dengan membungkusnya dalam kurung kurawal ganda:
{{variableName}}
Saat sebuah saluran terpicu, variabel ini diganti dengan nilai sebenarnya yang dikirim lewat pemicu. Misalnya, kalau templat judul Anda adalah You have received ${{amount}} dan Anda memicu saluran itu dengan nilai amount sebesar 100, notifikasi yang dihasilkan akan tampil sebagai You have received $100.
Ekspresi Templat Tingkat Lanjut
Templat Echobell mendukung berbagai ekspresi untuk skenario yang lebih rumit:
- Mengakses Properti Objek
{{user.name}}
{{data["value"]}}
- Mengakses Elemen Array
{{items[0]}}
- Memakai Operator Perbandingan
{{status == "active"}}
{{age > 18}}
- Operator Logika
{{isSubscribed && !isPaused}}
{{isUrgent || isHighPriority}}
Semua operator standar didukung: ==, !=, <, >, <=, >=, &&, ||, dan !.
Variabel Templat dari Berbagai Pemicu
Pemicu Webhook
Saat memicu lewat webhook, Anda bisa menyediakan variabel melalui:
-
Parameter query string:
GET https://hook.echobell.one/t/<channel-token>?amount=100&status=complete -
Body JSON (untuk permintaan POST):
POST https://hook.echobell.one/t/<channel-token> Content-Type: application/json { "amount": 100, "status": "complete", "user": { "name": "John", "id": 12345 } } -
Variabel khusus:
externalLink: Menyediakan tautan yang bisa diklik di riwayat notifikasibodyAsText: Konten teks biasa dari body permintaan kalauContent-Type-nyatext/plainheader: Memberi akses ke header permintaan HTTP (misalnya,{{header["content-type"]}})
Pemicu Email
Saat sebuah saluran terpicu lewat email, variabel berikut otomatis tersedia:
from: Alamat email pengirimto: Alamat email penerimasubject: Baris subjek emailtext: Konten teks biasa dari emailhtml: Konten HTML dari email
Kasus Penggunaan Templat
Perbandingan dan Boolean
Ekspresi yang memakai operator perbandingan atau logika merender hasil boolean-nya sebagai teks true atau false:
Payment over $1000: {{amount > 1000}}
High priority: {{isUrgent || isImportant}}
Templat Echobell tidak mendukung logika if/else sebaris (ternary). Untuk mengirim isi yang berbeda pada situasi yang berbeda, pakai Kondisi saluran untuk mengarahkan pemicunya, atau sisipkan nilai mentahnya secara langsung.
Kondisi Saluran
Selain memakai templat di isi notifikasi, Anda bisa menetapkan Kondisi di pengaturan lanjutan saluran yang menentukan apakah notifikasi perlu dikirim sama sekali. Kondisi ini memakai sintaks ekspresi yang sama (tanpa kurung kurawal).
Misalnya, untuk hanya mengirim notifikasi bagi jumlah yang lebih besar dari sebuah ambang batas:
amount > 100
Templat Tautan
Konfigurasikan templat tautan khusus di pengaturan lanjutan saluran untuk membuat tautan yang bisa diklik di riwayat notifikasi:
https://dashboard.example.com/orders/{{orderId}}
Kalau tidak ada templat tautan yang disetel, nilai variabel externalLink akan dipakai secara bawaan.
Variabel Waktu Sistem (UTC)
Variabel berikut selalu tersedia untuk templat (dan kondisi) dan dihitung dalam UTC.
Nilai-nilai berikut disuntikkan langsung (datar) dan bisa dipakai lewat namanya:
year,month(1–12)dayOfMonth,dayOfWeek(0–6, Minggu = 0)hour(0–23),minute,seconddate(YYYY-MM-DD),time(HH:mm:ss)iso: Stempel waktu ISO‑8601 (misalnya,2025-05-06T12:34:56.789Z)
Nilai lain hanya tersedia di bawah namespace sys. (nilai-nilai ini tidak disuntikkan sebagai nama datar):
sys.timezone: Selalu"UTC"sys.now: Stempel waktu ISO‑8601 (nilainya sama denganiso)sys.epochMs,sys.epochSeconds: Waktu saat ini terhitung sejak Unix epoch (angka)sys.monthName: Nama bulan (January–December)sys.dayOfWeekName: Nama hari (Sunday–Saturday)
Namespace sys. juga mencerminkan setiap nilai datar (misalnya sys.year, sys.hour).
Contoh:
Sent at {{date}} {{time}} {{sys.timezone}}
Today is {{sys.dayOfWeekName}}, {{sys.monthName}} {{dayOfMonth}}, {{year}}
Epoch: {{sys.epochSeconds}}
Praktik Terbaik
Menangani Variabel yang Hilang
Echobell tidak punya operator nilai bawaan. Operator || murni bersifat logika — operator itu mengevaluasi kedua sisinya sebagai boolean lalu merender true atau false. Jadi {{username || "Anonymous User"}} merender teks literal true atau false, bukan username maupun string cadangannya.
Saat sebuah variabel tidak ada, {{variable}} cukup dirender sebagai string kosong. Rancang label Anda supaya nilai yang kosong pun tetap terbaca jelas:
User: {{username}}
Server: {{serverName}}
Errors detected: {{errorCount}}
Kalau Anda butuh nilai yang pasti ada, kirimkan nilainya secara eksplisit di payload pemicu, bukan mengandalkan nilai cadangan di templat.
Templat yang Informatif
Sertakan informasi penting di templat Anda agar notifikasinya bisa langsung ditindaklanjuti tanpa perlu konteks tambahan:
Contoh Bagus:
Title: {{service}} {{status}} on {{environment}}
Body: {{errorMessage}} at {{timestamp}}
Action required: {{recommendedAction}}
Hindari:
Title: Alert
Body: Check logs
Buat Templat Tetap Ringkas
Notifikasi tampil paling baik saat judul dan isinya jelas dan langsung ke inti:
- Judul: 3-8 kata itu ideal, maksimal 20 kata
- Isi: 1-3 kalimat itu ideal, hindari teks yang bertele-tele
- Prioritas: Taruh informasi terpenting di awal
Batasan notifikasi iOS:
- Judul: sekitar 40 karakter yang terlihat pada tampilan ringkas
- Isi: sekitar 60 karakter pada tampilan ringkas, lebih banyak saat dibentangkan
Gunakan Penamaan yang Konsisten
Jaga konsistensi penamaan variabel di seluruh saluran Anda:
- Pakai nama yang jelas dan deskriptif:
server_name, bukansn - Ikuti satu konvensi: snake_case, camelCase, atau kebab-case
- Konsisten di antara saluran-saluran yang saling terkait
- Dokumentasikan variabel yang diharapkan untuk anggota tim
Uji Secara Menyeluruh
Uji templat Anda dengan berbagai kombinasi variabel untuk memastikan hasil render-nya sesuai harapan:
- Uji dengan semua variabel tersedia
- Uji dengan variabel opsional yang tidak ada
- Uji dengan karakter khusus dan Unicode
- Uji dengan nilai yang sangat panjang
- Uji dengan string kosong
- Uji dengan angka, boolean, array, dan objek
Susun agar Mudah Dibaca
Gunakan pemformatan agar isi notifikasi mudah dipindai:
🚨 Alert: {{alertName}}
━━━━━━━━━━━━━━━
Server: {{server}}
Metric: {{metric}}
Value: {{value}}
Time: {{time}}
━━━━━━━━━━━━━━━
Details: {{message}}
Atau pakai label sederhana:
Server: {{server}}
CPU Usage: {{cpu}}%
Memory: {{memory}}%
Status: {{status}}
Manfaatkan Ekspresi
Gunakan ekspresi untuk menampilkan nilai hasil hitungan dan hasil perbandingan:
Title: {{service}} alert — critical: {{severity == "critical"}}
Body: {{metric}} is {{value}} (over threshold: {{value > threshold}})
Ekspresi perbandingan dan logika dirender sebagai true atau false; pasangkan dengan teks label statis agar maknanya tersampaikan.
Perhatikan Zona Waktu
Ingat bahwa variabel waktu sistem memakai UTC. Dokumentasikan hal ini atau konversikan di templat Anda:
Alert triggered at {{time}} UTC
Triggered: {{date}} {{time}} (UTC)
Pola dan Contoh Umum
Pemantauan Server
Title: {{hostname}} - {{metric}} Alert
Body: {{metric}} on {{hostname}} is at {{value}}{{unit}}
Threshold: {{threshold}}{{unit}}
Time: {{date}} {{time}}
Pipeline CI/CD
Title: {{repository}} - Build {{status}}
Body: Build #{{buildNumber}} {{status}} in {{duration}}s
Branch: {{branch}}
Commit: {{commit_message}}
Author: {{author}}
E-commerce
Title: New Order #{{orderNumber}}
Body: Customer: {{customerName}}
Items: {{itemCount}} items
Total: ${{totalAmount}}
Shipping: {{shippingAddress}}
Pelacakan Kesalahan
Title: {{errorType}} in {{service}}
Body: {{errorMessage}}
File: {{filename}}:{{lineNumber}}
User: {{userId}}
Environment: {{environment}}
Fitur Tingkat Lanjut
Templat Tautan
Konfigurasikan templat tautan khusus di pengaturan lanjutan saluran untuk membuat tautan yang bisa diklik di riwayat notifikasi:
https://dashboard.example.com/orders/{{orderId}}
https://grafana.example.com/d/{{dashboardId}}
https://github.com/{{repo}}/actions/runs/{{runId}}
Kalau tidak ada templat tautan yang disetel, nilai variabel externalLink akan dipakai secara bawaan. Ini berguna untuk memberi akses cepat ke dasbor, log, atau dokumentasi yang relevan langsung dari notifikasi.
Menampilkan Nilai Hasil Hitungan
Templat tidak bisa bercabang dengan logika ternary (? :), dan tidak ada operator penggabungan string (+). Sebagai gantinya, sisipkan nilai dan hasil perbandingan secara langsung, dengan teks statis sebagai labelnya:
Online: {{isOnline}}
High severity: {{severity > 5}}
Errors detected: {{count}}
Ekspresi perbandingan dirender sebagai true atau false. Untuk benar-benar mengirim pesan yang berbeda pada tiap situasi, arahkan pemicunya memakai Kondisi saluran, bukan dengan percabangan di dalam satu templat.
Kondisi Saluran
Selain memakai templat di isi notifikasi, Anda bisa menetapkan Kondisi di pengaturan lanjutan saluran yang menentukan apakah notifikasi perlu dikirim sama sekali. Kondisi ini memakai sintaks ekspresi yang sama (tanpa kurung kurawal).
Misalnya, untuk hanya mengirim notifikasi bagi jumlah yang lebih besar dari sebuah ambang batas:
amount > 100
status == "critical"
temperature > 30 && location == "datacenter"
Cara ini mencegah kelelahan akibat peringatan dengan menyaring peristiwa yang tidak kritis sebelum notifikasi dikirim. Pelajari selengkapnya di panduan Kondisi kami.
Dokumentasi Terkait
- Integrasi Webhook - Pelajari cara mengirim variabel lewat webhook
- Pemicu Email - Variabel yang tersedia dari pemicu email
- Kondisi - Saring notifikasi dengan ekspresi kondisional
- Panduan Memulai - Siapkan saluran pertama Anda beserta templatnya
Pemecahan Masalah
Templat tidak merender variabel:
- Periksa apakah nama variabelnya sama persis (peka huruf besar-kecil)
- Pastikan variabelnya benar-benar dikirim di pemicu webhook/email
- Uji dulu dengan variabel sederhana, baru tambahkan kerumitannya
Variabel tampil kosong:
- Pastikan variabel itu ada di data pemicunya
- Periksa apakah ada salah ketik pada nama variabel
- Pastikan struktur JSON-nya benar untuk properti bersarang
Kesalahan ekspresi:
- Validasi sintaksnya dulu dengan ekspresi sederhana
- Pastikan operatornya diberi spasi dengan benar
- Periksa apakah akses propertinya memakai sintaks yang benar
Butuh bantuan? Kunjungi Pusat Dukungan kami atau hubungi echobell@weelone.com.
Templat adalah cara ampuh untuk membuat notifikasi yang dinamis dan informatif, yang memberi pengguna tepat informasi yang mereka butuhkan, saat mereka membutuhkannya. Mulailah dari penggantian variabel sederhana, lalu tambahkan ekspresi dan logika kondisional secara bertahap untuk membangun sistem notifikasi yang canggih.