Asterisk + FAX + Unicall
Este tutorial destina-se a pessoas que já tenham um certo domínio em Debian GNU/Linux. Não vou entrar em detalhes deste sistema.
Neste ponto suponho que seu sistema esta corretamente instalado e com acesso necessário a internet.
Depois de instalar S.O. Debian GNU/Linux, configure o arquivo
/etc/apt/sources.list para baixar os pacotes da internet.
Desenvolvemos este tutorial para ajudar a comunidade. Quaisquer alterações/modificações por favor reportem para revisão.
Desenvolvido por:
- Rodrigo Sertori - rsertori (at) gmail.com
Preparação
/etc/apt/sources.list
sugestao de
/etc/apt/sources.list
### INICIO ARQUIVO
#Debian GNU/Linux Official - Stable release
deb http://ftp.br.debian.org/debian/ stable main non-free contrib
#Debian GNU/Linux Official - Stable release for Security
deb http://security.debian.org/ stable/updates main contrib non-free
#Debian GNU/Linux DOTDEB for vpopmail, mysql-server-5.0, php5 and others
deb http://packages.dotdeb.org stable all
#Debian DNU/Linux - Linex (Other packages)
deb http://www.linex.org/sources/linex/debian sarge linex
### FIM
depois de modificar seu sources, nao se esquece de executar um
apt-get update para atualizar a lista de pacotes disponíveis ;P
Pacotes necessários
Instalar os seguintes pacotes para efetuar a compilação do asterisk.
#!/bin/sh
apt-get install libnewt-dev libssl0.9.7 libssl-dev zlib1g-dev libncurses5-dev libeditline0 \
libeditline-dev libedit2 libedit-dev libreadline4-dev libreadline4 kernel-headers-`uname -r` \
mpg123 libmysqlclient15-dev libtiff4 libtiff4-dev libxml2 libxml2-dev
Criar um link simbolico "linux" em /usr/src apontando para o kernel headers.
#!/bin/sh
ln -s /usr/src/kernel-headers-`uname -r` /usr/src/linux
Download das fontes
Baixar os seguintes pacotes direto do ftp.digium.com em /usr/src
#!/bin/sh
cd /usr/src
wget -c ftp://ftp.digium.com/pub/libpri/releases/libpri-1.2.3.tar.gz
wget -c ftp://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.8.tar.gz
wget -c ftp://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.11.tar.gz
wget -c ftp://ftp.digium.com/pub/asterisk/releases/asterisk-addons-1.2.4.tar.gz
wget -c ftp://ftp.digium.com/pub/asterisk/old-releases/asterisk-sounds-1.2.1.tar.gz
Descompacte os arquivos com o comando tar zxvf nome_do_arquivo.tar.gz, como por exemplo:
#!/bin/sh
tar zxvf asterisk-sounds-1.2.1.tar.gz
Um por um do sources... ou algo mais agressivo:
#!/bin/sh
for i in *.gz ; tar zxvf $i
Compilando e instalando libpri e zaptel
libpri
Comece compilando o libpri
Entre no diretorio que foi descompactado o libpri-1.2.3 e execute
#!/bin/sh
make clean
make install
zaptel
Depois compile o zaptel
Entre no diretorio que foi descompactado o zaptel-1.2.8 e execute
#!/bin/sh
make clean
make linux26 ##### SOMENTE SE ESTIVER USANDO UMA KERNEL 2.6.XX
make install
Uma palavrinha sobre o mysql
Antes de compilar o asterisk e addons se vc for usar Mysql, instale o pacote mysql-server do seu gosto. Eu particularmente uso o 5.0.
Para instalar ?
Procura o pacote
#!/bin/sh
apt-cache search mysql | grep mysql
Depois de encontra-lo. instale
#!/bin/sh
apt-get install mysql-server-X.X
Sugestão de pacotes uteis:
#!/bin/sh
apt-get install apache2 libapache2-mod-php5 php5 php5-mysql php5-cgi php5-cli php5-gd mysql-server-5.0 libcompress-zlib-perl php5-pear bzip2
Instalando o suporte a Unicall
Neste ponto antes de compilar o asterisk podemos adicionar o suporte para MFCR2 (Placas Digium) e o suporte para FAX
Se vc não deseja fazer estas alterações pule para a compilação do asterisk direto.
Este parte deste tutorial foi retirada de
AsteriskUnicall e fiz algumas modificações.
Baixando as fontes
Estou usando a versão pre21d do spanDSP para aproveitar no FAX dpois...
Não sei por qual motivo bizarro não consegui com outra versao.
#!/bin/sh
#Spandsp
wget -c http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.2pre21d/spandsp-0.0.2pre21.tar.gz
#libmfcr2, supertone e unicall estou usando a pre9
#
wget -c http://www.soft-switch.org/downloads/unicall/unicall-0.0.3pre9/libmfcr2-0.0.3.tar.gz
wget -c http://www.soft-switch.org/downloads/unicall/unicall-0.0.3pre9/libsupertone-0.0.2.tar.gz
wget -c http://www.soft-switch.org/downloads/unicall/unicall-0.0.3pre9/libunicall-0.0.3.tar.gz
Compilando
Agora vamos compilar nesta ordem, primeiro descompactar todos os pacotes com tar vide exemplo anterior:
#!/bin/sh
#Spandsp
./configure
make
make install
#libsupertone
./configure
make
make install
#libunicall
./configure
make
make install
#libmfcr2
É interessante para quem for utilizar o R2 alterar um arquivo.
Entre no source do libmfcr2 e edite o arquivo mfcr2.c . Dentro dele tem uma linha que é "Timer T1" que está com valor 5000. Altere para 20000.
Isso é o tempo que em que o asterisk vai esperar o retorno da central da operadora, e muitos numeros apresentam problemas se estiver com tempo inferior a 7 seg.
Após isso compile normalmente.
./configure --prefix=/usr/local
make
make install
Modificando os fontes o asterisk
Modificar o asterisk para compilar o canal unicall, vá para o diretorio do asterisk/channels (fontes do asterisk)
Para o asteirskasterisk 1.2.11
#!/bin/sh
cd asterisk-1.2.11/channels
wget -c http://www.soft-switch.org/downloads/unicall/unicall-0.0.3pre9/asterisk-1.2.x/chan_unicall.c
# é uma boa ideia fazer um backup antes
cp Makefile Makefile.bkp
Abra o arquivo Makefile e adicione as linhas no final dele
chan_unicall.o: chan_unicall.c
$(CC) -c $(CFLAGS) -o chan_unicall.o chan_unicall.c
chan_unicall.so: chan_unicall.o
$(CC) $(SOLINK) -o $@ $< -lunicall -lxml2 -lsupertone -lspandsp -ltiff $(ZAPLIB)
procure pela linha:
CHANNEL_LIBS=chan_sip.so chan_agent.so chan_mgcp.so chan_iax2.so chan_local.so chan_skinny.so chan_features.so
altere para:
CHANNEL_LIBS=chan_sip.so chan_agent.so chan_mgcp.so chan_iax2.so chan_local.so chan_skinny.so chan_features.so chan_unicall.so
Adicionando Suporte para FAX
Vá para o source do asterisk/apps baixe os seguinte arquivos
# para asterisk 1.2.11
cd asterisk-1.2.11/apps
wget -c http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.2pre21d/asterisk-1.2.x/app_rxfax.c
wget -c http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.2pre21d/asterisk-1.2.x/app_txfax.c
# é uma boa ideia fazer um backup antes
cp Makefile Makefile.bkp
abra o arquivo Makefile e procure por:
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/osp/osp.h $(CROSS_COMPILE_TARGET)/usr/include/osp/osp.h),)
APPS+=app_osplookup.so
endif
adicione estas linhas logo abaixo:
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/spandsp.h $(CROSS_COMPILE_TARGET)/usr/include/spandsp.h),)
APPS+=app_rxfax.so app_txfax.so
endif
de novo no Makefile, procure por:
app_curl.so: app_curl.o
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CURLLIBS)
adicione estas linhas logo abaixo:
app_rxfax.so : app_rxfax.o
$(CC) $(SOLINK) -o $@ $< -lspandsp -ltiff
app_txfax.so : app_txfax.o
$(CC) $(SOLINK) -o $@ $< -lspandsp -ltiff
Compilando e instalando o asterisk, asterisk-addons e asterisk-sounds
Começando pelo asterisk-1.2.11
cd /usr/src/asterisk-1.2.11
make clean
make mpg123
make install
make samples
asterisk-addons
cd /usr/src/asterisk-addons-1.2.4
make clean
make install
asterisk-sounds
cd /usr/src/asterisk-sounds-1.2.1
make clean
make install
Suporte a incialização no debian
Copie o arquivo de inicialização para dentro de /etc/init.d
cp /usr/src/asterisk-1.2.11/contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk
Execute um update-rc para que seu asterisk inicialize durante o Boot
#!/bin/sh
update-rc.d -f asterisk defaults 98
Rodando o asterisk sem placas Digium
Caso vc não for trabalhar com algum Hardware (Placa E1) vc deve usar este modulo ZTDUMMY para simular o clock da placa.
Edite o arquivo /etc/modules e adicione no final da linha o modulo ztdummy para ser carregado automaticamente na inicialização
Após adicionar o modulo suba ele com o comando modprobe
modprobe ztdummy
Considerações sobre Unicall e FAX
Se vc compilou o unicall va para /etc/asterisk e baixe um unicall.conf de exemplo em:
#!/bin/sh
cd /etc/asterisk
wget -c http://www.soft-switch.org/downloads/unicall/unicall-0.0.3pre9/asterisk-1.2.x/unicall.conf.sample
mv unicall.conf.sample unicall.conf
E não se esqueça de copiar o chan_unicall.so para o asterisk
#!/bin/sh
cd /usr/src/asterisk-1.2.11
cp channels/chan_unicall.so /usr/lib/asterisk/modules/
Por algum outro motivo bizarro, se vc estiver usando o Unicall o script de inicialização não vai funcionar.
Descobri durante o runlevel padrão do Debian ele não olha para /usr/local/lib e sim para /usr/lib, o que faz com que o asterisk
não encontre as libs (unicall, supertone e spandsp).
Então para resolver esse problema, criei 3 links simbólicos em /usr/lib, apontando para as libs que compilamos.
Se alguem souber outra formar mais limpa fico agradecido...
#!/bin/sh
ln -s /usr/local/lib/libunicall.so.0 /usr/lib
ln -s /usr/local/lib/libsupertone.so.0 /usr/lib
ln -s /usr/local/lib/libspandsp.so.0 /usr/lib
MFC/R2 e PAP2 Linksys.
Bom... a maioria do pessoal que seguiu este tutorial (ou outros) reclamou da voz metalizada quando utilizando esta sinalização.
Depois de mta luta nossa equipe descobriu que o lance do R2 esta com o PAP :/
Entao vamos la.. acessem o PAP e mudem para (SWITCH TO ADVANCED VIEW)
Procurem por :
RTP Packet Size: que fica no menu SIP e mudem para 0.020
Isso vai fazer que o PAP mude o tamanho do RTP packet, corrigindo assim o lance da voz metalizada! sucks né....
Considerações sobre segurança.
Normalmente o asterisk utiliza o tty9 e fica rodando diretamente neste console. Eu considero uma falha, pois qualquer pessoa mal intencionada
dentro da empresa, e com um pouco de conhecimento em GNU/Linux consegue ter acesso a este console, e pode executar comandos como por exemplo:
stop now.
Se alguem se interessar em bloquear o asterisk para ele não abrir o console no tty9 basta editar o /usr/sbin/safe_asterisk e deixar a variavél TTY=9 apenas
TTY=
Testando tudo
Bom se tudo correu bem e vc seguiu corretamente o este tutorial, basta digitar agora:
# Para iniciar seu asterisk, execute:
/etc/init.d/asterisk start
# e para parah o servico:
/etc/init.d/asterisk stop
Revisões
--
RodrigoSertori -16 Aug 2006 - Versão inicial
--
IuriDiniz - 22 Aug 2006 - Formatação para wiki
--
RodrigoSertori -26 Aug 2006 - Revisão 0.01
--
RodrigoSertori -16 Out 2006 - RTP packet (Voz metalizada com MFC/R2)
-- Main.JoãoDavidPrevedello - 15 Jan 2007 - Alguns numeros não completão - TIMER T1