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ávelDescriçãoExemplo
NODE_ENVAmbiente da aplicaçãodevelopment
HOSTHost do servidor0.0.0.0
PORTPorta do servidor3000
ASTERISK_HOSTIP/hostname do Asterisk192.168.1.100
ASTERISK_AMI_PORTPorta AMI do Asterisk5038
ASTERISK_ARI_PORTPorta ARI do Asterisk8088
ASTERISK_WS_PORTPorta WebSocket do Asterisk8088
ASTERISK_USERNAMEUsuário ARIadmin
ASTERISK_PASSWORDSenha ARIchangeme
WEBRTC_WSS_URLURL WSS para SIP.jswss://dominio:8089/ws
WEBRTC_DOMAINDomínio SIPdominio.com
WEBRTC_STUN_SERVERServidor STUNstun:stun.l.google.com:19302
WEBRTC_TURN_SERVERServidor TURNturn: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-mode no document.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ávelDescriçãoPadrão
ASTERISK_HOSTIP do Asterisklocalhost
ASTERISK_PORTPorta ARI8088
ASTERISK_USERNAMEUsuário ARIadmin
ASTERISK_PASSWORDSenha ARIchangeme
ASTERISK_APP_NAMENome da app StasisstCall
JWT_SECRETSegredo JWT compartilhado-
WS_PORTPorta do servidor WS3001
WS_HOSTHost do servidor WS0.0.0.0
LOG_LEVELNível de logINFO
HEARTBEAT_INTERVALIntervalo de ping (ms)30000
RECONNECT_MAX_DELAYDelay máx. reconexão (ms)30000
RECONNECT_INITIAL_DELAYDelay inicial reconexão (ms)1000
DB_HOSTHost do PostgreSQLpostgres
POSTGRES_DBNome do bancostcall
POSTGRES_USERUsuário do bancostcall_admin
POSTGRES_PASSWORDSenha do banco-
FREEPBX_DATABASE_URLURL MySQL do FreePBX-
CDR_DATABASE_URLURL MySQL do CDR-
SIP_ENCRYPTION_KEYChave de criptografia SIP-
RECORDINGS_BASE_URLURL base das gravações-
RECORDINGS_ENABLEDHabilitar gravaçõestrue

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
Copyright © 2026