Webhooks
Display inline code and code blocks
Webhooks são um poderoso mecanismo para receber notificações em tempo real sobre eventos importantes. No contexto do ApiEuAtendo, o webhook permite que você receba atualizações automáticas diretamente no seu servidor, como o status de mensagens enviadas, recebimento de novas mensagens, entre outros eventos.
Nesta seção, vamos explicar como os webhooks funcionam e como você pode implementar um servidor usando o framework Horse para ouvir os eventos do webhook.
Como Funciona um Webhook?
Um webhook é um “callback” que envia uma solicitação HTTP (geralmente POST
) 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
O diagrama acima ilustra a estrutura típica de uma configuração de webhook, onde você pode escolher entre as abordagens de múltiplos webhooks ou de um único servidor para todos os clientes.
Conclusão
Com o webhook configurado, seu sistema será capaz de receber notificações em tempo real sobre eventos importantes. Usando o framework Horse, a implementação de um servidor para escutar esses eventos é simples e eficiente, permitindo que você processe as informações de forma ágil e automatizada.
Was this page helpful?