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 utilizzacURL
per inviare i dati in formatoPOST
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:
- 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.
- 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.
- 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.
- 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.
- Pipedream: Pipedream è un altro strumento eccellente per sviluppatori e non, che ti permette di gestire webhook, trasformare i dati e indirizzarli a diversi servizi.
- 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.
- 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.