Ir para o conteúdo

Visão geral e arquitetura

Duas plantas de deploy

Planta PBX Servidor CTI Onde está documentado
A (atual) Issabel / Asterisk AMI LorentzCTI em Docker Este doc + 07-lorentz-cti-servidor.md
B (pendente) Intelbras Impacta CSTA LorentzCTI.Impacta systemd 21-plano-deploy-impacta-csta.md

O lorentz-vps-stack implementa hoje apenas a Planta A. A Planta B é um deploy isolado, fora do container lorentz-cti atual.

Nomenclatura dos monitores

Nome O quê Onde
MonitorCTI Agentes, ramais, fila CTI Portal /cti/, API :8090
MonitorOPS Infraestrutura (containers, .env, diagnóstico) Flask :9090, container lorentz-monitor

Objetivo

Subir na mesma VPS as três soluções Lorentz legadas necessárias para operação de contact center:

  1. PBX (Issabel) — telefonia SIP, filas, gravações, AMI
  2. Servidor CTI (LorentzCTI) — distribuição de chamadas, integração PBX ↔ banco ↔ clientes
  3. Supervisor (PHP) — painel web de supervisão, campanhas, relatórios

Diagrama de arquitetura

flowchart TB
    subgraph Internet
        Agents[Agentes / Softphones]
        Browsers[Supervisores / Browser]
    end

    subgraph VPS["VPS Linux (Docker + hostnet)"]
        subgraph HostNet["Rede host — Issabel"]
            Issabel[issabel-prod<br/>Apache + Asterisk + MariaDB]
        end

        subgraph Compose["Docker Compose — lorentz-net"]
            SQL[lorentz-sqlserver<br/>:1433]
            CTI[lorentz-cti<br/>:8000 :3000 :4000]
            SUP[lorentz-supervisor<br/>:8080]
        end
    end

    Agents -->|SIP/RTP 5060 UDP 10000-10100| Issabel
    Browsers -->|HTTPS 443| Issabel
    Browsers -->|HTTP 8080| SUP
    SUP -->|TCP 3000 Phoenix| CTI
    SUP -->|SQL 1433| SQL
    CTI -->|SQL 1433| SQL
    CTI -->|AMI 5038| Issabel
    Issabel -.->|gravações| CTI

Papéis de cada componente

Issabel PBX (issabel4-docker)

  • Asterisk 18, interface web Issabel 4
  • Modo hostnet — SIP/RTP sem NAT Docker
  • MariaDB interna ao container (não confundir com LorentzCTI SQL Server)
  • AMI na porta 5038 para LorentzCTI

LorentzCTI (server/LorentzCTI)

Porta Função
8000 TCP Clientes agente desktop
3000 TCP Concentre / Phoenix — Supervisor web
4000 TCP Integração URA (XML)
8000 UDP Monitor CTI legado (desktop)
8090 HTTP Monitor API + dashboard Portal /cti/

Conecta ao SQL Server (LorentzCTI) e ao PBX via AMI (5038).

Planta B (Impacta): não usa este container — ver 21-plano-deploy-impacta-csta.md.

Supervisor (supervisor/)

  • PHP monolito (AdminLTE, módulos cti_*, sac_*, att_*, pwd_*)
  • Lê/escreve SQL Server via ADODB/sqlsrv
  • Envia comandos CTI via TCP :3000 (Telnet STX/ETX) para LorentzCTI
  • Publicado na porta 8080 para não conflitar com Issabel (443/80)

SQL Server

  • Banco central LorentzCTI
  • Tabelas CTI_*, SAC_*, permissões, auditoria
  • Compartilhado por LorentzCTI e Supervisor

Por que Issabel fica fora do Compose?

O repositório issabel4-docker exige network_mode: host em produção para SIP/RTP corretos. Containers em bridge NAT quebram Contact/SDP, áudio unidirecional e DTMF.

Os demais serviços usam bridge Compose com portas publicadas — adequado para HTTP e TCP internos.

Fluxo de uma chamada (simplificado)

  1. Chamada entra no Issabel (tronco SIP)
  2. Asterisk gera eventos AMI → LorentzCTI recebe
  3. LorentzCTI atualiza SQL Server e distribui para agente (TCP 8000) ou fila
  4. Supervisor consulta SQL e envia comandos (captura, monitor) via TCP 3000
  5. Agente usa softphone registrado no Issabel + cliente CTI na 8000

Referência cruzada

Necessidade Onde configurar
IP público SIP .envISSABEL_SIP_EXTERNAL_ADDRESS
AMI Issabel Issabel GUI + LorentzCTI.iniCTI_Impacta_*
Phoenix no Supervisor att_config.phpEW_PHOENIX_*
SQL .envMSSQL_* + templates