Gestire i dati dei webhook in PHP e reindirizzare a più endpoint

Introduzione:

I webhook sono fondamentali per integrare diversi servizi, consentendo la comunicazione in tempo reale tra di essi. Spesso vengono attivati da eventi in un sistema, inviando dati strutturati a un altro endpoint. Tuttavia, alcuni sistemi limitano il supporto dei webhook a un solo endpoint. In questo articolo parleremo di come gestire i dati dei webhook in PHP, salvarli localmente e poi inoltrarli a più endpoint. Inoltre, esploreremo le opzioni non programmatiche utilizzando strumenti di automazione per raggiungere lo stesso obiettivo.

Guida passo-passo alla ricezione e al reindirizzamento dei webhook in PHP

Ricevere i dati di Webhook

Per acquisire i dati da un webhook, usa la funzione file_get_contents() di PHP per leggere il corpo della richiesta. In questo esempio si ipotizzano dati JSON, comunemente utilizzati nei webhook. Il frammento di codice che segue mostra come ricevere e registrare i dati del webhook.

<?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));
}
?>

Spiegazione:

  • Ricezione dei dati: Utilizziamo file_get_contents("php://input") per acquisire i dati ricevuti dal webhook.
  • Registrazione dei dati: Questa fase è facoltativa e registra i dati in un file (log.txt) per la conferma e il debug.
  • Endpoint: Definisci gli URL dove verranno inoltrati i dati.
  • Funzione di inoltro: forwardWebhook() è una funzione che utilizza cURL per inviare i dati in formato POST a ciascun endpoint specificato.
  • Invio dei dati: Il ciclo foreach invia i dati a ciascun endpoint webhook dell’elenco definito.

Testare e monitorare lo script

Per assicurarti che il tuo script funzioni come previsto, testalo con diverse richieste di webhook. Verifica che ogni endpoint riceva i dati correttamente. Puoi esaminare il file log.txt per verificare che i dati siano stati ricevuti e memorizzati correttamente prima dell’inoltro.

Soluzioni alternative: Utilizzare gli strumenti di automazione

Se preferisci un approccio senza codice, molte piattaforme di automazione ti permettono di gestire e reindirizzare i webhook senza programmazione. Ecco alcune opzioni popolari:

  1. Zapier: Zapier offre una piattaforma intuitiva per integrare i webhook. Puoi configurarlo per ricevere un evento webhook e impostare “Zaps” per inoltrare i dati a più endpoint. È ideale per gli utenti non tecnici.
  2. Integromat (Make): Integromat, ora noto come Make, offre flussi di lavoro flessibili che includono il supporto di webhook. Puoi ricevere dati su un singolo webhook e suddividerli in diversi moduli per inviarli a vari endpoint.
  3. IFTTT (If This Then That): IFTTT è un semplice strumento di automazione adatto alle operazioni di base con i webhook. Puoi impostare trigger e azioni per ricevere un webhook e passare i dati a più servizi.
  4. Microsoft Power Automate: Power Automate offre funzionalità di automazione e integrazione di livello aziendale. Se utilizzi l’ecosistema Microsoft, questa potrebbe essere una valida opzione per gestire e distribuire i dati dei webhook.
  5. Pipedream: Pipedream è un altro strumento eccellente per sviluppatori e non, che ti permette di gestire webhook, trasformare i dati e indirizzarli a diversi servizi.
  6. Pabbly Connect: Pabbly Connect è uno strumento di automazione potente ma semplice che ti permette di gestire e inoltrare facilmente i webhook. Con un’interfaccia facile da usare, Pabbly Connect consente agli utenti di impostare flussi di lavoro per instradare i dati a più endpoint senza soluzione di continuità, rendendolo una buona opzione per i non programmatori che vogliono ottimizzare il flusso di dati dei webhook.
  7. Integralmente: Integrately è uno strumento di automazione semplice ma efficace che ti permette di collegare rapidamente i webhook tra più piattaforme. Grazie alle opzioni di automazione precostituite, Integrately consente agli utenti di impostare i flussi di lavoro senza una configurazione approfondita, rendendolo ideale per instradare i dati dei webhook su più endpoint con il minimo sforzo.

Ognuno di questi strumenti fornisce interfacce passo-passo per gestire i dati webhook, rendendo semplice l’invio di dati a più endpoint con una configurazione minima.

Conclusione: Questo script PHP riceve efficacemente i dati dei webhook e li inoltra a più endpoint, aggirando la limitazione del singolo endpoint. Registra i dati come riferimento, assicurandoti di non perdere informazioni anche se un endpoint si guasta. Per coloro che preferiscono non utilizzare il codice, gli strumenti di automazione come Zapier, Make e IFTTT offrono alternative pratiche, consentendoti di reindirizzare i webhook senza sforzo e senza avere competenze di programmazione.