Sei sulla pagina 1di 6

VoIP com FreeSWITCH

Fale com
tranquilidade
REDES

O FreeSWITCH uma plataforma de telefonia poderosa e


verstil que pode ir de um softphone at um PBX.
por Michael S. Collins

P
rojetos de cdigo aberto vm produo como um switch de teleco- mais recente. De qualquer modo, os
diminuindo a barreira para que municaes, em vrios cenrios de desenvolvedores do FreeSWITCH
entusiastas e empresas entrem negcios como um PBX, como um facilitaram a atualizao para o ltimo
na era da telefonia VoIP. O Asterisk softphone para usurios de laptop e trunk, mesmo que a ltima verso
PBX, por exemplo, uma alterna- at mesmo como um mecanismo estvel esteja instalada.
tiva de alta funcionalidade e baixo de roteamento de voz para o proje- Existem alguns binrios pr-com-
oramento que alvoroou o mundo to OpenSim. pilados; porm, recomendo a com-
de sistemas de telefonia empresarial Alm disso, possvel empregar o pilao com o cdigo fonte.
[1]. Talvez o software mais inquie- FreeSwitch como um aplicativo ou Primeiro, descompacte e instale
tante de todos, no entanto, venha na us-lo como uma biblioteca (libfre- a fonte. Neste exemplo, fiz o down-
forma de uma biblioteca softswitch eswitch) que pode ser embarcada em load em /usr/src e instalei a partir
escalonvel chamada FreeSwitch. software de terceiros. Essa dupla iden- dos comandos:
O site do FreeSwitch [2] diz que ele tidade semelhante relao entre
pode ser usado como um mecanismo cURL (aplicativo) e libcurl (biblioteca). tar zxvf freeswitch 1.0.4.tar.gz
de switching simples, um PBX, um O FreeSwitch tem sido utilizado cd freeswitch 1.0.4
gateway de mdia ou um servidor de em alguns cenrios exticos; no en- ./configure
mdia para hospedar aplicativos IVR. tanto, os novatos nos aplicativos de make install
Com essa descrio verstil, o Fre- telefonia iro se dar bem com o Fre-
eSwitch apareceu em ambientes de eSwitch em sua configurao padro Recomendo usar os arquivos de som:
como um PABX SOHO. Embora os
arquivos de configurao e ajustes do make cd-sounds-install
FreeSwitch paream complicados, make cd-moh-install
em pouco tempo, ser possvel apre-
ciar o poder e a flexibilidade dessa O FreeSWITCH utiliza arquivos
verstil ferramenta de telefonia. de som com taxas de sampling de
8, 16, 32 e 48kHz. Quase nenhum
Instalando sistema de telefonia de cdigo
aberto ou proprietrio faz o que o
o FreeSwitch FreeSWITCH faz com chamadas
No momento, a verso estvel cor- com vrias taxas de sampling.
rente do FreeSwitch a 1.0.4, que A instalao leva algum tempo,
pode ser baixada do site do projeto por isso encadeie os comandos com
[3] ou do repositrio Subversion. o operador &&.
Diferentemente de outros projetos, o Quando o processo terminar,
Figura 1 Tela de configurao da SVN trunk extremamente estvel, haver uma instalao bsica do
conta SIP no X-Lite. portanto, aconselhavel usar o trunk FreeSWITCH. bom que os dois

60 http://www.linuxmagazine.com.br
FreeSWITCH | REDES

