Müşteri Yorumları
Sitede gösterilen müşteri yorumlarını ekleyen, onaylayan ve kaldıran yedi uç.
Genel Bakış
Müşteri yorumları sitede gösterilen referans metinleridir. Her yorumun bir durumu vardır: beklemede, onaylı ya da reddedilmiş. Sitede yalnızca onaylı olanlar görünür.
Yorum metni dil başına tutulur; ad, firma ve avatar ise ortaktır. Ziyaretçinin gönderdiği kayıtlar beklemede başlar ve bir yönetici onaylayana kadar sitede yer almaz.
Bu uçlar aynı zamanda panel üzerinden yorum eklemeyi de sağlar: kâğıtta ya da e-postada gelen bir referansı elle girip doğrudan onaylı oluşturabilirsiniz.
Referans
Yorumları Listeleme
Sitede yayınlanan müşteri yorumlarını döndürür.
pending, approved, rejected.curl 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/website/cfeedbacks', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const waiting = data.filter((f) => f.status === 'pending');$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Durum SUZGECI yoktur; bekleyenleri gormek icin listeyi kendiniz ayiklayin.
$all = Api::Website()->GetCfeedbacks()['data'];
$waiting = array_filter($all, fn ($f) => $f['status'] === 'pending');Yorum Detayı
Tek bir yorumu metni ve avatarıyla döndürür.
pending, approved, rejected.curl 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/cfeedbacks/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yorum METNI ve gonderen ADRESI yalniz burada gelir; liste ikisini de tasimaz.
$fb = Api::Website()->GetCfeedback(['id' => $id])['data'];
$en = $fb['languages']['en']['message'] ?? '';Yorum Oluşturma
Panel üzerinden yeni bir müşteri yorumu ekler.
pending, approved, rejected. Öntanımlı olarak beklemede.curl -X POST 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"full_name":"Ayse Yilmaz","status":"approved","languages":{"tr":{"message":"Harika hizmet!"}}}'const res = await fetch('https://panel.ornek.com/api/v1/admin/website/cfeedbacks', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
full_name: 'John Doe',
company_name: 'Example Inc.',
status: 'approved',
languages: { en: { message: 'Great service!' } },
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'full_name' => 'John Doe',
'status' => 'approved',
'languages' => ['en' => ['message' => 'Great service!']],
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Durum vermezseniz yorum BEKLEMEDE dogar ve sitede gorunmez; onayi ayrica verin.
Api::Website()->CreateCfeedback([
'full_name' => 'John Doe',
'status' => 'approved',
'languages' => ['en' => ['message' => 'Great service!']],
]);Yorumu Güncelleme
Yorumun durumunu, metnini ve bilgilerini değiştirir.
pending, approved, rejected. Öntanımlı olarak beklemede.curl -X PATCH 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks/4' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"status":"approved"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/cfeedbacks/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ status: 'approved' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['status' => 'approved']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Onay bir ANAHTAR degil DURUM degisimidir; siteye cikaran tek sey budur.
Api::Website()->UpdateCfeedback(['id' => $id, 'status' => 'approved']);Yorumu Silme
Yorumu kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks/4' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/cfeedbacks/${id}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks/' . $id);
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);// Silmek yerine REDDEDIN: kayit durur, sitede gorunmez, kimin ne yazdigi kaybolmaz.
Api::Website()->UpdateCfeedback(['id' => $id, 'status' => 'rejected']);Avatar Yükleme
Yorumun yanında görünecek avatarı yükler.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks/4/picture' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"image":"https://ornek.com/avatar.jpg"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/cfeedbacks/${id}/picture`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ image: 'https://example.com/avatar.jpg' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks/' . $id . '/picture');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['image' => 'https://example.com/avatar.jpg']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Avatar ZORUNLU DEGILDIR; yoksa tema kendi yer tutucusunu koyar.
Api::Website()->SetCfeedbackPicture(['id' => $id, 'image' => $data]);Avatarı Kaldırma
Yorumun avatarını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/website/cfeedbacks/4/picture' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/website/cfeedbacks/${id}/picture`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/website/cfeedbacks/' . $id . '/picture');
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);// Avatari DEGISTIRMEK icin once silmeye gerek yok; yukleme zaten yerine koyar.
Api::Website()->DeleteCfeedbackPicture(['id' => $id]);Tuzaklar
Durum alanını göndermezseniz yorum beklemede oluşur ve sitede görünmez. Panelden elle girilen bir referans için bu genellikle istenen davranış değildir; oluştururken durumu onaylı gönderin ya da hemen ardından güncelleyin. Ziyaretçiden gelen kayıtlarda ise beklemede doğması doğru olandır.
Listeleme ucu yalnız arama, sayfa ve sayfa boyutu alır; durum süzgeci yoktur. Onay bekleyenleri bulmak için listeyi çekip kendiniz ayıklamanız gerekir. Yorum sayısı çok olan bir kurulumda sayfa sayfa gezip her sayfada ayıklama yapmayı hesaba katın.
Liste adı, firmayı, e-postayı ve durumu verir ama yorumun kendisini vermez. Neyin onaylandığına karar vermek için her kaydı detay ucundan okumanız gerekir. Onay akışı yazarken bunu hesaba katın: liste tek başına karar vermeye yetmez.
Yorum kaydı gönderenin e-postasını ve geldiği adresi taşır; ikisi de sitede gösterilmez ama detay ucundan okunabilir. Bu kişisel veridir. Yorumları dışarıya taşıyan bir entegrasyon yazarken bu iki alanı istemeden aktarmamaya dikkat edin.
Reddedilen bir yorum sitede görünmez ama kayıt yerinde kalır: kimin ne zaman ne yazdığı ve hangi karara varıldığı okunabilir durumda durur. Silmek bunların hepsini götürür ve aynı kişi yeniden yazarsa geçmişi göremezsiniz.
İ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.