Bildirim Kuyruğu
Gönderilmeyi bekleyen e-posta ve mesajları izleyen, kurtaran ve temizleyen dokuz uç.
Genel Bakış
E-posta ve kısa mesajlar doğrudan gönderilmez; önce kuyruğa alınır ve arka planda sırayla işlenir. Bu dokuz uç o kuyruğu izler, takılanları kurtarır ve birikeni temizler.
Mesajın kendisi şifreli saklanır ve hiçbir uçtan dönmez: burada konu, alıcı ve durum vardır. Gönderilmiş bir metni okumak istiyorsanız yeri kayıt defterleridir.
Yapı modül kuyruğuyla neredeyse aynıdır ama iki uçta ayrılır: burada yeniden deneme bekleyen öğeleri de kabul eder, hemen gönderme ise yalnız bekleyenleri.
Referans
Kuyruğu Listeleme
Gönderilmeyi bekleyen e-posta ve kısa mesajları döndürür.
mail ya da sms.90 → +90 5551112233). E-postada ve + önekini kendisi taşıyan numarada boştur.pending sırada, processing gönderiliyor, sent gitti, failed düştü, cancelled gönderilmeden durduruldu (sebebi işlem günlüğünde).curl -G 'https://panel.ornek.com/api/v1/admin/tools/notification-queue' \
-H "Authorization: Bearer $API_KEY" \
-d status=failed \
-d channel=mailconst url = new URL('https://panel.ornek.com/api/v1/admin/tools/notification-queue');
url.searchParams.set('status', 'failed');
url.searchParams.set('channel', 'mail');
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();$url = 'https://panel.ornek.com/api/v1/admin/tools/notification-queue?' . http_build_query([
'status' => 'failed',
'channel' => 'mail',
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Mesajin kendisi hicbir uctan DONMEZ; konu ve alici disinda icerik gormezsiniz.
$failed = Api::Tools()->GetNotificationQueue([], ['status' => 'failed'])['data'];Kuyruk Sayaçları
Bekleyen ve gitmiş bildirimlerin sayısını döndürür.
curl 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/stats' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/stats', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/stats');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bekleyen sayisinin surekli buyumesi gonderim hattinin durdugunu gosterir.
$stats = Api::Tools()->GetNotificationQueueStats()['data'];Öğe Detayı
Tek bir bildirimi, gönderim denemelerinin kaydıyla birlikte döndürür.
mail ya da sms.90 → +90 5551112233). E-postada ve + önekini kendisi taşıyan numarada boştur.pending sırada, processing gönderiliyor, sent gitti, failed düştü, cancelled gönderilmeden durduruldu (sebebi işlem günlüğünde).curl 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/201' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Detay bile mesaj govdesini TASIMAZ: gonderilmis bir metni gormek icin kayit defterine bakin.
$item = Api::Tools()->GetNotificationQueueItem(['id' => 201])['data'];
$why = end($item['process_logs']);Öğeyi Yeniden Deneme
Bir bildirimi tekrar gönderim sırasına alır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/retry' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/retry', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/retry');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yeniden deneme BEKLEYEN ogeleri de kabul eder; bu, sirasini one almanin yoludur.
Api::Tools()->RetryNotificationQueueItem(['id' => 201]);Öğeyi Hemen Gönderme
Bildirimi arka planı beklemeden o anda gönderir ve sonucunu döndürür.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/run' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/run', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201/run');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Dusmus bir bildirim dogrudan gonderilemez: once yeniden denemeye alin, sonra calistirin.
Api::Tools()->RetryNotificationQueueItem(['id' => 201]);
$result = Api::Tools()->RunNotificationQueueItem(['id' => 201])['data'];
if (!$result['task_success']) {
$why = $result['task_message'];
}Öğeyi Silme
Bir bildirimi kuyruktan çıkarır. Gönderilmemiş bildirim hiç gitmez.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/201' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201', {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/201');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Gonderilmekte olan bir bildirim SILINEMEZ; islem bitene kadar bekleyin.
Api::Tools()->DeleteNotificationQueueItem(['id' => 201]);Toplu Silme
Birden çok bildirimi kuyruktan çıkarır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/bulk-delete' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":[201,202]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/bulk-delete', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ ids: [201, 202] }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/bulk-delete');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['ids' => [201, 202]]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Gonderilmekte olanlar sessizce atlanir: silinen sayiyi gonderdiginizle karsilastirin.
$ids = [201, 202];
$response = Api::Tools()->BulkDeleteNotificationQueue(['ids' => $ids]);
$skipped = count($ids) - $response['data']['count'];Tüm Düşenleri Yeniden Deneme
Kuyruktaki bütün düşmüş bildirimleri tekrar sıraya alır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/retry-all-failed' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/retry-all-failed', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/retry-all-failed');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Modul kuyrugunun aksine bu uc SAYIYI dondurur.
$count = Api::Tools()->RetryAllFailedNotificationQueue()['data']['retried'];Gönderilenleri Temizleme
Gönderilmiş bildirimleri kuyruktan siler.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/notification-queue/clear-sent' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/notification-queue/clear-sent', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/notification-queue/clear-sent');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kuyrugu temizlemek GONDERIM KAYDINI silmez: ne gonderildigi kayit defterinde durur.
Api::Tools()->ClearSentNotificationQueue();Tuzaklar
Kuyruk uçları konu, alıcı ve durumu verir; gövde şifreli saklanır ve detayda bile yer almaz. Bir müşteriye ne gönderildiğini görmek istiyorsanız kuyruğa değil, kayıt defterlerine bakmanız gerekir.
Yeniden deneme hem düşmüş hem bekleyen bildirimleri alır; hemen gönderme ise yalnız bekleyenleri. Yani düşmüş bir bildirimi hemen göndermek isterseniz önce yeniden denemeye alıp sonra çalıştırmanız gerekir. Tek adım denemek not_pending ile döner.
Şu an gönderilen bir bildirim silinemez ve toplu silmede sessizce atlanır. Gönderdiğiniz kimlik sayısıyla dönen sayının farkı, atlanan öğeleri gösterir; farkı kontrol etmezseniz sildiğinizi sandığınız bildirim yola çıkmış olabilir.
Bildirim kuyruğunda tüm düşenleri yeniden deneme ucu kaç bildirimin sıraya alındığını döndürür; modül kuyruğunun aynı ucu döndürmez. İki kuyruk için ortak bir yardımcı yazıyorsanız bu farkı gözetin.
Gönderilenleri temizlemek yalnız kuyruk satırlarını kaldırır. Neyin gönderildiği kayıt defterlerinde durmaya devam eder, yani geçmişi kaybetmezsiniz. İki yeri karıştırmak, silinmemiş bir veriyi silinmiş sanmaya yol açar.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.