Instalando o FreeSWITCH 1.8 no Debian 9 (Raspbian Stretch, a imagem básica do sistema Smart Home do MajorDoMo no Rasbperri Pi)

Continuo uma curta série de artigos sobre a criação de "Smart Home" e instruções passo a passo para auto-instalação / configuração.

Mas agora será principalmente sobre Freeswitch e telefonia IP.

Em agosto, o desenvolvedor da plataforma aberta de telefonia IP VoIP FreeSWITCH, Signalwire publicou um lançamento público da nova versão do software - 1.8. (1.8.2 já foi lançado).
Em conexão com o lançamento desta versão da plataforma de telefonia IP Freesfitch 1.8, houve uma decisão de instalá-lo no Raspberry 3 com a imagem básica do sistema doméstico inteligente MajorDoMo instalado, no sistema operacional Raspbian (Debian 9 Stretch) com alguns elementos de automação residencial.



Abaixo, uma descrição da instalação de uma plataforma VoIP a partir da fonte, com algumas notas e explicações.

Três meses após o lançamento e anúncio do lançamento público da versão 1.8 no guia de instalação do Debian 9 no site oficial, o FreeSWITCH atualmente publicou instruções de instalação.

Instalando o FreeSWITCH 1.8

No entanto, não consegui instalar nenhuma das opções nas instruções do meu Rasberry. Há não muito tempo, havia um aviso sobre incompatibilidades e precisava ser instalado a partir dos códigos-fonte. Também na documentação oficial, você pode encontrar a instalação no Raspberry Pi, mas ela já está desatualizada. Portanto, descreverei minha opção de instalação no Raspberry P, fazendo uma pequena instrução passo a passo. Nos artigos anteriores, tentei descrever como e por onde começar a trabalhar com o terminal e a linha de comando; portanto, se um pouco confuso, recomendo a leitura dos artigos anteriores (os links serão fornecidos no final do artigo). O princípio é o mesmo, funcionou - funcionou, verificou duas vezes as instruções preparadas para que o filho mais velho pudesse repetir e entender um pouco o que e como ele estava fazendo.

Instalando o FreeSWITCH 1.8.2 a partir da fonte


Conecte-se ao Raspberry via Putty.

Para evitar digitar sudo antes de cada comando, execute o comando sudo –i. Depois disso, trabalhamos com os direitos do administrador do sistema, eles mudaram automaticamente para o diretório raiz. Para descobrir em qual diretório você está, execute o comando Pwd.

Atualizando o sistema:

apt-get update apt-get upgrade 

Vá para o diretório inicial e faça o download da versão 1.8.2 do freeswitch:

 cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch 

Após a conclusão do download, a pasta de origem Freswitch aparece no diretório inicial. Vá para ele (caminho completo: / home / pi / freeswitch) e instale os programas necessários para criar a partir do código-fonte e vá para o diretório freeswitch:

 cd freeswitch apt-get install autoconf libtool libtool-bin 

Antes de compilar um programa a partir da fonte, você deve primeiro montar o configurador, execute:

 ./bootstrap.sh –j 

A plataforma Freeswitch possui uma estrutura modular, portanto, antes de instalar, edite a lista de módulos necessários:

 nano /freeswitch/modules.conf 

Na maioria das vezes, a lista permaneceu como padrão, desabilitei alguns codecs de vídeo, opala, png.
Módulo de idioma russo conectado, endpoints de mod curl, mod_portaudio,
Instale dependências para configuração e montagem do servidor. Usamos o sinalizador –y para que a equipe responda Sim automaticamente a todas as perguntas do sistema:

 apt-get install -y g++ zlib1g-dev libjpeg9 pkg-config sqlite3 libsqlite3-dev libcurl4-openssl-dev libpcre3 libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff-dev apt-get install -y yasm lua5.2 lua5.2-dev libsndfile-dev portaudio19-dev 

Os pacotes que você instala dependem dos plug-ins. Se um pacote estiver faltando, um erro pode aparecer nas próximas duas etapas.

Configuração e instalação do servidor FreeSWITCH


Depois disso, você precisa executar o configurador para verificar todas as dependências, além de instalar opções adicionais de compilação. O configurador criará o Makefile com base no conhecimento adquirido e no arquivo makefile.am.

