LorentzCTI — Servidor CTI¶
Planta de deploy¶
| Planta | Este documento | Projeto |
|---|---|---|
| A — Issabel/Asterisk (stack VPS) | ✅ Sim | server/LorentzCTI → container lorentz-cti |
| B — Intelbras Impacta CSTA | ❌ Ver 21-plano-deploy-impacta-csta.md | server/LorentzCTI.Impacta → systemd isolado |
Visão geral¶
LorentzCTI (server/LorentzCTI) é o servidor CTI central (.NET 9):
- Integração PBX via AMI (Asterisk/Issabel)
- TCP para agentes desktop (8000)
- TCP Concentre/Phoenix para Supervisor (3000)
- TCP URA (4000)
- Persistência SQL Server
Documentação técnica: server/LorentzCTI/docs/documentacao-tecnica.md
Deploy via Docker (VPS — net9.0.zip)¶
Na VPS, o container usa binários em resources/lorentz-cti-publish/ (extraídos de net9.0.zip):
cd ~/omnichannel/lorentz-vps-stack
./scripts/extract-lorentz-cti-publish.sh resources/net9.0.zip
./scripts/render-config.sh
docker compose up -d --build lorentz-cti
docker compose logs -f lorentz-cti
Gerar o zip no PC de desenvolvimento:
Build a partir do código-fonte (opcional):
Build manual (sem Compose)¶
No PC com .NET SDK 9:
cd server/LorentzCTI
dotnet publish LorentzCTI.vbproj -c Release -o ./publish /p:UseAppHost=false
cp ~/lorentz-vps-stack/config/runtime/LorentzCTI.ini ./publish/
cd publish && dotnet LorentzCTI.dll
Configuração — LorentzCTI.ini¶
Arquivo montado em /app/LorentzCTI.ini no container. Template: config/templates/LorentzCTI.ini.template.
Seção crítica [Parametros]¶
| Chave | Descrição | Exemplo VPS |
|---|---|---|
ServidorSQL |
Host SQL | sqlserver |
BancoSQL |
Nome BD | LorentzCTI |
UsuarioSQL / SenhaSQL |
Credenciais | sa / senha .env |
PhoenixPortaTCP |
Agentes desktop | 8000 |
Concentre_Porta |
Supervisor / Phoenix | 3000 |
URA_Porta |
URA XML | 4000 |
CTI_Impacta_Ip |
IP AMI PBX | host.docker.internal |
CTI_Impacta_Porta |
Porta AMI | 5038 |
Modelo |
Driver central | asterisk |
Username / Secret |
AMI user/pass | admin / amp111 |
MonitorApiEnabled |
API web MonitorCTI | 1 |
MonitorApiPort |
HTTP monitor | 8090 |
MonitorApiKey |
Chave header X-Monitor-Api-Key |
ver .env |
MonitorApiSseIntervalMs |
Intervalo SSE (ms) | 2000 |
Nota legado:
clsParametro.vbpode usar senha SQL hardcoded em algumas builds — valide conexão após deploy.
Monitor API (substituto web do MonitorCTI)¶
O MonitorCTI desktop (Windows) não roda no stack Linux. O LorentzCTI expõe os mesmos dados via HTTP:
| Endpoint | Função |
|---|---|
GET /api/monitor/snapshot |
Agentes + dispositivos + fila |
GET /api/monitor/stream |
SSE tempo real (~2s) |
GET /api/monitor/parameters |
Parâmetros INI (senhas mascaradas) |
GET /api/monitor/agents |
Somente agentes |
GET /api/monitor/devices |
Somente dispositivos |
GET /health |
Health check (sem auth) |
- Doc técnica:
server/LorentzCTI/docs/api-monitor.md - Dashboard: Portal Orbitall → CTI (
/cti/) - Proxy nginx:
/api/cti/monitor/*→lorentz-cti:8090/api/monitor/* - Config Portal:
config.json→ctiMonitor.apiKey,useSse: true
Após alterar o código-fonte, regenere o zip e reinicie o container:
./scripts/build-lorentz-cti-zip.sh # no repo omnichannel
./scripts/extract-lorentz-cti-publish.sh resources/net9.0.zip
./scripts/render-config.sh
docker compose up -d --build lorentz-cti lorentz-portal
Teste:
curl -H "X-Monitor-Api-Key: $LORENTZ_CTI_MONITOR_API_KEY" http://localhost:8090/api/monitor/snapshot
curl -N -H "X-Monitor-Api-Key: $LORENTZ_CTI_MONITOR_API_KEY" http://localhost:8090/api/monitor/stream
curl -H "X-Monitor-Api-Key: $LORENTZ_CTI_MONITOR_API_KEY" http://localhost:8090/api/monitor/parameters
Planta B (Impacta CSTA)¶
Não usar este container para central Intelbras. Plano completo: 21-plano-deploy-impacta-csta.md.
Portas publicadas¶
| Porta | Protocolo | Consumidor |
|---|---|---|
| 8000 | TCP | Clientes agente CTI |
| 3000 | TCP | Supervisor (EW_PHOENIX_PORTA) |
| 4000 | TCP | Lorentz URA |
| 8000 | UDP | MonitorCTI (legado desktop) |
| 8090 | HTTP | Monitor API + dashboard /cti/ |
Healthcheck¶
docker exec lorentz-cti bash -c 'timeout 2 bash -c "</dev/tcp/127.0.0.1/3000"'
docker compose ps lorentz-cti
Logs¶
Logs legados: Agente*.log, LogAsterisk*.log, LogURA*.log
Deploy nativo (systemd) — alternativa¶
Ver resources/systemd/LorentzCTI.service.example:
sudo mkdir -p /var/lorentz
sudo cp publish/* /var/lorentz/
sudo cp config/runtime/LorentzCTI.ini /var/lorentz/
sudo cp resources/systemd/LorentzCTI.service /etc/systemd/system/
sudo systemctl enable --now LorentzCTI
Integração com Issabel¶
- Issabel rodando (hostnet, AMI 5038)
CTI_Impacta_Ip=host.docker.internalno INI- Credenciais AMI idênticas no Issabel e no INI
- Teste AMI: