Skip to content

reiserfs/sipwebhook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SIP Webhook Application

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.

Features

  • 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.

Configuration

Prerequisites

  • Python 3.11+
  • Libraries installed from requirements.txt

Instalação

  1. Clone o repositório:

    git clone https://github.com/seu_usuario/sip-webhook.git
    cd sip-webhook
  2. Instale as dependências:

    pip install -r requirements.txt
  3. Configure o arquivo config.conf:

    O arquivo config.conf deve 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
  4. Execute a aplicação:

    gunicorn -w 4 -b 0.0.0.0:5000 sip-webhook:app

Configurando Variáveis de Ambiente no Container

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:

Configuração no Dockerfile

# 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_token

Configuração com o Docker Run

Você 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-webhook

Uso

A 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.

Exemplo de chamada ao webhook

curl -X POST http://<IP_DO_SERVIDOR>:5000/webhook -H "Authorization: SEU_TOKEN" -d '{"message": "Alerta de serviço"}'

Endpoint de Status

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"

Documentação da API

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/apidocs

Logs

Os 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

About

Simple Webhook to make a call using a SIP account

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •