Talep Düzenleme Kancaları

1.6k görüntülenme Markdown

Talep birleştirme, bölme ve taşımanın yedi kancası.

Genel Bakış

Talepleri düzenleyen işlemler burada: birleştirme, bölme ve departman, öncelik ya da bağlı hizmet değiştirme.

İlk ikisi geri alınamaz. Birleştirmede hedef dışındaki talepler silinir; bölmede yanıtlar yeni bir talebe taşınır. Kapılar bu yüzden değerlidir.

Referans

Talep birleştirmeyi durdurma

gateticket.merge
AdminTickets diğerleri silinir

Talepler birleştirilmeden önce çalışır. Birleştirme geri alınamaz: hedef dışındakiler silinir.

Parametreler 2
$primary_idintHedef talep; diğerleri buraya taşınacaktır.
$merge_idsarrayBirleştirilecek diğer talepler; hedef bu listede yoktur.
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.merge', 10, function ($primary_id, $merge_ids) {
    // Hedef disindakiler SILINIR: geri alinamaz.
    foreach ($merge_ids as $id)
        if (Acme::underLegalHold((int) $id)) return 'Saklama yukumlulugu olan talep birlestirilemez.';

    return null;
});

Birleştirmeyi izleme

actionticket.merged
AdminTickets birleşme sonrası

Talepler birleştirildikten sonra çalışır.

Parametreler 2
$primary_idintHedef talep.
$merged_idsarrayBirleştirilip silinen taleplerin kimlikleri. Bu kimlikler artık yoktur: kendi kayıtlarınızda onları hedefe yönlendirin.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.merged', 10, function ($primary_id, $merged_ids) {
    // Bu kimlikler artik yok: hedefe yonlendirin.
    foreach ($merged_ids as $id) Acme::redirectRef((int) $id, $primary_id);
});

Talep bölmeyi durdurma

gateticket.split
AdminTickets doğrulanmamış liste

Bir talebin bazı yanıtları yeni bir talebe taşınmadan önce çalışır.

Parametreler 2
$sourcearrayBölünecek kaynak talep.
$reply_idsarrayTaşınacak yanıtların kimlikleri. Temizlenmiştir ama veritabanıyla henüz doğrulanmamıştır: bu listedeki bir kimlik gerçekte o talebe ait olmayabilir.
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.split', 10, function ($source, $reply_ids) {
    // Liste henuz DB ile dogrulanmadi.
    if (count($reply_ids) > 50) return 'Tek seferde en cok 50 yanit tasinabilir.';

    return null;
});

Bölmeyi izleme

actionticket.split
AdminTickets doğrulanmış liste

Yeni talep oluşturulup yanıtlar taşındıktan sonra çalışır.

Parametreler 3
$sourcearrayKaynak talep.
$new_ticketarrayYeni oluşturulan talep.
$moved_reply_idsarrayGerçekten taşınan yanıtların kimlikleri. Kapıdakinin aksine bu liste doğrulanmıştır: istenip taşınamayanlar burada yoktur.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.split', 10, function ($source, $new_ticket, $moved_reply_ids) {
    // Bu liste dogrulanmis: gercekten tasinanlar.
    Acme::reindexSplit((int) ($new_ticket['id'] ?? 0), $moved_reply_ids);
});

Departman değişimini izleme

actionticket.department_changed
AdminTickets sıfır = yoktu

Bir talep başka departmana taşındıktan sonra çalışır. Departman, talebi kimin göreceğini belirler.

Parametreler 3
$ticketarrayDeğişim öncesi kayıt.
$oldDepartmentIdintÖnceki departman; sıfır ise yoktu.
$newDepartmentIdintYeni departman.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.department_changed', 10,
    function ($ticket, $oldDepartmentId, $newDepartmentId) {
        // Departman kimin gorecegini belirler.
        Acme::notifyDepartment($newDepartmentId, (int) ($ticket['id'] ?? 0));
    });

Öncelik değişimini izleme

actionticket.priority_changed
AdminTickets dört seviye

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

Parametreler 3
$ticketarrayDeğişim öncesi kayıt.
$oldPriorityintÖnceki seviye.
$newPriorityintYeni seviye.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.priority_changed', 10,
    function ($ticket, $oldPriority, $newPriority) {
        if ($newPriority > $oldPriority) Acme::escalate((int) ($ticket['id'] ?? 0));
    });

Bağlı hizmetin değişmesini izleme

actionticket.service_changed
AdminTickets sıfır = bağ yok

Bir talebin bağlı olduğu hizmet değiştikten sonra çalışır.

Parametreler 3
$ticketarrayDeğişim öncesi kayıt.
$oldServiceIdintÖnceki hizmet; sıfır ise bağlı değildi.
$newServiceIdintYeni hizmet; sıfır ise bağ kaldırılmıştır.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:ticket.service_changed', 10,
    function ($ticket, $oldServiceId, $newServiceId) {
        // Sifir = bag kaldirildi.
        if (!$newServiceId) return;

        Acme::attachServiceContext((int) ($ticket['id'] ?? 0), $newServiceId);
    });

Tuzaklar

Birleştirme diğer talepleri siler

Birleştirmede hedef dışındaki talepler yalnız taşınmaz, silinir. Olay kancasındaki kimlikler artık var olmayan kayıtlardır: kendi tarafınızda onları hedefe yönlendirin, yoksa kırık başvurular kalır.

Bölme kapısındaki liste henüz doğrulanmamıştır

Kapıya gelen yanıt kimlikleri temizlenmiştir ama veritabanıyla eşleştirilmemiştir: listede o talebe ait olmayan bir kimlik bulunabilir. Gerçekten taşınanları görmek için olay kancasındaki listeye bakın.

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.