Guia Inicio
Configuração
Configuração detalhada do frontend, servidor WebSocket e integração com Asterisk.
Configuração
Frontend (stCall)
Variáveis de Ambiente
O arquivo .env na raiz do projeto stCall/ controla as configurações:
| Variável | Descrição | Exemplo |
|---|---|---|
NODE_ENV | Ambiente da aplicação | development |
HOST | Host do servidor | 0.0.0.0 |
PORT | Porta do servidor | 3000 |
ASTERISK_HOST | IP/hostname do Asterisk | 192.168.1.100 |
ASTERISK_AMI_PORT | Porta AMI do Asterisk | 5038 |
ASTERISK_ARI_PORT | Porta ARI do Asterisk | 8088 |
ASTERISK_WS_PORT | Porta WebSocket do Asterisk | 8088 |
ASTERISK_USERNAME | Usuário ARI | admin |
ASTERISK_PASSWORD | Senha ARI | changeme |
WEBRTC_WSS_URL | URL WSS para SIP.js | wss://dominio:8089/ws |
WEBRTC_DOMAIN | Domínio SIP | dominio.com |
WEBRTC_STUN_SERVER | Servidor STUN | stun:stun.l.google.com:19302 |
WEBRTC_TURN_SERVER | Servidor TURN | turn:openrelay.metered.ca:80 |
Nuxt Config
O arquivo nuxt.config.ts define as configurações do framework:
- Módulos: PrimeVue, Tailwind CSS, Pinia, DevTools
- Tema: Preset customizado baseado no Aura (PrimeVue) com cor primária laranja
- Modo escuro: Classe
.stcall-dark-modenodocument.documentElement - TypeScript: Modo estrito habilitado
- HMR: Polling ativado para compatibilidade com Docker
Tema e Cores
O tema está definido em theme.config.ts:
- Cor primária: Laranja (espectro completo de 50 a 950)
- Baseado no: PrimeVue Aura preset
- Modo escuro: Suportado com alternância de cores
WebSocket Server (websockets-stcall)
Variáveis de Ambiente
| Variável | Descrição | Padrão |
|---|---|---|
ASTERISK_HOST | IP do Asterisk | localhost |
ASTERISK_PORT | Porta ARI | 8088 |
ASTERISK_USERNAME | Usuário ARI | admin |
ASTERISK_PASSWORD | Senha ARI | changeme |
ASTERISK_APP_NAME | Nome da app Stasis | stCall |
JWT_SECRET | Segredo JWT compartilhado | - |
WS_PORT | Porta do servidor WS | 3001 |
WS_HOST | Host do servidor WS | 0.0.0.0 |
LOG_LEVEL | Nível de log | INFO |
HEARTBEAT_INTERVAL | Intervalo de ping (ms) | 30000 |
RECONNECT_MAX_DELAY | Delay máx. reconexão (ms) | 30000 |
RECONNECT_INITIAL_DELAY | Delay inicial reconexão (ms) | 1000 |
DB_HOST | Host do PostgreSQL | postgres |
POSTGRES_DB | Nome do banco | stcall |
POSTGRES_USER | Usuário do banco | stcall_admin |
POSTGRES_PASSWORD | Senha do banco | - |
FREEPBX_DATABASE_URL | URL MySQL do FreePBX | - |
CDR_DATABASE_URL | URL MySQL do CDR | - |
SIP_ENCRYPTION_KEY | Chave de criptografia SIP | - |
RECORDINGS_BASE_URL | URL base das gravações | - |
RECORDINGS_ENABLED | Habilitar gravações | true |
Gerar Chave de Criptografia SIP
bun -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Guarde esta chave em local seguro. Se perdida, não será possível descriptografar as senhas SIP existentes no banco de dados.
Asterisk PBX
Requisitos
- Asterisk com ARI habilitado
- PJSIP configurado com transporte WebRTC (WSS)
- Aplicação Stasis registrada como
stCall
Configuração PJSIP para WebRTC
Adicione o transporte WSS em pjsip.conf:
[transport-wss]
type=transport
protocol=wss
bind=0.0.0.0:8089
external_media_address=SEU_IP_PUBLICO
external_signaling_address=SEU_IP_PUBLICO
allow_reload=yes
Template de Endpoint WebRTC
[webrtc-endpoint-template](!)
type=endpoint
context=from-internal
transport=transport-wss
disallow=all
allow=opus,ulaw,alaw
webrtc=yes
use_avpf=yes
media_encryption=dtls
dtls_auto_generate_cert=yes
dtls_verify=fingerprint
dtls_setup=actpass
ice_support=yes
media_use_received_transport=yes
rtcp_mux=yes
bundle=yes
Criar Endpoint de Agente
[agent-1001](webrtc-endpoint-template)
auth=agent-1001-auth
aors=agent-1001-aor
[agent-1001-auth]
type=auth
auth_type=userpass
username=agent-1001
password=SENHA_SEGURA
[agent-1001-aor]
type=aor
max_contacts=5
remove_existing=yes
Configuração RTP
Em rtp.conf:
[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.l.google.com:19302
Certificados SSL
Para WebSocket Secure (WSS) em desenvolvimento:
openssl req -x509 -newkey rsa:4096 \
-keyout /etc/asterisk/keys/asterisk.key \
-out /etc/asterisk/keys/asterisk.crt \
-days 365 -nodes \
-subj "/CN=seudominio.com"
Configure em http.conf:
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/asterisk/keys/asterisk.crt
tlsprivatekey=/etc/asterisk/keys/asterisk.key