Asterisk – Instalação e Configuração

m neste artigo irei detalhar um pouco mais sobre o que é asterisk como instalar e configurar esse ótimo servidor pbx de código fonte aberto.

Asterisk é um PBX Open Source que está revolucionando o mercado de telefonia. Com ele toda a estrutura de telefonia tradicional pode ser convertida para VoIP. Como você já deve ter ouvido falar, a redução de custos com usando VoIP é bastante interessante. Mas além dessa fachada de diminuir os gastos com telefone o Asterisk ainda provê todas as funcionalidades de uma central telefônica tradicional como chamada em espera, voicemail, redirecionamento de chamada, música em espera, conferência, etc, com uma qualidade igual ou superior comparada com as melhores centrais telefônicas do mercado. Pode-se montar, por exemplo, um call center muito bem estruturado ou ser um provedor VoIP usando soluções Asterisk.

Por proporcionar tal eficiência o mercado do Asterisk está crescendo rapidamente em todo o mundo inclusive no Brasil. Porém as informações aqui ainda não chegam tão rapidamente e muito menos em nosso língua. Pensando em agilizar e facilitar esse caminho está no ar o site Asterisk Experts. Lá são publicadas notícias da comunidade do Asterisk assim que são lançadas, existe, também, um fórum para discussão sobre todos os tópicos que envolvem o Asterisk e onde podem ser feitas perguntas a serem respondidas por quem entende e está disposto a ajudar a crescer e se difundir o PBX aqui no Brasil. Além disso ainda há um guia de instalação e configuração básica para o Asterisk, tutoriais e arquivos para download.

O Asterisk Experts conta com a colaboração de seus visitantes para que eles peçam tutoriais ou qualquer outro material que lhes seja relevante para ser publicado e, assim, ajudar o maior número de usuários do PBX Open Source. ” A nota foi enviada por Fabio Gross.

Lembrando que a distro utilizada foi Fedora Core , porém qualquer distro vai funcionar legal pois não usei pacotes prontos e sim compilei todos eles, mas caso queira algo mais fácil basta “yum install asterisk”, considere que já tem o Apache+php+mysql instalado e rodando no micro.

Todas as depedencias são encontradas aqui: http://downloads.digium.com/pub/

As dependencias são:

  • asterisk-sounds-1.2.1.tar.gz
    asterisk-addons-1.2.2.tar.gz
    (módulos opcionais do Asterisk)
  • libpri-1.2.2.tar.gz
    (o Asterisk utiliza a Libpri para fazer multiplexação por divisão de tempo (TDM) juntamente com vários fabricantes de hardware)
  • zaptel-1.2.5.tar.gz
    (necessário para integração com o Zapata)
  • asterisk-1.2.7.1.tar.gz
    (fonte do Asterisk – o próprio)

guarde os fontes em /usr/src, que é o local destinado para isso.

Doxygen

# yum install doxygen

Agora seu sistema está preparado para instalar os pacotes que você baixou do Asterisk.

Comece pela Libpri:

# tar -zxvf libpri-1.2.2.tar.gz
# cd libpri-1.2.2
# make
# make install

Zaptel

# tar -zxvf zaptel-1.2.5.tar.gz
# cd zaptel-1.2.5
# make
# make install

Add-ons

# tar -zxvf asterisk-addons-1.2.2.tar.gz # cd asterisk-addons-1.2.2
#./configure
# make && make install

Sounds

# tar -zxvf asterisk-sounds-1.2.1.tar.gz
# cd asterisk-sounds-1.2.1
# make install

E finalmente, o ASTERISK.

# tar -zxvf asterisk-1.2.7.1.tar.gz
# cd asterisk-1.2.7.1

Antes do make, repare que temos uns detalhes que são o `make samples` para criar os arquivos de configuração de exemplo (ele sobrescreve os arquivos se já existirem) e `make progdocs` que gera a documentação do Asterisk.

# make clean
# make
# make install
# make progdocs
# make samples

Configurações – extensions.conf

Dentro de /etc/asterisk encontram-se os arquivos de configuração.

Basicamente o Asterisk já está configurado para funcionar, basta executar como root:

# asterisk -p

O arquivo extensions.conf é o responsável por criar as extensões ou ramais, nele criamos também caminhos genéricos como XXX para cada X um dígito, onde podemos usar a imaginação para solucionar as questões que precisamos.

No extensions.conf criamos grupos de chamadas locais no qual podemos incluir outros grupos e criar os ramais dentro dele. Abaixo temos um exemplo de configuração do grupo de chamada ‘grupo1’ que inclui os ramais do grupo ‘demo’ e contém os seguintes ramais. Os comentários deste arquivo são precedidos de ” ; “.

[grupo1]
include => demo

exten => 6600,1,Dial(SIP/teste,25)
; SIP-É o tipo da conta / teste-O nome do usuário / 25-O tempo que vai chamar em segundos.
exten => 6600,2,Hangup

