İçeriğe geç

Telegram, Discord, Slack, Teams, webhook ve e-posta

Bildirimler cihazlara gittiği gibi kanallara da gider. İki tür kanal var:

  • Proje kanalı: Panelde projeni aç → Kanallar. Projenin her bildirimi buraya da gelir; Tüm projeler seçilirse workspace’teki her projenin bildirimi gelir. Ekibin Slack kanalı, bir Discord sunucusu, bir Telegram grubu ya da kendi sistemin için. Her proje kanalı kotada bir alıcı sayılır.
  • Kişisel kanal: Panelde Hesap → Kişisel kanallar ya da uygulamada Ayarlar → Kanallar. Senin aldığın her bildirim (kendi projelerin, abone olduğun projeler, gruplar) buraya da gelir. Telegram sohbetin ya da e-postan olabilir. Kotadan ayrıca düşmez.

Her kanalda süzgeç var: Tipler (sadece seçilen bildirim tipleri) ve En düşük öncelik (ör. sadece yüksek ve acil). Deneme gönder kanala örnek bildirim atar, kotadan düşmez.

Kanal kalıcı bir hata alırsa kapanır ve nedeni panelde görünür: Discord webhook’u silinmiş, bot gruptan çıkarılmış, Slack uygulaması kaldırılmış ya da e-posta adresi geri dönmüş olabilir. Sorunu giderip kanalı yeniden açabilirsin. Geçici hatalarda (servis yavaş, hız sınırı) bildirim tekrar denenir. Uçtan uca şifreli bildirimler kanallara gitmez; içeriği sadece cihazların çözebilir.

Kanal ekle → Telegram ve nereye gideceğini seç:

Seçim Ne yaparsın
Benim sohbetim Linki aç ya da QR kodu telefonla okut, Başlat’a dokun.
Grup Linki aç, grubu seç, botu ekle.
Kanal Linki açıp botu kanala yönetici olarak ekle, sonra panelde gösterilen /start … mesajını kanala gönder. Bot bağlanınca bu mesajı siler.

Bağlantı linki bir saat geçerli. Bağlanınca kanal Açık olur. Sohbette /stop yazmak bildirimleri durdurur.

Bildirimler başlık, metin, görsel ve link butonuyla gelir. Düşük öncelikli bildirimler sessiz gelir. Acil bildirimde ✅ Gördüm butonu çıkar: dokunan kişi bildirimi onaylar, cihazlardaki alarm durur.

Kendi botun: Bildirimlerin kendi botunun adı ve resmiyle gelmesini istersen @BotFather’da /newbot ile bot oluştur ve token’ı Kendi botumu kullan alanına yapıştır. PushBell botun webhook’unu kendi adresine çevirir; bot başka bir yerde webhook ya da getUpdates ile kullanılıyorsa o kullanım çalışmaz. Kanal silinince webhook kaldırılır.

  1. Discord’da kanal ayarları → Entegrasyonlar → Webhook’lar → Yeni webhook.
  2. Webhook URL’sini kopyala ve PushBell’de Kanal ekle → Discord alanına yapıştır.

Her mesaj projenin adı ve logosuyla, renkli bir kart olarak gelir. Metindeki @everyone ya da @here kimseyi çağırmaz. Acil bildirimde karttaki Gördüm linki onay sayfasını açar.

  • Slack’e ekle: Slack’te kanalı seçersin. Bildirimler projenin adı ve logosuyla gelir. Acil bildirimler mesajdaki Gördüm butonuyla Slack’ten onaylanır.
  • Webhook adresi: Kendi Slack uygulamanın Incoming Webhook adresini (https://hooks.slack.com/services/…) yapıştır. Mesajlar uygulamanın adıyla gelir, acil onayı linkle olur.
  1. Teams’te kanalın ⋯ menüsü → Workflows.
  2. Send webhook alerts to a channel şablonunu seç, kaydet ve adresi kopyala.
  3. Kanal ekle → Microsoft Teams alanına yapıştır.

Mesajlar Adaptive Card olarak gelir. Teams Workflows butonla geri bildirim almayı desteklemiyor; acil onayı karttaki Gördüm butonuyla açılan sayfadadır. Mesaj Workflows botu adına gelir. Akış onu kuran kişiye bağlıdır; o kişi ayrılırsa akışa ortak sahip eklenmelidir.

Her bildirim verdiğin adrese POST ile JSON olarak gider:

{
"event": "notification",
"target": { "id": "…", "name": "ERP" },
"notification": {
"id": "0199f…", "project_id": "…", "project": "Mağaza",
"type": "order", "type_name": "Sipariş",
"title": "Yeni sipariş #1042", "message": "1.250 TL", "html": false, "monospace": false,
"url": "https://ornek.com/siparis/1042", "url_title": "Siparişi aç",
"priority": 0, "timestamp": 1793000000
}
}

Acil bildirimde receipt ve ack_url (onay sayfası) da gelir. Paneldeki Deneme gönder "event": "test" gönderir.

Başlıklar:

  • PushBell-Signature: t=<unix>,v1=<imza>: <t>.<gövde> metninin, kanal oluşturulurken bir kez gösterilen sırla HMAC-SHA256’sı (onaltılık). Beş dakikadan eski zamanı reddet.
  • PushBell-Delivery: tekrar denemelerde aynı kalır; aynı teslimi iki kez işlememek için kullan.
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(header, body, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = createHmac("sha256", secret).update(`${t}.${body}`).digest("hex");
return timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}

2xx yanıt teslim sayılır. 410 kanalı kapatır; diğer hatalar artan aralıklarla tekrar denenir.

Adresi ekleyince adrese bir onay e-postası gider; linke tıklanıp onaylanınca bildirimler gelmeye başlar. E-postalar gönderen adı olarak projenin adını taşır. Her e-postada tek tıkla çıkma linki vardır (e-posta uygulamalarının Abonelikten çık düğmesi de bu linki kullanır). Çıkan adres panelden açılamaz, yeniden onay ister. Geri dönen ya da spam bildirilen adreslere gönderim durur.

Aylık giden e-posta sayısı pakete göre sınırlıdır (Paket sayfasında görünür). Sınır dolunca e-postalar atlanır, diğer kanallar gitmeye devam eder.

Giden webhook her pakette var. Telegram, Discord ve Slack Starter’dan; Teams ve e-posta Pro’dan itibaren. Kanal sayısı da pakete göre sınırlıdır.