Talep Otomatik Görevleri

1.6k görüntülenme Markdown

Talepler üzerinde kendiliğinden çalışan kuralları kuran ve yöneten beş uç.

Genel Bakış

Otomatik görevler, talepler üzerinde kendiliğinden çalışan kurallardır. Her görevin iki yarısı vardır: hangi taleplere bakacağını söyleyen koşullar ve onlara ne yapacağını söyleyen sonuçlar.

Koşullar şunlar: departman, durum, öncelik ve bekleme süresi. Sonuçlar ise talebi taşımak, durumunu çevirmek, önceliğini değiştirmek, personele atamak, kilitlemek ve müşteriye yanıt göndermektir. Bir görevde her iki yarıdan da en az bir alan bulunmak zorundadır.

En yaygın kullanımında çözülmüş talepler bir süre sonra kapanır. Yanıt gönderen bir görev kurarken dikkatli olun: kural her uyan talepte müşteriye posta gönderir.

Referans

Görevleri Listeleme

get/api/v1/admin/tickets/auto-tasks
Tickets/GetTicketAutoTasks admin

Talepler üzerinde kendiliğinden çalışan kuralları döndürür.

Dönen alanlar data[] — 14
idintGörevin numarası.
namestringGörevin adı.
departmentsstring[]Koşul: hangi departmanlardaki talepler. Boşsa departman ayırmaz.
statusesstring[]Koşul: hangi durumdaki talepler.
prioritiesint[]Koşul: hangi öncelikteki talepler.
delay_timeintKoşul: talebin ne kadar süredir beklediği.
departmentintSonuç: talebi bu departmana taşır.
statusstringSonuç: durumu buna çevirir.
priorityintSonuç: önceliği buna çeker.
assign_tointSonuç: talebi bu personele atar.
mark_lockedboolSonuç: talebi kilitler.
templatestringSonuç: kullanılacak hazır yanıt.
repeat_actionboolKoşul her sağlandığında yeniden çalışıp çalışmayacağı.
replyobjectSonuç: dil başına gönderilecek yanıt metni.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Her satirda hem KOSUL hem SONUC alanlari yan yana durur; ikisini ayirarak okuyun.
$tasks = Api::Tickets()->GetTicketAutoTasks()['data'];

Görev Oluşturma

post/api/v1/admin/tickets/auto-tasks
Tickets/CreateTicketAutoTask admin koşul + sonuç şart

Talepler üzerinde çalışacak yeni bir kural kurar.

Gövde 13
namestringreqGörevin adı.
departmentsstring[]Koşul: bu departmanlardaki talepler.
statusesstring[]Koşul: bu durumdaki talepler.
prioritiesint[]Koşul: bu öncelikteki talepler.
delay_timeintKoşul: bu kadar süredir bekleyen talepler.
departmentintSonuç: bu departmana taşı.
statusstringSonuç: durumu buna çevir.
priorityintSonuç: önceliği buna çek.
assign_tointSonuç: bu personele ata.
mark_lockedboolSonuç: talebi kilitle.
templatestringSonuç: bu hazır yanıtı kullan.
replyobjectSonuç: dil başına bu metni gönder.
repeat_actionboolKoşul her sağlandığında yeniden çalıştırır.
Dönen alanlar 201 — data
dataobjectOluşan görev. Listedeki öğeyle aynı şekildedir.
Hatalar 4
name_required422Görev adı boş.
trigger_required422Hiç koşul verilmedi.
action_required422Hiç sonuç verilmedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"Cozulenleri kapat","statuses":["solved"],"delay_time":72,"mark_locked":true}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Close solved tickets',
    statuses: ['solved'],      // kosul
    delay_time: 72,            // kosul
    mark_locked: true,         // sonuc
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'name'        => 'Close solved tickets',
        'statuses'    => ['solved'],
        'delay_time'  => 72,
        'mark_locked' => true,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// En az BIR kosul ve en az BIR sonuc gerekir; yalniz kosul gondermek 422 verir.
Api::Tickets()->CreateTicketAutoTask([
    'name'        => 'Close solved tickets',
    'statuses'    => ['solved'],   // kosul
    'delay_time'  => 72,           // kosul
    'mark_locked' => true,         // sonuc
]);

Görev Detayı

get/api/v1/admin/tickets/auto-tasks/{tid}
Tickets/GetTicketAutoTask admin

Tek bir otomatik görevi döndürür.