principais arquivos executveis do 4;Logitech USB Headset;1;0; o fone baseado em software apro-
FreeSWITCH estejam em bin, por priadamente chamado de softphone.
isso usei symlinks: O i e o o esto prximos aos dis- Vrios tipos de hard phones esto dis-
positivos de entrada e de sada sele- ponveis. Os softphones tm verses
ln s cionados. Para alterar o dispositivo proprietrias e FLOSS. Uma verso
/usr/local/freeswitch/bin/ de entrada, utilize o comando pa gratuita popular mas sem cdigo
freeswitch indev com o nmero do dispositivo, aberto o X-Lite da CounterPath
/usr/local/bin/freeswitch [4], que est disponvel para o Linux,
ln s /usr/local/freeswitch/bin pa indev #x MacOS e Windows. Mesmo que seu
/fs_cli /usr/local/bin/fs_cli servidor FreeSWITCH esteja sendo
onde x o nmero do dispositivo executado no Linux, seus softphones
Para iniciar o aplicativo, digite de entrada. O dispositivo de sada podem funcionar em qualquer siste-
freeswitch, e use o utilitrio fs_cli pode ser alterado com o comando ma operacional, contanto que sejam
para acessar a linha de comando de pa outdev. Na minha configurao, compatveis com o SIP.
qualquer servidor FreeSWITCH aos usarei o dispositivo 4 como sada e Para comear, baixe o X-Lite no
quais tenha acesso, mesmo que esteja o 5 como entrada. Se houver os ar- seu sistema e faa a instalao pa-
em outro servidor. Primeiramente, quivos MOH (music on hold) ins- dro (a instalao do softphone no
haver muita informao de debug/ talados, esse comando chamar o mesmo sistema que executa o Fre-
log, mas no se preocupe com erros ramal MOH e enviar o MOH ao eSWITCH no recomendada; no
e avisos nesse momento. dispositivo de sada PortAudio: entanto, em muitos casos, ela fun-
cionar para testes).
Seu novo softswitch pa call 9999 Agora, inicie o X-Lite e abra o
O primeiro comando bsico version, menu de configurao de conta SIP
que mostrar a verso do FreeSWI- Se uma msica for ouvida, a cha- clicando no boto Show Menu (esse
TCH que est sendo executada, in- mada foi bem sucedida. Caso contr- boto a pequena flecha no topo do
cluindo a reviso SVN. O comando rio certifique-se de que os arquivos fone, esquerda).
status mostra informaes sobre sua MOH esto corretamente instalados. Apenas uma conta SIP est dis-
instncia do FreeSWITCH incluin- Desligue com o comando pa hangup. ponvel no X-Lite, portanto, clique
do o tempo de execuo e o nmero Para se certificar de que os dispo- nela e depois no boto Properties.
de sesses ativas no momento. Outro sitivos de entrada e de sada esto Como mostra a figura 1, preencha
comando bsico o help, para ajuda. funcionando, faa o teste: os campos e use 1234 como senha
Para sair do FreeSWITCH, digite para o ramal 1000.
fsctl shutdown ou use o comando mais pa call 9996 Ento limpe o campo Dialing
breve ... (trs pontos). Se houver plan, pois ele no necessrio com o
uma placa de som ou headsets em Agora, quando falar no disposi-
seu sistema, tente o seguinte: tivo de entrada, sua voz ecoar no
dispositivo de sada. O comando pa
load mod_portaudio hangup terminar a ligao.
Como possvel ver, o FreeSWI-
Aps algumas linhas de debug, TCH e o PortAudio podem ser usados
ser exibida a mensagem +OK quando para criar um softphone simples. Dessa
o mdulo for carregado. Agora, liste maneira, ser possvel usar qualquer
os dispositivos PortAudio disponveis codec suportado por sua instalao e
em seu sistema: h codecs de alta qualidade dispon-
veis sem a necessidade de instalao
pa devlist de um cliente softphone.

API CALL [pa(devlist)] output: Conectar um fone SIP


0;Builtin Microphone;2;0;i A maneira mais comum de utilizao
1;Builtin Input;2;0; do FreeSWITCH com um fone
2;Builtin Output;0;2;r,o SIP. O aparelho fsico normal-
3;Logitech USB Headset;0;2; mente chamado de hard phone, j Figura 2 Cliente X-Lite registrado.

Linux Magazine #70 | Setembro de 2010 61


REDES | FreeSWITCH

Tabela 1: Destaques do Dialplan eSWITCH sem a necessidade de


