İ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:

  • title veya başlık
  • content veya giriş metni
  • submit_label
  • success_message

Ortak operasyonel ayarlar blok ayarlarında bulunur:

  • recipient_email
  • send_email_notification
  • store_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:

  • name
  • email
  • message

İsteğe bağlı alan:

  • subject

Görüntüleyici tarafından üretilen spam önleme denetim alanı:

  • _form_check_name imzalı meta veriler
  • form_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 .env veya 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'ın log, array veya null olduğ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:

  1. Blok düzeyinde recipient_email
  2. Geçerli sitenin Edit Site -> Contact altındaki varsayılan İletişim alıcısı
  3. CONTACT_RECIPIENT_EMAIL
  4. 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:

  1. Yönetici oturum açmanın çalıştığını doğrulayın.
  2. Site kimliği ve alan adı ayarlarının doğru olduğunu doğrulayın.
  3. MAIL_* teslimini veya onaylı sistem posta ayarlarını yapılandırın.
  4. İletişim alıcısını yapılandırın; tercihen Site -> Edit -> Contact altında.
  5. php artisan contact:mail-diagnose komutunu çalıştırın.
  6. Yerel contact_form blokunu içeren bir sayfayı önizleyin veya yayınlayın.
  7. Ad, e-posta, konu ve mesaj içeren bir test mesajı gönderin.
  8. /webadmin/contact-messages ekranının saklanan mesajı gösterdiğini doğrulayın.
  9. 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