Müşteri Hesap ve İletişim Kancaları

1.6k görüntülenme Markdown

Müşteri hesabı ve site iletişiminin on dört kancası: API anahtarları, profil, para birimi, iletişim formu ve bülten.

Genel Bakış

Müşterinin ve ziyaretçinin site üzerinde bıraktığı izler burada: API anahtarları, profil, para birimi tercihi, iletişim formu ve bülten.

Bu kancaların çoğunda veri doğrulanmamış bir kaynaktan gelir: iletişim formunu dolduran ziyaretçi, bültene abone olan adres, bulunamayan sayfayı isteyen bot. Dış servise taşımadan önce kendiniz denetleyin.

Referans

API anahtarı izinlerinin değişmesini izleme

actionclient.api_key_updated
AccountApiKeys yalnız yeni izinler

Bir API anahtarının izinleri değiştikten sonra çalışır. İzin genişlemesi bir güvenlik olayıdır.

Parametreler 3
$owner_idintAnahtarın sahibi.
$idintAnahtar kaydının kimliği.
$permsarrayAnahtarın yeni izin kümesi. ? Eski küme geçilmez: "izin genişledi mi" sorusunu cevaplamak istiyorsanız önceki hâli kendiniz saklamış olmalısınız.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.api_key_updated', 10, function ($owner_id, $id, $perms) {
    // Eski izin kumesi gecilmez: karsilastirma icin kendiniz saklayin.
    Acme::recordScopes($id, $perms);
});

API anahtarının yenilenmesini izleme

actionclient.api_key_regenerated
AccountApiKeys kayıt kalır

Bir API anahtarının değeri yenilendikten sonra çalışır. Kayıt aynı kalır, kimlik değişir: eski değerle yapılan çağrılar artık geçmez.

Parametreler 2
$owner_idintAnahtarın sahibi.
$idintKaydın kimliği; yenilemeden sonra da aynıdır.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.api_key_regenerated', 10, function ($owner_id, $id) {
    // Eski deger artik gecmez: kendi onbelleginizi tazeleyin.
    Acme::invalidateCachedKey($id);
});

API anahtarının silinmesini izleme

actionclient.api_key_deleted
AccountApiKeys kayıt yok

Bir API anahtarı silindikten sonra çalışır.

Parametreler 2
$owner_idintAnahtarın sahibi.
$idintSilinen kaydın kimliği; satır artık yoktur.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.api_key_deleted', 10, function ($owner_id, $id) {
    Acme::revokeIntegration($id);
});

Müşteri profilinin güncellenmesini izleme

actionclient.profile_updated
AccountProfile hesap, giriş değil

Müşteri profili güncellendikten sonra çalışır.

Parametreler 3
$uidintProfili güncellenen hesabın kimliği. ? Giriş yapanın kimliği değildir: uygun izne sahip bir alt kullanıcı başka bir hesabın profilini güncelleyebilir. Denetim kaydına aktörü yazacaksanız oturumdan ayrıca okuyun.
$data_updatesarrayAna kayıtta yazılan alanlar, yalnız yeni değerler: adı, telefonu, dili, para birimi.
$info_updatesarrayEk bilgide yazılanlar: müşteri tipi, şirket bilgileri, adres alanları.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.profile_updated', 10, function ($uid, $data_updates, $info_updates) {
    // $uid HESABIN kimligi, giris yapanin degil.
    Acme::syncCrm($uid, $data_updates + $info_updates);
});

Para birimi değişimini izleme

actionclient.currency_changed
website misafirde boş

Ziyaretçi site para birimini değiştirdiğinde çalışır. Değişiklik çoktan uygulanmıştır.

Parametreler 3
$new_cidintYeni para birimi.
$old_cidintÖnceki para birimi.
$memberarrayGiriş yapmış üyenin oturum verisi. Misafirde boştur: bu kanca giriş yapmamış ziyaretçide de çalışır.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.currency_changed', 10, function ($new_cid, $old_cid, $member) {
    // Misafirde uye verisi BOS gelir.
    if (!$member) return;

    Acme::rememberCurrency((int) ($member['id'] ?? 0), $new_cid);
});

Bulunamayan sayfayı izleme

actionclient.page_not_found
website bot trafiği dâhil

İstenen adres çözülemediğinde çalışır. Kırık bağlantıları bulmanın en doğrudan yoludur.

Parametreler 1
$urlstringİstenen tam adres. ? Bu kanca tarama botlarının denediği adreslerde de çalışır ve bir sitede bunlar insan trafiğinden çok olabilir. Her çağrıda kayıt yazan bir dinleyici, kendi tablosunu çöple doldurur.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.page_not_found', 10, function ($url) {
    // Bot trafigi insan trafiginden cok olabilir: suzun.
    if (Acme::looksLikeScanner($url)) return;

    Acme::noteBrokenLink($url);
});

İletişim formunun gönderilmesini izleme

actionclient.contact_submitted
ClientContact ziyaretçiden gelir

Ziyaretçi iletişim formunu gönderdikten sonra çalışır.

Parametreler 6
$message_idintOluşan mesaj kaydının kimliği.
$full_namestringGönderenin adı.
$emailstringGönderenin adresi.
$phonestringTelefonu; boş olabilir.
$messagestringMesaj gövdesi, işaretlemeden arındırılmış.
$ipstringGönderenin adresi. Bu değerlerin hepsi ziyaretçiden gelir: kimliği doğrulanmamıştır, dış servise göndermeden önce kendiniz denetleyin.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.contact_submitted', 10,
    function ($message_id, $full_name, $email, $phone, $message, $ip) {
        // Degerlerin hepsi ZIYARETCIDEN gelir: dogrulanmamistir.
        Acme::pushToCrm($message_id, $email, $message);
    });

