Manual

do

Maker

.

com

Como fazer um PBX com Raspberry Pi

Como fazer um PBX com Raspberry Pi

O tempo passa, e passa muito rápido. A primeira vez que escrevi sobre asterisk foi em Julho de 2011 nesse artigo onde mostrei como controlar um LED RGB utilizando um Arduino conectado via serial ao notebook. E hoje resolvi escrever outra vez sobre Asterisk, mas dessa vez rodando diretamente em um Raspberry, que se encarregará de atuar sem intermediários e sem repasse de tarefas. Vamos acionar relé, ligar display e depois você poderá fazer tudo o que imaginar.

RasPBX

E não é que existe um projeto baseado no Raspbian que contém tudo instalado,  Asterisk e FreePBX?

Eu estava procurando por soluções para um problema relacionado a atualização do kernel, que tornou indisponível para mim os headers, necessários para uma determinada compilação do Asterisk. Após muito procurar, me deparei ocasionalmente com esse excelente projeto e resolvi experimentá-lo. A primeira coisa a fazer é (obviamente) o download, mas tenha em mente que seu Raspberry receberá outro sistema desse modo e se você já tem nele algo configurado, deverá portar para esse novo sistema.

Download

Tentei inicialmente baixar diretamente, mas o link é lento de dar dó, então optei pelo torrent, onde às 22:30 de uma quinta-feira consegui 22 peers e o download foi bem mais rápido, apesar de ainda estar lento. Baixe o torrent do site oficial e utilize o seu programa de torrent preferido. No meu caso, utilizo o Transmission no Linux Mint e o Ktorrent no KDE do Debian. Observe que nesse momento você estará baixando o firmware para seu computador pessoal e posteriormente o transferirá para o cartão de memória que fará o boot no Raspberry Pi.

Instalar o sistema no cartão

Como sempre cito e repito, não uso Windows, então se você pretende fazer essa transferência do sistema para o cartão usando Windows, utilize o CygWin ou o Moba Xterm. Utilizando um dos dois, o procedimento deve ser bastante semelhante. Supondo que o cartão de memória apareça em seu sistema como /dev/sdb:

unzip raspbx-28-01-2017.zip #ou a versão da respectiva data da versão
dd if=raspbx-28-01-2017.img of=/dev/sdb bs=1M

Senhas padrão do sistema

Após fazer a transferência do sistema, você já poderá iniciar o boot. As senhas do sistema são:

MySQL

Usuário: root

Senha: raspberry

SSH

Usuário: root

Senha: raspberry

FreePBX

Usuário: admin

Senha: admin

Acesso ao sistema

Claro, você precisará saber o endereço IP que seu RasPBX recebeu via DHCP. Após, você pode acessá-lo com ssh para acesso ao sistema operacional ou http para acesso a web-gui. Mas o ideal é que a primeira conexão seja realmente ao sistema, e explico mais abaixo. Por fim, se você não tem como pegar o IP na interface de gerenciamento do seu roteador, então conecte um monitor e teclado diretamente ao Raspberry para pegar o IP com o comando 'ifconfig'.

Update inicial do sistema

É recomendado que você faça as atualizações iniciais do sistema antes de utilizá-lo, portanto uma conexão ssh deveria mesmo ser a primeira. Após conectado, utilize o comando:

raspbx-upgrade

Mais configurações

Algumas coisas podem ser definidas pra melhorar a segurança do sistema, por exemplo. Gerar chaves individuais a cada setup é uma delas.

regen-hostkeys

Configurar timezone, locales e teclado são necessidades básicas, hum?

configure-timezone
dpkg-reconfigure locales
dpkg-reconfigure keyboard-configuration

Ligação inicial de teste

Agora com tudo configurado, que tal experimentar seu PBX? É um "hello world", mas já é a primeira alegria.

Todas as imagens do sistema a partir de 2017 contam com um trunk padrão de um parceiro do projeto, que permite ligações gratuitas para números nos EUA.

Não vou entrar em detalhes sobre as configurações do Asterisk nesse artigo, mas o que você precisará fazer é criar um chan_sip e clicar em "Apply Config", então conectar seu telefone ao PBX. Depois, procure no google por "toll-free numbers" para encontrar alguns números que você pode fazer ligação gratuita. O número deverá ser precedido por "+1", por exemplo "+1800xxxxxxx".

Versões antigas do sistema também podem fazer uso desse trunk configurando o chan_sip manualmente indo ao menu Connectivity->Trunks->Add SIP. Então coloque isso:

type=peer
qualify=no
host=switch.starcompartners.com
port=5060

Criar os arquivos de áudio

Quando você faz uma URA (Unidade de Resposta Audível), as duas maneiras que podem ser empregas são o tts (text-to-speech) e o play de um arquivo de áudio. Porém se você quer dinamísmo, é fundamental gerar seus arquivos de áudio. Para isso você tem diversas opções, dentre as quais, espeak, festival, say e spd-say. Instale o que preferir ou instale todos:

sudo apt-get install gnustep-gui-runtime
say "hello"

sudo apt-get install festival
echo "hello" | festival --tts

sudo apt-get install speech-dispatcher
spd-say "hello"

sudo apt-get install espeak
espeak "hello"

Para gravar seus arquivos de áudio, use o text2wave. Você pode testá-lo com o seguinte comando:

echo "hello"|text2wave -o teste.wav

E enfim, entramos na grande questão; usar sintese de voz em inglês ou português? Você pode configurar algum programa para sintese de voz em português, mas acredite, é horrível. Se realmente você quer alguma coisa em português de alta qualidade, experimente o Loquendo. Se quiser fazer um teste para provar a excelência do produto, siga esse link.

Se quiser ter gravações prontas para tocar, você poderá fazê-las todas com o Loquendo (e certamente quererá, ainda mais se for no idioma português Brasil). É meio que trapaça, sei lá, mas é o próprio site que disponibiliza o recurso, então se quiser utilizar o Loquendo, terá que copiar os arquivos de áudio do cache do browser. Antes de iniciar a gravação, remova qualquer arquivo pré-existente:

cd ~/.cache/google-chrome/Default/Media\ Cache
rm -f *

A partir de então, cada entrada que você solicitar um play demo no browser estará disponível no cache e pode ser facilmente identificado se renomeado um a um, conforme você os vai criando.

Guarde esses arquivos para utilizarmos em outro post. Se quiser brincar agora, você pode seguir esse outro tutorial em que eu fiz um "disk arduino" para controlar um LED RGB. Nós vamos chegar nesse nível de detalhamento e vamos além, não se preocupe. Também farei um video mostrando esses passos iniciais e o funcionamento de algumas configurações e nos próximos artigos relacionados veremos como criar uma URA (Unidade de Resposta Audível), como utilizar o GPIO do Raspberry para responder à URA e comunicação com ESP8266 na mesma rede, não deixe de acompanhar!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.