Telefonia
Nesta sessão, irei detalhar particularidades da telefonia e como analisar.
SNGREP
Using SNGREP
Consultar chamadas SIP:
-> sngrep
- teclando f3 você consegue filtrar pelo número que aparece na requisição:
- Ex de ligação no sngrep:
- INVITE: Indica que o usuário está sendo convidado a participar de uma sessão multimídia.
- Trying: Indica que a requisição está sendo processada.
- 200 OK(Answer): Indica a confirmação de atendimento.
- ACK: Confirmação de mensagem recebida como resposta final a um INVITE.
-
OPTIONS: Faz uma pergunta sobre quais métodos e extensões são suportados pelo servidor e pelo usuário descrito no campo de cabeçalho.
-
BYE: Usado para liberar os recursos associados a uma ligação e forçar a desconexão/desligamento da mesma.
-
CANCEL: Cancela uma requisição que ainda esteja pendente, ou seja, em andamento.
Main Screen
-
-
Idx: Coluna do número da linha.
-
Method: Coluna do tipo de mensagem SIP.
-
SIP From: Coluna do campo "De" (From) da mensagem SIP.
-
SIP To: Coluna do campo "Para" (To) da mensagem SIP.
-
Msgs: Coluna da quantidade numérica de mensagens.
-
Source: Coluna do IP e porta de origem.
-
Destination: Coluna do IP e porta de destino.
-
Call State: Coluna do identificador da chamada.

-
-
SPAM

-
User-Agent: A maioria das tentativas de spam mostra um User-Agent indesejado, como o exibido neste exemplo.
Registration


Registration Expanded


Call Setup


Invite

200 OK

Call completou


F3 Search

F7 Filtro

F8 Configurações
Interface

EEP/HEP HOMER

Call Flow

Capture

