Essa apresentação contém a configuração de todos os tipos básicos de configuração do asterisk.
Qualquer duvida podem mandar um email para:
vicente.proj@hotmail.com
Ou visitar o endereço do you tube que contém muitos vídeos ensinando a configurar o asterisk.
http://www.youtube.com/user/voipjava
2. Principais Tópicos
O que é o asterisk
Alguns Recursos
Arquitetura do asterisk
Hardware e software
Cenários de uso
Instalação no Centos 5
Principais arquivos de configuração
3. Principais Tópicos
Sintaxe de configuração
Plano de discagem com cliente SIP
Correio de voz, salas de conferência e Filas
Estacionamento e transferência de chamadas
Captura e gravação de chamadas
Plano de discagem com cliente IAX
Interligar dois servidores Asterisk com IAX em
modo trunk
4. O que é o Asterisk
É um PABX IP baseado em software livre sob
licença GPL, que pode rodar em vários sistemas
operacionais, mais que se adéqua melhor ao
Linux
Interliga redes IPs a rede de telefonia pública
5. O que é o Asterisk
Configuração de Recursos avançados e a
agregação de novas funcionalidades.
Foi desenvolvido pela Digium que também
investe em Hardware de baixo custo
Software de código aberto, muitos
desenvolvedores contribuem para o seu
crescimento.
6. Alguns Recursos
Salas de Conferências
Gravação de chamadas
Transferência de ligações
Estacionamento de chamadas
Filas de atendimento
Correio de voz
7. Alguns Recursos
URA (unidade de resposta audível)
Planos de discagens flexíveis
Música em espera
Monitoramento de chamadas
Uso de banco de dados (MySQL, PostgreSQL)
Geração de bilhetagem
9. Arquitetura do Asterisk
Canais
- Linhas Telefônicas;
- Analógicas, Digitais e Virtuais;
- Modulados por Codecs;
Encapsulados por um Protocolo Sinalizador
- Estabelecer as conexões;
- Campainha;
- Desconexão;
10. Arquitetura do Asterisk
Codecs
– Compressão da voz;
Principais
– G.729a – 8Kbits com licença;
– G.711 ulaw - usado nos EUA 64 Kbps;
– G.711 alaw - usado na Europa e Brasil 64 Kbps;
– G.723.1 - 5.3-6 Kbps com licença;
– GSM - 12-13 Kbps, Telefonia Celular;
11. Arquitetura do Asterisk
Protocolos
– H323 – Antigo protocolo para VoIP.
– IAX – Inter-Asterisk Exchange Protocol;
– SIP – Session Initiation Protocol;
– Skinny - Telefones IP da Cisco;
– ZAP/DAHDI – Hardware de Digium;
18. Instalação
Baixa-se os pacotes do site da Digium:
- asterisk-1.4.40.tar.gz
- asterisk-addons-1.4.13.tar.gz
- dahdi-linux-2.4.1.1.tar ou zaptel-1.4.12.1.tar
- dahdi-tools-2.4.1.tar.gz
- libpri-1.4.11.5.tar.gz
- sounds-1.0-pt_BR.tar.gz
- Disc-OS-Sounds-1.0-pt_BR.tar
19. Instalação
Baixa-se os pacotes do site da Digium:
wget http://downloads.digium.com/pub/asterisk/asterisk-
1.4.40.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-
1.4.11.5.tar.gz
wget http://downloads.digium.com/pub/telephony/dahdi-
linux/dahdi-linux-2.4.1.1.tar
wget http://downloads.digium.com/pub/telephony/dahdi-
tools/ dahdi-tools-2.4.1.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-
addons-1.4.13.tar.gz
20. Instalação
Copiam-se todos os arquivos para /usr/src
- Exemplo:
# cp asterisk-1.4.40.tar.gz /usr/src
- Para copiar todos os arquivos:
# cp *.tar.gz /usr/src
21. Instalação
Entra no diretório e descompacta
cd /usr/src
# tar xzfv asterisk-1.4.40.tar.gz
# tar xzfv asterisk-addons-1.4.13.tar.gz
# tar xzfv dahdi-linux-2.4.1.1.tar
# tar xzfv dahdi-tools-2.4.1.tar.gz
# tar xzfv libpri-1.4.11.5.tar.gz
22. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote dahdi-linux
# cd dahdi-linux
# vim README (opcional – para ver como se instala)
# make clean
# ./configure
# make
# make install
23. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote dahdi-tools
# cd dahdi-tools-2.4.1
# make clean
# ./configure
# make
# make install
24. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote libpri
# cd libpri-1.4.11.5
# make clean
# make
# make install
25. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote asterisk
# cd asterisk-1.4.40
# make clean
# ./configure
# make menuselect (habilita/desabilita as opções do asterisk)
# make
# make install
# make samples (arquivos de exemplos)
# make config (configura os módulos da maneira padrão)
26. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote asterisk-addons
# cd asterisk-addons-1.4.13
# make clean
# ./configure
# make
# make menuselect
# make install
# make samples
27. Instalação
Compilação e instalação dos Arquivos
Instalando o pacote sounds
# cp sounds-1.0-pt_BR.tar.gz /var/lib/asterisk
# cd /var/lib/asterisk
# tar xzfv sounds-1.0-pt_BR.tar.gz
ou
# cp Disc-OS-Sounds-1.0-pt_BR.tar /var/lib/asterisk
# cd /var/lib/asterisk
# tar xf Disc-OS-Sounds-1.0-pt_BR.tar
28. Carregando o dahdi_dummy
Para que funcione salas de conferência é preciso ter uma
placa instalada no servidor para gerar uma temporização,
no caso de não haver é necessário carregar o modulo
dahdi_dummy ou ztdummy.
# lsmod | grep dahdi_dummy
# modprobe dahdi_dummy
ou no caso do pacote zaptel-1.4.12.1.tar
# lsmod | grep ztdummy
# modprobe ztdummy
29. Carregando o dahdi_dummy
# echo "dahdi_dummy" >> /etc/modules
O dahdi é carregado no Linux como um serviço:
# /etc/init.d/dahdi start
# /etc/init.d/asterisk restart
Depois asterisk -r e execute o comando "dahdi show
status"
30. Iniciando e parando o Asterisk
Iniciando
# /usr/sbin/asterisk –vvvc
Parando
# stop now
31. Arquivos de configuração
O asterisk é controlado por arquivos de configuração localizados
em /etc/asterisk.
No formato .conf os arquivos são divididos em sessões:
[sessao1]
chave = valor ; Designação da variável
[sessao2]
objeto => valor ; Declaração do objeto
[sessao3]
objeto2 => valor ; Declaração do objeto2
; Todos os arquivos seguem a mesma sintaxe
32. Arquivos de configuração
Existem algumas sessões com funções especificas:
[general] .: Define os valores padrão para todas as
outras sessões
[channels] .: Especifica os canais de comunicação
dentro do arquivo zapata.conf
[globals] .: Criação das variáveis globais dentro de um
plano de discagem
33. Estrutura do sistema de arquivos
Diretorio dos arquivos de configuração
/etc/asterisk
Diretorio dos Modulos, aplicações e canais
/usr/lib/asterisk/modules
Diretorio de gravação da voz usadas no correio de voz
/var/lib/asterisk/sounds
Diretorio para Scripts AGI (Asterisk Gateway
Interface)
/var/lib/asterisk/agi-bin
34. Estrutura do sistema de arquivos
Principais arquivos:
sip.conf .: Clientes SIP.
iax.conf .: Clientes IAX.
extensions.conf.: Plano de discagem.
voicemail.conf.: Correio de voz.
queues.conf.: Filas de atendimentos.
agents.conf.: Agentes que poderão atender chamadas em filas.
meetme.conf.: Salas de conferência.
manager.conf.: Administrador do servidor.
features.conf: Configuração de transferências, estacionamento,
gravação de chamadas e etc.
35. Arquivo Sip.conf
Contém parâmetros de configuração dos telefones e
operadoras SIP.
Os clientes devem estar configurados antes que
possam fazer e receber chamadas.
36. Arquivo Sip.conf
Na sessão [general], define-se os valores das variáveis padrão
para todos os canais SIP.
Através da seguinte sintaxe:
[general]
variavel=valor1
variavel=valor2
[nome_sessao]
type=friend/peer/user
context=NomeContexto
host=dynamic
secret=senha_da_conta
37. Arquivo Sip.conf
Alguns parâmetros da sessão general:
allow: Permite que um determinado codec seja usado
disallow: Proíbe um determinado codec
bindaddr: IP onde o Asterisk irá esperar pelas conexões SIP
context: Configura o contexto padrão para todos os cliente SIP
port: Porta para conexões de entrada SIP, o padrão é 5060
maxexpirey: Tempo máximo para registro em segundos
defaultexpirey: Tempo padrão para registro em segundos
register: Registra o Asterisk com outro host
39. Arquivo Sip.conf
As seções seguintes definem os parâmetros das entidades
SIP tais como o nome de usuário, senha e endereço IP.
Três categorias de entidades SIP são definidas:
peer: Entidade que recebe chamadas através do asterisk
user: Entidade que faz chamadas através do Asterisk
friend: Entidade que pode fazer e receber chamadas
40. Arquivo Sip.conf
Principais campos das sessões:
type: Configura a classe de conexão, opções são peer, user e friend
host: Configura o endereço IP ou o nome do host. Pode-se usar
também a opção ‘dynamic’ onde se espera que o telefone se registre
username: Esta opção configura o nome do usuário que o Asterisk
tenta conectar quando uma chamada é recebida
secret: Senha para autenticar os peers e users fazendo uma chamada
42. Arquivo Extensions.conf
O plano de discagem é representado pelo
extensions.conf
Consiste de uma lista de instruções ou passos que o
Asterisk deve seguir
Essas instruções são disparadas de acordo com uma
prioridade a partir dos dígitos recebidos de um canal
ou aplicação
43. Arquivo Extensions.conf
O plano de discagem é dividido em quatro conceitos:
- Contextos
- Extensões
- Prioridades
- Aplicações
Os contextos são definidos para cada canal dentro dos
arquivos sip.conf, iax.conf, h323.conf e etc.
44. Arquivo Extensions.conf
Contextos
São responsáveis pela organização e segurança do plano de
discagem
Definem o escopo e permitem separar diferentes partes do
plano de discagem
Estão ligados diretamente aos canais, cada canal existe
dentro de um contexto
Quando uma ligação entra no Asterisk por um canal ela é
processada dentro de um contexto
45. Arquivo Extensions.conf
Contextos
Os contextos recebem o seu nome dentro de colchetes ([]s)
Exemplo:
[ramais]
Todas as instruções colocadas após a definição são partes
do contexto
46. Arquivo Extensions.conf
Extensões
Dentro de cada contexto serão definidas as extensões
Uma extensão é uma string que vai disparar um evento
[ramais]
exten=>2000,1,Dial(SIP/2000,20)
exten=>2000,2,VoiceMail(u300) ;indisponível
exten=>2000,101,VoiceMail(b300) ;ocupado
A instrução “exten=> “ descreve qual o próximo passo para a ligação
O “2000” é o numero discado
O “1”, “2”e “101” são as prioridades que determinam a ordem de
execução
47. Arquivo Extensions.conf
Extensões
Extensões determinam o fluxo das chamadas
Uma extensão é definida com a sintaxe:
exten=> extensão, prioridade(nome), aplicação
O comando “exten=>” é seguido por um número da
extensão, uma vírgula, a prioridade, outra vírgula e a
aplicação.
48. Arquivo Extensions.conf
Prioridades
Cada extensão é executada dentro de um contexto através
de prioridades e não por ordem de definição no arquivo
Cada prioridade chama uma aplicação especifica
[ramais]
exten=>_20XX,1,Dial(SIP/${EXTEN},20)
exten=>_20XX,n,VoiceMail(u300)
exten=>_20XX,n,Hangup()
49. Arquivo Extensions.conf
Aplicações
As aplicações tratam o canal de voz:
- Tocando sons.
- Aceitando dígitos.
- Correio de voz.
- Sala de conferência.
- Desligando uma chamada e etc.
As aplicações são chamadas com opções que afetam a sua
forma de funcionamento
50. Arquivo Extensions.conf
Exemplo de Aplicações
São os utilitários chamados a partir do plano de discagem:
- Answer.: Atende a chamada e sincroniza o canal de áudio
- PlayBack.: Reproduz um arquivo de áudio localizado em
/var/lib/asterisk/sounds
- BackGround.: Faz a mesma função do PlayBack, mas permite a interação
com o usuário
- Dial.: Conecta dois canais de comunicação
- MeetMe.: Entra em uma sala de conferência configurada em meetme.conf
- Queue.: Entra em uma determinada fila configurada em queues.conf
- VoiceMail.: Chama uma caixa de mensagens configurado em
voicemail.conf
- Hangup.: Encerra a chamada
51. Plano de discagem simples
Passos para a criação de um ramal:
1 - Cadastrá-lo no arquivo de configuração referente ao
protocolo sip.conf, iax.conf, h323.conf e etc.
2 – Definir o contexto ao qual a extensão participará
3 - Definir dentro do arquivo extensions.conf o plano
de discagem para esse ramal
52. Plano de discagem simples
Arquivo sip.conf
Define valores padrão Configura a extensão 3000
[general] [3000]
port=5060 type=friend
bindaddr=0.0.0.0 host=dynamic
disallow=all username=3000
allow=alaw secret=654321
language=pt_BR callerid=vicente<3000>
mailbox=300@default
context=local
53. Plano de discagem simples
Arquivo sip.conf
Configura a extensão 3050
[3050]
type=friend
host=dynamic
username=3050
secret=123456
callerid=maria<3050>
mailbox=300@default
context=local
55. Arquivo Voicemail.conf
Permite que uma chamada ocupada ou não atendida seja enviada
para uma secretária eletrônica
Passos para a criação de um correio de voz:
1. Em voicemail.conf defini-se os usuários e senhas para o
correio de voz.
2. Em extensions.conf configura-se uma extensão para que
uma chamada ocupada ou não atendida seja direcionada para a
aplicação VoiceMail().
3. Configura-se uma extensão para que o usuário possa ouvir seu
correio de voz.
58. Arquivo meetme.conf
A conferência no Asterisk é feita usando a aplicação
MeetMe()
O MeetMe() é uma ponte de videoconferência, que pode
funcionar em qualquer tipo de canal
;meetme.conf
[rooms]
conf=>sala,senha
;Exemplo
conf=> 500
conf=> 500,123456
59. Arquivo meetme.conf
No arquivo extensions.conf pode ser definido uma
nova sessão chamada conferencia e essa sessão ser
incluída na sessão local através do parâmetro include.
[local]
include=>conferencia
exten=> _30XX,1,Answer
exten=> _30XX,n,Wait(0.5)
exten=> _30XX,n,PlayBack(hello-world)
exten=> _30XX,n,Authenticate(875)
exten => _30XX,n,Dial(SIP/${EXTEN},20)
exten => _30XX,n,Hangup()
62. Arquivo queues.conf
As filas de atendimento são criadas no arquivo queues.conf
As filas possuem agentes para atender chamadas que são
configuradas no arquivo agents.conf
Podem ser configuradas mensagens durante o tempo de
espera
– Propagandas
– Tempo médio de espera
– Posição na fila
66. Estacionamento de Chamadas
Coloca uma chamada em uma fila de espera, para que algum
outro ramal possa capturá-lo. Configurado no arquivo
features.conf
parkext=700.: Extensão onde se deve transferir a chamada
parkpos=701-709.: Salas disponíveis para o estacionamento
context=parkedcalls.: Contexto com regras de estacionamento
parkingtime=60.: Tempo que a ligação ficará estacionada
No arquivo extensions.conf adiciona-se a seguinte linha
include=>parkedcalls
67. Transferência de chamadas
Existem duas formas de transferências:
-As cegas(blind transfer)
Não há a consulta previa do destinatário da chamada,
é executado através da tecla #
-Assistida(attended tranfer)
Há consulta previa do destinatário da chamada,
executado pela tecla FLASH
68. Transferência de chamadas
Existem duas formas de transferências:
São configuradas no arquivo features.conf:
- blindxfer.: Define o código para transferência as
cegas o padrão é o caractere #(sustenido)
- atxfer.: Define o código para transferência assistida o
padrão é o *2
69. Captura de chamadas
Transferir uma chamada que está tocando em outro ramal para o
seu e assim atendê-lo
- Captura em grupo:
É Configurado no arquivo no arquivo features.conf
especificando o parâmetro:
pickupexten.: *8 ;valor padrão
Agrupa-se os canais por meio de dois parâmetros:
callgroup.: Grupo, o qual o canal faz parte
pickupgroup.: Grupos que os canais podem capturar chamadas
70. Captura de chamadas
Exemplo:
;arquivo sip.conf ou iax.conf e etc
[1001]
callgroup=1
pickupgroup=1,2
[1002]
callgroup=2
pickupgroup=2
Obs.: Essa forma de captura de chamadas funciona apenas para canais que
utilizem o mesmo protocolo de sinalização como o SIP, IAX, H323 e etc.
71. Captura de chamadas
Captura direta:
Captura uma chamada diretamente especificando o ramal que se
deseja capturar, independente do grupo e protocolo
Implementa-se dentro do arquivo extensions.conf através da
aplicação PickUp()
Sintaxe:
PickUp(extensão@contexto)
Exemplo:
exten=> _030xx,1,PickUp(${EXTEN:1}@local)
72. Gravação de chamadas
- MixMonitor.: Grava o áudio da chamada no formato
da extensão especificada
- Sintaxe:
MixMonitor(arquivo.ext,opções)
- Opções:
a .: Adiciona no final do arquivo a gravação ao invés de
subscrever o áudio
b .: Grava o áudio depois da chamada ser atendida
73. Gravação de chamadas
Exemplo:
[local]
exten=> _40xx,1,MixMonitor(chamada-${EXTEN}.gsm,ab)
exten=> _40xx,n,Dial(SIP/${EXTEN},20,tTwW)
exten=> _40xx,n,HangUp()
;localização dos arquivos:
/var/spool/asterisk/monitor/
t .: habilita transferência de chamadas para o lado destino
T .: habilita transferência de chamadas para o lado originador
w .: habilita gravação da chamada para o lado destino
W .: habilita gravação da chamada para o lado originador
74. Gravação de chamadas
- Monitor.: Grava o áudio da chamada no formato
especificado em dois arquivos separados, entrada (-in) e
saída(-out)
- Sintaxe:
Monitor(formato, arquivo,opções)
- Opções:
m.: Mixa os arquivos de entrada e saída ao final da gravação
b.: Grava o áudio após a chamada ser atendida
76. Arquivo iax.conf
Permite a comunicação entre dois servidores asterisk
Transporta sinalização e mídia em uma única porta
TCP/IP-UDP, a 4569
Não possui dificuldades para sinalização e transporte
de mídia entre pontos de conexão como NAT e
Firewalls
78. Arquivo iax.conf
Cenários de uso –Modo Trunk
Permite a comunicação entre dois servidores asterisk
O áudio de varias chamadas será agrupado em um único
conjunto de pacotes utilizando um único cabeçalho IP
Reduz a latência fazendo uma economia na utilização da
rede, já que os cabeçalhos IPs ocupam um maior percentual
de uso de banda
79. Arquivo iax.conf
Cenários de uso –Modo Trunk
Exemplo conectando matriz e filial com o IAX:
IP da Matriz.: 192.168.0.1
- Faixa de ramais locais.: 10XX
- Faixa de ramais externos.: 20XX
IP da FILIAL: 192.168.0.3
- Faixa de ramais locais.: 20XX
- Faixa de ramais externos.: 10XX
80. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;codigo para a matriz ;ramal local para a matriz
[general] [1000]
bindport=4569 type=friend
username=1000
bindaddr=0.0.0.0
secret=1000
disallow=all
host=dynamic
allow=gsm context=local
jitterbuffer=no auth=md5
forcejitterbuffer=no qualify=yes
maxjitterbuffer=100 trunk=yes
callerid=1000
81. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;ramal para se conectar a filial
[2000]
type=friend
username=2000
secret=2000
host=dynamic
auth=md5
qualify=yes
trunk=yes
callerid=2000
82. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;arquivo extensions.conf
[local]
include=>externo
exten=> _10XX,1,Dial(IAX2/${EXTEN},60,tT)
exten=> _10XX,n,Hangup()
[externo]
exten=> _20XX,1,Dial(IAX2/2000:2000@192.168.0.3/${EXTEN},60,tT)
exten=> _20XX,n,Hangup()
83. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;codigo para a filial ;ramal para se conectar a matriz
[general] [1000]
bindport=4569 type=friend
bindaddr=0.0.0.0 username=1000
disallow=all secret=1000
allow=gsm host=dynamic
jitterbuffer=no auth=md5
forcejitterbuffer=no qualify=yes
maxjitterbuffer=100 trunk=yes
callerid=1000
84. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;ramal local para a filial
[2000]
type=friend
username=2000
secret=2000
host=dynamic
context=local
auth=md5
qualify=yes
trunk=yes
callerid=2000
85. Arquivo iax.conf
Cenários de uso – Modo Trunk
Exemplo conectando matriz e filial com o IAX:
;arquivo extensions.conf
[local]
include=>externo
exten=> _20XX,1,Dial(IAX2/${EXTEN},60,tT)
exten=> _20XX,n,Hangup()
[externo]
exten=> _10XX,1,Dial(IAX2/1000:1000@192.168.0.1/${EXTEN},60,tT)
exten=> _10XX,n,Hangup()
86. Contato, Criticas, Sugestões e Dúvidas:
– vicente.proj@hotmail.com
Endereço do You Tube:
- http://www.youtube.com/user/voipjava
Web sites:
– www.asterisk.org
– www.digium.com
– www.voip-info.org