# Talep Otomatik Görevleri

https://dev.wisecp.com/tr/talep-otomatik-gorevleri

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 JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tickets/auto-tasks', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
```

```php
$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);
```

```php
// 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_timeint**Koşul**: bu kadar süredir bekleyen talepler.

departmentint**Sonuç**: bu departmana taşı.

statusstring**Sonuç**: durumu buna çevir.

priorityint**Sonuç**: önceliği buna çek.

assign_toint**Sonuç**: bu personele ata.

mark_lockedbool**Sonuç**: talebi kilitle.

templatestring**Sonuç**: bu hazır yanıtı kullan.

replyobject**Sonuç**: 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 JavaScript PHP (HTTP) PHP (Dahili)

```bash
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}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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 JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/3' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch(`https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/${tid}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
```

```php
$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);
```

```php
// 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_timeint**Koşul**: bu kadar süredir bekleyen talepler.

departmentint**Sonuç**: bu departmana taşı.

statusstring**Sonuç**: durumu buna çevir.

priorityint**Sonuç**: önceliği buna çek.

assign_toint**Sonuç**: bu personele ata.

mark_lockedbool**Sonuç**: talebi kilitle.

templatestring**Sonuç**: bu hazır yanıtı kullan.

replyobject**Sonuç**: 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 JavaScript PHP (HTTP) PHP (Dahili)

```bash
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}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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 JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tickets/auto-tasks/3' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
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();
```

```php
$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);
```

```php
// 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.

## İlgili Makaleler

- [Talep Ayarları](https://dev.wisecp.com/tr/talep-ayarlari)
- [Talep Yönetimi](https://dev.wisecp.com/tr/talep-yonetimi)
- [Talep Referans Listeleri](https://dev.wisecp.com/tr/talep-referans-listeleri)
