This application allows you to manage webhooks and automatically make SIP calls based on notifications received from services like Uptime Kuma, Grafana, and Oh Dear. It uses Flask for the web API and PJSUA to make SIP calls.
- Receive notifications via Webhook from Uptime Kuma, Grafana and Oh Dear.
- Make SIP calls with synthesized text messages (TTS).
- Automatic API documentation using Swagger.
- Monitoring the status of notifications and call queues.
- Python 3.11+
- Libraries installed from requirements.txt
- 
Clone o repositório: git clone https://github.com/seu_usuario/sip-webhook.git cd sip-webhook
- 
Instale as dependências: pip install -r requirements.txt 
- 
Configure o arquivo config.conf: O arquivo config.confdeve conter as seções para autenticação (auth), configuração do servidor SIP (sip), e TTS (tts). Exemplo:[auth] uptime_kuma_token = SEU_TOKEN_UPTIME_KUMA grafana_token = SEU_TOKEN_GRAFANA ohdear_token = SEU_TOKEN_OHDEAR token_status = TOKEN_STATUS [sip] sip_server = sip.example.com sip_username = username sip_password = password sip_destination = destination [tts] lang = pt-br 
- 
Execute a aplicação: gunicorn -w 4 -b 0.0.0.0:5000 sip-webhook:app 
Para utilizar a aplicação em um ambiente Docker, defina as variáveis de ambiente no Dockerfile ou no comando de execução do container. Exemplos:
# Definir variáveis de ambiente
ENV URL_DOMAIN=example.com
ENV HTTP_PORT=80
ENV SIP_SERVER=sip.example.com
ENV SIP_USERNAME=username
ENV SIP_PASSWORD=password
ENV SIP_DESTINATION=destination
ENV TTS_LANG=pt-br
ENV TOKEN_KUMA=uptime_token
ENV TOKEN_OHDEAR=ohdear_tokenVocê também pode configurar as variáveis de ambiente ao executar o container:
docker run -d \
  -e URL_DOMAIN=example.com \
  -e HTTP_PORT=80 \
  -e SIP_SERVER=sip.example.com \
  -e SIP_USERNAME=username \
  -e SIP_PASSWORD=password \
  -e SIP_DESTINATION=destination \
  -e TTS_LANG=pt-br \
  -e TOKEN_KUMA=uptime_token \
  -e TOKEN_OHDEAR=ohdear_token \
  -p 5000:80 \
  sip-webhookA aplicação expõe endpoints para receber notificações dos serviços configurados. O endpoint principal é /webhook, que deve ser chamado pelos serviços de monitoramento.
curl -X POST http://<IP_DO_SERVIDOR>:5000/webhook -H "Authorization: SEU_TOKEN" -d '{"message": "Alerta de serviço"}'Você pode verificar o estado da aplicação através do endpoint /status:
curl -X POST http://<IP_DO_SERVIDOR>:5000/status -H "Authorization: TOKEN_STATUS"A documentação da API pode ser acessada em /apidocs. Certifique-se de que a aplicação esteja em execução e acesse o endpoint para visualizar a documentação interativa.
http://<IP_DO_SERVIDOR>:5000/apidocsOs logs da aplicação são gerados no console. Você pode redirecionar a saída para um arquivo para facilitar a leitura e depuração:
gunicorn -w 4 -b 0.0.0.0:5000 sip-webhook:app > logs/app.log 2>&1