feat: edição de rotas de entrada, fix de 2 bugs reais no ESL, diagnóstico de NAT/áudio e softphone WebRTC (PHASE 65/66)
Três achados reportados pelo usuário numa mensagem só: (1) Rotas de Entrada não tinha edição depois de criada — implementada no mesmo padrão de Filas; (2) telas de Platform > Infraestrutura sempre davam "Timeout no ESL" nesta VM — não era limitação permanente como o comentário antigo dizia, e sim ESL_HOST=freeswitch (nome DNS que só existe dentro da rede do Docker) mais um segundo bug independente (`show gateways as json` não é comando válido nesta versão do FreeSWITCH); (3) ramal externo registrava mas sem áudio — diagnosticado com contadores de pacote do iptables: a VM está atrás de um roteador sem port-forward pra faixa de RTP, achado de infraestrutura de rede, não bug de código. Também integra o softphone WebRTC (handphone.js/OpenSIPS, já em produção): código-fonte encontrado em git.falehandix.com.br/Handix/handphone-2.0, patch mínimo pra aceitar o endereço do proxy em runtime (era build-time), nova config global (Platform > Infraestrutura > Softphone WebRTC) e widget na topbar do tenant que pega usuário/domínio/senha do ramal vinculado ao agente logado. Adiciona docs/QA_SETUP.md — runbook completo pra subir o ambiente do zero numa máquina nova (Docker, migrations, seed, systemd), e completa o .env.example que estava faltando a maioria das variáveis reais. Testado ponta a ponta com Playwright: edição de rota (criar/editar/F5), as 3 telas de Infraestrutura com dado real, e um tenant/ramal/agente de teste criados na hora confirmando que o script do softphone recebe as credenciais certas. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
@@ -99,12 +99,25 @@ services:
|
||||
# uma chamada ativa seria latência/confiabilidade desnecessárias
|
||||
# pra um prompt de poucos segundos.
|
||||
- ./data/ivr-prompts:/ivr-prompts
|
||||
# Event Socket (8021) NUNCA publicado — só alcançável por outros
|
||||
# containers na rede interna do compose (agente.md secao 22).
|
||||
# Event Socket (8021) NUNCA publicado pra REDE — só em loopback do
|
||||
# próprio host (agente.md secao 22: "NÃO pública... acesso somente
|
||||
# pela aplicação autorizada"). Achado real testando as telas de
|
||||
# Infraestrutura (platform): o comentário original aqui dizia que
|
||||
# elas SEMPRE falhariam nesta VM porque "apps/api roda fora do
|
||||
# Docker" — isso estava incompleto. `apps/api` (systemd, no host)
|
||||
# JÁ conseguia alcançar o IP do container na rede bridge sem nenhuma
|
||||
# porta publicada (`docker inspect` + `/dev/tcp` confirmam: o HOST
|
||||
# sempre alcança a rede bridge do Docker, só outras MÁQUINAS é que
|
||||
# não). O bloqueio real era `ESL_HOST=freeswitch` — um nome DNS que
|
||||
# só existe dentro da rede interna do Docker, nunca no resolver do
|
||||
# host. `127.0.0.1:8021:8021` resolve isso sem abrir a porta pra
|
||||
# ninguém além do próprio host — mesma garantia de segurança de
|
||||
# antes, só que a aplicação autorizada agora alcança de verdade.
|
||||
# SIP (5060) e RTP (16384-16584, range fixo no Dockerfile) publicados
|
||||
# a partir da PHASE 54 — necessário pra registrar um softphone/telefone
|
||||
# de fora da rede Docker (achado testando registro de verdade).
|
||||
# pra rede a partir da PHASE 54 — necessário pra registrar um
|
||||
# softphone/telefone de fora da rede Docker.
|
||||
ports:
|
||||
- "127.0.0.1:8021:8021"
|
||||
- "5060:5060/udp"
|
||||
- "5060:5060/tcp"
|
||||
- "16384-16584:16384-16584/udp"
|
||||
|
||||
Reference in New Issue
Block a user