Qual é a sua dúvida?
Configurando Asterisk + WebRTC
Passos Importantes
Passo 1
Edite o arquivo /etc/asterisk/modules.conf
nano /etc/asterisk/modules.conf
Adicione o conteúdo abaixo no final do arquivo
load = res_crypto
load = res_http_websocket
load = res_pjsip_transport_websocket
load = codec_opus
load = res_srtp
Passo 2
Edite o arquivo http.conf
nano /etc/asterisk/http.conf
Ajuste o conteúdo para aceitar os certificados let's encrypt ou outro certificado que você tenha disponibilizado para o asterisk
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
;; tls certificados
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/asterisk/keys/cert9.pem ;; lets encrypt
tlsprivatekey=/etc/asterisk/keys/privkey9.pem ;; lets encrypt
Passo 3
Edite o arquivo pjsip.conf
nano /etc/asterisk/pjsip.conf
Ajuste o conteúdo para conter as informações transport-wss, dtls_auto_generate_cert e webrtc
[general]
allowguest = no
[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5060
external_media_address = 191.252.218.81 ;; Public IP
external_signaling_address = 191.252.218.81 ;; Public IP
local_net = 172.50.50.90/255.255.255.0 ;; Docker IP
[transport-wss]
type=transport
protocol=wss
bind=0.0.0.0
external_media_address = 191.252.218.81 ;; Public Ip
external_signaling_address = 191.252.218.81 ;; Public Ip
local_net = 172.50.50.90/255.255.255.0 ;; Docker Ip
;;
;; Ramais
;;
;;
;; 7000 UDP
;;
[7000]
type = aor
max_contacts = 1
remove_existing=yes
[7000]
type=auth
auth_type=userpass
password=your_pass
username=7000
[7000]
type = endpoint
transport = transport-udp
context = from-internal
disallow = all
allow = alaw
aors = 7000
auth = 7000
webrtc=no
;;
;; 7001 Webrtc
;;
[7001]
type = aor
max_contacts = 1
remove_existing=yes
[7001]
type=auth
auth_type=userpass
password=your_pass
username=7001
[7001]
type = endpoint
transport = transport-wss ;; important
context = from-internal
disallow = all
allow = alaw
aors = 7001
auth = 7001
dtls_auto_generate_cert=no ;; important
webrtc=yes ;; important
force_rport=yes ;; important
direct_media=yes ;; important
Passo 4
Edite o arquivo rtp.conf
nano /etc/asterisk/rtp.conf
Ajuste o conteúdo
[general]
rtpstart=10000
rtpend=10099
icesupport=yes ;; important
strictrtp=no ;; important
stunaddr=stun.l.google.com:19302 ;; important
Passo 5
- Reinicie o Asterisk
- Acesse o endereço do servidor pelo browser para verificar se o certificado é válido
- https://IP_ASTERISK:8089/ws
Passo 6
Instalando o Codec_opus
$ apt-get install curl -y
- Acesse o link: http://downloads.digium.com/pub/telephony/codec_opus/ e escolha a versão para o seu sistema operacional
- Baixe o arquivo correspondente
$ cd /usr/local/src
$ wget http://downloads.digium.com/pub/telephony/codec_opus/asterisk-16.0/x86-64/codec_opus-16.0_1.3.0-x86_64.tar.gz
Extraia o arquivo baixado
$ tar -zxvf codec_opus-16.0_1.3.0-x86_64.tar.gz
$ cd codec_opus-16.0_1.3.0-x86_64
Copie o codec para a pasta de modulos
$ cp -av codec_opus.so /usr/lib/asterisk/modules/
Copie a licença para a pasta de documentações
$ cp -av codec_opus_config-en_US.xml /var/lib/asterisk/documentation/thirdparty
Reinicie o Asterisk
$ service asterisk restart
ou
$ docker restart asterisk
Verifique se o codec foi instalado corretamente
$ rasterisk
$ module show like opus
Deve aparecer uma linha contendo informações sobre o codec
de0a0151a673*CLI> module show like opus
Module Description Use Count Status Support Level
codec_opus.so OPUS Coder/Decoder 0 Running extended
Arquivo codecs.conf
Mova o arquivo codecs.conf original para um snapshot
$ cd /etc/asterisk
$ mv codecs.conf codecs.conf.snap
Crie o novo arquivo codecs.conf
$ nano codecs.conf
Insira o conteúdo abaixo
[speex]
quality => 3
complexity => 2
enhancement => true
vad => true
vbr => true
abr => 0
vbr_quality => 4
dtx => false
preprocess => false
pp_vad => false
pp_agc => false
pp_agc_level => 8000
pp_denoise => false
pp_dereverb => false
pp_dereverb_decay => 0.4
pp_dereverb_level => 0.3
[plc]
genericplc => true
genericplc_on_equal_codecs => false
[silk8]
type=silk
samprate=8000
fec=true
packetloss_percentage=10
maxbitrate=10000
[silk12]
type=silk
samprate=12000
maxbitrate=12000
fec=true
packetloss_percentage=10;
[silk16]
type=silk
samprate=16000
maxbitrate=20000
fec=true
packetloss_percentage=10;
[silk24]
type=silk
samprate=24000
maxbitrate=30000
fec=true
packetloss_percentage=10;
Passo 7
- Abra o softfone WebRTC
- Abra a aba ExpertMode
- Marque apenas as opções
- Disable Video: True
- Enable RTCWeb Breaker: False
- WebSocket Server URL: wss://IP_ASTERISK:8089/ws
- SIP outbound Proxy URL: Deixar em branco
- ICE Servers: [{url:'stun:stun.l.google.com:19302'}]
- Max bandwidth (kbps): Deixar em branco
- Disable 3GPP Early IMS[7]:
- Disable debug messages[8]:
- Cache the media stream[9]:
- Salve os ddos
- Marque apenas as opções
- Abra as configurações de registro do Softfone
- Configure as opções
- Display Name: 1001
- Private Identity*: 1001
- Public Identity*: sip:1001@IP_ASTERISK
- Password: PASS_SIP
- Realm*: asterisk.org
- Faça o Login
- Configure as opções
Erro ao efetuar o login: certifique-se que realizou o acesso ao servidor através do browser como descrito no # Passo 3
Lets Encrypt
$ apt install certbot python-certbot-apache
$ certbot --apache
$ certbot certonly --apache
$ certbot renew --dry-run
$ cd /etc/letsencrypt/live
$ ls