📘 Manual Interno 01: Tronco SIP Nvoip no Asterisk, Issabel & FreePBX

🛡️ Sentinel Status

  • Classificação: Manual Técnico Operacional
  • Escopo: Telefonia IP, PABX IP, Roteamento SIP e Interconexão com Nvoip
  • Servidores Alvo: Asterisk 16 / 18 / 20, Issabel PBX, FreePBX 15 / 16, Elastix
  • Host Oficial Nvoip: app.nvoip.com.br (Porta 5060 UDP)

1. Visão Geral da Interconexão SIP

A conexão entre a infraestrutura de PABX local/nuvem e a operadora VoIP Nvoip é estabelecida através de um Tronco SIP autenticado. O PABX atua como um agente de usuário (UAC) registrando-se no Session Border Controller (SBC) da Nvoip.

flowchart LR
    A[Ramais / Softphones] -->|SIP/RTP Local| B(Servidor PBX\nIssabel / Asterisk)
    B -->|SIP Registro 5060\napp.nvoip.com.br| C{Nvoip SBC / Proxy}
    C -->|PSTN / E1 / Fixo| D[Telefonia Pública]
    C -->|SMPP / Cloud| E[Rede Celular Brasil]

2. Parâmetros de Configuração chan_sip (Issabel / FreePBX)

No menu PBX > Trunks (Troncos) > Add SIP Trunk:

2.1. Tronco de Saída (nvoip_out)

Configure o campo Trunk Name como nvoip_out e insira as seguintes diretivas nos PEER Details:

[nvoip_out]
username=68105001
type=peer
secret=SUA_SENHA_SIP
host=app.nvoip.com.br
fromuser=68105001
fromdomain=app.nvoip.com.br
context=from-trunk
dtmfmode=rfc2833
disallow=all
allow=ulaw&alaw
keepalive=yes
session-timers=refuse
nat=force_rport,comedia
qualify=yes
qualifyfreq=60
insecure=invite,port

[!IMPORTANT] A diretiva session-timers=refuse é crítica: Ela impede desconexões involuntárias de chamadas que ultrapassam 15 a 30 minutos em conexões com CGNAT ou roteadores domésticos.


2.2. Tronco de Entrada (nvoip_in)

Configure o USER Context como nvoip_in e preencha os USER Details:

[nvoip_in]
username=68105001
type=friend
secret=SUA_SENHA_SIP
host=app.nvoip.com.br
context=from-trunk
insecure=invite,port
session-timers=refuse
disallow=all
allow=ulaw&alaw
nat=force_rport,comedia
canreinvite=no

2.3. String de Registro (Register String)

No final da página do Tronco SIP, defina a linha de registro para recebimento de chamadas no número DID associado:

usuario:senha@app.nvoip.com.br:5060/usuario

Exemplo real:

68105001:cc93b505@app.nvoip.com.br:5060/68105001

3. Configuração PJSIP Moderna (Asterisk 18/20+)

Para instalações modernas utilizando o driver de canal res_pjsip, configure o arquivo /etc/asterisk/pjsip.conf:

; ========================================================
; TRANSPORTE UDP
; ========================================================
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060

; ========================================================
; REGISTRO DE SAÍDA NVOIP
; ========================================================
[nvoip_reg]
type=registration
outbound_auth=nvoip_auth
server_uri=sip:app.nvoip.com.br:5060
client_uri=sip:68105001@app.nvoip.com.br:5060
retry_interval=60
expiration=300
line=yes
endpoint=nvoip_endpoint

; ========================================================
; AUTENTICAÇÃO
; ========================================================
[nvoip_auth]
type=auth
auth_type=userpass
username=68105001
password=SUA_SENHA_SIP
realm=app.nvoip.com.br

; ========================================================
; AOR (ADDRESS OF RECORD)
; ========================================================
[nvoip_aor]
type=aor
contact=sip:app.nvoip.com.br:5060
qualify_frequency=60

; ========================================================
; ENDPOINT NVOIP
; ========================================================
[nvoip_endpoint]
type=endpoint
context=from-trunk
disallow=all
allow=ulaw,alaw
outbound_auth=nvoip_auth
aors=nvoip_aor
from_user=68105001
from_domain=app.nvoip.com.br
direct_media=no
timers=refuse
force_rport=yes
rewrite_contact=yes
identify_by=username,ip

; ========================================================
; IDENTIFY (RECONHECIMENTO POR IP/DOMÍNIO)
; ========================================================
[nvoip_identify]
type=identify
endpoint=nvoip_endpoint
match=app.nvoip.com.br