Nós executamos o comando:

 ./configure --enable-system-lua 

Se tudo correu bem, recebemos a seguinte mensagem:



Vamos prosseguir para a instalação em si:

 make make install 

Se o resultado for positivo, o Freeswitch é instalado por padrão no /usr/local/freeswitch ; no final da configuração, podemos visualizar a lista e o local dos diretórios do FS.


Se ocorreu um erro durante a instalação ou configuração, como mod_lua.cpp: 37: 17: erro fatal: lua.h: Nenhum arquivo ou diretório # inclui "lua.h", é necessário instalar as bibliotecas necessárias usando o comando search. Não consegui instalar o freeswitch com os pacotes liblua5.3-0 liblua5.3-dev, tive que instalar a versão 5.2.

 Apt search lua 



Instale arquivos de som com suporte ao idioma russo:

 make cd-sounds-install make cd-sounds-ru-install cd-moh-install 

O processo de instalação pode ser concluído.

Para evitar que pequenos arquivos de banco de dados sejam gravados na memória flash e aumentem sua vida útil, adicionamos a linha no arquivo / etc / fstab:

tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0


Após reiniciar, os arquivos temporários criados pelo FS serão gravados na RAM.

Configuração do sistema após a instalação do FreeSWITCH.


Há um aviso na documentação do FreeSWITCH, portanto, não recomendo tentar executar o FS imediatamente após a instalação.

** Atenção! Se você instalou o FreeSWITCH a partir da fonte, precisará definir permissões nos diretórios e arquivos. Se você executar o FreeSWITCH após a instalação, ele será iniciado por padrão como 'root'. As permissões de diretório devem ser alteradas antes do lançamento inicial. **

