Como Funciona um Webhook?
Um webhook é um “callback” que envia uma solicitação HTTP (geralmentePOST
) a uma URL especificada sempre que ocorre um evento específico. Em vez de você precisar consultar constantemente o sistema para verificar atualizações, o sistema automaticamente envia essas notificações para seu servidor quando certos eventos acontecem.
Exemplo de Eventos Disparados
- Recebimento de novas mensagens: Quando uma nova mensagem é recebida por um cliente.
- Status de mensagem: Quando o status de uma mensagem enviada (como entregue, lido, etc.) é atualizado.
- Eventos de conexão e desconexão de instâncias.
Implementando um Servidor Webhook com Horse
Vamos implementar um servidor simples usando o framework Horse para ouvir as requisições do webhook e processar as notificações recebidas.Instalação do Horse
Caso ainda não tenha o Horse instalado no seu projeto, você pode instalá-lo usando o repositório Horse no GitHub:Configurando o Servidor Horse
Aqui está um exemplo de como você pode configurar um servidor simples para escutar as requisições do webhook:Explicação do Código
- THorse.Post(‘/resposta’): Cria uma rota para escutar eventos na URL
/resposta
. - Req.Body: Obtém o corpo da requisição HTTP, que normalmente contém o JSON com os dados do evento disparado.
Tratamento dos Dados Recebidos
O JSON enviado pelo webhook pode conter diversas informações, como o status de uma mensagem ou o conteúdo de uma nova mensagem recebida. Você pode usar bibliotecas como SuperObject ou XSuperObject para processar o JSON e extrair os dados que deseja. Exemplo de onde jogar o JSON para ler e observar seu conteudo para tratar em seguida:Testando o Webhook
Para testar o seu webhook, você pode usar ferramentas como ngrok, tunnel CloudFlare, Radmin VPN, ou Hamachi para expor o servidor local na internet e verificar se ele está recebendo os eventos corretamente. Crie um túnel seguro para seu servidor local, tornando-o acessível publicamente e pronto para receber notificações de eventos.Exemplos de Ferramentas para Teste:
- ngrok: Cria um túnel seguro que expõe seu servidor local para a internet.
- tunnel CloudFlare: Uma alternativa para exposição segura via CloudFlare.
- Radmin VPN e Hamachi: Ferramentas para configurar uma rede privada virtual (VPN), possibilitando o acesso remoto ao servidor.
Adicionando o Webhook na Instância do Cliente
Cada cliente pode ter um webhook próprio, o que permite maior flexibilidade e personalização das notificações recebidas. Alternativamente, você pode optar por configurar um servidor único para gerenciar os webhooks de todos os clientes, centralizando as operações. O critério de escolha (individual ou centralizado) pode variar de acordo com a necessidade de cada cliente ou da sua operação.Exemplos de Configuração de Webhook:
- Webhook Próprio por Cliente: Cada instância de cliente tem um endereço de webhook exclusivo, recebendo notificações personalizadas diretamente no servidor configurado.
- Servidor Único para Todos os Clientes: Um servidor centralizado recebe todas as notificações, onde o gerenciamento e roteamento das informações podem ser feitos de forma mais concentrada.
Exemplo de Estrutura de Webhook
