[AsteriskBrasil] RES: [Spam] Re: RES: [Spam] Senha Ligacao

Ricardo Aziz Barbosa ricardo em mastermaq.com.br
Quarta Janeiro 2 08:33:52 BRST 2008


O AGI pode ser bem mais complexo. Segue abaixo um exemplo de um AGI que
consulta banco de dados e valida senhas.
 
Este caso que coloquei abaixo é um sistema de regitro de ponto pelo
asterisk. Veja que no extensions eu peço a matricula, logo após em submeto a
matricula ao AGI que me retorna se a matricula existe e a senha.
Logo abaixo eu peço a senha e confiro com o que o AGI me retornou, se tudo
estiver correto eu chamo outro AGI que insere o registro no banco de dados.
 
Ainda tem outros AGIs que alteram a senha por exemplo.
 
O AGI então é um php como qualquer outro sem a parte html, com ele é
possivel acessar banco de dados, fazer testes logicos bem mais complexos que
no extensions e de forma mais facil.
 
Se tiver duvidas é só falar.
 
Conteudo do extensions:
[teleponto]
exten => 1000,1,NoOp();Answer
exten => 1000,2,Wait(1)
exten => 1000,3,NoOp()
exten => 1000,4,Read(matricula|/mmq/sounds/matricula|4||1|5)
exten => 1000,5,AGI(WhoIsMatricula.php|${matricula})
exten => 1000,6,Hangup
 
exten => 1001,1,Read(senha|/mmq/sounds/senha|4||1|5)
exten => 1001,2,GotoIf($[${senhadb} =
${senha}])?teleponto,1001,5:teleponto,1001,3)
exten => 1001,3,Playback(/mmq/sounds/senha_nao_confere)
exten => 1001,4,Hangup
exten => 1001,5,AGI(RegistraPonto.php|${matricula}|${datahora})
exten => 1001,6,NoOp()
exten => 1001,7,Hangup
 
exten =>
1002,1,Playback(/mmq/sounds/voce_acessou_o_teleponto_pela_primeira_vez)
exten => 1002,2,Read(senha|/mmq/sounds/digite_sua_nova_senha|4||1|5)
exten => 1002,3,Read(senha2|/mmq/sounds/redigite_sua_nova_senha|4||1|5)
exten => 1002,4,GotoIf($[${senha} =
${senha2}]?teleponto,1002,7:teleponto,1002,5)
exten => 1002,5,Playback(/mmq/sounds/senha_nao_confere)
exten => 1002,6,Goto(teleponto,1002,2)
exten => 1002,7,AGI(AlteraSenha.php|${matricula}|${senha})
exten => 1002,8,NoOp();Playback(error-number)
exten => 1002,9,Hangup
exten => 1002,10,Playback(/mmq/sounds/senha_alterada_com_sucesso)
exten => 1002,11,Hangup

 
 
 
Conteudo do AGI PHP que valida a matricula
#!/usr/bin/php5 -q
<?php
set_time_limit(25);
ob_implicit_flush(false);
error_reporting(0);
$stdin = fopen( 'php://stdin', 'r' );
if (!defined('STDIN')){
        define('STDIN',fopen('php://stdin','r'));}
if (!defined('STDOUT')){
        define('STDOUT',fopen('php://stdout','r'));}
if (!defined('STDERR')){
        define('STERR',fopen('php://stderr','r'));}
while(!feof($stdin)){
        $temp=trim(fgets(STDIN,4096));
        if (($temp=="") || ($temp="\n"))        {
                break;  }
        $s=split(":",$temp);
        $nome=str_subst("agi_","",$s[0]);
        $agi[$nome]=trim($s[1]);}
foreach($agi as $chave=>$valor){
        fwrite(STDERR,"--$chave=$valor\n");
        fflush(STDERR);}