Crie um novo usuário, defina permissões e altere os proprietários para arquivos do FreeSwitch

 cd /usr/local groupadd freeswitch adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch --disabled-password chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R ug=rwX,o= /usr/local/freeswitch/ chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/* 

Em seguida, copie o arquivo de inicialização automática para systemd, renomeie-o e altere os direitos de acesso.
O FreeSWITCH vem com um arquivo systemd que, se configurado corretamente durante a inicialização, monitora o FreeSWITCH e o inicia como um daemon, reinicia-o se o FS não funcionar.

 cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service 

Criamos um link para o arquivo de inicialização e criamos um link para o arquivo de inicialização do console do FS:

 ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli 

Adicione o serviço freeswitch ao carregamento automático:

 systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch 

Depois disso, meu FS ainda não foi iniciado, recebi um erro com um arquivo * .pid, apenas editei o arquivo de inicialização automática nano /etc/systemd/system/freeswitch.service
Comentando a seguinte linha no arquivo: # PIDFile = / run / freeswitch / freeswitch.pid.



Apenas no caso, sobrecarregamos o Raspberry (como você se lembra, enquanto trabalhamos a partir do root):

Após reiniciar, damos o comando novamente, entramos no sudo -i, executamos o htop e vemos os processos do FreeSWITCH em execução.

Um pouco sobre as configurações iniciais:

Após a instalação, o FreeSWITCH está pronto para funcionar, por padrão, há 20 assinantes com os números 1000-1019. A senha padrão para assinantes de VoIP é especificada no arquivo /usr/local/freeswitch/conf/vars.xml e é 1234. O diretório / usr / local / freeswitch / conf / derectory / default contém 20 arquivos xml, sendo cada um deles responsável pelo assinante com o número correspondente. Podemos definir uma senha para cada assinante, alterando o nome do arquivo e os dados em seu conteúdo, podemos alterar a numeração e a capacidade do assinante.

Se você precisar fazer isso, depois de editar os arquivos, inicie o console do FreeSwitch: fs_cli e, na janela do console, fornecemos o comando reloadxml . Por esse comando, o FS relê os arquivos XML e aceita as alterações.



Saia do console: ctrl+D ou digitando /exit ou /quit

Agora vamos tentar conectar assinantes IP. Para verificar a conexão, usei em um PC com Windows: os softphones MicroSIP e PhonerLite e em um celular executando o Android CSipSimle OS, as configurações são as seguintes (nome da conta - número de telefone, servidor SIP - o endereço do nosso Raspberry:
Um ícone verde na barra de status inferior desses programas significa que o assinante está autorizado em nosso servidor VoIP e está pronto para se comunicar.



Ao discar o número, podemos verificar a chamada do assinante e algumas outras funções do PBX IP.
Mas não vejo um aplicativo especial em casa para um PBX de escritório típico. Vamos tentar usar recursos mais avançados do FreeSWITCH.

Freeswitch tem uma estrutura modular, plug-ins podem ser visualizados no arquivo
modules.conf.xml

Vamos editar, desliguei os codecs de vídeo e conectei o módulo de idioma russo, bem como o mod_xml_rpc.

  nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</>      <source><!-- --> 

na linha antes e depois do nome do módulo. Desativar - pelo contrário, colocando esses símbolos, um pequeno exemplo, o primeiro módulo está ativado, o segundo está desativado:

 <load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> --> 

Depois disso, se você desejar alterar, editamos as configurações simples (porta, usuário, senha) do próprio módulo no arquivo xml_rpc.conf.xml, localizado no mesmo diretório.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml

Padrão: usuário - freeswitch, senha funciona, porta 8080.

Sobrecarregamos o frisvitch ou o próprio servidor. Existem várias maneiras de fazer isso: reinicie o sistema inteiro (reinicialização) usando os comandos de controle de serviço: systemctl stop freeswitch e systemctl start freeswitch ou systemctl restart freeswitch .

Depois disso, digitando http://IP_RASPBERRY:8080/portal/index.html# no navegador e inserindo o usuário freeswitch com a senha trabalha, entramos no pequeno painel de administração do FreesWITCH. Podemos ver o status, usuários registrados etc.



Vamos tentar ir um pouco mais longe:

Digitar uma solicitação no navegador exibe o status do FS:

 http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal 



A sintaxe é bastante simples, se o comando contiver mais de uma palavra, a primeira e a segunda palavras serão separadas por um ponto de interrogação e o restante por espaços.

Vamos tentar executar este comando do MajorDoMo: na página principal de "Smart Home", vá para o Painel de Controle - Console

Nele, digitamos o comando:

 GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal") 

Em resposta, obtemos o status do nosso servidor de VoIP.



Agora tente o seguinte experimento:

A idéia é iniciar uma chamada (usando a função de origem) do lado do Smart Home para o assinante com o número 1001 (MicroSip) e depois transferir a chamada concluída para o plano de discagem para fazer chamadas para 1002 (PhonerLite). O comando da API tem a seguinte aparência: o usuário de origem / 1001 1002 XML padrão inicia uma chamada para o número do console 1001, depois que o telefone é capturado (automaticamente capturado), o número e 1002 são chamados no plano de discagem padrão.

Nós o traduzimos em um formato compreensível para o MajorDoMo e o navegador:

 GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default") 

Primeiro, um softphone toca; depois de alguns segundos, há uma chamada para o segundo.



Como conclusão, ou uma pequena implementação prática


Há pouco tempo, eu precisava estabelecer uma comunicação com uma pessoa que era fisicamente incapaz de ligar (discar) em um telefone celular. No momento, a necessidade disso desapareceu, mas ainda decidiu verificar a viabilidade. Usando um gateway VoIP (uma solução mais econômica em terminações FXS ou um gateway GSM mais caro), o botão “casa inteligente” sem fio pode ser implementado, se desejado.

Segunda opção: o sistema doméstico inteligente MajorDoMo possui uma assistente de voz Alice. Agora você pode tentar conectar a "Casa Inteligente" ao proprietário e seu telefone celular através de redes públicas.

Alguns links

Site da ClueCon do desenvolvedor do FreeSWITCH
Documentação em inglês FreeSWITCH
Site do desenvolvedor MajorDoMo
Parte um: Uma pequena instrução passo a passo para instalar o sistema operacional Smart Home com base em um computador de placa única Raspberry, módulo Z-Way RaZberry e software MajorDoMo
Parte dois: continuação: módulo Z-Way RaZberry e software MajorDoMo
Parte três: Continuando a criar uma casa inteligente sem fio

Source: https://habr.com/ru/post/pt426429/


All Articles