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:
- PBX (Issabel) — telefonia SIP, filas, gravações, AMI
- Servidor CTI (LorentzCTI) — distribuição de chamadas, integração PBX ↔ banco ↔ clientes
- 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)¶
- Chamada entra no Issabel (tronco SIP)
- Asterisk gera eventos AMI → LorentzCTI recebe
- LorentzCTI atualiza SQL Server e distribui para agente (TCP 8000) ou fila
- Supervisor consulta SQL e envia comandos (captura, monitor) via TCP 3000
- Agente usa softphone registrado no Issabel + cliente CTI na 8000
Referência cruzada¶
| Necessidade | Onde configurar |
|---|---|
| IP público SIP | .env → ISSABEL_SIP_EXTERNAL_ADDRESS |
| AMI Issabel | Issabel GUI + LorentzCTI.ini → CTI_Impacta_* |
| Phoenix no Supervisor | att_config.php → EW_PHOENIX_* |
| SQL | .env → MSSQL_* + templates |