Você está na página 1de 8

Configurando um servidor Asterisk bsico

Asterisk 1.2 O asterisk um software livre com licena GPL que permite a criao de um PABX virtual e digital, que permite a integrao entre sistemas telefnicos de VoIP (Voz sobre IP) e o sistema convencional de telefonia por comutao, alm de varias outras possveis funcionalidades, como URA (Unidade de Resposta Audvel), recebimento de fax, filas de esperas para implementao de Call Centers e possibilidade de consulta a base de dados e integrao com tecnologias como voice XML. Este artigo tem como objetivo mostrar de forma bsica para que serve o Asterisk e como implementar de forma rpida e simples suas principais funcionalidades. Para isto conheceremos alguns dos principais arquivos de configurao e tambm aprenderemos a instalar pacotes essenciais. Neste artigo partiremos do principio que estaremos uma distribuio baseada em debian e sua verso 4.0 ou superior. Instalao de pacotes necessrios: Devem ser instalados pelo menos os seguintes pacotes para que o Asterisk funcione. Drivers zaptel Biblioteca libpri (caso se utilize PRI) Asterisk em s # apt-get update # apt-get install asterisk zaptel iaxmodem hylafax # wget http://downloads.digium.com/pub/zaptel/zaptel-1.2.26.tar.gz # tar -vzxf zaptel-1.2.26.tar.gz # cd zaptel-1.2.26 # make # make install A Configurao bsica do asterisk, que adotaremos neste tutorial, consiste na configurao de 4 (quatro) arquivos: iax.conf , sip.conf , voicemail.conf e extensions.conf As edies no iax.conf consiste na criao de usurios (extenses/ramais) que utilizaro o protocolo nativo asterisk para comunicao, o IAX. Vamos criar um usuario do protoloco IAX que mais tarde ser usado para configurao do fax. No final do asquivo iax.conf, acrescente: [3000] type=friend host=dynamic context=grupo1 username=3000 secret=123456

allow=ulaw permit=0.0.0.0/0.0.0.0 qualify=yes ; verifica se o host est respondendo (est a menos de 20ms) No arquivo sip.conf criaremos todos os ramais desejados para configurao do seu PABX asterisk. No final do arquivo acrescente os seguintes ramais: [teste] type=friend ; tipo friend=faz e recebe chamadas, user=faz chamadas, peer=recebe chamadas. callerid = ?Teste? <6600> username=teste ;Nome do usurio para login secret=123 ;Senha host= dynamic ; se no tem ip fixo nat=yes ; se est debaixo de nat canreinvite=no ; no para no encaminhar chamadas context=grupo1 ; contexto criado dentro do extensions.conf (plano de discagem) language=pt_BR ; linguagem padro que define inclusive que biblioteca de sons utilizar para interao com o usurio [teste2] type=friend callerid = ?Teste2? <6601> username=teste2 secret=123 host= dynamic nat=yes canreinvite=no context=grupo1 language=pt_BR

[teste3] type=friend callerid = ?Teste3? <6602> username=teste3 secret=123 host= dynamic nat=yes canreinvite=no context=grupo1 language=pt_BR Perceba que neste arquivo utilizamos o ; para comentar um trecho do cdigo. No arquivo extensions.conf criaremos os planos de discagem dos contextos necessrios em nossa viso. No final do arquivo coloque os dados abaixo: [grupo1] include => default

; SIP- o tipo da conta / teste-O nome do usurio / 25-O tempo que vai chamar em segundos. exten => 6600,1,Dial(SIP/teste,25) exten => 6600,2,Voicemail(6600@escritorio) exten => 6600,3,Hangup exten => 6601,1,Dial(SIP/teste2,25) exten => 6601,2,Hangup exten => 6602,1,Dial(SIP/teste3,25) exten => 6602,2,Hangup exten => 3000,1,Dial(IAX2/3000,25) exten => 3000,2,Hangup ; Contas administrativas para voicemail exten => *6600,1,VoiceMailMain(6600@escritorio) exten => *6600,2,Hangup() exten => *6601,1,VoiceMailMain(6601@escritorio) exten => *6601,2,Hangup() exten => *6602,1,VoiceMailMain(6602@escritorio) exten => *6602,2,Hangup()

