İletişim Formları ve Mesajları
İletişim Formu ve İletişim Mesajları, WebBlocks CMS'in birinci sınıf özellikleridir. İletişim sayfaları için Trusted HTML, ham form işaretlemesi veya mailto: yedekleri yerine yerel contact_form blokunu kullanın.
Bu kılavuz; blok sözleşmeleri, herkese açık görüntüleme sözleşmeleri, Internal Content API belgeleri ve README genelinde belgelenen kullanıcıya dönük İletişim Formu ve İletişim Mesajları davranışını bir araya getirir. Yeni çalışma zamanı davranışı tanımlamaz.
Genel Bakış
İletişim Formu bloku gerçek bir herkese açık form üretir ve kabul edilen mesajları CMS'te saklar. İletişim Mesajları, yöneticilere bu gönderimler için durum, spam inceleme sinyalleri, bildirim durumu ve güvenli teslim hatası ayrıntılarını içeren bir inceleme ekranı sunar.
CMS, saklama ve e-posta bildirimini ayrı konular olarak ele alır:
- kabul edilen gerçek gönderimler, bildirim denemesinden önce saklanır
- bildirim başarılı olabilir, başarısız olabilir veya atlanabilir; bu, CMS'in herkese açık gönderimi kabul ettiği gerçeğini değiştirmez
- herkese açık ziyaretçiler spam puanlamasını veya teslim iç ayrıntılarını değil, genel başarı veya doğrulama geri bildirimini görmelidir
İletişim Formu Bloku Ekleme
Bloku Sayfa Oluşturucu blok seçicisinden ekleyin. Yerel blok tanıtıcısı şudur:
contact_form
İletişim Formu bloku bir alt kapsayıcı değildir. Herkese açık form yüzeyinin sahibidir ve normal kompozisyon modeli olarak iç içe içerik blokları kabul etmez.
Tipik bir iletişim sayfası, yerel formun etrafında yapılandırılmış içerik kullanır:
main slot
section
container
content_header or hero
contact_form
AI/operatör araçları, canlı keşif mevcut tanıtıcıları doğruladıktan sonra aynı türden bir yapı kurmalıdır. Hedef CMS kurulumunda contact_form mevcutken Trusted HTML, ham <form> işaretlemesi veya mailto: bağlantılarıyla form oluşturmamalıdırlar.
İletişim Formu Bloku Alanları
Görünen metinler çevrilebilir:
titleveya başlıkcontentveya giriş metnisubmit_labelsuccess_message
Ortak operasyonel ayarlar blok ayarlarında bulunur:
recipient_emailsend_email_notificationstore_submissions
Editoryal metni ve operasyonel yönlendirmeyi ayrı tutun. Form metni dile (locale) göre değişebilirken alıcı ve bildirim ayarları blok için ortak kalır.
Herkese Açık Gönderim Davranışı
Herkese açık görüntüleyici, şu adrese gönderim yapan yerel bir tarayıcı formu üretir:
POST /contact-messages
Form CSRF korumalıdır ve normal ziyaretçi alanlarını doğrular.
Zorunlu alanlar:
nameemailmessage
İsteğe bağlı alan:
subject
Görüntüleyici tarafından üretilen spam önleme denetim alanı:
_form_check_nameimzalı meta verilerform_check_{token}üretilen denetim girdisi
Görüntüleyici bu alanları otomatik oluşturur. Bunları içerikte, ham HTML'de veya API yüklerinde elle oluşturmayın. Denetim alanı normal ziyaretçi girdisinin parçası değildir ve eski website alanı artık herkese açık İletişim Formu sözleşmesinin parçası değildir.
Denetim alanı doldurulmuş gönderimler, normal kabul edilen bir gönderimle aynı genel başarı davranışını alır; ancak saklanmaz ve bildirim tetiklemez. Çok hızlı otomatik gönderimler de aynı şekilde ele alınır. Herkese açık ziyaretçiler spam veya teslim tanılamaları almamalıdır.
Saklama ve İletişim Mesajları Yönetimi
Kabul edilen gerçek gönderimler, e-posta bildirimi denenmeden önce saklanır.
Yönetim yolu:
/webadmin/contact-messages
İletişim Mesajları bir yönetim inceleme ekranıdır. Herkese açık bir listeleme veya herkese açık bir teslim API'si değildir.
Yönetim ekranı, CMS kullanıcılarının gönderimleri kullanıcı kılavuzu düzeyinde incelemesine olanak tanır:
- yeni, okundu, yanıtlandı, arşivlendi veya spam gibi mesaj durumları
- varsa kaynak sayfa bağlamı
- inceleme için spam puanı ve spam neden etiketleri
- bildirimin atlandığı, gönderildiği, başarısız olduğu veya beklemede olduğu bilgisi
- bildirim teslimi başarısız olduğunda güvenli hata ayrıntıları
E-posta bildirim durumu yalnızca bildirim davranışıyla ilgilidir:
Sent, CMS'in mesajı yapılandırılmış posta taşıyıcısına istisna olmadan teslim ettiği anlamına gelir. Gelen kutusuna teslimatı garanti etmez.Failed, gerçek bir bildirim gönderiminin denendiği ve Laravel'in bir istisna bildirdiği anlamına gelir. Kaydedilen ayrıntı arındırılmıştır; parolalar, belirteçler, ham.envveya yığın izleri içermemelidir.Skipped, bildirimin denenmediği anlamına gelir; genellikle blok bildirimi devre dışı bırakmıştır.Not configured, alıcı olmadığı, mailer'ınlog,arrayveyanullolduğu ya da SMTP ayarlarının dışa gönderim yapılamayacak kadar eksik olduğu için bildirimin denenmediği anlamına gelir.Pending, henüz bildirim denemesi veya sonucu olmayan kayıtlar için ayrılmıştır.
Daha eski kayıtlı mesajlarda bildirim durumu, eski sent/error alanlarından çıkarılmış olabilir. CMS bu geçmiş kayıtları otomatik olarak yeniden yazmaz.
İletişim Mesajları ayrıca, mevcut olduğunda seçili öğelerin toplu silinmesi için ortak yönetim listeleme davranışını izler. Silmeyi normal herkese açık form işlemenin bir parçası olarak değil, bir yönetim temizlik eylemi olarak değerlendirin.
Spam İşleme
Spam işleme iki katmanlıdır.
Görüntüleyici tarafından üretilen denetim alanı katmanı anında yok saymadır:
- gizli üretilen
form_check_{token}alanı normal ziyaretçiler için boş kalmalıdır - denetim alanı doldurulmuş gönderimler genel başarı yanıtı alır
- denetim alanı gönderimleri saklanmaz
- denetim alanı gönderimleri bildirim tetiklemez
Üretilen denetim alanını geçen gönderimler yine de temkinli bir şekilde puanlanabilir. Puanlama sinyallerinin güncel örnekleri şunlardır:
- yüksek bağlantı yoğunluğu veya birden fazla bağlantı
- ticari erişim dili
- genel satış tarzı konu ve mesaj kombinasyonları
- aynı IP adresinden yinelenen gönderimler
Puanlanan spam, yönetici incelemesi için bilinçli olarak spam durumuyla saklanır. Otomatik spam silmeyi mevcut davranış olarak tanımlamayın. Yapılandırılabilir bir otomatik yok sayma eşiği, ancak üretim verileri gözlemlendikten sonra olası bir gelecek yönelimidir.
E-posta Bildirimi Yedek Zinciri
İletişim Formu bildirimi şu alıcı sırasını kullanır:
- Blok düzeyinde
recipient_email - Geçerli sitenin
Edit Site -> Contactaltındaki varsayılan İletişim alıcısı CONTACT_RECIPIENT_EMAIL- Son güvenli yedek olarak
MAIL_FROM_ADDRESS
Saklama başarısı, bildirim başarısından ayrıdır. Herkese açık bir başarı yanıtı, CMS'in mesaj akışını kabul ettiği anlamına gelir; e-posta tesliminin mutlaka başarılı olduğu anlamına gelmez. Yöneticiler bildirim durumu ve güvenli hata ayrıntıları için İletişim Mesajları'nı incelemelidir.
E-posta Kurulumu
İletişim Formu bildirimleri Laravel posta teslimini kullanır. Tipik SMTP .env ayarları şunlardır:
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Site Name"
CONTACT_RECIPIENT_EMAIL=contact@example.com
MAIL_*, Laravel posta taşıyıcısını denetler. MAIL_FROM_ADDRESS, güvenli yedek gönderen/kimden adresi ve son güvenli alıcı yedeğidir. CONTACT_RECIPIENT_EMAIL isteğe bağlıdır ve yalnızca blok ve site alıcıları boşken kullanılır. Normal site yönlendirmesi için Site -> Edit -> Contact altındaki site düzeyi İletişim alıcısını tercih edin.
Üretim bildirimi için SMTP gibi gerçek bir dışa gönderim mailer'ı kullanın. MAIL_MAILER=log, MAIL_MAILER=array ve MAIL_MAILER=null geliştirme veya testler için yararlıdır; ancak gerçek bir dışa bildirim denenmediği için İletişim Mesajları bunları gönderildi yerine yapılandırılmadı olarak gösterir.
Bir üretim veya paket kurulumunda .env posta ayarlarını düzenledikten sonra, config önbellekleme etkin olabilecekse önbelleğe alınmış yapılandırmayı temizleyin:
php artisan optimize:clear
Sorun Giderme ve Tanılama
Yerel geliştirme için yerel bir SMTP yakalayıcı veya güvenilir bir SMTP test hesabı kullanın. Operatör o ortamı bilinçli olarak yapılandırmadıkça iletişim teslimini kişisel veya üretim posta kutularına karşı test etmekten kaçının.
Tanılama komutu şudur:
php artisan contact:mail-diagnose
Belirli bir İletişim Formu blok kimliği kullanarak o blok için alıcı yedek sırasını inceleyin:
php artisan contact:mail-diagnose --block=ID
Denetimli bir SMTP gönderim kontrolünü yalnızca hedef test adresi bilinçli olarak seçildiğinde kullanın:
php artisan contact:mail-diagnose --send-test=address@example.com
Tanılamalar parolaları, belirteçleri, posta gizli anahtarlarını veya ham hassas yapılandırmayı yazdırmamalıdır. Başarısız, atlanmış ve yapılandırılmamış bildirim ayrıntıları İletişim Mesajları'ndan incelenebilir. Saklanan gönderimler ve bildirim durumları için İletişim Mesajları'nı doğruluk kaynağı olarak kabul edin.
Yayına Hazırlık Denetim Listesi
Herkese açık bir iletişim sayfasını yayınlamadan veya duyurmadan önce:
- Yönetici oturum açmanın çalıştığını doğrulayın.
- Site kimliği ve alan adı ayarlarının doğru olduğunu doğrulayın.
MAIL_*teslimini veya onaylı sistem posta ayarlarını yapılandırın.- İletişim alıcısını yapılandırın; tercihen
Site -> Edit -> Contactaltında. php artisan contact:mail-diagnosekomutunu çalıştırın.- Yerel
contact_formblokunu içeren bir sayfayı önizleyin veya yayınlayın. - Ad, e-posta, konu ve mesaj içeren bir test mesajı gönderin.
/webadmin/contact-messagesekranının saklanan mesajı gösterdiğini doğrulayın.- Bildirim durumunu ve varsa güvenli hata ayrıntılarını inceleyin.
Bildirim başarısız olur ancak mesaj saklanırsa bunu başarısız bir herkese açık form gönderimi olarak değil, bir posta teslim sorunu olarak değerlendirin.
Internal Content API ve AI Operatör Desteği
Internal Content API, güvenilir AI/operatör araçları içindir. Herkese açık bir teslim API'si veya bir AI sağlayıcı entegrasyonu değildir.
AI/operatör araçları canlı keşifle başlamalıdır:
GET /webadmin/api
Ardından güncel sözleşmeler için keşfedilen bağlantıları kullanın:
GET /webadmin/api/content-contract
GET /webadmin/api/block-types
GET /webadmin/api/examples/contact-page
GET /webadmin/api/examples/contact-page, yerel contact_form kullanımını gösterir. AI/operatör araçları tanıtıcıları tahmin etmemeli ve yerel İletişim Formu bloku mevcutken Trusted HTML, ham form işaretlemesi veya mailto: bağlantılarıyla iletişim formları oluşturmamalıdır.
İçerik uygulama taslak önceliklidir ve varsayılan olarak yayınlamaz. Operatörler planları doğrulamalı, yalnızca açık onaydan sonra uygulamalı, taslak sayfayı önizlemeli ve yayınlamayı bir insana veya açıkça onaylanmış bir iş akışına bırakmalıdır.
İlgili Belgeler
Site Bildirimi Gizliliği ve Zamanlaması (CMS 1.95.0)
Sites → Edit → Contact bölümünde ortak bildirim içeriğini ve gönderim sıklığını seçin. İletişim formları ve Live Chat 0.7.0 dahil katılan eklentiler bu politikayı kullanır. Her kanalın ayrıca kendi etkinleştirme seçeneği ve alıcı ayarları vardır. Bir eklenti, sitenin yalnızca uyarı gönderme seçimini geçersiz kılamaz.
full, toplu bildirimler dahil ayrıntılı iletişim ve sohbet bildirimlerini korur.alert_only, güvenilir site metnini, mesaj sayısını ve oturum açılarak erişilen CMS gelen kutusu bağlantısını gönderir. Ziyaretçi adları, e-posta adresleri, mesaj konuları ve içerikleri, kaynak URL’leri, IP adresleri, tarayıcı bilgileri, yönlendiren adresler ve özel sohbet belirteçleri dahil edilmez. Ziyaretçinin Reply-To adresi, özel üstbilgiler ve ekler kullanılamaz.immediate, her uygun bildirimi hemen gönderir.batched, ilk iletişim bildirimini hemen gönderir; ardından aynı site ve alıcı için gelen iletişim mesajlarını toplama aralığı sonunda birleştirir. Live Chat her konuşmayı ayrı toplar; yeni bir çevrimdışı konuşmanın ilk uyarısı hemen gönderilir. Varsayılan aralık on dakikadır; desteklenen aralık 1–60 dakikadır.daily, uygun kanalları site ve alıcı başına yalnızca sayıları içeren tek bir günlük özette birleştirir. Seçilen bildirim modufullolsa bile günlük özetler her zaman en az içeriği kullanır.
Ayrı daily_summary seçeneği, sonraki günlerde hâlâ bekleyen işleri alıcılara hatırlatır. Günlük gönderim seçili ve bu seçenek kapalıysa yalnızca yeni eklenen mesajlar günlük bildirim oluşturur. Özetler okunmamış ve yanıt bekleyen işleri ayrı sayar; kanal etiketleri iletişim mesajları ile sohbet konuşmalarını ayırır. Bir iletişim mesajını okumak, yanıt bekleme durumunu kaldırmaz; yanıtlanmış, arşivlenmiş, spam olarak işaretlenmiş ve karantinaya alınmış kayıtlar sayılmaz. Live Chat, açık bir konuşmanın operatör yanıtı bekleyip beklemediğini son gönderen kişiye göre belirler; konuşmayı kapatmak veya yanıtlamak onu bu sayıdan çıkarır. Devre dışı bırakılan kanallar özetlere dahil edilmez.
Yeni sitelerde varsayılan ayarlar alert_only, on dakikalık toplama ve sitenin zaman diliminde 09:00’da günlük özettir. Güncelleme sırasında mevcut sitelerde full, anında gönderim ve kapalı özet ayarları korunur. Mevcut kurulumlarda bu özellikleri açıkça etkinleştirin. Günlük zaman aralığı site başına günde bir kez denetlenir: bekleyen iş yoksa e-posta gönderilmez; daha sonra gelenler sonraki günün özetine dahil edilir.
Sunucuda Laravel zamanlayıcısı her dakika çalışmalıdır; örneğin olağan php artisan schedule:run cron kaydı kullanılabilir. Paket, webblocks:notifications:dispatch komutunu her dakika çalışacak şekilde kaydeder; komut bakım amacıyla ayrıca çalıştırılabilir. Zamanlayıcı durmuşken toplu ve günlük e-postalar beklemede kalır. Birden fazla işçi süreç, atomik kilitleri destekleyen ortak bir önbellek kullanmalıdır. Yönetim bağlantıları güvenilir uygulama URL’sini kullanır; APP_URL değerini CMS sunucusuna göre ayarlayın. Bu bağlantılar giriş işlemini atlamaz ve normal hesap ve site izinlerini uygular.
Site ayarları paneli ve bildirim API’si gönderim sonuçlarını gösterir; iletişim gelen kutusu her gönderimin durumunu saklar. Sonuçlar, mesajın taşıma sistemine teslim edildiğini belirtir; gelen kutusuna ulaştığını garanti etmez. Yapılandırılmışsa CMS’in özel posta ayarları, aksi halde ortam posta ayarları kullanılır. SMTP istisnaları ve mesaj içerikleri gönderim işlerine veya hata ayrıntılarına kopyalanmaz. Gönderim girişimleri otomatik olarak tekrarlanmaz; kesintiye uğramış girişimler on beş dakika sonra başarısız olarak işaretlenir. Bildirim işlem kayıtları, özgün mesaj kayıtlarından ayrı olarak otuz gün saklanır. Devre dışı eklentiler için gönderim yapılmaz; bir sohbeti kapatmak veya bildirimden çıkmak sıradaki bildirimlerini iptal eder.
Bu özellik mesaj bildirimleri ve bekleyen iş hatırlatmaları sağlar. Genel site erişilebilirliği izleme işlevi eklemez ve operatör yanıtlarını ziyaretçilere göndermez.
Zamanlayıcı Durumu (CMS 1.95.1)
Kontrol Paneli ve Sites → Düzenle → Contact, kaydedilen programlayıcı durumunu, son programlanan kalp atışını ve son tamamlanan bildirim çalıştırmasını gösterir. Site bildirim API'si aynı scheduler_health nesnesini döndürür. Kaydedilen bir görev veya hemen gönderilen bir e-posta, zamanlayıcının çalıştığını doğrulamaz. Eksik yürütme kanıtı: Henüz doğrulanmadı; beş dakikadan eski kanıt Delayed'dir. İşleme hataları ve eksik şema ayırt edilir ve canlı çalıştırma, İlerleme aşamasında'yi kısaca gösterebilir.
Toplu/günlük teslimat veya günlük özetler etkinleştirildiğinde, doğrulanmamış veya gecikmeli planlama, bildirimlerin beklemede kalabileceğine dair belirgin bir uyarı üretir. Sunucu yöneticisi veya barındırma sağlayıcısı tek seferlik kurulumun sahibidir; bkz. Kurulum. Gönderme komutunun manuel olarak çağrılması, planlanmış bir kalp atışı oluşturmaz. Sağlıklı bir yürütme kaydı, gelen kutusunun teslimini garanti etmez; mesaj başına teslim sonuçlarını incelemeye devam edin.