exten => 6601,1,Dial(SIP/teste2,25)
exten => 6601,2,Hangup

exten => 6602,1,Dial(IAX2/teste3,25)
exten => 6602,2,Hangup

Veja que no contexto [grupo1] incluímos o contexto [demo] e criamos três ramais (6600, 6601, 6602).
O próximo passo é criar os usuários (SIP/IAX2) para usarem esses ramais.

Usuários SIP e IAX2

O arquivo de configuração SIP – sip.conf

O arquivo sip.conf armazena informações sobre contas de usuários de protocolo SIP as informações são simples como nome de usuário, bina, senha e qual grupo participam.

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
context=default ; Context padrão para recebimento de chamadas
bindport=5060 ; Porta UDP (A padrão é 5060)
bindaddr=0.0.0.0 ; Endereço IP para escutar (0.0.0.0 Escuta todos)
srvlookup=yes

[teste]
type=friend ; tipo friend=faz e recebe chamadas, user=faz chamadas, peer=recebe chamadas.
callerid = “Teste” <6600>
username=teste ;Nome do usuário para login
secret=123 ;Senha
host= dynamic ; se não tem ip fixo
nat=yes ; se está debaixo de nat
canreinvite=no ; no para não encaminhar chamadas
context=grupo1

[teste2]
type=friend
callerid = “Teste2” <6601>
username=teste2
secret=123
host= dynamic
nat=yes
canreinvite=no
context=grupo1

O arquivo de configuração IAX2 – iax.conf

O arquivo iax.conf armazena informações sobre contas de usuários de protocolo IAX2 as informações são simples como o arquivo de usuários SIP

No exemplo abaixo estamos criando os usuários que receberam um número no extensions.conf.

[general] ; configurações básicas do protocolo
bandwidth=low
jitterbuffer=no
forcejitterbuffer=no
tos=lowdelay

[teste3]
type=friend
context=grupo1
username=teste3
secret=123
qualify=yes ; verifica se o host está respondendo (está a menos de 20ms)

Ao fazer alterações nos arquivos de configuração do Asterisk você precisa reiniciar o serviço para que ele enxergue as novas configurações.

Você pode se conectar ao console do Asterisk para recarregar apenas as informações necessárias (dentre outras coisas) sem interromper o serviço.

Para acessar o console, com o Asterisk rodando execute:

# asterisk -r

Utilize os comandos abaixo para recarregar as configurações novas:

asterisk*CLI> sip reload
asterisk*CLI> iax2 reload
asterisk*CLI> extensions reload
asterisk*CLI> quit

Agora seus novos usuários e suas novas extensões já estão ativas.

Fazendo e recebendo ligações – Softfones

Agora seu sistema já está apto a fazer e receber ligações. Para testar usaremos Softfones, que são aplicativos multimídia para aplicações voip que simulam um telefone de verdade. Cada softfone pode usar um protocolo diferente (SIP, IAX2) e também podem haver disponíveis vários codecs (gsm, g711, g726, etc.), assim você deve associar o protocolo do seu usuário juntamente com os codecs disponíveis em seu servidor para aquele cliente de determinado protocolo.

Vejamos alguns softfones.

IAX2:

SIP:

Imagem da versão paga do Xten:

Existem vários outros aplicativos disponíveis e dentre eles alguns open source também, porém não cheguei a testar a funcionalidade deles. Verifique em seu repositório preferido a existência de algum softfone pré-compilado para sua distribuição.

Nas páginas de cada aplicativo tem um manual ensinando a configurar sua conta.

Basicamente você deve fornecer usuário e senha e indicar em qual servidor você irá autenticar.

Após autenticado, você está liberado para fazer e receber ligações. Lembre-se dos números cadastrados em seu extensions.conf, você ainda não tem saída para a rede de telefonia pública! Assim você pode utilizar um softfone em cada computador da sua rede e fazer ligações entre eles.

Você também pode registrar seu servidor voip em outros servidores (próprios, públicos ou pagos) e ampliar sua rede.

Vimos neste artigo a facilidade de instalar e configurar um servidor voip usando Asterisk e utilizar softfones para fazer ligações, mas isso é só o começo do VoIP. Hoje o custo de telefones IP e adaptadores voip está sendo reduzido tornando uma alternativa popular hoje.

Existe no mercado uma quantidade enorme (muito, mas muito mesmo, maior que de operadoras de telefonia fixa) de operadoras VoIP que oferecem vários serviços como telefones fixo em várias cidades do Brasil e do mundo, tarifas a custos baixíssimos (interurbano mais barato que a tarifa local convencional), custo zero para ligação entre ramais e planos ilimitados para ligações. Sabemos que o skype faz boa parte dessas ações, mas não dá pra ficar preso a um sistema só. Com Asterisk você faz suas próprias regras.

