[AsteriskBrasil] DICA doida para asterisk com IP Dinâmico, funciona

suporte em apexmic.com.br suporte em apexmic.com.br
Quinta Novembro 14 09:35:38 BRST 2013


Bom dia a todos da lista,

Eu tenho um servidor asterisk que estou testando num link muito bom, 
infelizmente esse link é ip dinâmico.

Como não posso gastar dinheiro num serviço de Dyn (DNS Dinâmico) e ficar 
todo instante que o link cai ou muda o IP tendo que descobrir o novo ip, 
indo no gerenciador de dominio DNS do meu site e recriando a entrada "A"

Resolvi criar um serviço de informação de IP pelo asterisk. Como o 
asterisk se registra novamente assim que a rede volta, ele ta conectado 
com um novo IP e assim, qualquer um que ligar no numero voip da empresa 
é atendido pela URA que pede o ramal a ser digitado, Em vez de digitar o 
ramal, a pessoa que precisa do novo IP para reconfigurar o softphone 
digita o numero do serviço de informação do IP (é claro que essa 
informação não é pública)

No caso, os usuários que precisam informar o IP aprenderam que ligando 
de qualquer número de telefone para o numero voip do asterisk e 
digitando o ramal 102 (numero sugestivo que dei para este email) o 
asterisk vai informar o IP externo e desligar.

Eu tenho um serviço de callback tb, eu poderia ter usado também o 
callback para informar o IP, mas alguns usuários resolveram usar esse 
recurso de maneira indevida, por isso, devido a politica interna, o 
callback foi temporariamente suspenso.

A dica segue abaixo e pode ser útil para quem esteja na mesma situação 
que eu.


Primeiro criei um novo contexto no asterisk, no caso estou dando o 
numero 102 para esse serviço, pode ser qualquer outro:

exten => 102,1,AGI(FalaIP.sh)
exten => 102,2,Playback(goodbye)
exten => 102,3,HangUp

Abaixo segue a jóia da coroa:  O script AGI abaixo descobre o IP e 
informa duas vezes: Não ta enxuto, mas funciona que é uma maravilha:

#!/bin/bash

# Consume all variables sent by Asterisk
while read VAR && [ -n ${VAR} ] ; do : ; done

# Atende a ligação
echo "ANSWER"
read RESPONSE

# - Preferi usar o wget em vez do curl pq já vem por padrão em muito linux.
# - Quem ta informando o IP externo é o site ipecho.net, como tenho sites
# - na internet, atualmente eu faço essa consulta de um de meus sites
# - numa pagina php que retorna somente o ip tipo xxx.xxx.xxx.xxx sem
# - formatacao alguma

ipexterno=`wget http://ipecho.net/plain -O - -q `
# informa ao log do asterisk que uma consulta foi feita
VERBOSE "O IP Atual eh '$ipexterno'" ""

# Dita as letras I,P para que a pessoa saiba que vem um endereço IP em 
seguida
echo 'SAY ALPHA "IP" ""'

# Dita, numero a numero o ip com ponto. Sem ajuste algum, a velocidade 
ficou ótima!
echo 'SAY ALPHA "'$(echo $ipexterno)'" ""'

# Repete novamente o IP Externo
echo 'SAY ALPHA "IP" ""'
echo 'SAY ALPHA "'$(echo $ipexterno)'" ""'

# Termina o Script
read RESPONSE
exit 0

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20131114/29824856/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil