Toplu Şablonlar

8 görüntülenme Markdown

Yeniden kullanılacak toplu bildirim kampanyalarını yöneten altı uç.

Genel Bakış

Toplu şablon, bir kampanyanın kaydedilmiş hâlidir: mesaj, konu, kanal ve hedef kitle süzgeçleri bir arada durur. Aynı duyuruyu her seferinde yeniden kurmak yerine bir kez yazıp saklarsınız.

Şablon kendi başına bir şey göndermez. Gönderim ayrı bir uçtan yapılır; şablonu düzenli aralıklarla göndermek isterseniz zamanlanmış görevlerin işidir.

Referans

Şablonları Listeleme

get/api/v1/admin/tools/bulk/templates
Tools/GetBulkTemplates admin sayfalı

Kaydedilmiş toplu bildirim kampanyalarını döndürür.

Sorgu parametreleri 4
template_typestringKanala göre süzer.
pageintVarsayılan 1.
limitintVarsayılan 25, en çok 100.
searchstringŞablonlarda arar.
Dönen alanlar data[] — 10
idintŞablonun kimliği.
template_namestringŞablonun adı. Yalnız sizin için; müşteri görmez.
template_typestringKanal: mail ya da sms.
typestringAlıcı türü: member müşteriler, staff personel.
subjectstringMesajın konusu.
submission_typestringZarf biçimi: single herkese ayrı, multiple tek zarfta.
newsletterstringBülten anahtarı. Doluysa süzgeçler yerine bülten listesi kullanılır.
created_atstring | nullOluşturulma zamanı.
updated_atstring | nullSon değişiklik zamanı.
last_sentstring | nullEn son ne zaman gönderildiği.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -G 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates' \
  -H "Authorization: Bearer $API_KEY" \
  -d template_type=mail
const url = new URL('https://panel.ornek.com/api/v1/admin/tools/bulk/templates');
url.searchParams.set('template_type', 'mail');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
$url = 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates?' . http_build_query(['template_type' => '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);
// Liste mesaj govdesini ve suzgecleri TASIMAZ; onlar yalniz detayda gelir.
$templates = Api::Tools()->GetBulkTemplates([], ['template_type' => 'mail'])['data'];

Şablon Detayı

get/api/v1/admin/tools/bulk/templates/{id}
Tools/GetBulkTemplate admin süzgeçler burada

Bir kampanyayı mesajı ve hedef kitle süzgeçleriyle birlikte döndürür.

Dönen alanlar data — 24
idintŞablonun kimliği.
template_namestringŞablonun adı. Yalnız sizin için; müşteri görmez.
template_typestringKanal: mail ya da sms.
typestringAlıcı türü: member müşteriler, staff personel.
subjectstringMesajın konusu.
submission_typestringZarf biçimi: single herkese ayrı, multiple tek zarfta.
newsletterstringBülten anahtarı. Doluysa süzgeçler yerine bülten listesi kullanılır.
created_atstring | nullOluşturulma zamanı.
updated_atstring | nullSon değişiklik zamanı.
last_sentstring | nullEn son ne zaman gönderildiği.
messagestringMesaj gövdesi.
ccstringBilgi olarak eklenecek adresler.
without_productsintHiç ürünü olmayan müşterileri hedefler.
birthday_marketingintDoğum günü olan müşterileri hedefler.
auto_submissionintŞablonun zamanlanmış görevle kendiliğinden gönderilip gönderilmediği.
user_groupsarrayMüşteri grubu süzgeci.
departmentsarrayDepartman süzgeci.
countriesarrayÜlke süzgeci.
languagesarrayDil süzgeci.
servicesarrayÜrün süzgeci.
serversarraySunucu süzgeci.
addonsarrayEk hizmet süzgeci.
services_statusarrayHizmet durumu süzgeci.
client_statusarrayMüşteri durumu süzgeci.
Hatalar 3
invalid_id422Kimlik geçerli değil.
not_found404Şablon bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sablonun kac kisiye gidecegini gormek icin suzgeclerini sayma ucuna verin.
$tpl   = Api::Tools()->GetBulkTemplate(['id' => 5])['data'];
$count = Api::Tools()->GetBulkContacts([
    'user_type'   => $tpl['type'] === 'staff' ? 'staff' : 'client',
    'user_groups' => $tpl['user_groups'],
    'countries'   => $tpl['countries'],
])['data']['count'];

Şablon Oluşturma

post/api/v1/admin/tools/bulk/templates
Tools/CreateBulkTemplate admin 201

Yeniden kullanılacak bir kampanya kaydeder. Kaydetmek gönderim yapmaz.

Gövde 11
template_namestringzorunluŞablonun adı.
messagestringzorunluMesaj gövdesi.
subjectstringMesajın konusu. E-postada zorunlu.
template_typestringKanal. Varsayılan e-posta.
typestringAlıcı türü. Müşteri için gönderdiğiniz değer neyse member olarak kaydedilir.
submission_typestringZarf biçimi.
newsletterstringBülten anahtarı.
ccstringBilgi olarak eklenecek adresler.
without_productsintHiç ürünü olmayan müşterileri hedefler.
birthday_marketingintDoğum günü olan müşterileri hedefler.
*arrayDokuz süzgeç dizisi: gruplar, departmanlar, ülkeler, diller, ürünler, sunucular, ek hizmetler, hizmet durumu ve müşteri durumu.
Dönen alanlar data — 24
dataobjectKaydedilen kampanya; süzgeç dizileri çözülmüş gelir. Detay ucuyla aynı şekildedir. Göndermek için yeni kimliği gönderim ucuna verin ya da bir zamanlama tanımlayın.
Hatalar 4
template_name_required422Şablon adı boş.
subject_required422E-postada konu boş.
body_required422Mesaj gövdesi boş.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"template_name":"Welcome Campaign","template_type":"mail","type":"member","subject":"Welcome","message":"Hello!","user_groups":[1]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/templates', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    template_name: 'Welcome Campaign',
    template_type: 'mail',
    type: 'member',
    subject: 'Welcome',
    message: 'Hello!',
    user_groups: [1],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/templates');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'template_name' => 'Welcome Campaign',
        'subject'       => 'Welcome',
        'message'       => $html,
        'user_groups'   => [1],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sablon kaydetmek MESAJ GONDERMEZ: gondermek icin toplu gonderim ucunu ayrica cagirin.
