Difference between revisions of "Digitronco SIP internet - Oi"
Jump to navigation
Jump to search
🔒 As informações inseridas não são armazenadas nem enviadas — o processamento ocorre apenas no seu navegador.
(→AG561) |
(→AG561) |
||
| (15 intermediate revisions by the same user not shown) | |||
| Line 9: | Line 9: | ||
<html> | <html> | ||
| − | <!-- Formulário | + | <!-- Formulário SIP com validação --> |
| − | <div id="Formulario_561_OI"> | + | <div id="Formulario_561_OI" style="background-color:#e6f0ff; padding:20px; border-radius:8px; width:fit-content;"> |
| − | <h3>Insira os dados da conta SIP:</h3> | + | <h3>Insira os dados da conta SIP fornecidos pela operadora:</h3> |
| − | + | <medium style="color:gray; font-style:italic;"> | |
| − | < | ||
🔒 As informações inseridas não são armazenadas nem enviadas — o processamento ocorre apenas no seu navegador. | 🔒 As informações inseridas não são armazenadas nem enviadas — o processamento ocorre apenas no seu navegador. | ||
| − | </ | + | </medium><br><br> |
| + | <div class="campo"> | ||
| + | <label for="campo1"><b>Número chave (10 dígitos):</b></label> | ||
| + | <div class="linha"> | ||
| + | <input type="text" id="campo1" placeholder="5135000100" maxlength="10" minlength="10" /> | ||
| + | <small id="erro1" class="erro">⚠️ Insira um número com 10 dígitos.</small> | ||
| + | </div> | ||
| + | </div> | ||
| − | <label> | + | <div class="campo"> |
| − | + | <label for="campo2"><b>Senha conta SIP:</b></label> | |
| + | <div class="linha"> | ||
| + | <input type="password" id="campo2" placeholder="Digite a senha" /> | ||
| + | <small id="erro2" class="erro">⚠️ A senha não pode estar vazia.</small> | ||
| + | </div> | ||
| + | </div> | ||
| − | <label> | + | <div class="campo"> |
| − | + | <label for="campo3"><b>IP SBC OI:</b></label> | |
| + | <div class="linha"> | ||
| + | <input type="text" id="campo3" placeholder="192.168.0.1" /> | ||
| + | <small id="erro3" class="erro">⚠️ Insira um endereço IP válido.</small> | ||
| + | </div> | ||
| + | </div> | ||
| − | < | + | <button id="botaoGerar" onclick="gerarResposta()">Gerar script CLI</button> |
| − | |||
| − | |||
| − | |||
</div> | </div> | ||
| − | <!-- | + | <!-- Resultado --> |
<div id="resultado" style="margin-top:15px; font-weight:bold; color:#336699;"></div> | <div id="resultado" style="margin-top:15px; font-weight:bold; color:#336699;"></div> | ||
| + | <button id="botaoCopiar" style="display:none; margin-top:10px;" onclick="copiarResposta()">Copiar</button> | ||
| + | |||
| + | <style> | ||
| + | /* Layout vertical com campos compactos */ | ||
| + | .campo { | ||
| + | margin-bottom: 10px; | ||
| + | } | ||
| + | |||
| + | .linha { | ||
| + | display: flex; | ||
| + | align-items: center; | ||
| + | gap: 6px; | ||
| + | flex-wrap: wrap; | ||
| + | } | ||
| + | |||
| + | label { | ||
| + | font-weight: bold; | ||
| + | color: #333; | ||
| + | display: block; | ||
| + | margin-bottom: 4px; | ||
| + | } | ||
| + | |||
| + | input { | ||
| + | padding: 6px; | ||
| + | border: 1px solid #ccc; | ||
| + | border-radius: 6px; | ||
| + | width: 200px; | ||
| + | transition: border-color 0.2s ease; | ||
| + | } | ||
| + | |||
| + | input:focus { | ||
| + | outline: none; | ||
| + | border-color: #007bff; | ||
| + | box-shadow: 0 0 3px rgba(0, 123, 255, 0.4); | ||
| + | } | ||
| + | |||
| + | .erro { | ||
| + | color: red; | ||
| + | display: none; | ||
| + | font-size: 12px; | ||
| + | white-space: nowrap; | ||
| + | } | ||
| + | |||
| + | /* Botões */ | ||
| + | button { | ||
| + | background-color: #007bff; | ||
| + | color: white; | ||
| + | border: none; | ||
| + | border-radius: 6px; | ||
| + | padding: 8px 16px; | ||
| + | font-size: 14px; | ||
| + | cursor: pointer; | ||
| + | box-shadow: 0 2px 4px rgba(0,0,0,0.2); | ||
| + | transition: all 0.2s ease; | ||
| + | } | ||
| + | |||
| + | button:hover { | ||
| + | background-color: #0056b3; | ||
| + | box-shadow: 0 3px 6px rgba(0,0,0,0.3); | ||
| + | transform: translateY(-1px); | ||
| + | } | ||
| + | |||
| + | #botaoCopiar { | ||
| + | background-color: #28a745; | ||
| + | } | ||
| + | |||
| + | #botaoCopiar:hover { | ||
| + | background-color: #1e7e34; | ||
| + | } | ||
| + | </style> | ||
<script> | <script> | ||
| Line 41: | Line 124: | ||
const v3 = document.getElementById("campo3").value.trim(); | const v3 = document.getElementById("campo3").value.trim(); | ||
| − | if (!v1 | + | const regexNumero = /^\d{10}$/; |
| − | document.getElementById("resultado").innerHTML = "⚠️ | + | const regexIP = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/; |
| + | |||
| + | let valido = true; | ||
| + | |||
| + | if (!regexNumero.test(v1)) { | ||
| + | document.getElementById("erro1").style.display = "inline"; | ||
| + | valido = false; | ||
| + | } else { | ||
| + | document.getElementById("erro1").style.display = "none"; | ||
| + | } | ||
| + | |||
| + | if (!v2) { | ||
| + | document.getElementById("erro2").style.display = "inline"; | ||
| + | valido = false; | ||
| + | } else { | ||
| + | document.getElementById("erro2").style.display = "none"; | ||
| + | } | ||
| + | |||
| + | if (!regexIP.test(v3)) { | ||
| + | document.getElementById("erro3").style.display = "inline"; | ||
| + | valido = false; | ||
| + | } else { | ||
| + | document.getElementById("erro3").style.display = "none"; | ||
| + | } | ||
| + | |||
| + | if (!valido) { | ||
| + | document.getElementById("resultado").innerHTML = "⚠️ Corrija os erros acima antes de gerar o script."; | ||
| + | document.getElementById("botaoCopiar").style.display = "none"; | ||
return; | return; | ||
} | } | ||
| − | + | const resposta = | |
| − | const resposta = | + | "config sip peer trunk1 delete<br>" + |
| − | + | "config sip prack yes<br>" + | |
| − | "config sip peer trunk1 delete | + | "config sip session_expires 300<br>" + |
| − | "config sip prack yes | + | "config sip session_minse 90<br>" + |
| − | "config sip session_expires 300 | + | "config sip bindport 5060<br>" + |
| − | "config sip session_minse 90 | + | "config sip peer "+v1+" register yes<br>" + |
| − | "config sip bindport 5060 | + | "config sip peer "+v1+" username "+v1+"<br>" + |
| − | "config sip peer "+v1+" register yes | + | "config sip peer "+v1+" secret "+v2+"<br>" + |
| − | "config sip peer "+v1+" username "+v1+"<br>" + | + | "config sip peer "+v1+" host "+v3+"<br>" + |
| − | "config sip peer "+v1+" secret "+v2+"<br>" + | + | "config sip peer "+v1+" port 5061<br>" + |
| − | "config sip peer "+v1+" host "+v3+"<br>" + | + | "config sip peer "+v1+" contactuser "+v1+"<br>" + |
| − | "config sip peer "+v1+" port 5061 | + | "config sip peer "+v1+" dtmfmode rfc2833<br>" + |
| − | "config sip peer "+v1+" contactuser "+v1+"<br>" + | + | "config sip peer "+v1+" transport tls<br>" + |
| − | "config sip peer "+v1+" dtmfmode rfc2833 | + | "config sip peer "+v1+" codecs alaw<br>" + |
| − | "config sip peer "+v1+" transport tls | + | "config sip peer "+v1+" options_keepalive yes<br>" + |
| − | "config sip peer "+v1+" codecs alaw | + | "config dialplan rule sip_trunk1_default source_peer sip "+v1+"<br>" + |
| − | "config sip peer "+v1+" options_keepalive yes | + | "config dialplan rule sip_trunk1_default destination_peer tdm group1<br>" + |
| − | "config dialplan rule sip_trunk1_default source_peer sip "+v1+"<br>" + | + | "config dialplan rule sip_trunk1_default outgoing_called {:-4}<br>" + |
| − | "config dialplan rule sip_trunk1_default destination_peer tdm group1 | + | "config dialplan rule tdm_group1_default source_peer tdm group1<br>" + |
| − | "config dialplan rule sip_trunk1_default outgoing_called {:-4} | + | "config dialplan rule tdm_group1_default destination_peer sip "+v1+"<br>" + |
| − | "config dialplan rule tdm_group1_default source_peer tdm group1 | + | "config dialplan rule tdm_group1_default outgoing_callerid "+v1+"<br>" + |
| − | "config dialplan rule tdm_group1_default destination_peer sip "+v1+"<br>" + | + | "config save<br>" + |
| − | "config dialplan rule tdm_group1_default outgoing_callerid "+v1+"<br>" + | + | "config apply<br>" + |
| − | "config save | + | "system reboot<br>" + |
| − | "config apply"+ "<br>" + | + | "!"; |
| − | " | ||
| − | |||
| − | |||
document.getElementById("resultado").innerHTML = resposta; | document.getElementById("resultado").innerHTML = resposta; | ||
| + | document.getElementById("botaoCopiar").style.display = "inline-block"; | ||
| + | } | ||
| + | |||
| + | function copiarResposta() { | ||
| + | const texto = document.getElementById("resultado").innerText; | ||
| + | navigator.clipboard.writeText(texto) | ||
| + | .then(() => alert("✅ Script copiado para a área de transferência!")) | ||
| + | .catch(err => alert("❌ Falha ao copiar: " + err)); | ||
} | } | ||
</script> | </script> | ||
| + | |||
</html> | </html> | ||
Latest revision as of 14:42, 16 October 2025
Configurações para a operadora Oi
Acesse o equipamento utilizando a interface CLI, porta 22 SSH. Mais detalhes sobre a conexão podem ser obtidos no manual do equipamento.
AG561
É necessário a versão de firmware 9.2 ou superior.
Insira os dados da conta SIP fornecidos pela operadora:
⚠️ Insira um número com 10 dígitos.
⚠️ A senha não pode estar vazia.
⚠️ Insira um endereço IP válido.
Copie o script e cole na interface CLI.
Outra forma de configurar o AG561 é elaborar o script manualmente seguindo o modelo abaixo:
Através da interface CLI, executar o script abaixo:
Obs. Os campos entre <> devem ser alterados de acordo com os dados de sua conta, a qual a operadora enviou.
config sip peer trunk1 delete
!
config sip prack yes
config sip session_expires 300
config sip session_minse 90
config sip bindport 5060
!
config sip peer <numero_chave> register yes
config sip peer <numero_chave> username <numero_chave>
config sip peer <numero_chave> secret <senha>
config sip peer <numero_chave> host <ip_sbc_oi>
config sip peer <numero_chave> port 5061
config sip peer <numero_chave> contactuser <numero_chave>
config sip peer <numero_chave> dtmfmode rfc2833
config sip peer <numero_chave> transport tls
config sip peer <numero_chave> codecs alaw
config sip peer <numero_chave> options_keepalive yes
!
config dialplan rule sip_trunk1_default source_peer sip <numero_chave>
config dialplan rule sip_trunk1_default destination_peer tdm group1
config dialplan rule sip_trunk1_default outgoing_called {:-4}
!
config dialplan rule tdm_group1_default source_peer tdm group1
config dialplan rule tdm_group1_default destination_peer sip <numero_chave>
config dialplan rule tdm_group1_default outgoing_callerid <numero_chave>
!
config save
config apply
!
system rebootAGOS
É necessário a versão de firmware AGOS 4.58.5 ou superior.
Através da interface CLI, executar o script abaixo:
Obs. Os campos entre <> devem ser alterados de acordo com os dados de sua conta, a qual a operadora enviou.
config sip peer trunk1 delete
!
config sip prack yes
config sip session_expires 300
config sip session_minse 90
config sip bindport 5060
!
config sip peer <numero_chave> register yes
config sip peer <numero_chave> username <numero_chave>
config sip peer <numero_chave> secret <senha>
config sip peer <numero_chave> host <ip_sbc_oi>
config sip peer <numero_chave> port 5061
config sip peer <numero_chave> contactuser <numero_chave>
config sip peer <numero_chave> dtmfmode rfc2833
config sip peer <numero_chave> transport tls
config sip peer <numero_chave> codecs alaw
config sip peer <numero_chave> options_keepalive yes
!
config dialplan rule sip_trunk1_default source_peer sip <numero_chave>
config dialplan rule sip_trunk1_default outgoing_called {:-4}
!
config dialplan rule tdm_group1_default destination_peers 1 peer sip <numero_chave>
config dialplan rule tdm_group1_default outgoing_callerid <numero_chave>
!
config save
config apply
!
system reboot