log no grep do asterisk
Podemos verificar o tronco e o contexto em que ele está passando em tempo real utilizando o comando a seguir
asterisk -rvvvvvvvvvvvvv | grep -e "9900"
(Pode ser colocado no lugar do 9900 o número que foi ligado ou o ramal)
Exemplo:
1. Informações iniciais da chamada
PJSIP/9923-0000011c answered
Descrição
Indica o estado da chamada do ramal 9923 usando o driver PJSIP.
| Evento | Descrição |
|---|---|
| ringing | O ramal está tocando |
| answered | A chamada foi atendida |
2. Início do Dialplan
Parâmetro
NoOp()
Função usada apenas para log/debug dentro do dialplan.
| Parâmetro | Valor | Significado |
|---|---|---|
| Canal | PJSIP/9923 | Canal que iniciou a chamada |
| Mensagem | S - 20 - 1 - Bina Dinâmica | Identificação do fluxo de chamada |
3. Definição de Variáveis
3.1 EXTERNPRC
Descrição
Número externo que originou ou será usado no processamento da chamada.
| Campo | Valor |
|---|---|
| Variável | EXTERNPRC |
| Valor | 032988611550 |
| Escopo | __ indica variável herdada entre canais |
3.2 ID_LINH
Descrição
Identificador da linha ou da sessão da chamada.
| Campo | Descrição |
|---|---|
| ID_LINH | ID único da chamada |
3.3 ID_ORGANIZACAO
Descrição
Identifica a organização/empresa associada à chamada.
3.4 TIPOCALL
Descrição
Tipo da chamada.
| Valor | Significado |
|---|---|
| S | Saída |
3.5 CHANNEL(accountcode)
Descrição
Define o accountcode do canal para fins de CDR (bilhetagem).
Formato:
4. Execução de Scripts AGI
Os scripts são executados via Asterisk Gateway Interface.
4.1 Script: insCallSainte
Função
Registrar a chamada no banco de dados.
Parâmetros
| Ordem | Parâmetro | Descrição |
|---|---|---|
| 1 | insCallSainte | Nome da função |
| 2 | 032988611550 | Número |
| 3 | 1772545025.284 | ID da chamada |
| 4 | timestamp | Data/hora |
4.2 Script: insProtocolo
Função
Gerar protocolo de atendimento.
Parâmetros
| Parâmetro | Descrição |
|---|---|
| Número | Cliente |
| ID chamada | Identificação da ligação |
| timestamp | Data da ligação |
4.3 Definição do protocolo
Descrição
Número único de protocolo de atendimento.
4.4 Script: actBlacklistSainte
Função
Verifica se o número está na blacklist.
| Possível retorno | Significado |
|---|---|
| OK | Número liberado |
| BLOCK | Número bloqueado |
5. Verificação de Horário
Descrição
Verifica condição de atendimento (exemplo: horário de atendimento).
| Resultado | Ação |
|---|---|
| 1 | continua |
| 0 | vai para encerrar |
6. Log informativo
Descrição
Mensagem de debug indicando configuração de Bina ausente.
7. Definição de dados finais da chamada
7.1 ID_PAC
Identificação do paciente/cliente.
7.2 ID_TRONCO
Identificação do tronco SIP utilizado.
7.3 TELEFONE
Número final utilizado na discagem.
8. Discagem da chamada
Aplicação
Dial()
Responsável por realizar a chamada.
Parâmetros
| Campo | Valor | Descrição |
|---|---|---|
| Tecnologia | PJSIP | Driver SIP |
| Destino | 1541032988611550 | Número discado |
| Tronco | sipsolutionspuri | Servidor SIP |
| Timeout | 45 | Tempo máximo |
| Flags | TtKk | Permissões de transferência |
| U() | gravacao | executa gravação |
9. Encerramento
Finaliza a chamada.
10. Mensagem final
Significado
O fluxo terminou retornando código diferente de zero, geralmente indicando:
-
finalização por lógica
-
retorno de AGI
-
chamada encerrada
Fluxo resumido da chamada
↓
Define variáveis da chamada
↓
Registra chamada (AGI)
↓
Gera protocolo
↓
Verifica blacklist
↓
Valida horário
↓
Define tronco
↓
Discagem via SIP
↓
Gravação
↓
Encerramento
Conceitos básicos de telefonia
Documentação Básica do Asterisk
1. O que é o Asterisk
O Asterisk é um sistema de PBX (Private Branch Exchange) de código aberto que permite criar uma central telefônica baseada em software.
Ele possibilita:
-
Telefonia VoIP
-
Integração com linhas SIP ou operadoras
-
Filas de atendimento
-
URA (menus automáticos)
-
Gravação de chamadas
-
Integração com sistemas externos
Arquivos principais de configuração geralmente incluem:
-
sip.confoupjsip.conf -
extensions.conf -
queues.conf -
voicemail.conf
2. Ramais (Extensions)
Conceito
Ramais representam usuários ou dispositivos telefônicos conectados ao sistema.
Cada ramal pode ser:
-
Telefone IP
-
Softphone
-
Gateway
-
Aplicação
Exemplo de configuração em PJSIP (pjsip.conf):
type=endpoint
context=interno
disallow=all
allow=alaw,ulaw
auth=1001-auth
aors=1001
[1001-auth]
type=auth
auth_type=userpass
username=1001
password=senha123
[1001]
type=aor
max_contacts=1
Funções principais dos ramais
-
Fazer chamadas internas
-
Receber chamadas
-
Participar de filas
-
Transferir chamadas
3. Contextos
Conceito
Contextos organizam regras de discagem dentro do sistema.
Eles definem:
-
Quem pode ligar para quem
-
Para onde uma chamada será direcionada
Configurados no arquivo:
Exemplo:
exten => 1001,1,Dial(PJSIP/1001)
exten => 1002,1,Dial(PJSIP/1002)
exten => 2000,1,Queue(suporte)
Vantagens
-
Controle de permissões
-
Segurança
-
Organização do dialplan
4. Troncos (Trunks)
Conceito
Troncos conectam o Asterisk a outras redes telefônicas.
Podem ser:
-
Operadora VoIP
-
Outro PBX
-
Gateway GSM
-
Linha PSTN
Tipos comuns:
-
SIP trunk
-
IAX trunk
Exemplo de tronco SIP:
type=endpoint
transport=transport-udp
context=entrada
disallow=all
allow=alaw,ulaw
outbound_auth=operadora-auth
aors=operadora
Uso no dialplan:
Isso permite fazer chamadas externas.
5. Filas (Queues)
Conceito
Filas são usadas para distribuir chamadas entre agentes.
Muito utilizadas em:
-
Call centers
-
Suporte técnico
-
Atendimento comercial
Configuradas em:
Exemplo:
strategy=ringall
timeout=15
retry=5
maxlen=10
member => PJSIP/1001
member => PJSIP/1002
Estratégias de atendimento
Algumas estratégias:
-
ringall– toca para todos -
rrmemory– round robin -
leastrecent– quem atende há mais tempo -
fewestcalls– menos chamadas atendidas
Uso no dialplan:
6. URA (IVR)
URA significa Unidade de Resposta Audível, ou menu automático.
Exemplo clássico:
"Digite 1 para vendas, 2 para suporte."
Configurado em extensions.conf.
Exemplo:
exten => s,1,Answer()
same => n,Playback(bem-vindo)
same => n,WaitExten(10)
exten => 1,1,Goto(vendas,s,1)
exten => 2,1,Goto(suporte,s,1)
Funções comuns:
-
Playback()→ toca áudio -
Background()→ toca áudio e espera tecla -
WaitExten()→ aguarda digitação
7. Autenticação
A autenticação garante que apenas dispositivos autorizados possam registrar ramais.
Ela ocorre via:
-
Usuário
-
Senha
-
IP autorizado
Exemplo:
type=auth
auth_type=userpass
username=1001
password=senha123
Boas práticas:
-
Senhas fortes
-
Bloqueio de IP
-
Uso de firewall
-
Limitar tentativas
Ferramentas comuns:
-
Fail2Ban
-
Firewall
8. Problemas Comuns no Asterisk
1. Ramal não registra
Possíveis causas:
-
Usuário ou senha errados
-
Porta SIP bloqueada
-
NAT incorreto
-
IP incorreto
Comando para verificar:
2. Sem áudio (one way audio)
Problema comum em VoIP.
Causas:
-
NAT
-
Firewall
-
RTP bloqueado
Solução:
-
Configurar
rtp.conf -
Liberar portas RTP
3. Chamadas caindo
Possíveis motivos:
-
Timeout SIP
-
Problemas de rede
-
Codec incompatível
4. Filas não chamam agentes
Possíveis causas:
-
Agentes offline
-
Ramal não registrado
-
Estratégia mal configurada
Verificação:
5. URA não reconhece digitação
Pode ocorrer por:
-
Codec incompatível
-
Problema com DTMF
Configuração comum:
9. Comandos úteis no CLI
Acessar console:
Comandos importantes:
Ver ramais:
Ver registros:
Ver filas:
Ver canais ativos:
10. Fluxo típico de chamada
Fluxo comum em sistemas de atendimento:
↓
Tronco SIP
↓
Contexto de entrada
↓
URA
↓
Fila
↓
Ramal (Agente)
Resumo:
No Asterisk:
| Componente | Função |
|---|---|
| Ramais | Usuários/dispositivos |
| Contextos | Regras de discagem |
| Troncos | Conexão com operadoras |
| Filas | Distribuição de chamadas |
| URA | Menu automático |
| Autenticação | Segurança de acesso |