Trigger
Yeni kullanıcı bot'a ilk mesajı atar
Buton 1
welcome_button_approve → ✅ Onaylıyorum
Buton 2
welcome_button_reject → ❌ Daha sonra
📝 İlk ETK + KVKK linkleri burada gösteriliyor. Hukuki zorunluluk — onaylanmadan kampanya akışı başlamaz.
📸 Bu SS'te FreeByte mesajından hemen sonra ilk kampanya da görünüyor (akış otomatik).
Trigger
KVKK onaylandı → FreeByte API success
Yan etki
Operatörden ayrıca SMS gönderilir
📸 Pepsi kampanyası örneği — başka kampanya örneği için aşağıya bak.
Trigger
FreeByte sonrası ilk gösterim, veya "Sonraki", veya keyword routing
Sıralama
DB: campaigns.priority — en yüksek priority önce gösterilir, "Sonraki" deyince bir alt priority'ye geçer
Eligibility
Campaign API'den kontrol edilir — sadece eligible olanlar listede kalır, görülen kampanyalar atlanır
Görsel
DB: campaigns.image_url
Body
DB: campaigns.body_text
Buton 1
DB: button_1_text + button_1_id (örn "Kampanyaya Katıl")
Buton 2
DB: button_2_text + button_2_id (örn "Detayları Gör")
Buton 3
campaign_next → "Sonraki" (hardcoded)
Buton 4
campaign_menu → "Menü" (hardcoded, her kampanyada — menüye dönüş)
🔀 Geçişler
Sonraki→priority sırasıyla bir alttaki kampanya
⚠️ WhatsApp limiti: Interactive Button mesajları max 3 buton destekler. 4 buton (Katıl/Detaylar/Sonraki/Menü) için List Message kullanılması gerekir.
📌 Priority mantığı: İlk girişte en yüksek priority değerine sahip kampanya gösterilir (örn Pepsi=priority 10, Koçtaş=8). Kullanıcı "Sonraki" deyince bir alt priority'deki kampanyaya geçer. Eligible olmayan veya görülmüş olanlar atlanır. Tüm priority'ler bitince cycle_reset_body gönderilir, baştan başlanır (sadece katılınmamış olanlar arasından).
Trigger
"Kampanyaya Katıl" butonuna tıklandı
Hangi kampanya?
O an gösterilen kampanya — yani priority sırasında bulunduğu yerdeki kampanya. İlk girişte en yüksek priority (örn Pepsi), "Sonraki" deyip ilerlemişse o priority'deki kampanya.
Body
DB'de campaigns.deeplink_message varsa o kullanılır.\nYoksa fallback metni: "Harika seçim! 🎉\n{campaign.name} kampanyasına katılmak için aşağıdaki butona tıkla 👇"
CTA Buton
campaign_join_cta_button → "Kampanyaya Git" (hardcoded, tüm kampanyalar için ortak)
URL
DB: campaigns.deeplink_url — o kampanyaya özel link
Yan etki
24 saat sonra reminder zamanlanır (eğer kullanıcı kampanyayı tamamlamazsa reminder_default_body tetiklenir)
📌 Önemli: Bu mesaj her kampanya için aynı yapıdadır ama içerik (kampanya adı, deeplink URL) o anki priority'deki kampanyadan dinamik gelir. Tek mesaj template'i, çoklu kampanya kullanımı.
Fişini okutarak kampanyalara katılabilirsin. 🧾
Hazır olduğunda aşağıdaki butona bas, fişinin fotoğrafını gönder.
14:31
📷 Fiş Gönder
📐 Mockup
Trigger
Menüden “Fatura / Fiş Okut” seçildi ya da kampanyadan (Samba) yönlendirildi.
Mesaj
Fişini okutarak kampanyalara katılabilirsin. 🧾
Hazır olduğunda aşağıdaki butona bas, fişinin fotoğrafını gönder.
Context
{campaign_context} — boş (genel) veya samba
⚠️ Kamera otomatik açılmamalı. Kullanıcı akışı butonla başlatır.
Lütfen fişinin
tamamının net göründüğü bir fotoğraf gönder 📸
14:31
📐 Mockup
Trigger
“Fiş Gönder” butonuna basıldı.
Mesaj
Lütfen fişinin tamamının net göründüğü bir fotoğraf gönder 📸
Beklenen girdi
WhatsApp medya (image). Galeriden seç veya kamerayla çek.
🔀 Geçişler
(metin, görsel değil)→tekrar iste (LOOP)
ℹ️ Fatura gönderimi WhatsApp’ın medya gönderim yapısına uygun ilerlemeli.
Büyük boy Samba alana
1.000 FreeByte hediye! 🍫
Kampanyaya katılmak için fişini gönder, hediyeni kap.
14:30
Samba ile Kazan
📐 Mockup
Trigger
Samba kampanya duyurusu — diğer kampanyalar gibi ayrı gönderi olarak yayınlanır.
Mesaj
Büyük boy Samba alana 1.000 FreeByte hediye!
Kampanyaya katılmak için fişini gönder, hediyeni kap.
Buton
samba_join → Samba ile Kazan
ℹ️ Buton ortak okutma akışını Samba context'i ile başlatır. Aynı akış, menüden gelirse genel okutma olur.
Menü →
genel fatura okutma
Samba postu →
samba context’i ile fatura okutma
🔌 Context (bot mesajı değil)
Amaç
Tek okutma akışı, girişe göre farklı kampanya context'i taşır — kampanya başına ayrı akış kopyalanmaz.
Değişken
{campaign_context} — null (genel) · samba · <ileride başka kampanyalar>
Etki
OCR sonrası uygunluk kontrolü ve ödül tanımı bu context'e göre yapılır.
📌
Model: FreeByte bir cüzdan bakiyesidir.
Kazanım: kampanya katılımı + uniq kod.
Harcama: GB Yükle (FreeByte → GB) ve ileride diğer dijital varlıklar. Bu alt menü, ana menüde 3 buton sınırı dolduğu için bakiye ve kod aksiyonlarını toplar.
- Bakiye Sorgula: app API'den anlık FreeByte bakiyesi çekilir
- Kod ile Yükle: uniq kod girilir → FreeByte bakiyesi yüklenir (promosyon kodu havuzu mantığı)