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_aricarregado - Módulo
res_pjsipcom 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_aorsvia 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
| Porta | Protocolo | Serviço |
|---|---|---|
| 5060 | UDP/TCP | SIP (não usado pelo WebRTC) |
| 8088 | HTTP | ARI REST API |
| 8089 | WSS | PJSIP WebRTC signaling |
| 10000-20000 | UDP | RTP media |
Performance
| Métrica | Valor |
|---|---|
| Latência de áudio | < 100ms (típico < 50ms) |
| Codec | Opus (30-50 kbps) |
| Setup de chamada | < 2 segundos |
| Agentes simultâneos | 60+ |