diff --git a/Dockerfile b/Dockerfile index 1166dcd..e08dbeb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,9 @@ # Usar uma imagem oficial do Python como base FROM python:3.10-slim -# Instalar dependências do sistema +# Instalar dependências do sistema, incluindo redis-tools RUN apt-get update && apt-get install -y --no-install-recommends \ + redis-tools \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Definir o diretório de trabalho @@ -22,10 +23,14 @@ RUN mkdir -p /app/static COPY static/ /app/static/ # Garantir permissões de execução ao script inicial +COPY start.sh . RUN chmod +x start.sh +# Converter possíveis caracteres de retorno de carro do Windows +RUN apt-get update && apt-get install -y dos2unix && dos2unix start.sh && apt-get remove -y dos2unix && apt-get autoremove -y && apt-get clean + # Expor as portas usadas pela aplicação EXPOSE 8005 8501 # Definir o comando inicial -CMD ["./start.sh"] \ No newline at end of file +CMD ["/bin/bash", "/app/start.sh"] \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 856b2de..d61709c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,7 @@ services: tcaudio: image: impacteai/transcrevezap:latest networks: - - transcrevezap_network + - sua_rede_externa # Substitua pelo nome da sua rede externa ports: - 8005:8005 # Porta para FastAPI - 8501:8501 # Porta para Streamlit @@ -13,12 +13,13 @@ services: - UVICORN_HOST=0.0.0.0 - UVICORN_RELOAD=true - UVICORN_WORKERS=1 + - API_DOMAIN=seu.dominio.com #coloque seu subdominio da API apontado aqui - DEBUG_MODE=false - LOG_LEVEL=INFO - - MANAGER_USER=seu_usuario_admin - - MANAGER_PASSWORD=sua_senha_segura + - MANAGER_USER=seu_usuario_admin # Defina Usuário do Manager + - MANAGER_PASSWORD=sua_senha_segura # Defina Senha do Manager - REDIS_HOST=redis-transcrevezap - - REDIS_PORT=6380 + - REDIS_PORT=6380 # Porta personalizada para o Redis do TranscreveZAP depends_on: - redis-transcrevezap deploy: @@ -29,7 +30,7 @@ services: - node.role == manager labels: - traefik.enable=true - - traefik.http.routers.tcaudio.rule=Host(`seu.dominio.com`) + - traefik.http.routers.tcaudio.rule=Host(`seu.dominio.com`) #coloque seu subdominio da API apontado aqui - traefik.http.routers.tcaudio.entrypoints=websecure - traefik.http.routers.tcaudio.tls.certresolver=letsencryptresolver - traefik.http.services.tcaudio.loadbalancer.server.port=8005 @@ -38,7 +39,7 @@ services: - traefik.http.middlewares.traefik-compress.compress=true - traefik.http.routers.tcaudio.middlewares=traefik-compress # Configuração do Streamlit - - traefik.http.routers.tcaudio-manager.rule=Host(`manager.seu.dominio.com`) + - traefik.http.routers.tcaudio-manager.rule=Host(`manager.seu.dominio.com`) #coloque seu subdominio do Manager apontado aqui - traefik.http.routers.tcaudio-manager.entrypoints=websecure - traefik.http.routers.tcaudio-manager.tls.certresolver=letsencryptresolver - traefik.http.services.tcaudio-manager.loadbalancer.server.port=8501 @@ -51,10 +52,10 @@ services: volumes: - redis_transcrevezap_data:/data networks: - - transcrevezap_network + - sua_rede_externa # Substitua pelo nome da sua rede externa networks: - transcrevezap_network: + sua_rede_externa: # Substitua pelo nome da sua rede externa external: true name: sua_rede_externa # Substitua pelo nome da sua rede externa diff --git a/main.py b/main.py index 7771df9..8f91f12 100644 --- a/main.py +++ b/main.py @@ -14,7 +14,10 @@ import os app = FastAPI() storage = StorageHandler() - +@app.on_event("startup") +async def startup_event(): + api_domain = os.getenv("API_DOMAIN", "seu.dominio.com") + redis_client.set("API_DOMAIN", api_domain) # Função para buscar configurações do Redis com fallback para valores padrão def get_config(key, default=None): try: diff --git a/manager.py b/manager.py index 0afae31..96eab57 100644 --- a/manager.py +++ b/manager.py @@ -209,6 +209,24 @@ def show_statistics(): st.plotly_chart(fig, use_container_width=True) else: st.info("Ainda não há dados de processamento disponíveis.") + + # Adicionar informações sobre o endpoint da API + st.subheader("Endpoint da API") + api_domain = get_from_redis("API_DOMAIN", "seu.dominio.com") + api_endpoint = f"https://{api_domain}/transcreve-audios" + st.code(api_endpoint, language="text") + + if st.button("ℹ️ Instruções de Uso"): + st.info( + "Para utilizar o serviço de transcrição, siga estas etapas:\n\n" + "1. Copie a URL completa acima.\n" + "2. Na configuração de webhook da Evolution API:\n" + " - Cole a URL no campo apropriado.\n" + " - Ative o webhook.\n" + " - Marque as opções 'Webhook Base64' e o Evento 'MESSAGES_UPSERT'.\n\n" + "Isso permitirá que a Evolution API envie as mensagens de áudio para o nosso serviço de transcrição." + ) + except Exception as e: st.error(f"Erro ao carregar estatísticas: {e}") diff --git a/readme.md b/readme.md index 60ca022..dff6513 100644 --- a/readme.md +++ b/readme.md @@ -41,6 +41,7 @@ Antes de começar, certifique-se de ter os seguintes requisitos: environment: - REDIS_HOST=redis - REDIS_PORT=6380 + - API_DOMAIN=seu-ip - MANAGER_USER=admin - MANAGER_PASSWORD=sua_senha_aqui depends_on: @@ -67,11 +68,10 @@ Acesse a interface de gerenciamento em http://seu-ip:8501. Faça login com as credenciais definidas em MANAGER_USER e MANAGER_PASSWORD. Na seção "Configurações", defina: -GROQ_API_KEY: Sua chave da API GROQ -BUSINESS_MESSAGE: Mensagem de rodapé após transcrição -PROCESS_GROUP_MESSAGES: Habilitar processamento de mensagens em grupos -PROCESS_SELF_MESSAGES: Habilitar processamento de mensagens próprias - +1. GROQ_API_KEY: Sua chave da API GROQ +2. BUSINESS_MESSAGE: Mensagem de rodapé após transcrição +3. PROCESS_GROUP_MESSAGES: Habilitar processamento de mensagens em grupos +4. PROCESS_SELF_MESSAGES: Habilitar processamento de mensagens próprias ## 🔧 Uso Endpoint para Webhook da Evolution API @@ -144,6 +144,7 @@ services: - UVICORN_HOST=0.0.0.0 - UVICORN_RELOAD=true - UVICORN_WORKERS=1 + - API_DOMAIN=seu.dominio.com - DEBUG_MODE=false - LOG_LEVEL=INFO - MANAGER_USER=seu_usuario_admin diff --git a/start.sh b/start.sh index e37f6ab..c01aeb8 100644 --- a/start.sh +++ b/start.sh @@ -7,8 +7,16 @@ initialize_redis_config() { redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_GROUP_MESSAGES "false" redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_SELF_MESSAGES "true" redis-cli -h $REDIS_HOST -p $REDIS_PORT SET DEBUG_MODE "false" + redis-cli -h $REDIS_HOST -p $REDIS_PORT SET API_DOMAIN "$API_DOMAIN" } +# Aguardar o Redis estar pronto +echo "Aguardando o Redis ficar disponível..." +until redis-cli -h $REDIS_HOST -p $REDIS_PORT PING; do + echo "Redis não está pronto - aguardando..." + sleep 5 +done + # Inicializar configurações no Redis initialize_redis_config