passar por um grande arquivo.
Ramais Funo
1000-1019 Ramais Padro FreeSWITCH
2000-2002 Amostra de Grupos de Discagem como um Daemon
30xx Conferncias de Banda Estreita (8kHz)
31xx Conferncias de Banda Larga (16kHz) Para iniciar o FreeSWITCH como
32xx Conferncias de Banda Ultra-Larga (32kHz) um daemon, use o argumento de
33xx Conferncias com Qualidade de CD (48kHz)
linha de comando -nc:
4000 Recuperao de Correio de Voz
freeswitch -nc
5000 Amostra de IVR
5900 Call Park
O FreeSWITCH dir que est
5901 Recuperao de Call Park
sendo executado em segundo pla-
9888 Conferncia FreeSWITCH
no e dar o ID do processo (PID).
9992 Aplicativo de Informao
Para parar o FreeSWITCH, basta
9996 Teste de Eco
digitar freeswitch -stop no prompt
9999 Msica de Espera (MOH)| do Linux. Por enquanto, deixe o
FreeSWITCH sendo executado e
use o comando fs_cli para conectar:
FreeSWITCH. Agora, clique em OK, a tabela 2 mostra os arquivos e sub- aparecer uma saudao com uma
depois em Close e o fone tentar o diretrios mais importantes da con- breve mensagem de boas vindas e
registro. A figura 2 mostra um registro figurao FreeSWITCH. um prompt em linha de comando
bem sucedido. Para fazer uma cha- A instalao padro ir criar um e, talvez, alguma mensagem de
mada de teste, digite 9999 e clique no diretrio chamado /usr/local/fre- debug na tela. Para desabilitar o
boto verde para discar. Em alguns eswitch/conf, o qual chamarei de debug, digite:
instantes uma msica de espera ser $CONF. Todos os arquivos de con-
ouvida. Para fechar o FreeSWITCH, figurao so em formato XML e /log info
use o comando fsctl shutdown. podem incluir outros arquivos XML
adicionalmente. Isso ir restringir as mensagens
Destaques da O topo dessa rvore XML $CONF/
freeswitch.xml, que contm vrios
de log ao nvel de INFO e abaixo e
evitar uma enxurrada de informa-
configurao arquivos XML que, por sua vez, es de debug.
A configurao padro do FreeSWI- contm mais arquivos XML. Essa Todos os comandos do progra-
TCH possui muitos recursos. A ta- organizao permite que se faam ma fs_cli devem iniciar com uma
bela1 mostra destaques Dialplan e mudanas configurao do Fre- barra invertida, por isso, digite /help

Tabela 2: Arquivos de configurao importantes