$matricula=$argv[1]; //Recebe argumentos do dialplan
if (!$matricula == "") {
        $conn = mssql_connect('SERVIDORSQL', 'usuario', 'senha');
        mssql_select_db("teleponto");
        $query = mssql_query("select Senha,convert(varchar,getdate(),120) as
Data from CadMatricula where classe = 1 and matricula = $matricula",$conn);
        $senha = mssql_result($query,0,0);
        $data = mssql_result($query,0,1);
        mssql_close($conn);
        fwrite(STDOUT," exec set matricula=$matricula \n"); //Seta
$idCliente no dialplan
        fflush(STDOUT);
        fwrite(STDOUT," exec set senhadb=$senha \n");
        fflush(STDOUT);
        fwrite(STDOUT," exec set datahora=\"$data\" \n");
        fflush(STDOUT);
        switch($senha) {
                case "":
                        fwrite(STDOUT," exec playback
/mmq/sounds/matricula_inexistente \n");
                        fwrite(STDOUT," exec goto teleponto|1000|6 \n");
                        fflush(STDOUT);
                        break;
                case "1":
                        fwrite(STDOUT," exec goto teleponto|1002|1 \n");
                        fflush(STDOUT);
                        break;
                default:
                        fwrite(STDOUT," exec goto teleponto|1001|1 \n");
                        fflush(STDOUT);
                        break;
        }
}else {
        fwrite(STDOUT," exec goto teleponto|1000|6 \n");
        fflush(STDOUT);
}
?>


  _____  

De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Eric
Anderson
Enviada em: segunda-feira, 31 de dezembro de 2007 09:16
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [Spam] Re: [AsteriskBrasil] RES: [Spam] Senha Ligacao


Opa, ainda num fiz o meu primeiro AGI de "Hello World!" mas pelo que eu
entendi, o AGI só retorna valores que vc pode usar no contexto? Certo ou
falei bobagem?
 
No contexto que vc criou ai embaixo, o ValidaSenha.php consulta o BD e o que
ele faz se a senha validar ou não validar.
 
Depois do AGI() tem um HangUp mesmo ou falta mais lógica nesse exemplo? Fica
tipo "if AGI RETORNAR SIM Dial, else HangUP" ou é algo mais elegante?
 
Um abraço!
 
Eric Anderson Martins Miranda
eric em vianet-express.com.br
Central de T.I.
Tel. - (11) 6643-2814
CELULAR - (11) 9430-6025
PABX - (11) 6643-2800
MSN - eric em vianet-express.com.br
Home Page - http://www.vianet-express.com.br 
	


P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO
AMBIENTE!	
 
 

----- Original Message ----- 
From: Ricardo Aziz Barbosa <mailto:ricardo em mastermaq.com.br>  
To: 'Jorge Miguel de Carvalho' <mailto:carvalho.jorgec em gmail.com>  ;
asteriskbrasil em listas.asteriskbrasil.org 
Sent: Thursday, December 27, 2007 4:20 PM
Subject: [AsteriskBrasil] RES: [Spam] Senha Ligacao

Não sei se o asterisk tem algum recurso para este fim. Imagino fazer isto
usando um banco de dados com usuários e senha e um AGI que faria o acesso a
este banco para validar os dados.
 
ficaria algo mais ou menos assim:
 
exten => 1000,1,Read(senha|Digite_sua_senha|6||3|3)
exten => 1000,2,AGI(ValidaSenha.php|${senha})
exten => 1000,3,HangUp

exten => 1000,4,Read(numero|digite_o_numero_do_telefone|10||10|3)
exten => 1000,5,Dial(ZAP ou SIP ou IAX/numero,30,Ttr)
exten => 1000,6,HangUp
 
Ai basta você desenvolver o AGI para consultar o banco de dados e verificar
se o usuário é valido ou não. Ainda é possível pedir o numero do telefone
antes de executar o AGI, ai você pode mandar tudo para o AGI e através do
banco de dados validar inclusive permissão de discagem.
 
Se precisar de ajudar para desenvolver o AGI é só falar.
 

  <http://www.mastermaq.com.br/imagens/curva_assinatura.jpg>
<http://www.mastermaq.com.br/imagens/logo_mmq.jpg> 	
Ricardo Aziz Barbosa	
  <http://www.mastermaq.com.br/imagens/ghost.gif> 	
Gerente de TI
ricardo em mastermaq.com.br
Tel.: (31) 3519-7202 / 8845-8269
Visite: www.mastermaq.com.br  <http://www.mastermaq.com.br/> 	
 
 
 
 
 
 
 
 
 

  _____  

De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Jorge
Miguel de Carvalho
Enviada em: quinta-feira, 27 de dezembro de 2007 14:58
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [Spam] [AsteriskBrasil] Senha Ligacao


Pessoal, boa tarde.
 
Gostaria de saber se alguem tem alguma dica sobre autenticação no asterisk.
Eu gostaria que quando os meus usuários fossem fazer uma ligação externa
eles tivessemm que digitar um codigo e uma senha.
Se alguém tiver alguma dica poderia me ajudar muito.
 
Att.
 



  _____  




_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br

Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na
rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080102/14181c9f/attachment-0001.htm 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : não disponível
Tipo  : image/jpeg
Tam   : 3532 bytes
Descr.: não disponível
Url   : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080102/14181c9f/attachment-0003.jpeg 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : não disponível
Tipo  : image/jpeg
Tam   : 465 bytes
Descr.: não disponível
Url   : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080102/14181c9f/attachment-0004.jpeg 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : não disponível
Tipo  : image/jpeg
Tam   : 2335 bytes
Descr.: não disponível
Url   : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080102/14181c9f/attachment-0005.jpeg 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : não disponível
Tipo  : image/gif
Tam   : 43 bytes
Descr.: não disponível
Url   : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080102/14181c9f/attachment-0001.gif 


More information about the AsteriskBrasil mailing list