Projecto de VoIP

Página do "Asterisk, the Open Source PBX".
Livro "Asterisk: The Future of Telephony", 2ª Edição.
Livro "Asterisk: The Definitive Guide", 3ª Edição.


FAQ do Projecto de VoIP

Pergunta: O Wireshark não me está a descodificar correctamente o tráfego RTP. Aparece-me como tráfego UDP. Como resolvo?
Resposta:
Parece ser um bug da versão 4.0.5 do Wireshark. Há duas formas de resolver: i) fazer downgrade do Wireshark para versão Old Stable Release 3.6.13; ii) seleccionar um pacote, clicar com o botão direito do rato e escolher no menu "Decode As" e mudar o "current" de "UDP" para "RTP".

Pergunta
: Na consola do Asterisk aparece-me a mensagem "NOTICE[930]: chan_sip.c:10472 process_sdp: Received AVPF profile in audio offer but AVPF is not enabled, enabling: audio 7078 RTP/AVPF 9 0 8 3 18 96 97 98 101 99 100" e não ouço som no Linphone quando o corro a partir do meu PC, mas funciona bem se correr o Linphone dentro da máquina virtual. Como resolvo?
Resposta: Essa mensagem é normal e é apenas um aviso. "AVPF" significa "Audio-Video Profile with Feedback". Significa que foi pedido para activar as mensagens RTCP de feedback, e que foram activadas. Se não ouve o som a partir do seu PC, pode ter a ver com problemas de NAT. Pode ser de descomentar a linha 1015 do ficheiro sip.conf, ficando "icesupport = yes". Note que pode resolver o problema para o protocolo RTP, mas não para o protocolo RTCP.

Pergunta:
 como posso arranjar mais ficheiros de som para o Asterisk?

Resposta1: nem todas as versões de Linux têm nos seus repositórios todos os pacotes de som disponibilizados com o Asterisk. Em http://downloads.asterisk.org/pub/telephony/sounds/  estão as versões mais recentes dos diferentes pacotes, que podem ser desarquivados manualmente para a directoria /usr/share/asterisk/sounds
Resposta2: o tradutor do Google sintetiza som com grande qualidade, em muitas línguas, carregando no botão do altifalante. É possível obter o ficheiro ficheiro mp3 correspondente, por exemplo em http://soundoftext.com/
Se o som do ficheiro mp3 ficar muito baixo, pode convertê-lo para outro formato. Por exemplo, instalando o "sox" com o comando "sudo apt-get install sox libsox-fmt-all" e convertendo com "sox ficheiro.mp3 ficheiro.gsm".
Atenção que se o ficheiro mp3 estiver em stereo, é necessário converter com a opção de misturar os 2 canais, com "sox ficheiro.mp3 ficheiro.gsm channels 1".
Resposta3: se tiver acesso à Internet, pode usar o tradutor do Google em tempo real com o script AGI disponível em http://zaf.github.io/asterisk-googletts/

Pergunta: como posso reproduzir os ficheiros de som e vídeo do Asterisk?
Resposta: a melhor forma é com o Linphone e com o Asterisk. Os ficheiros de som .gsm também podem ser reproduzidos em Linux com o comando "play <ficheiro>" e em Windows com o VLC media player, por exemplo. Os ficheiros de som .wav podem ser reproduzidos com quase qualquer media player. Os ficheiros de vídeo não são reproduzidos correctamente nem no Asterisk nem num media player, devido a um bug no tratamento do vídeo das versões actuais do Asterisk. Se precisar de editar os sons, pode usar o Audacity.

Pergunta: O Asterisk diz-me: (ficheiro) Not found (Permission denied).  Porquê? O ficheiro existe!
Resposta: Isso deve ser um problema de permissões de acesso ao ficheiro. Geralmente o Asterisk está a correr como utilizador "asterisk", pelo que o ficheiro deve ter permissão de leitura para todos os utilizadores, para que possa ser lido pelo Asterisk. As pastas devem ter permissão de leitura e execução (pesquisa de ficheiros) para todos os utilizadores. Se quiserem escrever num ficheiro, ou pasta, é necessário dar permissão de escrita a todos os utilizadores. Podem ser usados comandos do tipo:

sudo chmod 644 /path-to-file/filename.ext
sudo chmod 755 /path-to-file
sudo chmod -R a+r /path-to-file

O primeiro comando dá permissão de leitura a um ficheiro. O segundo dá permissão de leitura e pesquisa numa pasta. O terceiro dá permissão de leitura a todos os utilizadores a tudo o que estiver numa pasta e recursivamente para as subpastas dela.

Pergunta: Quando tento executar um AGI, obtenho o seguinte erro. Porquê e como resolvo?
$ ./teste.py
-bash: ./teste.py: /usr/bin/python3^M: bad interpreter: No such file or directory
Resposta: O caracter "^M" é um Carriage Return. O problema é que o ficheiro está em formato Windows, em que as linhas terminam com Carriage Return e Line Feed, enquanto em formato Linux as linhas terminam apenas com Line Feed. Pode converter o ficheiro para formato Linux com o comando:
$ dos2unix teste.py

Pergunta: Como manter valores de chamada para chamada? É necessário gravá-los em ficheiro ou numa base de dados?
Resposta: Pode-se assumir que o Asterisk está a correr em permanência e usar variáveis globais para manter valores de chamada para chamada. Para consultar a forma de definir e manipular variáveis globais, sugere-se consultar a secção "Using variables" p. 135 (p. 163 do pdf) e seguintes da 2a Edição do Livro do Asterisk, bem como a sintaxe com os comandos na consola do Asterisk "core show application Set" e "core show function GLOBAL".

Pergunta: como posso testar a ligação entre 2 telefones só com um único PC?
Resposta: É possível ter 2 softphones diferentes no mesmo PC, havendo partilha de microfone e altifalante. Não é possível partilhar a webcam, pelo que não dá para testar chamadas de vídeo. Há uma versão do X-Lite antiga e gratuita, disponível em X-Lite v3. Pode usar um Linphone no Windows e um Linphone na máquina virtual, mas para que possam comunicar, será necessário pôr "directmedia=no" no sip.conf e dar o comando "sip reload" na consola do Asterisk.

Pergunta: como posso usar a agenda do X-Lite3 para enviar mensagens de texto?
Resposta: a agenda do X-Lite3 só funciona se correr o X-Lite3 em modo de compatibilidade com "Windows Vista (Service Pack 2)". Isso pode ser configurado nas propriedades do atalho do X-Lite3. Quando abrir a janela de mensagens dá o erro "The Microsoft DHTML Editor control is not properly registered on your machine. You can not send any message until it is registered. Please close your X-Lite first, then register your DHTML Editor control, or re-install Microsoft Internet Explorer to solve this problem". Instalando o "DHTML Editing Control for Applications Redistributable Package (x86)" disponível em: https://www.microsoft.com/en-us/download/details.aspx?id=8956 resolve o problema.

Pergunta: porque não oiço som, apesar de no log do Asterisk aparecer que está a reproduzir um ficheiro de som?
Resposta: se não tiver microfone ou as permissões do Windows 10 bloquearem o acesso ao microfone do softphone, não consegue enviar um fluxo de som e por isso pode também não receber fluxo de som. É necessário ligar um microfone e desbloquear o acesso das aplicações ao microfone no painel de controlo do windows (verifique https://privacy.microsoft.com/en-us/windows-10-camera-and-privacy).


Pergunta: quando capturo o tráfego na interface host-only adapter, não me aparece o tráfego num dos sentidos (ou não aparece tráfego nenhum). Como resolvo?
Resposta: é um bug do host-only adapter em Windows que ocorre em alguns sistemas. A solução é instalar o Wireshark na máquina Linux onde está a correr o Asterisk e capturar aí o tráfego.

Attachments