Ligação por senha no Elastix

722 views
Skip to first unread message

Fagner Silva

unread,
Sep 20, 2013, 4:02:02 PM9/20/13
to elasti...@googlegroups.com
Pessoal,

alguém já implementou Ligação por senha no Elastix?

ganhar dinheiro no faceUmas das solicitações que já recebi de clientes era poder controlar a saída pela rota com as operadoras através de senhas, sendo definido as senhas para cada usuário (ramal): profissional e pessoal.ganhar dinheiro no face

Fagner Silva

unread,
Sep 21, 2013, 10:31:31 AM9/21/13
to elasti...@googlegroups.com
Alguém já seguiu esse post?


Umas das solicitações que já recebi de clientes era poder controlar a saida pela rota com as operadoras através de senhas, sendo definido duas senhas para cada usuário: profissional e pessoal. Existem várias formas de se fazer isso, formas mais e menos elaboradas. Eu vou mostrar aqui uma forma bastante simples usando AstDB. Esse tipo de funcionalidade dá apenas uma idéia do poder que Asterisk possui com seu extensions.conf. Basicamente, toda a configuração para que funcione essa funcionalidade é feita nesse arquivo. Para quem já trabalhou com PABX proprietário, especificamente, Leucotron, essa funcionalidade é equivalente ao Sentinela, com a diferença de não custar uma pequena fortuna, como aliais e quase tudo relacionado a PABX proprietário: Vamos ao que interessa: Em nosso extensions.conf, vamos definir um context para que o usuário possa definir uma senha, sem precisar da intervenção do Administrador. Ficaria assim nosso context, cada linha segue de uma explicação. A exigencia seria que o usuário discasse uma senha seguido de seu ramal : [senha] exten => _*55XXXXXXXX,1,NoCDR() Para nao gerar bilhetes exten => _*55XXXXXXXX,2,Set(senha=${DB(pass/${EXTEN:3:4})}); Associa o valor 'senha' a familia pass e chave 'ramal' exten => _*55XXXXXXXX,3,GoToIf($["${senha}" = ""]?5:4) Verifica se o valor da'senha' nao seja vazio,caso esteja, aplica hangup exten => _*55XXXXXXXX,4,Hangup Hangup exten => _*55XXXXXXXX,5,Set(DB(pass/${EXTEN:3:4})=${EXTEN:7:11}) Associa à 'senha' o valor discado em XXXX,entre o 4ª e 7ª digitos, eliminando o codigo *55 e associa os ultimos 4 digitos ao valor ramal exten => _*55XXXXXXXX,6,Wait(2) Aguarda 2 segundos exten => _*55XXXXXXXX,7,Playback(beep) ;## Toca um bip exten => _*55XXXXXXXX,8,Playback(beep) Toca um bip exten =&g t; _*55XXXXXXXX,9,Playback(beep) Toca um bip exten => _*55XXXXXXXX,10,Hangup ;## Hangup OK. Com isso já podemos cadastrar as senhas que ficarão armazenadas no AstDB. Vamos agora definir um context para usar a senha nas discagem de números externos: O nome do context é irrelevante,pode ser o que você quiser. exten => _*56XXXX,1,Noop ;não faz nada exten => _*56XXXX,2,Set(CHANNEL(language)=pt_BR) Seta o Channel com pt_BR exten => _*56XXXX,3,Set(var=${DB(pass/${EXTEN:3})}) Associa o valor discado a uma variável que estou chamando de var. É preciso entender a dinâmica do AstDB para poder compreender mais facilmente o que ocorre nessas linhas. AstDB trabalha com a estrutura (family/key)=value Em nosso caso, var está sendo associado a estrutura (family/key), ou seja, ele vai representar nossa senha. exten => _*56XXXX,4,Set(cadp=${DB_EXISTS(cadepwd/${EXTEN:3})}) ; Aqui usamos um recurso do AstDB em que um valor é testado para verificar sua existencia, caso a senha digitada corresponda a um valor previamente guardado no AstDB, iremos para o próximo passo. exten => _*56XXXX,5,GoToIf($["${cadp}" = "1"]?6:7) DB_EXISTS retorna 1 se verdadeiro e 0 se falso. Ou seja, se verdadeiro, se a senha corresponde a um valor previamente armazenado, iremos para a prioridade 6, se não, iremos para prioridade 7. exten => _*56XXXX,6,DISA(no-password,Tarifador) Na prioridade 6 temos a função DISA, que aqui não fará nada a mais que disponibilizar tom de discagem para aqueles cuja a senha foi aceita. exten => _*56XXXX,7,Playback(no-rights) Caso a senha discada não tenha sido aceita e o usuário foi enviado a prioridade 7, ele ouvirá a mensagem "Voce não tem privilegio para acesso a rota sainte". exten => _*56XXXX,8,Hangup É isso ai, implementação muito simples, alguns dizem até que AstDB é gambiarra, mas funciona e para quem ainda não está habituado com MySQL, é uma boa opção.ganhar dinheiro no face
Umas das solicitações que já recebi de clientes era poder controlar a saida pela rota com as operadoras através de senhas, sendo definido duas senhas para cada usuário: profissional e pessoal. Existem várias formas de se fazer isso, formas mais e menos elaboradas. Eu vou mostrar aqui uma forma bastante simples usando AstDB. Esse tipo de funcionalidade dá apenas uma idéia do poder que Asterisk possui com seu extensions.conf. Basicamente, toda a configuração para que funcione essa funcionalidade é feita nesse arquivo. Para quem já trabalhou com PABX proprietário, especificamente, Leucotron, essa funcionalidade é equivalente ao Sentinela, com a diferença de não custar uma pequena fortuna, como aliais e quase tudo relacionado a PABX proprietário: Vamos ao que interessa: Em nosso extensions.conf, vamos definir um context para que o usuário possa definir uma senha, sem precisar da intervenção do Administrador. Ficaria assim nosso context, cada linha segue de uma explicação. A exigencia seria que o usuário discasse uma senha seguido de seu ramal : [senha] exten => _*55XXXXXXXX,1,NoCDR() Para nao gerar bilhetes exten => _*55XXXXXXXX,2,Set(senha=${DB(pass/${EXTEN:3:4})}); Associa o valor 'senha' a familia pass e chave 'ramal' exten => _*55XXXXXXXX,3,GoToIf($["${senha}" = ""]?5:4) Verifica se o valor da'senha' nao seja vazio,caso esteja, aplica hangup exten => _*55XXXXXXXX,4,Hangup Hangup exten => _*55XXXXXXXX,5,Set(DB(pass/${EXTEN:3:4})=${EXTEN:7:11}) Associa à 'senha' o valor discado em XXXX,entre o 4ª e 7ª digitos, eliminando o codigo *55 e associa os ultimos 4 digitos ao valor ramal exten => _*55XXXXXXXX,6,Wait(2) Aguarda 2 segundos exten => _*55XXXXXXXX,7,Playback(beep) ;## Toca um bip exten => _*55XXXXXXXX,8,Playback(beep) Toca um bip exten =&g t; _*55XXXXXXXX,9,Playback(beep) Toca um bip exten => _*55XXXXXXXX,10,Hangup ;## Hangup OK. Com isso já podemos cadastrar as senhas que ficarão armazenadas no AstDB. Vamos agora definir um context para usar a senha nas discagem de números externos: O nome do context é irrelevante,pode ser o que você quiser. exten => _*56XXXX,1,Noop ;não faz nada exten => _*56XXXX,2,Set(CHANNEL(language)=pt_BR) Seta o Channel com pt_BR exten => _*56XXXX,3,Set(var=${DB(pass/${EXTEN:3})}) Associa o valor discado a uma variável que estou chamando de var. É preciso entender a dinâmica do AstDB para poder compreender mais facilmente o que ocorre nessas linhas. AstDB trabalha com a estrutura (family/key)=value Em nosso caso, var está sendo associado a estrutura (family/key), ou seja, ele vai representar nossa senha. exten => _*56XXXX,4,Set(cadp=${DB_EXISTS(cadepwd/${EXTEN:3})}) ; Aqui usamos um recurso do AstDB em que um valor é testado para verificar sua existencia, caso a senha digitada corresponda a um valor previamente guardado no AstDB, iremos para o próximo passo. exten => _*56XXXX,5,GoToIf($["${cadp}" = "1"]?6:7) DB_EXISTS retorna 1 se verdadeiro e 0 se falso. Ou seja, se verdadeiro, se a senha corresponde a um valor previamente armazenado, iremos para a prioridade 6, se não, iremos para prioridade 7. exten => _*56XXXX,6,DISA(no-password,Tarifador) Na prioridade 6 temos a função DISA, que aqui não fará nada a mais que disponibilizar tom de discagem para aqueles cuja a senha foi aceita. exten => _*56XXXX,7,Playback(no-rights) Caso a senha discada não tenha sido aceita e o usuário foi enviado a prioridade 7, ele ouvirá a mensagem "Voce não tem privilegio para acesso a rota sainte". exten => _*56XXXX,8,Hangup É isso ai, implementação muito simples, alguns dizem até que AstDB é gambiarra, mas funciona e para quem ainda não está habituado com MySQL, é uma boa opção.ganhar dinheiro no face

Elton Alex

unread,
Sep 23, 2013, 12:00:35 PM9/23/13
to elasti...@googlegroups.com
boa tarde

basta habilitar o pinsets, se entendei corretamente

att

Elton Alex


--
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "ElastixBrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para elastixbrasi...@googlegroups.com.
Para postar neste grupo, envie um e-mail para elasti...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/elastixbrasil.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--

Fagner Silva

unread,
Sep 23, 2013, 1:39:13 PM9/23/13
to elasti...@googlegroups.com
Valeu Elton, mas não seria isso.

Preciso que cada ramal tenha uma senha para efetuar ligação.

Reply all
Reply to author
Forward
0 new messages