Webhooks (Webhooks)¶
A extensão Webhooks transforma o Moodle em uma plataforma orientada a eventos (Event-Driven). Ela permite que o sistema notifique aplicações externas sempre que algo importante acontece.
No modelo tradicional de integração, um sistema externo precisa perguntar ao Moodle a cada 5 minutos: "Ei, tem algum aluno novo?". Isso gera carga desnecessária no servidor. Com Webhooks, o Moodle avisa ativamente: "Ei, o João acabou de se matricular!" enviando os dados para uma URL configurada.
Para que serve?¶
- Integração em Tempo Real: Sincronizar dados com CRMs (Salesforce, HubSpot, RD Station) no exato momento da ação.
- Automação de Fluxos (iPaaS): Conectar o Moodle a ferramentas como Zapier, n8n, Make ou Power Automate.
- Notificações de Equipe: Enviar um alerta no Slack ou Microsoft Teams quando um aluno for reprovado ou concluir uma trilha.
Funcionalidades Principais¶
1. Catálogo de Eventos¶
O sistema monitora dezenas de eventos nativos do Moodle e do MIDDAG: * Usuários: Criação, Atualização, Login, Exclusão. * Cursos: Matrícula, Desmatrícula, Conclusão de Curso. * Atividades: Envio de Tarefa, Nota de Questionário, Post no Fórum. * Extensões: Compra no E-commerce, Ticket de Helpdesk aberto.
2. Payload Customizável (JSON)¶
O Moodle envia um pacote de dados (Payload) rico e estruturado.
* Em vez de enviar apenas user_id: 54, o webhook pode ser configurado para enviar o objeto completo: { "id": 54, "email": "[email protected]", "fullname": "João Silva" }, facilitando a vida do sistema que recebe.
3. Segurança e Assinatura¶
Para garantir que o dado realmente veio do seu Moodle e não de um hacker tentando injetar dados falsos, cada requisição é assinada com um Hash HMAC-SHA256 usando uma chave secreta que só você e o sistema de destino conhecem.
4. Logs e Retentativas (Retry Policy)¶
Se o sistema de destino estiver fora do ar (Erro 500 ou Timeout), o Moodle não desiste. Ele tenta reenviar a notificação várias vezes (ex: imediatamente, depois em 1min, 5min, 1h) até obter sucesso, garantindo a entrega da informação.
Casos de Uso¶
Marketing (RD Station / HubSpot)¶
- Gatilho: Aluno concluiu o "Curso Gratuito".
- Ação: O Webhook avisa o CRM, que muda o status do Lead para "Qualificado" e envia um e-mail de oferta do "Curso Pago".
Certificação Externa¶
- Gatilho: Aluno aprovado no curso.
- Ação: O Webhook envia os dados para uma certificadora externa que gera um diploma físico e inicia o processo de envio pelos correios.
Monitoramento de Evasão¶
- Gatilho: Aluno desmatriculado (ou trancou matrícula).
- Ação: Avisar a equipe de retenção no Slack para ligar para o aluno imediatamente.
Como Configurar¶
- Acesse Administração do Site > Extensões > Integrações > Webhooks.
- Clique em Novo Webhook.
- Nome: Identificação interna (ex: "Sincronizar CRM").
- URL de Destino: O endereço que receberá os dados (ex:
https://hooks.zapier.com/...). - Eventos: Selecione quais gatilhos disparam este webhook (ex:
\core\event\user_created). - Segredo (Secret): Defina uma senha para assinar a requisição.
Para Desenvolvedores¶
Exemplo de Payload¶
{
"event": "course_completed",
"timestamp": 1678999000,
"data": {
"user": {
"id": 10,
"email": "[email protected]"
},
"course": {
"id": 5,
"fullname": "Curso de PHP"
},
"grade": 95.5
}
}
Verificação de Segurança¶
O Moodle envia um cabeçalho X-Middag-Signature. O recebedor deve calcular o hash do corpo da requisição usando a chave secreta e comparar com este cabeçalho. Se bater, a requisição é legítima.
Perguntas Frequentes¶
O que acontece se a internet cair? As notificações ficam em uma fila interna (Queue). Assim que a conexão voltar ou o Cron rodar, o sistema processa a fila acumulada.
Posso filtrar para disparar apenas para um curso específico?
Sim. Na configuração do Webhook, você pode adicionar filtros lógicos (ex: course_id == 10).
Funciona com localhost? O Moodle precisa conseguir acessar a URL. Se você estiver testando localmente, precisará de uma ferramenta de túnel (como Ngrok) ou usar um serviço como Webhook.site para inspecionar os envios.