; Toda ligao interna com 8 dgitos criado o canal ; e a ligao feita para a PSTN ( utilizado caso tenha uma placa FXO ligada a PSTN) ; caso isto seja uma realizade pra voc no contexto [globals] verifique se a linha CONSOLE=Zap/1, ; est descomentada exten => _XXXXXXXX,1,Dial(${CONSOLE}/${EXTEN},20) exten => _XXXXXXXX,2,Hangup ; Bem Vindo, para falar com suporte tcnico pressione 1, outras opes pressione 2. exten => 2000,1,Answer() exten => 2000,2,Record(bemvindo:gsm) exten => 2000,3,Hangup() ; Atendimento ao cliente exten => 2001,1,Answer() exten => 2001,2,Record(atendimento:gsm) exten => 2001,3,Hangup() ; Suporte tcnico exten => 2002,1,Answer() exten => 2002,2,Record(suporte:gsm) exten => 2002,3,Hangup()

; Digite ramal exten => 2003,1,Answer() exten => 2003,2,Record(digiteramal:gsm) exten => 2003,3,Hangup() exten => 0800,1,Goto(ura,s,1) [ura] exten => s,1,Set(LANGUAGE()=pt_BR) exten => s,2,Ringing exten => s,3,Background(bemvindo) exten => s,4,WaitExten(40|m(default)) ; aguarda 40 segundos pela escolha de uma opo da URA exten => s,5,Wait,9 ; aguarda mais 9 segundos exten => s,6,Hangup() ; desliga exten => 1,1,Playback(atendimento) ; toca a mensagem de atendimento exten => 1,2,Answer() ; atende exten => 1,3,Set(TESTE="teste") ; reseva para incluso posterior exten => 1,4,Dial(SIP/teste,20,M(setmusiconhold,default)) ; chama o usurio SIP = teste por 20s exten => 1,5,GoToIf($[${DIALSTATUS} = CHANUNAVAIL]?9) ;se no disponvel vai para op=9 exten => 1,6,GoToIf($[${DIALSTATUS} = BUSY]?9) ;se ocupado vai para op=9 exten => 1,7,GoToIf($[${DIALSTATUS} = NOANSWER]?9);se no atende nos 20 s vai para op=9 exten => 1,8,Hangup() ; desliga exten => 1,9,Dial(SIP/teste1,20) ; chama o usurio SIP = teste1 por 20s caso teste no atendeu exten => 1,10,GoToIf($[${DIALSTATUS} = CHANUNAVAIL]?14) ; vai para o voicemail exten => 1,11,GoToIf($[${DIALSTATUS} = BUSY]?14) ; vai para o voicemail exten => 1,12,GoToIf($[${DIALSTATUS} = NOANSWER]?14) ; vai para o voicemail exten => 1,13,Hangup() exten => 1,14,Voicemail(6600@escritorio) exten => 1,15,Hangup() exten => 2,1,Playback(suporte) ; toca a mensagem de suporte exten => 2,2,Hangup() ; desliga exten => 3,1,VoiceMailMain() ; chama o gerenciador de voicemail digita a caixa postal e depois a ; senha para acessar os recados exten => 3,2,Hangup() exten => 4,1,Goto(receber-fax,fax,1) ; encaminha ao contexto de recebimento de fax exten => 4,2,Hangup() exten => 5,1,Goto(discar-extension,extension-local,1) ; encaminha para contexto que permite a ; pessoa no telefone discar o ramal com que deseja falar [discar-extension]

exten => extension-local,1,Playback(digiteramal) exten => extension-local,2,WaitExten(20|m(default)) exten => extension-local,3,NoOp(Number dialed ${EXTEN}) include => internal-extensions exten => extension-local,4,Hangup() [internal-extensions] exten => 6600,1,Dial(SIP/teste,30) exten => 6600,2,Voicemail(u6600) exten => 6600,3,Hangup() exten => 6601,1,Dial(SIP/teste1,30) exten => 6601,2,Voicemail(u6601) exten => 6601,3,Hangup()