$tpl = Api::Tools()->CreateBulkTemplate([
    'template_name' => 'Welcome Campaign',
    'subject'       => 'Welcome',
    'message'       => $html,
    'user_groups'   => [1],
])['data'];

Şablonu Güncelleme

patch/api/v1/admin/tools/bulk/templates/{id}
Tools/UpdateBulkTemplate admin

Gönderdiğiniz alanları uygular; ad, mesaj ve konu boş bırakılamaz.

Gövde 11
template_namestringzorunluŞablonun adı.
messagestringzorunluMesaj gövdesi.
subjectstringMesajın konusu. E-postada zorunlu.
template_typestringKanal. Varsayılan e-posta.
typestringAlıcı türü. Müşteri için gönderdiğiniz değer neyse member olarak kaydedilir.
submission_typestringZarf biçimi.
newsletterstringBülten anahtarı.
ccstringBilgi olarak eklenecek adresler.
without_productsintHiç ürünü olmayan müşterileri hedefler.
birthday_marketingintDoğum günü olan müşterileri hedefler.
*arrayDokuz süzgeç dizisi: gruplar, departmanlar, ülkeler, diller, ürünler, sunucular, ek hizmetler, hizmet durumu ve müşteri durumu.
Dönen alanlar data — 24
dataobjectGüncel kampanya; süzgeç dizileri çözülmüş gelir. Detay ucuyla aynı şekildedir.
Hatalar 5
not_found404Şablon bulunamadı.
template_name_required422Gönderilen ad boş.
subject_required422Gönderilen konu boş.
body_required422Gönderilen mesaj boş.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"subject":"Welcome (updated)","message":"Hi there!"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    subject: 'Welcome (updated)',
    message: 'Hi there!',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'subject' => 'Welcome (updated)',
        'message' => $html,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sablona bagli zamanlanmis bir gorev varsa degisiklik SONRAKI kosuda gecerli olur.
Api::Tools()->UpdateBulkTemplate([
    'id'      => 5,
    'subject' => 'Welcome (updated)',
]);

Şablonu Silme

delete/api/v1/admin/tools/bulk/templates/{id}
Tools/DeleteBulkTemplate admin kayıtları da gider

Kampanyayı ve ona ait gönderim kayıtlarını siler.

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

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/5');
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);
// Silme kampanyanin GONDERIM GECMISINI de kaldirir; ne zaman kime gittigi kaybolur.
Api::Tools()->DeleteBulkTemplate(['id' => 5]);

Toplu Silme

post/api/v1/admin/tools/bulk/templates/bulk-delete
Tools/BulkDeleteBulkTemplates admin panel şifre ister

Birden çok kampanyayı siler.

Gövde 1
idsint[]zorunluSilinecek şablonların kimlikleri.
Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
countintSilinen şablon sayısı.
Hatalar 2
ids_required422Hiç kimlik verilmedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/bulk/templates/bulk-delete' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ids":[5,6,7]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/bulk-delete', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ ids: [5, 6, 7] }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/bulk/templates/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' => [5, 6, 7]]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Panel bu islemde yonetici sifresi ister; API'de anahtarin kapsami yeterlidir.
Api::Tools()->BulkDeleteBulkTemplates(['ids' => [5, 6, 7]]);

Tuzaklar

Kaydetmek göndermek değildir

Şablon oluşturmak ya da güncellemek hiçbir mesaj göndermez; yalnız kaydı yazar. Kampanyayı yollamak için toplu gönderim ucunu ayrıca çağırmanız, düzenli göndermek içinse bir zamanlanmış görev tanımlamanız gerekir.

Süzgeçler listede yoktur

Liste ucu mesaj gövdesini ve dokuz süzgeç dizisini döndürmez; onlar yalnız tek şablon detayında gelir. Bir kampanyanın kime gideceğini görmek istiyorsanız detayı okuyup süzgeçlerini sayma ucuna vermeniz gerekir.

Silmek gönderim geçmişini de alır

Bir şablonu silmek yalnız kampanyayı değil, ona ait gönderim kayıtlarını da kaldırır. Hangi duyurunun ne zaman kime gittiği bilgisi kaybolur. Kampanyayı kullanmayı bırakacaksanız silmek yerine bir kenarda tutmayı düşünün.

Değişiklik bir sonraki koşuda geçerli olur

Bir şablona bağlı zamanlanmış görev varsa, şablonu güncellemek o an bir şey göndermez; yeni metin bir sonraki koşuda kullanılır. Yani yanlış bir metni düzeltmek, çoktan gitmiş gönderimleri geri getirmez.

Panel şifre ister, API kapsam

Toplu silme panelde yönetici şifresi ister. API'de böyle bir ikinci adım yoktur: anahtarın kapsamı yeterlidir. Bu ucu açtığınız anahtarın kimlerde olduğunu bilerek verin.

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.