Se você interessou pelo Asterisk, sugiro que entre nas listas de discussão disponíveis nos sites de referência.

Vejo vocês por lá.

[ ]

Ralph Liebessohn
ralphliebessohn at gmail dot com

Referências

Livro – Asterisk: O Futuro da Telefonia, disponível em inglês em:

Esse é o início do livro em português, só pra dar um gostinho:

Há também um e-book sobre o Asterisk@Home:

Utilização do CRONTAB


1. Apresentação
CRON ou CRONTAB, é um agendador de tarefas, utilizado para executar algo automaticamente em determinados momento/tempo.

2. Configurando
O crontab tem seu funcionamento bem simples, mas requer atenção para a sua projeção.
Para editar ele, basta executar o comando:
# crontab -e

Irá abrir uma janela estilo o editor de texto “vi”.
Seus comandos são iguais ao “vi”, então, sem problemas …
INSERT – para editar
ESC – para finalizr edição
:x! – salvar e sair
:q! – sair sem salvar

* * * * * comando
| | | | | |_ _ _ _ Comando a ser executado
| | | | |_ _ _ _ _ Semana (0-7 – domingo à domingo)
| | | |_ _ _ _ _ _ Mês (01-12)
| | |_ _ _ _ _ _ _ Dia (01-31)
| |_ _ _ _ _ _ _ _ Hora (00-23)
|_ _ _ _ _ _ _ _ _ Minuto (00-59)

2.1. Minuto
Varia de 00 à 59

2.2. Hora
Varia de (00 à 23)

2.3. Dia
Varia de 01 à 31
Lembrando sempre que ao executar uma tarefa nos dias acima de 28, essa tarefa não será executa no mês de fevereiro.
Usando o dia 31, você irá eliminar todos os meses que terminam em 30 ou menos.

2.4. Mês
Varia de 01 à 12
Podendo também ser usando nomes em inglês (digitados em MAIÚSCULOS ou minúsculos).
Use apenas as 3 primeiras letras do nome.

2.5. Semana
Varia de 0 à 6 ou 1 à 7
Sendo, assim: 0 à 6 de domingo à sábado ou 1 à 7 de segunda à domingo.
Podendo também ser usando nomes em inglês (digitados em MAIÚSCULOS ou minúsculos).
Use apenas as 3 primeiras letras do nome.

2.6. Comando
O comando é você que define, é importante lembrar que o “%” (porcento) é usado para quebra de linha, então, caos você queira usá-lo, digite: “\%”, usando a “\” barra invertida antes.

3. Caracteres especiais
Você pode também trabalhar com “coringas”, veja abaixo alguns exemplos.

3.1. Usando “*”
Executar uma tarefa (“echo teste”) sendo que por 10 minutos, usando o “*”, seja:
–>  10 * * * * echo teste

3.2. Usando “/”
Executar uma tarefa de 5 em 5 minutos, usando o “/”, seja:
–>  */5 * * * * echo teste

3.3. Usando “/”
Executar uma tarefa de 5 em 5 minutos durante os 30 primeiros minutos, usando o “/”, seja:
–>  0-30/5 * * * * echo teste

3.4. Usando “-“
Executar uma tarefa no período de 0 à 5 minutos, usando o “-“, seja:
–>  0-5 * * * * echo teste

3.5. Usando “,”
Executar uma tarefa no minuto 1, 3 e 5, usando a “,” (vírgula), seja:
–>  1,3,5 * * * * echo teste

4. Exemplo
Executando uma tarefa dia 15/03, quando for segunda-feira, no horário das 23h e 54min.

54 23 15 03 01 echo “Exemplo de tarefa”
|  |  |  |  |  | _ _ _ _ Comando a ser executado
|  |  |  |  |_ _ _ _ _ _ Semana
|  |  |  | _ _ _ _ _ _ _ Mês
|  |  |_ _ _ _ _ _ _ _ _ Dia
|  | _ _ _ _ _ _ _ _ _ _ Hora
|_ _ _ _ _ _ _ _ _ _ _ _ Minuto

Select Dinâmico De Estados E Cidades

Dando uma passeiada a net encontrei alguns artigos sobre scripts pronto do google e achei um esquema no Blog de um amigo, melhorei o esquema e agora em poucas linhas vc obtem uma cidade a partir de um estado utilizando um select, isso sem precisar de saber coodar em Ajax.

Codigo Fonte:

<html>
<head>
<title>Documento sem t&iacute;tulo</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<script type=”text/javascript” src=”http://cidades-estados-js.googlecode.com/files/cidades-estados-v0.2.js”></script>
<script>
window.onload = function()
{
new dgCidadesEstados(document.getElementById(‘estado’), document.getElementById(‘cidade’), true);
}
</script>
</head>
<body>
<select id=”estado” name=”estado”></select>
<select id=”cidade” name=”cidade”></select>
</body>
</html>