Atualmente, em alguns sistemas que estou trabalhando, preciso realizar algumas integrações com webhooks.
Um webhook, é uma notificação enviada por um servidor, para que outros serviços que dele dependem, possam realizar ações automáticas para manter a sincronização de dados, porém, em muitos casos, o webhook necessita de um serviço online para receber estas chamadas.
A proposta desta solução, é que um serviço realizar uma requisição do tipo POST para uma das rotas cadastradas na aplicação, o sistema possa criar um arquivo armazenando um json com seus valores, e em seguida enviar para o discord com o arquivo da requisição em anexo. Desta forma, após subir esta aplicação em um servidor online, será possível receber as notificações dos servidores e realizar testes locais até que seja possível subir sua aplicação em produção com os parâmetros corretos tratando os retornos destas requisições.
Ainda é um projeto inicial, e devo melhorar com o tempo.
- Uma aplicação PHP > 7.4
- Composer
- Um servidor web (apache ou nginx)
- Faça um clone do repositório
git clone https://github.com/jairdeon/webhook-server
- Abra em sua IDE preferida e execute "composer install"
- Execute o projeto utilizando a pasta public como a root do host do seu servidor (no meu caso, costumo utilizar o host como http://webhook-server.web)
- Crie um arquivo na raiz do projeto com o nome .env, e crie a variável
TEST_DISCORD_WEBHOOK
apontando para o link de destino do seu canal do discord - No arquivo index.php, na pasta public temos uma rota apontando para /api/v1/test
- Utilizando um serviço de envio POST (como o postman por exemplo, faça um envido do tipo POST de qualquer JSON)
{
"messageId": "adbddas0-ds91-1846-13a0-adb2108ede",
"topic": "ClienteFornecedor.Alterado",
"event": {
"contato": "Jair Deon",
"email": "jair.deon@gmail.com",
"homepage": "https://www.jairdeon.com"
},
"author": {
"email": "jair.deon@gmail.com",
"name": "Jair Deon",
"userId": 1
},
"appKey": "169938472489",
"appHash": "jair-d02831",
"origin": "webhook-server"
}
- Caso funcione como o esperado, você receberá uma notificação no discord.