Zamanlanmış Toplu Görevler

1.6k görüntülenme Markdown

Kayıtlı kampanyaları belirlenen zamanda kendiliğinden gönderen altı uç.

Genel Bakış

Zamanlanmış görev, kayıtlı bir kampanyayı belirlediğiniz zamanda kendiliğinden gönderir. Görev zamanlamayı tutar, mesajı değil: metin ve hedef kitle şablonda durur.

İki desen vardır. Tek seferlik görev bir tarihte çalışır ve biter. Tekrarlayan görev ay, gün ve saatten kurulur; bir parçayı boş bırakmak "her" demektir, yani ay boşken gün bir vermek her ayın ilk günü anlamına gelir.

Referans

Görevleri Listeleme

get/api/v1/admin/tools/bulk/scheduled-tasks
Tools/GetBulkScheduledTasks admin sayfalı

Kendiliğinden gönderilecek toplu bildirimlerin planını döndürür.

Sorgu parametreleri 3
pageintVarsayılan 1.
limitintVarsayılan 25, en çok 100.
searchstringGörevlerde arar.
Dönen alanlar data[] — 12
idintGörevin kimliği.
template_namestringGönderilecek kampanyanın adı.
template_typestringKanal: mail ya da sms.
statusstringactive çalışıyor, paused durdurulmuş.
periodstringonetime bir kez, recurring tekrarlayan.
period_datetimestring | nullTek seferlik görevin zamanı.
period_monthint | nullTekrarlayan görevin ayı.
period_dayint | nullTekrarlayan görevin günü.
period_hourint | nullTekrarlayan görevin saati.
period_minuteint | nullTekrarlayan görevin dakikası.
created_atstring | nullOluşturulma zamanı.
last_execstring | nullEn son ne zaman çalıştığı. Boşsa hiç çalışmamıştır.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bos son-calisma zamani gorevin HIC calismadigini soyler; duraklatilmis olabilir.
$tasks = Api::Tools()->GetBulkScheduledTasks()['data'];

$never = array_filter($tasks, fn (array $t): bool => $t['last_exec'] === null);

Görev Oluşturma

post/api/v1/admin/tools/bulk/scheduled-tasks
Tools/CreateBulkScheduledTask admin 201

Var olan bir kampanyayı belirlediğiniz zamanda kendiliğinden gönderecek görev açar.

Gövde 6
template_idintzorunluGönderilecek kampanyanın kimliği. Kampanya kendiliğinden gönderim için işaretlenmemiş olmalı.
schedule_periodstringonetime ya da recurring. Varsayılan tek seferlik.
sending_timestringGönderim zamanı. Tek seferlikte zorunlu.
period_monthintTekrarlayan görevin ayı.
period_dayintTekrarlayan görevin günü.
period_timestringTekrarlayan görevin saati.
Dönen alanlar data — 12
idintGörevin kimliği.
template_namestringGönderilecek kampanyanın adı.
template_typestringKanal: mail ya da sms.
statusstringactive çalışıyor, paused durdurulmuş.
periodstringonetime bir kez, recurring tekrarlayan.
period_datetimestring | nullTek seferlik görevin zamanı.
period_monthint | nullTekrarlayan görevin ayı.
period_dayint | nullTekrarlayan görevin günü.
period_hourint | nullTekrarlayan görevin saati.
period_minuteint | nullTekrarlayan görevin dakikası.
created_atstring | nullOluşturulma zamanı.
last_execstring | nullEn son ne zaman çalıştığı. Boşsa hiç çalışmamıştır.
Hatalar 4
template_required422Kampanya verilmedi.
not_found404Kaynak kampanya bulunamadı.
schedule_required422Zamanlama verilmedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"template_id":5,"schedule_period":"onetime","sending_time":"2026-02-15 10:00:00"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    template_id: 5,
    schedule_period: 'onetime',
    sending_time: '2026-02-15 10:00:00',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'template_id'     => 5,
        'schedule_period' => 'onetime',
        'sending_time'    => '2026-02-15 10:00:00',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Her ayin ilk gunu 08:00: gun 1, ay bos (her ay).
Api::Tools()->CreateBulkScheduledTask([
    'template_id'     => 5,
    'schedule_period' => 'recurring',
    'period_day'      => 1,
    'period_time'     => '08:00',
]);

Zamanlamayı Değiştirme

patch/api/v1/admin/tools/bulk/scheduled-tasks/{id}
Tools/UpdateBulkScheduledTask admin yalnız zamanlama

Görevin ne zaman çalışacağını değiştirir. Kampanyanın kendisi değişmez.

Gövde 5
schedule_periodstringonetime ya da recurring. Varsayılan tek seferlik.
sending_timestringGönderim zamanı. Tek seferlikte zorunlu.
period_monthintTekrarlayan görevin ayı.
period_dayintTekrarlayan görevin günü.
period_timestringTekrarlayan görevin saati.
Dönen alanlar data — 12
idintGörevin kimliği.
template_namestringGönderilecek kampanyanın adı.
template_typestringKanal: mail ya da sms.
statusstringactive çalışıyor, paused durdurulmuş.
periodstringonetime bir kez, recurring tekrarlayan.
period_datetimestring | nullTek seferlik görevin zamanı.
period_monthint | nullTekrarlayan görevin ayı.
period_dayint | nullTekrarlayan görevin günü.
period_hourint | nullTekrarlayan görevin saati.
period_minuteint | nullTekrarlayan görevin dakikası.
created_atstring | nullOluşturulma zamanı.
last_execstring | nullEn son ne zaman çalıştığı. Boşsa hiç çalışmamıştır.
Hatalar 3
not_found404Zamanlanmış görev bulunamadı.
schedule_required422Zamanlama verilmedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"schedule_period":"recurring","period_day":1,"period_time":"08:00"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    schedule_period: 'recurring',
    period_day: 1,
    period_time: '08:00',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'schedule_period' => 'recurring',
        'period_day'      => 1,
        'period_time'     => '08:00',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Mesaji degistirmek icin bu uc DEGIL, sablon guncelleme ucu kullanilir.
