Talep Ayarları

1.7k görüntülenme Markdown

Destek alanının genel ayarlarını, e-posta yapılandırmasını ve özel durumları yöneten altı uç.

Genel Bakış

Bu altı uç destek alanının nasıl çalışacağını belirler. İkisi genel ayarları tutar, ikisi e-postadan talep almayı yapılandırır, ikisi de kuruluma özel durumları yönetir.

Genel ayarların içinde iki engelleme anahtarı vardır: hizmeti olmayanlar ve doğrulanmamış hesaplar. İkisi de müşterinin talep açmasını keser; destek kutusu beklenmedik biçimde sessizse ilk bakılacak yer burasıdır.

Özel durumlar standart durumların üzerine oturur. "Parça bekleniyor" gibi bir durum kendi rengiyle ve adıyla görünür, ama iş akışı bakımından hangi standart durumdan türetildiyse öyle davranır.

Referans

Destek Ayarlarını Getirme

get/api/v1/admin/tickets/settings
Tickets/GetTicketSettings admin

Destek alanının genel ayarlarını döndürür.

Dönen alanlar data — 10
show_firstintKonuşmanın hangi uçtan başlayacağı.
member_groupintDestek açmasına izin verilen müşteri grubu.
ticket_claimingboolPersonelin talebi kendi üzerine alabilmesi.
assigned_tickets_onlyboolPersonelin yalnız kendine atanmışları görmesi.
block_without_serviceboolHizmeti olmayan müşterinin talep açamaması.
verification_requiredboolTalep açmak için hesabın doğrulanmış olması.
technical_departmentintTeknik konuların gittiği departman.
billing_departmentintMuhasebe konularının gittiği departman.
listing_countintPanelde sayfa başına gösterilecek talep.
refresh_timeintPanelin listeyi kaç saniyede bir tazeleyeceği.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tickets/settings' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tickets/settings', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Iki engelleme ayari MUSTERININ talep acmasini keser; destek gelmiyorsa once bunlara bakin.
$s = Api::Tickets()->GetTicketSettings()['data'];

Destek Ayarlarını Yazma

put/api/v1/admin/tickets/settings
Tickets/UpdateTicketSettings admin

Genel destek ayarlarını değiştirir.

Gövde 10
show_firstintKonuşmanın hangi uçtan başlayacağı.
member_groupintDestek açmasına izin verilen müşteri grubu.
ticket_claimingboolPersonelin talebi kendi üzerine alabilmesi.
assigned_tickets_onlyboolPersonelin yalnız kendine atanmışları görmesi.
block_without_serviceboolHizmeti olmayan müşterinin talep açamaması.
verification_requiredboolTalep açmak için hesabın doğrulanmış olması.
technical_departmentintTeknik konuların gittiği departman.
billing_departmentintMuhasebe konularının gittiği departman.
listing_countintSayfa başına talep. Bir ile yüz arasına çekilir.
refresh_timeintTazeleme aralığı. Beş ile üç yüz saniye arasına çekilir.
Dönen alanlar data — 10
dataobjectGüncel ayarlar. Getirme ucuyla aynı şekildedir.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tickets/settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"listing_count":25,"refresh_time":60,"ticket_claiming":true}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    listing_count: 25,
    refresh_time: 60,
    ticket_claiming: true,
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'listing_count'   => 25,
        'refresh_time'    => 60,
        'ticket_claiming' => true,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Aralik disi bir deger REDDEDILMEZ, sinira cekilir; donen degeri okuyup dogrulayin.
$now = Api::Tickets()->UpdateTicketSettings(['refresh_time' => 1])['data'];
// $now['refresh_time'] === 5

Posta Ayarlarını Getirme

get/api/v1/admin/tickets/pipe-settings
Tickets/GetTicketPipeSettings admin

E-postadan talep almanın yapılandırmasını döndürür.

Dönen alanlar data — 5
enabledboolE-postadan talep almanın açık olup olmadığı.
methodintGelen postanın hangi müşteriye bağlanacağını belirleyen yöntem.
spam_controlboolGelen postanın spam denetiminden geçmesi.
prefixstringKonu satırındaki referans öneki. Yanıtların doğru talebe dönmesini bu sağlar.
departmentsobjectDepartman başına posta kutusu ayarı: gönderen adresi, görünen ad ve sağlayıcı.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tickets/pipe-settings' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Burasi YALNIZCA yapilandirmadir; posta kutusu yetkilendirmesi bu uctan gecmez.
$pipe = Api::Tickets()->GetTicketPipeSettings()['data'];

Posta Ayarlarını Yazma

put/api/v1/admin/tickets/pipe-settings
Tickets/UpdateTicketPipeSettings admin

E-postadan talep almanın yapılandırmasını değiştirir.