Dönen alanlar data — 14
idintGörevin numarası.
namestringGörevin adı.
departmentsstring[]Koşul: hangi departmanlardaki talepler. Boşsa departman ayırmaz.
statusesstring[]Koşul: hangi durumdaki talepler.
prioritiesint[]Koşul: hangi öncelikteki talepler.
delay_timeintKoşul: talebin ne kadar süredir beklediği.
departmentintSonuç: talebi bu departmana taşır.
statusstringSonuç: durumu buna çevirir.
priorityintSonuç: önceliği buna çeker.
assign_tointSonuç: talebi bu personele atar.
mark_lockedboolSonuç: talebi kilitler.
templatestringSonuç: kullanılacak hazır yanıt.
repeat_actionboolKoşul her sağlandığında yeniden çalışıp çalışmayacağı.
replyobjectSonuç: dil başına gönderilecek yanıt metni.
Hatalar 2
not_found404Görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/3' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/${tid}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/' . $tid);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bos birakilan kosul alani DARALTMAZ, gorevi genisletir: her departmana uyar.
$task = Api::Tickets()->GetTicketAutoTask(['tid' => $tid])['data'];

Görevi Güncelleme

patch/api/v1/admin/tickets/auto-tasks/{tid}
Tickets/UpdateTicketAutoTask admin

Görevin gönderdiğiniz alanlarını değiştirir.

Gövde 13
namestringreqGörevin adı.
departmentsstring[]Koşul: bu departmanlardaki talepler.
statusesstring[]Koşul: bu durumdaki talepler.
prioritiesint[]Koşul: bu öncelikteki talepler.
delay_timeintKoşul: bu kadar süredir bekleyen talepler.
departmentintSonuç: bu departmana taşı.
statusstringSonuç: durumu buna çevir.
priorityintSonuç: önceliği buna çek.
assign_tointSonuç: bu personele ata.
mark_lockedboolSonuç: talebi kilitle.
templatestringSonuç: bu hazır yanıtı kullan.
replyobjectSonuç: dil başına bu metni gönder.
repeat_actionboolKoşul her sağlandığında yeniden çalıştırır.
Dönen alanlar data — 14
dataobjectGüncel görev. Listedeki öğeyle aynı şekildedir.
Hatalar 5
name_required422Görev adı boşaltıldı.
trigger_required422Sonuçta hiç koşul kalmadı.
action_required422Sonuçta hiç sonuç kalmadı.
not_found404Görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/3' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"delay_time":48}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/${tid}`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ delay_time: 48 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/' . $tid);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['delay_time' => 48]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Kosul+sonuc sarti BIRLESIK kumede aranir: son kosulu bosaltmak guncellemeyi dusurur.
Api::Tickets()->UpdateTicketAutoTask(['tid' => $tid, 'delay_time' => 48]);

Görevi Silme

delete/api/v1/admin/tickets/auto-tasks/{tid}
Tickets/DeleteTicketAutoTask admin

Otomatik görevi kaldırır.

Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
idintSilinen görevin numarası.
Hatalar 2
not_found404Görev bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/3' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/${tid}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/' . $tid);
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 kapatan bir anahtar YOKTUR; durdurmanin tek yolu silmektir.
Api::Tickets()->DeleteTicketAutoTask(['tid' => $tid]);

Tuzaklar

Koşul ve sonuç birlikte gerekir

Bir görev en az bir koşul ve en az bir sonuç taşımak zorundadır. Yalnız koşul göndermek kural değil, hiçbir şey yapmayan bir eşleşme verir; yalnız sonuç göndermek ise her talebe uygulanan bir kural olurdu. İkisinden biri eksikse çağrı reddedilir.

Boş koşul daraltmaz, genişletir

Boş bırakılan bir koşul alanı ayrım yapmaz: departman listesi boşsa görev her departmandaki talebe uyar. Bunu "hiçbiri" diye okumak, kurulumun tamamına dokunan bir kural yazmaya götürür. Kapsamı daraltmak için alanı boş bırakmayın, doldurun.

Yanıt sonucu gerçekten posta gönderir

Yanıt alanı dolu bir görev, koşula uyan her talebe o metni yazar ve müşteriye posta gider. Geniş bir koşulla birleşince bu, tek bir kural değişikliğinin yüzlerce müşteriye aynı anda ulaşması demektir. Yeni bir yanıt kuralını önce dar bir koşulla deneyin.

Tekrar seçeneği kuralı sürekli hâle getirir

Tekrar açıkken görev, koşul her sağlandığında yeniden çalışır. Yanıt gönderen bir kuralda bu, aynı müşteriye aynı metnin defalarca gitmesi anlamına gelebilir. Tek seferlik olması gereken işlerde tekrarı kapalı bırakın.

Görevi geçici olarak kapatamazsınız

Otomatik görevlerde etkinlik anahtarı yoktur; bir kuralı durdurmanın tek yolu onu silmektir. Geçici olarak durdurmanız gerekiyorsa tanımını kendi tarafınıza kaydedin, silin ve sonra yeniden oluşturun. Yeniden oluşturulan görev yeni bir numara alır.

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.