PHP’de Webhook Verilerini İşleme ve Birden Fazla Uç Noktaya Yönlendirme

Giriş:

Web kancaları, farklı hizmetleri entegre etmek ve aralarında gerçek zamanlı iletişim sağlamak için çok önemlidir. Genellikle bir sistemdeki olaylar tarafından tetiklenirler ve yapılandırılmış verileri başka bir uç noktaya gönderirler. Ancak bazı sistemler web kancası desteğini tek bir uç noktayla sınırlar. Bu makalede, web kancası verilerinin PHP’de nasıl işleneceğini, yerel olarak nasıl kaydedileceğini ve daha sonra birden fazla uç noktaya nasıl iletileceğini tartışacağız. Ayrıca, aynı hedefe ulaşmak için otomasyon araçlarını kullanarak programatik olmayan seçenekleri keşfedeceğiz.

PHP’de Webhook’ları Alma ve Yönlendirme için Adım Adım Kılavuz

Webhook Verilerini Alma

Bir web kancasından veri yakalamak için, istek gövdesini okumak üzere PHP’nin file_get_contents() işlevini kullanın. Bu örnek, web kancalarında yaygın olarak kullanılan JSON verilerini varsayar. Aşağıdaki kod parçacığı, web kancası verilerinin nasıl alınacağını ve günlüğe kaydedileceğini göstermektedir.

<?php
// Capture the raw webhook data
$data = file_get_contents("php://input");
$event = json_decode($data, true);

// Log the event data (Optional)
if (isset($event)) {
    $file = 'log.txt';  
    $log_data = json_encode($event) . "\n";  
    file_put_contents($file, $log_data, FILE_APPEND | LOCK_EX);
}

// Define the endpoints where data will be sent
$endpoints = [
    "https://example1.com/webhook-endpoint", // First endpoint
    "https://example2.com/webhook-endpoint"  // Second endpoint
];

// Function to send webhook data to another endpoint
function forwardWebhook($url, $data) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data)
    ]);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

// Send data to each endpoint in the list
foreach ($endpoints as $endpoint) {
    forwardWebhook($endpoint, json_encode($event));
}
?>

Açıklama:

  • Verilerin Alınması: Web kancasından alınan verileri yakalamak için file_get_contents("php://input") adresini kullanıyoruz.
  • Verileri Günlüğe Kaydetme: Bu adım isteğe bağlıdır ve verileri onaylama ve hata ayıklama için bir dosyaya (log.txt) kaydeder.
  • Uç Noktalar: Verilerin iletileceği URL’leri tanımlayın.
  • Yönlendirme İşlevi: forwardWebhook(), verileri POST biçiminde belirtilen her bir uç noktaya göndermek için cURL adresini kullanan bir işlevdir.
  • Veri Gönderme: foreach döngüsü, verileri tanımlanan listedeki her bir web kancası uç noktasına gönderir.

Komut Dosyasının Test Edilmesi ve İzlenmesi

Kodunuzun beklendiği gibi çalıştığından emin olmak için çeşitli web kancası istekleriyle test edin. Her bir uç noktanın verileri doğru şekilde aldığını onaylayın. Verilerin doğru şekilde alındığını ve iletilmeden önce depolandığını doğrulamak için log.txt dosyasını inceleyebilirsiniz.

Alternatif Çözümler: Otomasyon Araçlarını Kullanma

Kodsuz bir yaklaşımı tercih ediyorsanız, çeşitli otomasyon platformları web kancalarını programlama yapmadan yönetmenize ve yönlendirmenize olanak tanır. İşte birkaç popüler seçenek:

  1. Zapier: Zapier, web kancalarını entegre etmek için sezgisel bir platform sunar. Bir web kancası olayı alacak şekilde yapılandırabilir ve verileri birden fazla uç noktaya iletmek için “Zap’ler” kurabilirsiniz. Teknik olmayan kullanıcılar için idealdir.
  2. Integromat (Make): Artık Make olarak bilinen Integromat, webhook desteği içeren esnek iş akışları sağlar. Tek bir webhook üzerinden veri alabilir ve çeşitli uç noktalara göndermek için farklı modüllere bölebilirsiniz.
  3. IFTTT (If This Then That): IFTTT, temel web kancası işlemleri için uygun basit bir otomasyon aracıdır. Bir webhook almak ve birden fazla hizmete veri aktarmak için tetikleyiciler ve eylemler ayarlayabilirsiniz.
  4. Microsoft Power Automate: Power Automate, kurumsal düzeyde otomasyon ve entegrasyon özellikleri sunar. Microsoft’un ekosistemini kullanıyorsanız, bu web kancası verilerini işlemek ve dağıtmak için sağlam bir seçenek olabilir.
  5. Pipedream: Pipedream, hem geliştiriciler hem de geliştirici olmayanlar için web kancalarını yönetmenize, verileri dönüştürmenize ve farklı hizmetlere yönlendirmenize olanak tanıyan bir başka mükemmel araçtır.
  6. Pabbly Connect: Pabbly Connect, web kancalarını kolayca yönetmenizi ve iletmenizi sağlayan güçlü ancak basit bir otomasyon aracıdır. Kullanıcı dostu bir arayüze sahip olan Pabbly Connect, kullanıcıların verileri birden fazla uç noktaya sorunsuz bir şekilde yönlendirmek için iş akışları oluşturmasına olanak tanıyarak, web kancası veri akışını kolaylaştırmak isteyen programcı olmayanlar için iyi bir seçenek haline getirir.
  7. Bütünleşik olarak: Integrately, web kancalarını birden fazla platforma hızlı bir şekilde bağlamanıza olanak tanıyan basit ama etkili bir otomasyon aracıdır. Önceden oluşturulmuş otomasyon seçenekleriyle Integrately, kullanıcıların kapsamlı yapılandırma olmadan iş akışları oluşturmasına olanak tanır ve web kancası verilerini minimum çabayla birden fazla uç noktaya yönlendirmek için idealdir.

Bu araçların her biri web kancası verilerini işlemek için adım adım arayüzler sunarak minimum yapılandırmayla birden fazla uç noktaya veri göndermeyi kolaylaştırır.

Sonuç: Bu PHP betiği web kancası verilerini etkin bir şekilde alır ve tek uç nokta sınırlamasını aşarak birden fazla uç noktaya iletir. Verileri referans için günlüğe kaydeder ve bir uç nokta başarısız olsa bile bilgi kaybetmemenizi sağlar. Kod yazmayı tercih etmeyenler için Zapier, Make ve IFTTT gibi otomasyon araçları pratik alternatifler sunarak web kancalarını programlama becerisi olmadan zahmetsizce yeniden yönlendirmenize olanak tanır.