Olaylara Tepki Verme

1.7k görüntülenme Markdown

Entegrasyonunuza hiçbir şey gönderilmez; ya tekrar sorarsınız ya da kendi kodunuzu olayın olduğu yerde çalıştırırsınız.

Genel Bakış

Webhook teslimi yok. Bu bilinçli bir sınır: kurulum sizin uçlarınızın kuyruğunu tutmaz, onlara yeniden denemez ve doğrulayamadığı bir adrese işini sızdırmaz.

Onun yerine iki yaklaşım var ve farklı sorulara cevap veriyorlar.

Tekrar sorun Belirli aralıklarla bir liste ucunu çağırın ve değişene göre davranın. Anahtardan başka bir şey gerekmez, her yerden çalışır, aralığınız kadar gecikir.
Olduğu anda orada olun Bir kancaya dinleyici kaydedin; kodunuz olaya sebep olan isteğin içinde çalışır. Anında ve kesin, ama sunucuya kurulmuş kod ister.

Seçimi kodunuzun nerede yaşayabileceği belirler. Kurulumun dışındaki entegrasyon yoklama yapar. Kurulumla birlikte gelen bir modül, ek hizmet ya da tema dinler.

Ön Koşullar

  • Dinleyici yolu için: kurulumun içine PHP koyabileceğiniz bir yer, ki bu pratikte kendi modülünüz demek.
  • İstediğiniz kancanın tam adı. Adlar katalogludur ve var olmayan bir ad sessizce başarısız olur.

Adım Adım

Kancayı Seçin

  1. Önemsediğiniz anı bu dokümanın Kancalar bölümündeki katalogda bulun.
  2. Aldığı değerleri ve mekanizmasını okuyun. Bazı kancalar olanı bildirir, bazıları bir değeri değiştirmenize izin verir, üçüncü tür ise bir işlemi tamamen reddedebilir.
  3. Kaç değer aldığına dikkat edin. Kancanın gönderdiğinden fazlasını tanımlamak dinleyicinizi devre dışı bırakır.

Dinleyici Kaydedin

  1. Modülünüze bir hooks.php koyun ve dinleyiciyi oraya ekleyin.
  2. Gövdeyi hafif tutun. Birinin isteğinin içinde çalışır; oradaki yavaş iş, bekleyen kişi tarafından hissedilir.
  3. Yavaş olan her şeyi bir kuyruğa, dosyaya ya da zamanlanmış göreve devredin; dışarıya çağrıyı o yapsın.

Çalıştığını Doğrulayın

  1. Olayı bir kez gerçekten oluşturun ve sizin tarafınızın gördüğünü onaylayın.
  2. Hiçbir şey olmadıysa koda dokunmadan önce hata kaydında iki mesaj arayın: biri çalışıp hata veren dinleyiciyi, diğeri sınıf ya da metot adı çözülemeyen dinleyiciyi bildirir.
  3. İkisi de yoksa ya kanca adı yanlıştır ya da dinleyici bilerek hiçbir şey döndürmüştür.

Örnek

Yeni siparişe tepki veren, onu aynı süreç içinde API üzerinden geri okuyan ve dışarıya çağrıyı kuyruğa bırakan bir dinleyici.

coremio/modules/Addons/AcmeSync/hooks.php
\Hook::add('action:order.created', 10, function (array $order) {
    $id = (int) ($order['id'] ?? 0);
    if (!$id) return;

    // HTTP adresinin sundugu kaynagin ayni: anahtar da ag turu da gerekmez
    $full = \WISECP\Api\Kernel::internal('Orders/GetOrder', ['id' => $id]);
    if (isset($full['error'])) return;

    // kuyruga birakin; birinin odeme adiminin icinden kendi ucunuzu cagirmayin
    \Acme\Sync::enqueue('order.created', $full['data']);
});
action:order.created Sipariş satırı yazıldıktan sonra, onay bildiriminden önce çalışır. Sipariş içeriğini yeni kimliğiyle birleştirilmiş olarak alır. Dönüş yoksayılır; yukarıdaki dinleyicideki erken çıkışlar da sadece kendi kodunuzu bitirir.
action:invoice.status_changed Para tarafındaki karşılığı: bir fatura durumlar arasında her geçtiğinde, ödendi durumuna geçiş dahil, çalışır. Yeniden yüklenmiş faturayı, yeni durumu, önceki durumu ve geçiş seçeneklerini alır. Dönüş yoksayılır.

Tuzaklar

Bozuk dinleyici atlanır, size bildirilmez

Motor, dinleyicinin fırlattığı her şeyi yakalar, hata kaydına yazar ve sıradakine geçer. Bunun olduğu sayfa, hiçbir dinleyici kayıtlı değilmiş gibi devam eder. "Kodum hiç çalışmıyor" ile "kodum her seferinde hata veriyor" dışarıdan aynı görünür; ikisini ayıran tek yer hata kaydıdır.

Boş bir değer, sonrakileri kaydırır

Değerler sıraya göre bağlanır ve boş olan atlanır, dolayısıyla sonraki değer onun yerine kayar. İki değer tanımlamış bir dinleyici, hiçbir uyarı almadan ikinci değeri ilk sırada alabilir. Gerçekte ne gönderildiğini katalog kaydından okuyun.

Yoklamanın bir tabanı var: istek bütçeniz

Saniyede bir yoklama, bir anahtarın bütün dakikalık bütçesini bir dakikada harcar. Entegrasyonunuzun kaldırabileceği bir aralık seçin, her çağrı küçük kalsın diye sunucu tarafında süzün ve 429 aldığınızda döngüyü sıkmak yerine durun.

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.