Gövde 5
enabledboolE-postadan talep almayı açar.
methodintMüşteri eşleştirme yöntemi. Tanınmayan bir değer sıfıra düşer.
spam_controlboolSpam denetimini açar.
prefixstringReferans öneki. Boş bırakılırsa öntanımlı önek kullanılır.
departmentsobjectDepartman başına posta kutusu: gönderen adresi, görünen ad ve sağlayıcı.
Dönen alanlar data — 5
dataobjectGüncel posta ayarları.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tickets/pipe-settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true,"method":1,"spam_control":true,"prefix":"REF"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    enabled: true,
    method: 1,
    spam_control: true,
    prefix: 'REF',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'enabled'      => true,
        'method'       => 1,
        'spam_control' => true,
        'prefix'       => 'REF',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Onek DEGISTIRMEK eski konularla gelen yanitlari talebine baglayamaz hale getirir.
Api::Tickets()->UpdateTicketPipeSettings(['prefix' => 'REF']);

Özel Durumları Listeleme

get/api/v1/admin/tickets/custom-statuses
Tickets/GetTicketCustomStatuses admin

Kurulumun kendi tanımladığı talep durumlarını döndürür.

Dönen alanlar data[] — 5
idintDurumun numarası.
typestringTüretildiği standart durum: open, waiting, process, replied, solved.
colorstringRozetin rengi.
namestringGeçerli dildeki adı.
langsobjectDil başına adı.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tickets/custom-statuses' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Ozel durum standart durumun UZERINE oturur: is akisi tabanina gore isler.
$custom = Api::Tickets()->GetTicketCustomStatuses()['data'];

Özel Durumları Yazma

put/api/v1/admin/tickets/custom-statuses
Tickets/UpdateTicketCustomStatuses admin listenin tamamını ister

Özel durumların tamamını gönderdiğiniz listeyle değiştirir.

Gövde 4
statusesarrayreqDurumların tamamı. Eskiler silinip bunlar yazılır.
statuses[].typestringTüretileceği standart durum: open, waiting, process, replied, solved. Tanınmayan bir değer işlemde durumuna düşer.
statuses[].colorstringRozetin rengi.
statuses[].langsobjectDil başına adı. Boş bırakılan diller atlanır.
Dönen alanlar data[] — 5
dataobject[]Güncel özel durumlar. Listeleme ucuyla aynı şekildedir.
Hatalar 2
invalid_statuses422Gönderilen değer bir liste değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tickets/custom-statuses' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"statuses":[{"type":"process","color":"#3399ff","langs":{"tr":"Parca bekleniyor"}}]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    statuses: [
      {
        type: 'process',
        color: '#3399ff',
        langs: { en: 'Awaiting parts', tr: 'Parca bekleniyor' },
      },
    ],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'statuses' => [[
            'type'  => 'process',
            'color' => '#3399ff',
            'langs' => ['en' => 'Awaiting parts'],
        ]],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Tek durum eklemek icin bile MEVCUT listeyi okuyup sonuna ekleyin; yazma tam degisimdir.
$all   = Api::Tickets()->GetTicketCustomStatuses()['data'];
$all[] = ['type' => 'waiting', 'color' => '#999999', 'langs' => ['en' => 'On hold']];

Api::Tickets()->UpdateTicketCustomStatuses(['statuses' => $all]);

Tuzaklar

Özel durum yazımı tam değişimdir

Yazma ucu gönderdiğiniz listeyle eskisinin tamamını değiştirir: mevcut durumlar silinir, gönderdikleriniz yeniden eklenir. Tek bir durum eklemek için sadece onu göndermek diğerlerini siler. Önce mevcut listeyi okuyun, sonuna ekleyin ve tümünü geri gönderin.

Yeniden yazmak durum numaralarını değiştirir

Tam değişim eski kayıtları silip yenilerini eklediği için özel durumlar yeni numaralar alır. Bir talebe atanmış özel durum numarasını kendi tarafınızda saklıyorsanız o numara artık başka bir durumu gösterebilir. Numaraları saklamak yerine her seferinde listeden çözün.

İki anahtar müşteriyi sessizce durdurur

Hizmetsiz müşteri ve doğrulama anahtarları açıkken müşteri talep hiç açamaz. Panelde bir hata görünmez, destek kutusu boş kalır ve bunu bir arıza sanmak kolaydır. Bir kurulumda talep gelmiyorsa önce bu iki alanı okuyun.

Öneki değiştirmek eski yanıtları kopartır

Gelen bir e-postanın hangi talebe ait olduğu, konu satırındaki referans önekinden anlaşılır. Öneki değiştirdiğinizde eski konu satırıyla gelen yanıtlar talebini bulamaz ve yeni bir talep olarak düşer. Zaten yazışılan talepler varken öneke dokunmayın.

Aralık dışı değer reddedilmez, kırpılır

Sayfa başına kayıt ve tazeleme süresi belirli aralıklara çekilir. Bir saniyelik tazeleme istemek hata vermez; ayar sessizce en düşük değere oturur. Gönderdiğiniz değerin yazıldığını varsaymayın, dönen yanıttaki değeri okuyun.

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.