Api::Tools()->UpdateBulkTemplate(['id' => 5, 'subject' => 'Updated']);
Api::Tools()->UpdateBulkScheduledTask(['id' => 3, 'period_time' => '09:00']);

Görevi Duraklatma

post/api/v1/admin/tools/bulk/scheduled-tasks/{id}/pause
Tools/PauseBulkScheduledTask admin

Görevi durdurur. Plan durur ama silinmez.

Gövde —
——Gövde gerekmez, boş gönderin. Görevi adresteki kimlik belirler.
Dönen alanlar data — 12
idintGörevin kimliği.
template_namestringGönderilecek kampanyanın adı.
template_typestringKanal: mail ya da sms.
statusstringactive çalışıyor, paused durdurulmuş.
periodstringonetime bir kez, recurring tekrarlayan.
period_datetimestring | nullTek seferlik görevin zamanı.
period_monthint | nullTekrarlayan görevin ayı.
period_dayint | nullTekrarlayan görevin günü.
period_hourint | nullTekrarlayan görevin saati.
period_minuteint | nullTekrarlayan görevin dakikası.
created_atstring | nullOluşturulma zamanı.
last_execstring | nullEn son ne zaman çalıştığı. Boşsa hiç çalışmamıştır.
Hatalar 2
not_found404Zamanlanmış görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/pause' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/pause', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/pause');
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);
// Duraklatmak KUYRUKTAKI bildirimleri durdurmaz: gonderim baslamissa kuyruktan silmeniz gerekir.
Api::Tools()->PauseBulkScheduledTask(['id' => 3]);

Görevi Sürdürme

post/api/v1/admin/tools/bulk/scheduled-tasks/{id}/resume
Tools/ResumeBulkScheduledTask admin geçmiş zaman kaçırılır

Duraklatılmış görevi yeniden çalışır hâle getirir.

Gövde —
——Gövde gerekmez, boş gönderin. Görevi adresteki kimlik belirler.
Dönen alanlar data — 12
idintGörevin kimliği.
template_namestringGönderilecek kampanyanın adı.
template_typestringKanal: mail ya da sms.
statusstringactive çalışıyor, paused durdurulmuş.
periodstringonetime bir kez, recurring tekrarlayan.
period_datetimestring | nullTek seferlik görevin zamanı.
period_monthint | nullTekrarlayan görevin ayı.
period_dayint | nullTekrarlayan görevin günü.
period_hourint | nullTekrarlayan görevin saati.
period_minuteint | nullTekrarlayan görevin dakikası.
created_atstring | nullOluşturulma zamanı.
last_execstring | nullEn son ne zaman çalıştığı. Boşsa hiç çalışmamıştır.
Hatalar 2
not_found404Zamanlanmış görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/resume' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/resume', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3/resume');
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);
// Zamani gecmis tek seferlik gorev surdurulunce calismaz: once zamanlamayi ileri alin.
$task = Api::Tools()->ResumeBulkScheduledTask(['id' => 3])['data'];

if ($task['period'] === 'onetime' && $task['period_datetime'] < $now) {
    Api::Tools()->UpdateBulkScheduledTask([
        'id'           => 3,
        'sending_time' => $tomorrow,
    ]);
}

Görevi Silme

delete/api/v1/admin/tools/bulk/scheduled-tasks/{id}
Tools/DeleteBulkScheduledTask admin kayıtları da gider

Zamanlanmış görevi ve ona ait koşu kayıtlarını siler. Kampanya kalır.

Dönen alanlar data — 2
deletedboolSilme başarılı mı.
idintSilinen görevin kimliği.
Hatalar 2
not_found404Zamanlanmış görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/scheduled-tasks/3');
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);
// Gorevi silmek KAMPANYAYI silmez: sablon yerinde kalir ve elle gonderilebilir.
Api::Tools()->DeleteBulkScheduledTask(['id' => 3]);

Tuzaklar

Zamanı geçmiş görev sürdürülünce çalışmaz

Tek seferlik bir görevi duraklatıp gönderim zamanı geçtikten sonra sürdürürseniz görev çalışmaz: geçmiş bir zaman bir daha gelmez ve bunu size kimse söylemez. Sürdürmeden önce zamanı ileri almanız gerekir.

Görev mesajı tutmaz

Bu uçlar yalnız zamanlamayı değiştirir. Metni, konuyu ya da hedef kitleyi düzeltmek için şablon uçlarına gitmeniz gerekir; oradaki değişiklik de bir sonraki koşuda geçerli olur.

Duraklatmak gitmiş bildirimi durdurmaz

Duraklatma yalnız sonraki koşuları engeller. Görev az önce çalıştıysa bildirimler kuyruğa alınmıştır ve gitmeye devam eder; onları durdurmanın yolu bildirim kuyruğundaki bekleyen satırları silmektir.

Kampanya kendiliğinden gönderim için işaretli olmamalı

Görev oluşturma, kaynak kampanyanın kendiliğinden gönderim için işaretli olmamasını ister. Aksi hâlde aynı duyuru iki yoldan birden gidebilir. Kampanyanın bu durumunu şablon detayından okuyabilirsiniz.

Boş bırakmak "her" demektir

Tekrarlayan bir görevde ay ya da gün boş bırakılırsa o parça her değer için geçerli sayılır. Yalnız saat verip günü unutmak, duyurunun her gün gitmesine yol açar; oluşturduktan sonra listeden okuyup deseni doğrulayın.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.