4. Plano de Discagem (Dialplan) & Outbound Routes

Para que o Asterisk direcione chamadas através do tronco da Nvoip com a correta formatação brasileira (DDD + Número), adicione ao extensions.conf:

[outbound-nvoip]
; Ligações Locais e Nacionais (DDD + Número de 8 ou 9 dígitos)
exten => _X.,1,NoOp(--- Chamada Saindo via Nvoip ---)
same => n,Set(CALLERID(num)=68105001)
same => n,Set(CALLERID(name)=Artes do Sul)
same => n,Dial(SIP/nvoip_out/${EXTEN},60,TK)
same => n,Hangup()

; Tratamento com prefixo 0 (Ex: 011988887777 ou 04733690000)
exten => _0X.,1,NoOp(--- Discagem com Zero via Nvoip ---)
same => n,Dial(SIP/nvoip_out/${EXTEN:1},60,TK)
same => n,Hangup()

Regras de Discagem no FreePBX / Issabel GUI:

  • Prefix: em branco
  • Match Pattern: NXXXXXXXX (Fixo 8 dígitos)
  • Match Pattern: 9XXXXXXXX (Celular 9 dígitos)
  • Match Pattern: NXXXXXXXXX (DDD + Fixo 10 dígitos)
  • Match Pattern: NXXXXXXXXXX (DDD + Móvel 11 dígitos)

5. Troubleshooting & Diagnóstico de Falhas

5.1. Comandos de Diagnóstico no Console CLI do Asterisk (asterisk -rvvv)

# Verificar status do registro do tronco (chan_sip)
sip show registry

# Verificar status e latência do peer Nvoip
sip show peer nvoip_out

# Ativar debug SIP detalhado para rastrear INVITE/200 OK/BYE
sip set debug ip app.nvoip.com.br

# Para PJSIP:
pjsip show registrations
pjsip show endpoints

5.2. Tabela de Resolução de Códigos de Erro SIP

Código SIP Mensagem Causa Raiz Ação Corretiva
SIP 401 / 407 Unauthorized Desafio de autenticação padrão ou senha errada. Se persistir, confira o campo secret e certifique-se de que o fromuser coincide com o ramal SIP.
SIP 403 Forbidden / User not found Conta SIP inativa, saldo insuficiente ou IP restrito. Acesse painel.nvoip.com.br e verifique o status do ramal e saldo da carteira.
SIP 404 Not Found Rota ou número discado incorreto. Verifique se a rota discada contém o DDD (10 ou 11 dígitos).
SIP 486 / 603 Busy Here / Declined Destinatário ocupado ou recusou chamada. Comportamento normal da rede telefônica externa.
SIP 503 Service Unavailable Falha de rota ou gateway temporariamente fora. Verifique se há failover configurado e consulte o canal de suporte da Nvoip.
Áudio Mudo / Unidirecional RTP Silence (One-Way Audio) Bloqueio de portas UDP RTP (10000 a 20000) ou NAT sem STUN. Certifique-se de que nat=force_rport,comedia está ativo e portas UDP 10000-20000 estão liberadas no firewall.

6. Checklist de Validação Pré-Produção

  • Registro SIP ativo exibindo State: Registered em sip show registry.
  • Ping e resolução DNS estável para app.nvoip.com.br.
  • Chamada de teste realizada para telefone móvel com áudio bidirecional cristalino.
  • Chamada de teste recebida no número DID direcionada à fila ou ramal interno.
  • CallerID configurado no formato aceito pela Nvoip.

7. Provisionamento Automático com nvoip-pabx-provisioner

Para implantações automatizadas em ambientes Linux (Asterisk, FreePBX, Issabel, FreeSWITCH e FusionPBX), a Nvoip disponibiliza o utilitário oficial open-source:

  • Repositório Oficial: https://github.com/Nvoip/nvoip-pabx-provisioner

Comandos de Validação e Teste:

# Validar e testar simulação de tronco Asterisk
nvoip-pabx-provisioner validate --engine asterisk \
  --trunk-user "68105001" \
  --trunk-password "SUA_SENHA" \
  --validate-sipp

# Criar tronco e rotas de teste automáticas
nvoip-pabx-provisioner apply --engine asterisk --with-test-routes

Contorno de SIP ALG em Roteadores Domésticos via TLS (Porta 5061):

Em conexões onde o roteador da operadora possui SIP ALG forçado que corrompe pacotes SDP, utilize criptografia SIP sobre TLS (Transport: tls, porta 5061) com certificado oficial da Nvoip ou conexão via WebSocket Seguro (WSS) para WebRTC.