İletişim mesajının yanıtlanmasını izleme

actionclient.contact_message_replied
ClientContact yanıt sonrası

Yönetici bir iletişim mesajını yanıtladıktan sonra çalışır.

Parametreler 2
$messagearrayYanıtlanan özgün mesaj.
$admin_messagestringGönderilen yanıt metni.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.contact_message_replied', 10, function ($message, $admin_message) {
    Acme::closeCrmCase((int) ($message['id'] ?? 0));
});

Mesajın istenmeyen işaretlenmesini izleme

actionclient.contact_message_spam_reported
ClientContact iki ayrı işaret

Bir iletişim mesajı istenmeyen olarak işaretlendikten sonra çalışır. Yanındaki iki işaret ne kadar sert davranıldığını söyler.

Parametreler 3
$messagearrayİstenmeyene taşınan mesaj; adres ve telefon içinde.
$block_emailsintAdres ve telefonun engel listesine eklenip eklenmediği.
$report_spamintAğ adresinin engellenip engellenmediği. Bu iki işaret bağımsızdır: biri açık öteki kapalı olabilir. İkisini bir sanan bir dinleyici yanlış rapor üretir.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.contact_message_spam_reported', 10,
    function ($message, $block_emails, $report_spam) {
        // Iki isaret bagimsizdir.
        if ($report_spam) Acme::shareBadAddress($message['ip'] ?? '');
    });

Mesajın talebe dönüşmesini durdurma

gateclient.contact_message_to_ticket
ClientContact dönüşümden önce

Bir iletişim mesajı destek talebine dönüştürülmeden önce çalışır.

Parametreler 3
$messagearrayDönüştürülecek mesaj.
$departmentintHedef departman.
$staffintAtanacak personel; sıfır ise atama yapılmayacaktır.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve ziyaretçiye hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:client.contact_message_to_ticket', 10,
    function ($message, $department, $staff) {
        if (Acme::blockedSender($message['email'] ?? '')) return 'Bu gonderici icin talep acilamaz.';

        return null;
    });

İletişim sayfası verisini değiştirme

filterclient.contact_page_data
ClientContact eklenen anahtar şablona geçer

İletişim sayfası çizilmeden önce çalışır. Ofisler ve destek saatleri çoktan aktif dile göre çözülmüştür.

Parametreler 2
$page_dataarraybağlaSayfa verisi. Eklediğiniz her anahtar şablon değişkeni olur: temanızda doğrudan kullanabilirsiniz.
$langstringbağlaAktif dil.
Dönüş 1
voidDönüş yoksayılır; verinin üzerine yazarsınız.
Dinleyici
Hook::add('filter:client.contact_page_data', 10, function (&$page_data, &$lang) {
    // Eklenen anahtar sablon degiskeni olur.
    $page_data['acme_map'] = Acme::mapEmbed($lang);
});

Bülten kaydını durdurma

gateclient.newsletter_subscribe
ClientNewsletter kayıttan önce

Bir adres bülten listesine eklenmeden önce çalışır. Tek kullanımlık adresleri elemenin yeri burasıdır.

Parametreler 2
$emailstringAday adres; küçük harfe çevrilmiş ve biçimi doğrulanmış.
$langstringKayıt anındaki site dili.
Dönüş 1
string|nullBoş olmayan bir metin işlemi engeller ve ziyaretçiye hata olarak gösterilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:client.newsletter_subscribe', 10, function ($email, $lang) {
    if (Acme::disposableDomain($email)) return 'Bu adres kabul edilmiyor.';

    return null;
});

Bülten kaydını izleme

actionclient.newsletter_subscribed
ClientNewsletter dil de saklanır

Bir adres bülten listesine eklendikten sonra çalışır.

Parametreler 3
$emailstringAbone adresi.
$langstringKayıt anındaki dil. Bu değer saklanır ve toplu gönderimde içeriğin dilini belirler: yanlış dil, aboneye anlamadığı bir e-posta gider.
$addedintOluşan kaydın kimliği.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.newsletter_subscribed', 10, function ($email, $lang, $added) {
    // Dil toplu gonderimde icerigin dilini belirler.
    Acme::syncMailingList($email, $lang);
});

Bülten çıkışını izleme

actionclient.newsletter_unsubscribed
ClientNewsletter bağlantıyla

Bir adres listeden çıkarıldıktan sonra çalışır. Çıkış e-postadaki bağlantıyla yapılır: giriş gerekmez.

Parametreler 1
$emailstringListeden çıkarılan adres.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:client.newsletter_unsubscribed', 10, function ($email) {
    // Kendi listenizden de cikarin: yoksa gonderim surer.
    Acme::dropFromMailingList($email);
});

Tuzaklar

Profil kancasındaki kimlik hesabın kimliğidir

Güncelleme kancasının verdiği kimlik, profili değiştirilen hesabındır; işlemi yapan kişininki değil. Uygun izne sahip bir alt kullanıcı başka bir hesabın profilini güncelleyebilir. Denetim kaydına "kim yaptı" yazacaksanız oturumdan ayrıca okuyun.

Bulunamayan sayfa kancası bot trafiğiyle dolar

Tarama botları var olmayan adresleri sürekli dener; bir sitede bu istekler insan trafiğini kolayca aşar. Her çağrıda kayıt yazan bir dinleyici kendi tablosunu şişirir ve gerçek kırık bağlantıları görünmez kılar. Süzgeç koyun.

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.