Talep Alan ve Posta Kancaları
Özel alanlar ve postayla gelen taleplerin dokuz kancası.
Genel Bakış
İki konu burada birleşir: operatörün tanımladığı özel alanlar ve postayla gelen taleplerin işlenmesi.
Posta kapıları diğer kapılardan ayrılır: engellemeniz hata üretmez, sessizce atlanır. İstenmeyen iletiyi durdurur ama iz bırakmaz; gerekçeyi kendiniz kaydetmeniz gerekir.
Referans
Özel alan kaydını durdurma
Talep özel alanı kaydedilmeden önce çalışır.
Hook::add('gate:ticket.custom_field.save', 10, function ($id, $did, $type) {
// Sifir departman = butun departmanlarda gorunur.
if ($type === 'password' && $did === 0)
return 'Parola alani butun departmanlara acilamaz.';
return null;
});Özel alan kaydını izleme
Bir özel alan kaydedildikten sonra çalışır.
Hook::add('action:ticket.custom_field.saved', 10, function ($field, $isNew) {
// Ad ve aciklama dil kaydinda: burada yok.
Acme::syncFieldSchema((int) ($field['id'] ?? 0));
});Özel alan silmeyi durdurma
Özel alanlar silinmeden önce çalışır.
Hook::add('gate:ticket.custom_field.delete', 10, function ($id) {
// Tek silmede bile dizidir.
foreach ($id as $one)
if (Acme::fieldHasData((int) $one)) return 'Doldurulmus alan silinemez.';
return null;
});Özel alan silinmesini izleme
Bir özel alan silindikten sonra çalışır.
Hook::add('action:ticket.custom_field.deleted', 10, function ($i, $flang) {
// Ada ihtiyaciniz varsa tek kaynak dil kaydidir.
Acme::dropFieldSchema($i, $flang['name'] ?? '');
});Özel alan listesini değiştirme
Özel alanlar okunduktan sonra çalışır. Kendi alanınızı listeye eklemenin yeri burasıdır.
Hook::add('filter:ticket.custom_fields', 10, function (&$fields, &$ctx) {
// Departman sifirsa butun departmanlar sorgulaniyor.
$fields = array_values(array_filter($fields,
fn ($f) => Acme::fieldVisible((int) ($f['id'] ?? 0))));
});Grup alanlarını değiştirme
Bir erişim grubuna bağlı özel alanlar okunduktan sonra çalışır.
Hook::add('filter:ticket.access_group_fields', 10, function (&$fields, &$ctx) {
// Dil hic bos gelmez.
$fields = Acme::orderFields($fields, $ctx['lang']);
});Gelen postayı atlatma
Gelen bir e-posta talebe dönüştürülmeden önce çalışır. İstenmeyen iletileri sisteme hiç sokmamanın yeri burasıdır.
Hook::add('gate:ticket.pipe_import', 10, function ($mail, $did, $msgId) {
// Veto SESSIZDIR: gerekceyi kendiniz kaydedin.
if (Acme::isAutoReply($mail)) {
Acme::log('otomatik yanit atlandi', $msgId);
return 'otomatik yanit';
}
return null;
});Postadan talep açılmasını durdurma
Gelen posta bir talebe dönüşmeden hemen önce çalışır. Posta kapısından geçmiş, departmanı çözülmüş bir ileti elinizdedir.
Hook::add('gate:ticket.open', 10,
function ($subject, $message, $departmentId, $clientId, $clientEmail, $mail) {
// Taninmayan gondericide musteri kimligi SIFIR.
if (!$clientId && Acme::strangersBlocked()) return 'taninmayan gonderici';
return null;
});Postadan gelen metni temizleme
Gelen postanın gövdesi ve konusu talebe yazılmadan önce çalışır. Alıntı blokları ve imzaları kırpmanın yeri burasıdır.
Hook::add('filter:ticket.pipe_message_text', 10, function (&$message, &$subject, $mail) {
// Ikisi de baglayla gecer.
$message = Acme::stripQuotedReply($message);
});Tuzaklar
Diğer kapılar engellediğinde bir hata fırlatılır ve kullanıcı sebebi görür. Posta kapıları öyle değil: engellemeniz atlandı olarak işlenir, iş başarısız sayılmaz ve kimse bir şey görmez. İstenmeyen iletiyi durdurmak için doğru yer burasıdır, ama gerekçeyi kendiniz kaydetmezseniz iz kalmaz.
Özel alan kaydetme olayı yapısal satırı verir: kimlik, departman, durum, sıra. Alanın adı ve açıklaması orada yoktur; onlar dil kaydında durur. Adı arayan bir dinleyici boş değerle çalışır.
İlgili Makaleler
- Destek Talebi Kancaları
- Müşteri Hesabı Kancaları
- Kancalar Nasıl Çalışır
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.