Desenvolvimento

Integração Asterisk

Configuração do Asterisk PBX, PJSIP WebRTC e aplicação Stasis.

Integração Asterisk

O stCall integra com o Asterisk PBX via duas interfaces:

  • ARI (Asterisk REST Interface) - Eventos e comandos via stcall-ws
  • PJSIP WebRTC - Mídia e sinalização SIP via SIP.js no navegador

Requisitos do Asterisk

  • Asterisk com suporte a ARI e PJSIP
  • Módulo res_ari carregado
  • Módulo res_pjsip com WebRTC
  • Suporte a codec Opus
  • Certificados SSL para WSS

ARI (Asterisk REST Interface)

Configuração (ari.conf)

[general]
enabled = yes
pretty = yes

[stcall]
type = user
read_only = no
password = sua_senha_ari

Aplicação Stasis

O stcall-ws se conecta como aplicação Stasis chamada stCall:

ws://asterisk:8088/ari/events?app=stCall&api_key=admin:senha

Chamadas roteadas para a aplicação Stasis (no dialplan) geram eventos StasisStart.

Dialplan

Exemplo para rotear chamadas entrantes para a aplicação Stasis:

[from-trunk]
exten => _X.,1,Stasis(stCall,incoming,${CALLERID(num)})
same => n,Hangup()

PJSIP WebRTC

Transporte WSS

[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

[auth-template](!)
type=auth
auth_type=userpass

[aor-template](!)
type=aor
max_contacts=5
remove_existing=yes

Endpoint de Agente

[agent-1001](webrtc-endpoint-template)
auth=agent-1001-auth
aors=agent-1001-aor

[agent-1001-auth](auth-template)
username=agent-1001
password=SENHA_SEGURA

[agent-1001-aor](aor-template)
mailboxes=1001@default

Sincronização Automática (PJSIP Sync)

O serviço pjsip-sync.ts do stcall-ws cria endpoints automaticamente no MySQL do FreePBX:

  • Quando um agente é criado no stCall
  • Cria ps_endpoints, ps_auths, ps_aors via Prisma
  • Asterisk detecta as mudanças e carrega os endpoints

Configuração RTP

; rtp.conf
[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=stun.l.google.com:19302

HTTP/WSS

; 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

Comandos de Verificação

# Verificar transportes PJSIP
asterisk -rx "pjsip show transports"

# Verificar endpoints
asterisk -rx "pjsip show endpoints"

# Verificar registros
asterisk -rx "pjsip show registrations"

# Verificar aplicações Stasis
asterisk -rx "ari show apps"

# Verificar canais ativos
asterisk -rx "core show channels"

Portas

PortaProtocoloServiço
5060UDP/TCPSIP (não usado pelo WebRTC)
8088HTTPARI REST API
8089WSSPJSIP WebRTC signaling
10000-20000UDPRTP media

Performance

MétricaValor
Latência de áudio< 100ms (típico < 50ms)
CodecOpus (30-50 kbps)
Setup de chamada< 2 segundos
Agentes simultâneos60+
Copyright © 2026