Uygulama içi bildirim
Notifike:Modules:InApp:EnabledKullanıcıyı uygulama UserKey ile söyler. Aynı DedupeKey pencere içinde ikinci kez yazılmaz.
E-posta · SMS · Push bildirim altyapısı
Notifike, ürünlerinin bütün bildirimlerini tek hattan geçirir. Her kanala bir master sağlayıcı ve arkasına yedekler koyarsın. Master hata verince sıradaki devralır, mesaj yoluna devam eder.
Elindeki bütün ürünler e-postayı, SMS'i ve push'u aynı yerden gönderir. Sağlayıcılar panelden yönetilir. Her uygulamanın her kanalına bir rota çizilir: önce master, sonra yedekler. Gece yarısı bir sağlayıcı düşerse kimse kalkıp ayar değiştirmez.
Gönderim hattı
İstek nereden gelirse gelsin aynı kabulden geçer. Doğrulanır, her alıcı için bir mesaj satırı yazılır ve kanalın kendi kuyruğuna 100'lük partiler halinde düşer.
POST notifications/send · X-Api-Keynotifike.send · AppCodeYeni gönderim · JWTKampanya · CSV alıcı listesiHer kapı aynı servisi çağırır, kurallar her yerde aynıdır.
notifike.dispatch.emailnotifike.dispatch.smsnotifike.dispatch.pushFailover, adım adım
uygulama shop · kanal sms · öncelik 9
rota Netgsm → Verimor Yedek → Twilio
Sağlayıcılar
Hesapları panelden eklersin, bağlantıyı tek tıkla test edersin. Bir sağlayıcı arka arkaya hata verirse devre açılır ve rota onu atlar.
Ölçek
Webhook
Mesaj gönderildiğinde, teslim edildiğinde ya da başarısız olduğunda Notifike uygulamanın adresine imzalı bir POST atar. 2xx dönmezse 1, 2, 4 dakika diye açılarak 8 kez dener.
message.sentmessage.deliveredmessage.failedpush.token_unregisteredX-Notifike-Event: message.delivered X-Notifike-Timestamp: 1792668607 X-Notifike-Signature: sha256=9f3c0be17d42…a47d { "id": 81233, "event": "message.delivered", "occurredAt": "2026-10-22T11:30:07Z", "clientApp": "shop", "message": { "channel": "sms", "status": "delivered", "to": "+905321234118", "externalId": "otp-9921", "providerName": "Verimor Yedek", "usedFailover": true } }
Entegrasyon
.NET projeleri Notifike.Contracts paketini kullanır: HTTP istemcisi ya da kuyruk yayıncısı. Diğer her dil düz HTTP ile gönderir.
curl -X POST https://api.notifike.<tld>/api/v1.0/notifications/send \ -H "X-Api-Key: $NOTIFIKE_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel": 2, "templateKey": "otp", "priority": 9, "recipients": [{ "to": "0532 123 41 18", "externalId": "otp-9921", "variables": [{ "key": "code", "value": "482913" }] }] }'
builder.Services.AddNotifikePublisher(o => { o.RabbitMqUri = "amqp://rabbitmq:5672"; o.AppCode = "shop"; }); // herhangi bir serviste await publisher.PublishAsync(new SendNotificationCommand { Channel = NotificationChannel.Sms, TemplateKey = "otp", Priority = NotificationPriority.High, Recipients = [new() { To = "05321234118", ExternalId = "otp-9921" }] });
Her dil için ayrı çeviri, {{degisken}} alanları. E-postada HTML kaçışlı, {{{ham}}} kaçışsız.
ScheduledAt verirsen mesaj o ana kadar bekler, süpürücü vakti gelince yayınlar.
En çok 10 dosya, toplam 10 MB. Aynı dosya ikinci kez gelirse yeniden saklanmaz.
Bounce ve şikâyet eden adresler otomatik engellenir, mesajları Suppressed olur.
Opsiyonel modüller
Uygulama içi bildirim kutusu ve audit log gönderim hattından ayrı çalışır. API ayarından kapatılan modülün uçları 404 döner, panelde menüsü görünmez. Dene:
Notifike:Modules:InApp:EnabledKullanıcıyı uygulama UserKey ile söyler. Aynı DedupeKey pencere içinde ikinci kez yazılmaz.
Notifike:Modules:Audit:EnabledDeğiştirilemez kayıtlar, aylık bölümler. Süresi dolan ay satır satır silinmez, bölüm olarak düşürülür.
Panel girişi
Panel yalnız kurum içi kullanıcılar içindir. Yerel hesap, Active Directory ya da kurumun SSO'su ile girilir. Gruplar rollere eşlenir, rol her girişte senkronlanabilir.
localldapoidcoidcoidcKurulum
cp .env.example .envdocker compose up --build| Panel | localhost:3000 |
| API · Scalar | localhost:5000/api/documentation |
| Dispatcher sağlığı | localhost:5010/health/ready |
| RabbitMQ | localhost:15672 |
| Seq | localhost:5341 |