Introdução:
Os webhooks são essenciais para a integração de diferentes serviços, permitindo a comunicação em tempo real entre eles. Eles geralmente são acionados por eventos em um sistema, enviando dados estruturados para outro endpoint. No entanto, alguns sistemas limitam o suporte a webhooks a um único endpoint. Neste artigo, discutiremos como lidar com dados de webhook no PHP, salvá-los localmente e encaminhá-los a vários endpoints. Além disso, exploraremos opções não programáticas usando ferramentas de automação para atingir o mesmo objetivo.
Guia passo a passo para receber e redirecionar webhooks em PHP
Recebimento de dados de webhook
Para capturar dados de um webhook, use a função file_get_contents()
do PHP para ler o corpo da solicitação. Este exemplo pressupõe dados JSON, comumente usados em webhooks. O trecho de código abaixo demonstra como receber e registrar os dados do 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));
}
?>
Explicação:
- Recebendo os dados: Usamos o site
file_get_contents("php://input")
para capturar os dados recebidos do webhook. - Registro de dados: Esta etapa é opcional e registra os dados em um arquivo (
log.txt
) para confirmação e depuração. - Pontos de extremidade: Defina os URLs para os quais os dados serão encaminhados.
- Função de encaminhamento:
forwardWebhook()
é uma função que usacURL
para enviar os dados no formatoPOST
para cada ponto de extremidade especificado. - Envio de dados: O loop
foreach
envia os dados para cada endpoint de webhook na lista definida.
Teste e monitoramento do script
Para garantir que seu script funcione conforme o esperado, teste-o com várias solicitações de webhook. Confirme se cada endpoint recebe os dados corretamente. Você pode examinar o arquivo log.txt
para verificar se os dados foram recebidos e armazenados corretamente antes de serem encaminhados.
Soluções alternativas: Uso de ferramentas de automação
Se você preferir uma abordagem sem código, várias plataformas de automação permitem que você gerencie e redirecione webhooks sem programação. Aqui estão algumas opções populares:
- Zapier: O Zapier oferece uma plataforma intuitiva para a integração de webhooks. Você pode configurá-lo para receber um evento de webhook e definir “Zaps” para encaminhar os dados a vários pontos de extremidade. É ideal para usuários não técnicos.
- Integromat (Make): O Integromat, agora conhecido como Make, oferece fluxos de trabalho flexíveis que incluem suporte a webhook. Você pode receber dados em um único webhook e dividi-los em diferentes módulos para enviar a vários pontos de extremidade.
- IFTTT (If This Then That): O IFTTT é uma ferramenta de automação simples, adequada para operações básicas de webhook. Você pode configurar acionadores e ações para receber um webhook e passar dados para vários serviços.
- Microsoft Power Automate: O Power Automate oferece recursos de automação e integração em nível empresarial. Se você estiver usando o ecossistema da Microsoft, essa pode ser uma opção robusta para manipular e distribuir dados de webhook.
- Pipedream: O Pipedream é outra excelente ferramenta para desenvolvedores e não desenvolvedores, permitindo que você gerencie webhooks, transforme dados e os encaminhe para diferentes serviços.
- Pabbly Connect: O Pabbly Connect é uma ferramenta de automação poderosa, porém simples, que permite que você gerencie e encaminhe webhooks facilmente. Com uma interface amigável, o Pabbly Connect permite que os usuários configurem fluxos de trabalho para encaminhar dados para vários pontos de extremidade sem problemas, o que o torna uma boa opção para quem não é programador e deseja simplificar o fluxo de dados do webhook.
- Integradamente: O Integrately é uma ferramenta de automação simples, porém eficaz, que permite que você conecte webhooks em várias plataformas rapidamente. Com opções de automação pré-construídas, o Integrately permite que os usuários definam fluxos de trabalho sem configurações extensas, o que o torna ideal para rotear dados de webhooks em vários pontos de extremidade com o mínimo de esforço.
Cada uma dessas ferramentas fornece interfaces passo a passo para lidar com dados de webhook, facilitando o envio de dados para vários pontos de extremidade com configuração mínima.
Conclusão: Esse script PHP recebe efetivamente dados de webhook e os encaminha a vários endpoints, contornando a limitação de um único endpoint. Ele registra os dados para referência, garantindo que você não perca informações mesmo que um endpoint falhe. Para aqueles que preferem não programar, ferramentas de automação como Zapier, Make e IFTTT oferecem alternativas práticas, permitindo que você redirecione webhooks sem esforço e sem habilidades de programação.