Talep Yaşam Döngüsü Kancaları

1.6k görüntülenme Markdown

Talep açma, kapatma, devretme ve kilitlemenin sekiz kancası.

Genel Bakış

Bir talebin yolu burada: açılır, durumu değişir, devredilir, kilitlenir ve sonunda silinir ya da kendiliğinden çözülür.

İki durum kancası birbirine benzer ama ayrıdır: biri personelin değiştirdiği durumu, öteki kimsenin dokunmadığı otomatik çözülmeyi bildirir.

Referans

Yönetici tarafından talep açmayı durdurma

gateticket.admin_create
AdminTickets yazımdan önce

Personel bir müşteri adına talep açtığında, kayıt yazılmadan önce çalışır.

Parametreler 3
$set_requestarrayYazılacak talep kaydı: başlığı, durumu, departmanı, önceliği ve ataması.
$messagestringİlk mesaj; yer tutucular çözülmüş hâliyle.
$udataarrayTalebin sahibi olacak müşterinin verisi.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:ticket.admin_create', 10, function ($set_request, $message, $udata) {
    if (Acme::blacklisted((int) ($udata['id'] ?? 0))) return 'Bu hesap icin talep acilamaz.';

    return null;
});

Talebin oluşmasını izleme

actionticket.created
AdminTickets ilk mesaj dâhil

Bir talep oluşturulduktan sonra çalışır.

Parametreler 1
$ticketarrayTalebin tam verisi, ilk mesaj da içinde: sahibi, başlığı, durumu, departmanı, önceliği ve ataması.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.created', 10, function ($ticket) {
    // Ilk mesaj ayri parametre degil, talebin icinde.
    Acme::classify((int) ($ticket['id'] ?? 0), $ticket['message'] ?? '');
});

Durum değişimini izleme

actionticket.status_changed
AdminTickets beş temel durum

Bir talebin durumu değiştikten sonra çalışır.

Parametreler 4
$ticketarrayDeğişim öncesi anlık görüntü.
$old_statusstringÖnceki temel durum: açık, bekliyor, işlemde, yanıtlandı ya da çözüldü.
$new_statusstringYeni temel durum.
$new_cstatusintYeni özel durum. Operatör kendi durumlarını tanımlayabilir; sıfır özel durum yok demektir. Yalnız temel duruma bakan bir kural özel durumları göremez.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.status_changed', 10,
    function ($ticket, $old_status, $new_status, $new_cstatus) {
        // Ozel durumlar temel durumun yaninda ayri bir eksendir.
        if ($new_status === 'solved') Acme::stopSlaClock((int) ($ticket['id'] ?? 0));
    });

Otomatik çözülmeyi izleme

actionticket.auto_resolved
cronjobs kimse dokunmadan

Uzun süre yanıt gelmeyen bir talep kendiliğinden çözüldüğünde çalışır. Kimse kapatmamıştır: sessizlik kapatmıştır.

Parametreler 3
$ticket_idintÇözülen talebin kimliği.
$ticketarrayGüncel talep satırı; durumu çözüldü olarak yazılmıştır.
$delayed_dayintSon yanıttan bu yana geçen gün sayısı.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.auto_resolved', 10, function ($ticket_id, $ticket, $delayed_day) {
    // Kimse kapatmadi: sessizlik kapatti.
    Acme::surveyLater($ticket_id, $delayed_day);
});

Personelin talebi açmasını izleme

actionticket.viewed
AdminTickets okundu işaretlenmiş

Personel bir talebi açtığında çalışır.

Parametreler 2
$ticketarrayYüklenen talep. Okunmadı işareti çoktan kaldırılmıştır: “yeni miydi” sorusunu buradan cevaplayamazsınız.
$idintTalebin kimliği.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.viewed', 10, function ($ticket, $id) {
    // Okunmadi isareti coktan kaldirildi.
    Acme::trackHandling($id);
});

Talebin devrini izleme

actionticket.transferred
AdminTickets sahip değişimi

Bir talep başka bir müşteriye devredildikten sonra çalışır.

Parametreler 3
$ticketIdintDevredilen talebin kimliği.
$fromUserIdintEski sahibi.
$toUserIdintYeni sahibi. Talebin geçmişi de birlikte taşınır: eski sahibin göremeyeceği bir konuşma artık yeni sahiptedir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.transferred', 10, function ($ticketId, $fromUserId, $toUserId) {
    // Gecmis de birlikte tasindi.
    Acme::reindexOwner($ticketId, $toUserId);
});

Kilit değişimini izleme

actionticket.lock_changed
AdminTickets yanıt kapanır

Bir talep kilitlendiğinde ya da açıldığında çalışır. Kilitli talebe müşteri yanıt yazamaz.

Parametreler 2
$ticketarrayDeğişim öncesi kayıt.
$lockedintYeni kilit durumu: bir kilitli, sıfır açık.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.lock_changed', 10, function ($ticket, $locked) {
    // Kilitli talebe musteri yanit yazamaz.
    if ($locked === 1) Acme::notifyLocked((int) ($ticket['user_id'] ?? 0));
});

Talebin silinmesini izleme

actionticket.deleted
AdminTickets yalnız kimlik

Bir talep silindikten sonra çalışır.

Parametreler 1
$ticket_idintSilinen talebin kimliği. Kayıt geçilmez: talebin içeriğine ihtiyacınız varsa silme öncesinde saklamış olmanız gerekir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.deleted', 10, function ($ticket_id) {
    // Kayit gecilmez: icerik gerekiyorsa once saklamis olmalisiniz.
    Acme::dropFromIndex('ticket', $ticket_id);
});

Tuzaklar

Görüntüleme kancasında okunmadı işareti çoktan silinmiştir

Personel bir talebi açtığında kanca çalışır, ama okunmadı bayrağı kancadan önce temizlenir. "Bu talep yeni miydi" sorusunu buradan cevaplayamazsınız; ilk açılışı ayrıca izlemeniz gerekir.

Silme kancası yalnız kimlik taşır

Diğer silme kancalarının aksine burada talep kaydı geçilmez. Başlığa, sahibine ya da içeriğine ihtiyacınız varsa silmeden önce saklamış olmanız gerekir; kanca çalıştığında okuyacak bir yer kalmamıştı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.