[receber-fax] exten => fax,1,Set(TIMEOUT(application)=200) exten => fax,2,Dial(IAX2/3000) exten => fax,3,Set(TIMEOUT(application)=0) exten => fax,4,Hangup() [macro-setmusiconhold] exten=s,1,SetMusicOnHold(${ARG1}) ; channel B is the active channel, so make is hear music_A exten=s,3,Set(MACRO_RESULT=) Caso possua uma placa de fax modem ou tenha adquirido uma placa x100p (placa com interface FXO), voc pode interligar o Asterisk a PSTN (Public Switched Telephone Network): Modelos de chipset: Intel 537PG and 537PU Ambient MD3200 Motorola 62802 Neste caso teremos que configurar os arquivos /etc/zaptel.conf e o /etc/asterisk/zapata.conf Editando o /etc/zaptel.conf, descomente ou acrescente no final do arquivo, caso no exista: fxsks=1 loadzone = us defaultzone=us Editando o /etc/zapata.conf, descomente ou acrescente no final do arquivo, caso no exista: signalling=fxs_ks context=default channel => 1 group=2

stripmsd=0 musiconhold=default cidsignalling=DTMF busydetect=yes faxdetect=incoming language=pt_BR rxwink=300 Bom, j configuramos a nossa fxo genrica, agora vamos fazer ela subir. Seguem os comandos: # modprobe zaptel (carrega o driver zaptel) # modprobe wcfxo (carrega o driver da fxo) # ztcfg -vv (configura a placa, deve te jogar a seguinte mensagem na tela: Channel 01: FXS Kewlstart (Default) (Slaves: 01)) Feito isso vamos rodar o asterisk - se ele j no estiver rodando: # asterisk -vvvvgc Configurando o fax: # mcedit /etc/iaxmodem/ttyIAX0 Dentro do arquivo que criamos (/etc/iaxmodem/ttyIAX0) vamos colocar as configuraes para o Fax assim: device /dev/ttyIAX0 owner uucp:uucp mode 660 port 4570 refresh 60 server ipdoservidorAsterisk(ex: 127.0.0.1) peername nomedoUsuarioIAX secret senhaDoUsuarioIAX cidname nomeDoUsuarioIAX cidnumber numerodeIdentificao codec ulaw No arquivo /etc/asterisk/iax.conf, crie o usurio para o fax: [3000] type=friend host=dynamic context=grupo1 username=3000

secret=123456 allow=ulaw permit=0.0.0.0/0.0.0.0 qualify=yes ; verifica se o host est respondendo (est a menos de 20ms) Acesse o arquivo /etc/rc.d/rc.local. # mcedit /etc/rc.d/rc.local E acrescente no final do arquivo as seguintes linhas: /usr/sbin/iaxmodem ttyIAX0 & /usr/sbin/faxgetty ttyIAX0 & Configurar um aparelho de fax no sistema: # faxsetup Diante das perguntas feitas pelo configurador, responda as perguntas minimas necessrias. Coutry code [1]?55 Area code [000]?048 Serial port that modem is connected to []?ttyIAX0 Phone number of fax modem []?+55.85.9999.9999 Local identification string (for TSI/CIG) {"NothingSetup"]?NomedoFax No diretorio: /var/spool/hylafax/recvq voc poder visualizar os fax's recebidos

Atualizando os sons para pt_BR: wget http://sourceforge.net/project/downloading.php?groupname=disc-os&filename=Disc-OSSounds-1.0-pt_BR.tar.gz&use_mirror=osdn

# tar -vzxf Disc-OS-Sounds-1.0-pt_BR.tar.gz # cp -r sounds /usr/share/asterisk/

Depois de configurado reinicie a maquina e retornar ao linux inicie o asterisk: Para visualizar o que esta ocorrendo no asterisk ao realizar seus testes # asterisk -vvvvvvvvvc Para iniciar simplesmente: # asterisk Para verificar se o asterisk esta iniciado: # ps aux | grep asterisk Para entrar no console de comandos do asterisk # asterisk -r CLI>

Para recarregar os arquivos iax.conf, sip.conf e extensions.conf aps modificao, no console de comando (# asterisk -r), execute os comandos: CLI> iax2 reload CLI> sip reload CLI> extensions reload Para recarregar o modulo zapata: CLI> reload zap_chan.so