Personel Departmanları
Destek departmanlarını kuran ve personelini atayan altı uç.
Genel Bakış
Departmanlar destek taleplerinin hangi ekibe düşeceğini belirler. Müşteri talep açarken bir departman seçer; o departmana atanmış personel de talebi üstlenebilecek kişilerdir.
Departman adı ve açıklaması dil başına tutulur. Oluştururken kurulumdaki her etkin dilde ad gerekir; güncellerken yalnız gönderdiğiniz diller değişir.
Simge iki biçimde olabilir: bir yazı tipi simgesi ya da yüklenmiş bir görsel. Görseli kaldıran ayrı bir uç vardır ve kaldırıldığında tür yazı tipine döner.
Referans
Departmanları Listeleme
Destek departmanlarını ve onlara bakan personeli döndürür.
curl 'https://panel.ornek.com/api/v1/admin/admins/departments' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/admins/departments', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const orphan = data.filter((d) => d.appointee_ids.length === 0);$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Personeli olmayan departmana gelen talep KIMSEYE atanamaz; bos listeleri arayin.
$deps = Api::Admins()->GetDepartments()['data'];
$orphan = array_filter($deps, fn ($d) => ! $d['appointee_ids']);Departman Oluşturma
Yeni bir destek departmanı açar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/admins/departments' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"names":{"tr":"Genel","en":"General"},"appointees":[1,5]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/admins/departments', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
names: { en: 'General', tr: 'Genel' },
descriptions: { en: 'General questions' },
appointees: [1, 5],
icon_type: 'font',
icon: 'fa-solid fa-globe',
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'names' => ['en' => 'General', 'tr' => 'Genel'],
'appointees' => [1, 5],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Olusturmada HER etkin dilde ad gerekir; guncellemede yalniz gonderdigin diller degisir.
Api::Admins()->CreateDepartment([
'names' => ['en' => 'General', 'tr' => 'Genel'],
'appointees' => [1, 5],
]);Departman Detayı
Tek bir departmanı bütün dilleriyle döndürür.
curl 'https://panel.ornek.com/api/v1/admin/admins/departments/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/departments/${did}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments/' . $did);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Liste TEK dil verir, detay hepsini; ceviri isi burada baslar.
$d = Api::Admins()->GetDepartment(['did' => $did])['data'];
$tr = $d['translations']['tr']['name'] ?? '';Departmanı Güncelleme
Departmanın gönderdiğiniz alanlarını ve dillerini değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/admins/departments/4' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"names":{"tr":"Genel Destek"},"appointees":[1,5,8]}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/departments/${did}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
names: { en: 'General Support' },
appointees: [1, 5, 8],
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments/' . $did);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'names' => ['en' => 'General Support'],
'appointees' => [1, 5, 8],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Personel listesi YERINE GECER: birini eklemek icin once mevcut listeyi okuyun.
$d = Api::Admins()->GetDepartment(['did' => $did])['data'];
$d['appointee_ids'][] = $newStaffId;
Api::Admins()->UpdateDepartment([
'did' => $did, 'appointees' => $d['appointee_ids'],
]);Departmanı Silme
Departmanı kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/admins/departments/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/departments/${did}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments/' . $did);
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);// Departmani silmeden ONCE oradaki talepleri baska bir departmana tasiyin.
Api::Tickets()->UpdateTicket(['id' => $ticketId, 'department_id' => $otherDid]);
Api::Admins()->DeleteDepartment(['did' => $did]);Simgeyi Kaldırma
Departmanın görsel simgesini kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/admins/departments/4/icon' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/departments/${did}/icon`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/departments/' . $did . '/icon');
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);// Kaldirma dosyayi siler ve turu yazi tipine cevirir; simge alani bos kalabilir.
Api::Admins()->DeleteDepartmentIcon(['did' => $did]);
Api::Admins()->UpdateDepartment(['did' => $did, 'icon' => 'fa-solid fa-globe']);Tuzaklar
Bir departmana hiç personel atanmadıysa oraya düşen talep kimseye atanamaz ve talep listesinde atanacak kişi seçeneği boş çıkar. Departman yine görünür ve müşteri seçebilir; sorun ancak talep geldiğinde fark edilir. Listeyi boş personel listesi için tarayın.
Güncellemede gönderdiğiniz personel listesi mevcut atamaların yerine geçer. Bir kişiyi eklemek isterken yalnız onu göndermek diğerlerini departmandan çıkarır ve onların talep görünürlüğü değişir. Önce detayı okuyup listeyi birleştirin.
Departman oluştururken kurulumdaki her etkin dilde ad gerekir; biri eksikse çağrı reddedilir. Güncellemede ise yalnız gönderdiğiniz diller değişir, gerisi korunur. Bu iki farklı davranışı aynı sanmak, oluşturmada beklenmedik bir hata olarak karşınıza çıkar.
Departmanı silmek, ona bağlı destek taleplerinin dayanağını kaldırır. Talepler kaybolmaz ama artık var olmayan bir departmanı gösterirler ve listelerde bulunmaları zorlaşır. Silmeden önce o departmandaki talepleri başka bir departmana taşıyın.
Görsel simgeyi kaldıran uç dosyayı siler ve türü yazı tipine çevirir, ama yerine bir simge koymaz. Yazı tipi simgesi alanı boşsa departman simgesiz görünür. Kaldırdıktan sonra bir yazı tipi simgesi yazmak genelde istenen adımdır.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.