Subdiretrio/Arquivo Descrio
$CONF/vars.xml Define um nmero de variveis de sistema customizveis,
como senhas padro e lista de preferncia de codecs
$CONF/dialplan/default.xml A maior parte do Dialplan padro configurada aqui
$CONF/directory/default/*.xml Usurios individuais so definidos aqui, e.g., 1000.xml
$CONF/sip_profiles/internal.xml Um perfil SIP, ou UA SIP para servir uma
porta IP (normalmente a porta 5060)
$CONF/sip_profiles/external.xml | Outro UA SIP que lida com registros de sada
para provedores SIP (porta 5080)
$CONF/autoload_configs/modules.conf.xml | Mdulos carregados automaticamente na
inicializao do FreeSWITCH

62 http://www.linuxmagazine.com.br
FreeSWITCH | REDES

para ver uma lista de comandos dis- corresponde a exatamente 4 dgitos ramal. Caso haja um segundo tele-
ponveis. Tudo o mais digitado no dos quais os dois primeiros so 10, fone, registre-o como 1000 e usu-o
prompt fs_cli ser enviado para o o seguinte 0 ou 1 e o ltimo qual- para chamar 1500.
servidor FreeSWITCH, com uma quer dgito entre 0 e 9 e armazena o
exceo: Os (...) no fecharo o valor correspondente na varivel $1. Fora do switch Local
FreeSWITCH no fs_cli; isso ape- Simplificando, corresponde a qual- Uma vantagem do VoIP so as liga-
nas encerrar o programa. Em vez quer coisa entre 1000-1019, inclusive. es via internet gratuitas ou muito
de fechar o FreeSWITCH a partir Para adicionar o novo usurio baratas. O FreeSWITCH pode ro-
do fs_cli, saia do programa e ento Katherine ao ramal 1500, utilize o tear ligaes de e para a internet,
digite o comando freeswitch stop no caracter pipe (|), que um OR lgico: mesmo por trs de um dispositivo
prompt do Linux. NAT. Os dispositivos NAT causam
Mantenha o FreeSWITCH em se- <condition field="destination_ vrios problemas para ligaes SIP;
gundo plano enquanto configura um number" expression="^(10[01] no entanto, o FreeSWITCH timo
novo usurio e modifica o Dialplan. [09]|1500)$"> para contornar essas questes.
Em vrios casos, a configurao
Adicionar Agora, inicie o programa fs_cli
e digite reloadxml ou aperte F6. O
padro funcionar sem qualquer mu-
dana. Um simples teste chamar o
um usurio SIP novo ramal est pronto para o uso. servidor de conferncia pblica Fre-
O FreeSWITCH vem com 20 usu- O melhor meio de testar isso eSWITCH. A URI SIP desse servidor
rios pr-determinados, mas se quiser configurar um softphone (ou um sip:888@conference.freeswitch.org,
adicionar mais, apenas dois passos aparelho padro caso haja algum) e o Dialplan padro ir conectar seu
modificam a configurao: como 1500 com o FreeSWITCH. fone se chamar 9888.
No seu cliente X-Lite, abra as con- Se a chamada for completada, ha-
Adicione uma entrada de usu- figuraes de conta SIP e altere o ver uma voz TTS (text-to-speach)
rio em $CONF/directory/default/ nome de exibio para Katherine e anunciando seu nome ou nmero
Modifique o Dialplan para per- os campos User name e Authorization de identificao. Caso voc seja a
mitir que o novo usurio receba user name para 1500 antes de salvar as nica pessoa na conferncia, haver
chamadas alteraes. O cliente exibir regis- uma gravao que o informar disso.
tering e depois Ready. Agora, pos- Para chamar a conferncia com
Para adicionar um novo usurio svel fazer chamadas de seu prprio o PortAudio, digite:
chamado Katherine com o ramal
1500, v para $CONF/directory/default
e faa uma cpia do arquivo 1000.xml: Listagem 1: Novo usurio 1500.xml
01 <include>
cp 1000.xml 1500.xml 02 <user id="1500" mailbox="1500">
03 <params>
Em um editor, abra o 1500.xml, 04 <param name="password" value="$${default_password}"/>
05 <param name="vmpassword" value="1500"/>
substitua 1000 por 1500 e altere o 06 </params>
effective_caller_id_name para Kathe- 07 <variables>
rine. Seu novo arquivo dever ficar 08 <variable name="toll_allow" value="domestic,international,
parecido com o da listagem 1. local"/>
09 <variable name="accountcode" value="1500"/>
Agora, abra $CONF/dialplan/default. 10 <variable name="user_context" value="default"/>
xml e localize a entrada do Dialplan 11 <variable name="effective_caller_id_name"
(ou ramal) chamada Local_Extension. value="Katherine"/>
Na linha: 12 <variable name="effective_caller_id_number" value="1500"/>
13 <variable name="outbound_caller_id_name"
value="$${outbound_caller_name}"/>
<condition field="destination_ 14 <variable name="outbound_caller_id_number"
number" expression="^(10[01] value="$${outbound_caller_id}"/>
[0-9])$"> 15 <variable name="callgroup" value="techsupport"/>
16 </variables>
17 </user>
quem conhece expresses regulares 18 </include>
ir saber que ^(10[01][0-9])$ significa

Linux Magazine #70 | Setembro de 2010 63


REDES | FreeSWITCH

Listagem 2: Configurao de um gateway para uma conta SIP a FAIL_WAIT, provavelmente h um


problema de configurao.
01 <include> O ltimo passo para receber
02 <gateway name="iptel"> <! used in dialstrings >
chamadas a permisso no Dial-
03 <param name="username" value="YOUR_USERNAME_HERE"/>
04 <param name="realm" value="iptel.org"/> plan. A configurao padro possui
05 <param name="password" value="YOUR_PASSWORD_HERE"/> um contexto pblico que trata as
06 <param name="proxy" value="sip.iptel.org"/> chamadas recebidas pela internet
07 </gateway>
08 </include> como confiveis.
Primeiro, preciso permitir cha-
madas ao seu novo usurio iptel.
pa call sofia profile external org e depois especificar onde rotear
sip:888@conference.freeswitch.org restart reloadxml essas chamadas. Para isso, crie um
novo arquivo chamado $CONF/dial-
Vrios provedores oferecem ser- Sofia o nome da biblioteca plan/public/00_inbound_iptel.xml
vios de conexo que do acesso SIP [7] usada pelo FreeSWITCH (ou faa uma cpia do arquivo de
PSTN (Public Switched Telephone e tambm o nome do comando exemplo chamado 00_inbound_did.
Network) ou simples contas SIP. O para executar funes relativas ao xml). Ele deve se parecer com o da
FreeSWITCH usa o conceito de SIP (digite sofia para ver a sintaxe). listagem 3.
gateways para estabelecer cone- O comando acima instrui o Fre- Especifique seu nome de usurio
xes com esses provedores. Os ga- eSWITCH a reiniciar o perfil exter- iptel.org na expresso regular. Seu
teways so usados para registros no nal aps carregar os dados XML.O nome de usurio o destination num-
provedor. Caso j possua um prove- comando reloadxml opcional; po- ber (Destination numbers nmeros
dor SIP, use as configuraes desse rm, coso tenha feito mudanas nos de destino no se restringem a ca-
provedor. O wiki do FreeSWITCH dados XML (criando ou editando racteres numricos).
oferece exemplos de configuraes um arquivo), ser preciso que essas A chamada roteada para o ramal
para alguns provedores [5]. Neste mudanas sejam carregadas na rei- especificado nos parmetros informa-
exemplo, mostrarei como configu- nicializao do perfil. Para verificar dos ao aplicativo de transferncia.
rar um gateway para iptel.org, que se seu sistema est registrado no iptel. No meu caso, roteei para o ramal
oferece contas SIP gratuitas. org, digite o comando: MOH para o teste. possvel rotear
Primeiramente, crie uma con- para seu fone SIP. Caso esteja regis-
ta no site iptel.org [6] e anote seu sofia status trado como 1000, ento o destino
nome de usurio e senha. Depois, da transferncia 1000 XML default.
crie um novo arquivo em $CONF/ Caso seu registro esteja correto, Salve o arquivo e v para o prompt
sip_profiles/external. Certifique- surgir uma linha como a seguinte: do FreeSWITCH e pressione F6 (ou
se de incluir o nome do usurio e digite reloadxml).
a senha nos campos apropriados. O iptel gateway sip:myusername@sip. Para receber uma chamada na sua
arquivo deve ficar parecido com o iptel.org REGED nova conta, ser preciso que algum
da listagem 2. faa uma ligao SIP para a sua nova
Salve o arquivo e, no prompt do REGED significa que o gateway est URI SIP iptel.org. Em resumo,
FreeSWITCH, digite o comando: registrado no provedor. Caso apare- possvel testar com PortAudio. No
prompt do FreeSWITCH, digite:

Listagem 3: 00_inbound_iptel.xml pa call sip:myusername@sip.


iptel.org
01 <include>
02 <extension name="iptelinbound">
03 <condition field="destination_number" expression="^(YOUR_ Se a chamada for bem sucedida,
IPTEL.ORG_USERNAME)$"> chegar ao ramal destinado.
04 <action application="set" data="domain_name=$${domain}"/>
05
06
<action application="transfer" data="9999 XML default"/>
</condition>
Codecs de qualidade
07 </extension> Chamadas telefnicas tradicionais
08 </include> possuem uma qualidade de som
marginal e os celulares so piores.

64 http://www.linuxmagazine.com.br
FreeSWITCH | REDES

O FreeSWITCH oferece uma ti- SIP Protocolo de Inicio de Sesso


ma qualidade de voz nas chamadas
com codecs gratuitos e de cdigo SIP, ou Session Initiation Protocol um protocolo baseado em TCP/IP uti-
lizado para sesses de multimdia atravs da Internet. O protocolo basea-
aberto. O codec de cdigo aberto
do em texto similar ao HTTP, com requisies e respostas, campos de
CELT [8] possui uma tima qua- cabealho, regras de codificao e cdigos de status. Alm do VoIP, o SIP
lidade sem dissipao. usado em mensagens instantneas, jogos online e distribuio de strea-
O FreeSWITCH traz tambm os ming multimdia.
codecs Siren [9] da Polycom. Esses
codecs de excelente qualidade no
tm o cdigo aberto, mas esto livres de conferncia FreeSWITCH com sentada por Rob Smart, da IBM,
de royalties. A configurao padro o PSTN com +1-213-799-1400 e com- que escreveu um tutorial chamado
utiliza os codecs Siren. parar a diferena entre codecs VoIP Home VOIP system using FreeSwi-
Um fato que importante ressal- de alta qualidade e e a baixa quali- tch and a Linksys 3102 voice gateway
tar que codecs de alta qualidade dade do PSTN. [10] mostrando como configurar o
podem expor as limitaes de head- FreeSWITCH como um servidor
sets. Os equipamentos mais recentes Prximo passo de comunicao no Reino Unido.
e os que esto na lista certificada Esta breve introduo ao FreeSWI- Uma comunidade crescente e vi-
do Skype funcionaro melhor com TCH mostra apenas um pouco do brante oferece suporte aos novatos
bons codecs. Pessoalmente, uso o que esse software de cdigo aberto e veteranos, portanto, junte-se a ela
headset Logitech Clear Chat Pro pode fazer. Uma maneira de usar e continue aprendendo as grandes
USB sem grandes problemas. o FreeSWITCH na prtica apre- possibilidades do VoIP. n
Para o teste, recomendo uma liga-
o a um amigo que tambm tenha
o FreeSWITCH instalado.
Para iniciar, faa uma chamada Mais informaes
PSTN ou com um celular, desligue [1] Comparao entre o FreeSWITCH e o Asterisk:
e, imediatamente, faa outra ligao http://www.freeswitch.org/node/117
com um codec de alta qualidade.
[2] Site do FreeSWITCH: http://www.freeswitch.org
A utilizao do PortAudio facilita o
teste. Primeiramente, edite $CONF/ [3] Download do FreeSWITCH: http://files.freeswitch.org
autoload_configs/portaudio.xml. Lo-
[4] X-Lite: http://www.counterpath.com/xlite.html
calize a linha <param name=sample-
rate value=8000/>, altere o valor [5] FreeSWITCH wiki:
para 48000 e salve o arquivo. http://wiki.freeswitch.org/wiki/SIP_Provider_Examples
No prompt do FreeSWITCH di-
[6] Site iptel.org: http://www.iptel.org
gite os seguintes comandos:
[7] Biblioteca Sofia-SIP: http://sofiasip.sourceforge.net
reloadxml
[8] CELT codec: http://www.celtcodec.org
reload mod_portaudio
[9] Siren codecs: http://www.polycom.com/company/about_us/
Agora, ligue para seu amigo ou technology/siren_g7221/ index.html
faa uma conferncia FreeSWITCH:
[10] Tutorial FreeSWITCH:
http://robsmart.co.uk/2009/06/02/freeswitch_linksys3102
pa call 9888

A qualidade do udio certamente


ser bem melhor, especialmente se Gostou do artigo?
sua conexo com a internet for rpi- Queremos ouvir sua opinio. Fale conosco em
da. As conferncias FreeSWITCH cartas@linuxmagazine.com.br
podem misturar chamadas com quais- Este artigo no nosso site:
quer codecs e taxas de sampling. De http://lnm.com.br/article/3854
fato, possvel fazer uma chamada

Linux Magazine #70 | Setembro de 2010 65