Introducción:
Los webhooks son cruciales para integrar diferentes servicios, permitiendo la comunicación en tiempo real entre ellos. A menudo se activan por eventos en un sistema, enviando datos estructurados a otro punto final. Sin embargo, algunos sistemas limitan el soporte de webhooks a un único punto final. En este artículo, veremos cómo manejar datos de webhook en PHP, guardarlos localmente y reenviarlos a varios puntos finales. Además, exploraremos opciones no programáticas utilizando herramientas de automatización para lograr el mismo objetivo.
Guía paso a paso para recibir y redirigir Webhooks en PHP
Recibir datos de Webhook
Para capturar datos de un webhook, utiliza la función file_get_contents()
de PHP para leer el cuerpo de la petición. Este ejemplo asume datos JSON, utilizados habitualmente en los webhooks. El siguiente fragmento de código muestra cómo recibir y registrar los datos 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));
}
?>
Explicación:
- Recepción de los datos: Utilizamos
file_get_contents("php://input")
para capturar los datos recibidos del webhook. - Registrar los datos: Este paso es opcional y registra los datos en un archivo (
log.txt
) para su confirmación y depuración. - Puntos finales: Define las URL a las que se reenviarán los datos.
- Función de reenvío:
forwardWebhook()
es una función que utilizacURL
para enviar los datos en formatoPOST
a cada punto final especificado. - Envío de datos: El bucle
foreach
envía los datos a cada punto final de webhook de la lista definida.
Prueba y supervisión del script
Para asegurarte de que tu script funciona como esperas, pruébalo con varias peticiones de webhook. Confirma que cada punto final recibe los datos correctamente. Puedes examinar el archivo log.txt
para verificar que los datos se reciben y almacenan correctamente antes de ser reenviados.
Soluciones alternativas: Utilizar herramientas de automatización
Si prefieres un enfoque sin código, varias plataformas de automatización te permiten gestionar y redirigir webhooks sin necesidad de programar. Aquí tienes algunas opciones populares:
- Zapier: Zapier ofrece una plataforma intuitiva para integrar webhooks. Puedes configurarlo para recibir un evento webhook y configurar «Zaps» para reenviar los datos a múltiples puntos finales. Es ideal para usuarios no técnicos.
- Integromat (Make): Integromat, ahora conocido como Make, proporciona flujos de trabajo flexibles que incluyen soporte para webhook. Puedes recibir datos en un único webhook y dividirlos en distintos módulos para enviarlos a varios puntos finales.
- IFTTT (Si esto, entonces aquello): IFTTT es una sencilla herramienta de automatización adecuada para operaciones básicas de webhook. Puedes configurar desencadenantes y acciones para recibir un webhook y pasar datos a varios servicios.
- Microsoft Power Automate: Power Automate ofrece capacidades de automatización e integración a nivel empresarial. Si utilizas el ecosistema de Microsoft, ésta podría ser una opción sólida para gestionar y distribuir los datos de los webhooks.
- Sueño en tuberías: Pipedream es otra herramienta excelente tanto para desarrolladores como para no desarrolladores, que te permite gestionar webhooks, transformar datos y dirigirlos a diferentes servicios.
- Pabbly Conectar: Pabbly Connect es una herramienta de automatización potente pero sencilla que te permite gestionar y reenviar webhooks fácilmente. Con una interfaz fácil de usar, Pabbly Connect permite a los usuarios configurar flujos de trabajo para enrutar datos a múltiples puntos finales sin problemas, por lo que es una buena opción para los no programadores que buscan agilizar el flujo de datos de los webhooks.
- Integramente: Integrately es una herramienta de automatización sencilla pero eficaz que te permite conectar webhooks a través de múltiples plataformas rápidamente. Con opciones de automatización preconfiguradas, Integrately permite a los usuarios establecer flujos de trabajo sin una configuración exhaustiva, lo que la hace ideal para enrutar datos de webhooks a través de múltiples puntos finales con el mínimo esfuerzo.
Cada una de estas herramientas proporciona interfaces paso a paso para manejar datos de webhook, lo que facilita el envío de datos a múltiples puntos finales con una configuración mínima.
Conclusión: Este script PHP recibe eficazmente los datos del webhook y los reenvía a múltiples puntos finales, eludiendo la limitación del punto final único. Registra los datos como referencia, asegurando que no pierdes información aunque falle un punto final. Para quienes prefieran no codificar, las herramientas de automatización como Zapier, Make e IFTTT ofrecen alternativas prácticas, que te permiten redirigir webhooks sin esfuerzo y sin conocimientos de programación.