<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<STYLE type=text/css>DIV {
        MARGIN: 0px
}
</STYLE>
<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>O AGI pode ser bem mais complexo. Segue abaixo um
exemplo de um AGI que consulta banco de dados e valida
senhas.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>Ainda tem outros AGIs que alteram a senha por
exemplo.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>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.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>Se tiver duvidas é só falar.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>Conteudo do extensions:</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>[teleponto]<BR>exten =>
1000,1,NoOp();Answer<BR>exten => 1000,2,Wait(1)<BR>exten =>
1000,3,NoOp()<BR>exten =>
1000,4,Read(matricula|/mmq/sounds/matricula|4||1|5)<BR>exten =>
1000,5,AGI(WhoIsMatricula.php|${matricula})<BR>exten =>
1000,6,Hangup</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>exten =>
1001,1,Read(senha|/mmq/sounds/senha|4||1|5)<BR>exten =>
1001,2,GotoIf($[${senhadb} =
${senha}])?teleponto,1001,5:teleponto,1001,3)<BR>exten =>
1001,3,Playback(/mmq/sounds/senha_nao_confere)<BR>exten =>
1001,4,Hangup<BR>exten =>
1001,5,AGI(RegistraPonto.php|${matricula}|${datahora})<BR>exten =>
1001,6,NoOp()</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>exten => 1001,7,Hangup</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>exten =>
1002,1,Playback(/mmq/sounds/voce_acessou_o_teleponto_pela_primeira_vez)<BR>exten
=> 1002,2,Read(senha|/mmq/sounds/digite_sua_nova_senha|4||1|5)<BR>exten =>
1002,3,Read(senha2|/mmq/sounds/redigite_sua_nova_senha|4||1|5)<BR>exten =>
1002,4,GotoIf($[${senha} =
${senha2}]?teleponto,1002,7:teleponto,1002,5)<BR>exten =>
1002,5,Playback(/mmq/sounds/senha_nao_confere)<BR>exten =>
1002,6,Goto(teleponto,1002,2)<BR>exten =>
1002,7,AGI(AlteraSenha.php|${matricula}|${senha})<BR>exten =>
1002,8,NoOp();Playback(error-number)<BR>exten => 1002,9,Hangup<BR>exten =>
1002,10,Playback(/mmq/sounds/senha_alterada_com_sucesso)<BR>exten =>
1002,11,Hangup<BR></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>Conteudo do AGI PHP que valida a
matricula</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN
class=625082510-02012008>#!/usr/bin/php5
-q<BR><?php<BR>set_time_limit(25);<BR>ob_implicit_flush(false);<BR>error_reporting(0);<BR>$stdin
= fopen( 'php://stdin', 'r' );<BR>if
(!defined('STDIN')){<BR>
define('STDIN',fopen('php://stdin','r'));}<BR>if
(!defined('STDOUT')){<BR>
define('STDOUT',fopen('php://stdout','r'));}<BR>if
(!defined('STDERR')){<BR>
define('STERR',fopen('php://stderr','r'));}<BR>while(!feof($stdin)){<BR>
$temp=trim(fgets(STDIN,4096));<BR> if
(($temp=="") || ($temp="\n"))
{<BR>
break; }<BR>
$s=split(":",$temp);<BR>
$nome=str_subst("agi_","",$s[0]);<BR>
$agi[$nome]=trim($s[1]);}<BR>foreach($agi as
$chave=>$valor){<BR>
fwrite(STDERR,"--$chave=$valor\n");<BR>
fflush(STDERR);}<BR>$matricula=$argv[1]; //Recebe argumentos do dialplan<BR>if
(!$matricula == "") {<BR> $conn =
mssql_connect('SERVIDORSQL', 'usuario',
'senha');<BR>
mssql_select_db("teleponto");<BR>
$query = mssql_query("select Senha,convert(varchar,getdate(),120) as Data from
CadMatricula where classe = 1 and matricula =
$matricula",$conn);<BR> $senha =
mssql_result($query,0,0);<BR> $data =
mssql_result($query,0,1);<BR>
mssql_close($conn);<BR>
fwrite(STDOUT," exec set matricula=$matricula \n"); //Seta $idCliente no
dialplan<BR>
fflush(STDOUT);<BR> fwrite(STDOUT,"
exec set senhadb=$senha \n");<BR>
fflush(STDOUT);<BR> fwrite(STDOUT,"
exec set datahora=\"$data\" \n");<BR>
fflush(STDOUT);<BR> switch($senha)
{<BR>
case
"":<BR>
fwrite(STDOUT," exec playback /mmq/sounds/matricula_inexistente
\n");<BR>
fwrite(STDOUT," exec goto teleponto|1000|6
\n");<BR>
fflush(STDOUT);<BR>
break;<BR>
case
"1":<BR>
fwrite(STDOUT," exec goto teleponto|1002|1
\n");<BR>
fflush(STDOUT);<BR>
break;<BR>
default:<BR>
fwrite(STDOUT," exec goto teleponto|1001|1
\n");<BR>
fflush(STDOUT);<BR>
break;<BR> }<BR>}else
{<BR> fwrite(STDOUT," exec goto
teleponto|1000|6 \n");<BR>
fflush(STDOUT);<BR>}<BR>?><BR></SPAN></FONT></DIV><BR>
<DIV class=OutlookMessageHeader lang=pt-br dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>De:</B>
asteriskbrasil-bounces@listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces@listas.asteriskbrasil.org] <B>Em nome de </B>Eric
Anderson<BR><B>Enviada em:</B> segunda-feira, 31 de dezembro de 2007
09:16<BR><B>Para:</B>
asteriskbrasil@listas.asteriskbrasil.org<BR><B>Assunto:</B> [Spam] Re:
[AsteriskBrasil] RES: [Spam] Senha Ligacao<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>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?</FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>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.</FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>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?</FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>Um abraço!</FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>
<TABLE>
<TBODY>
<TR>
<TD><FONT face="Comic Sans MS" color=#000000 size=1><B>Eric Anderson
Martins Miranda</B><BR><A
href="mailto:eric@vianet-express.com.br">eric@vianet-express.com.br</A><BR>Central
de T.I.<BR>Tel. - (11) 6643-2814<BR>CELULAR - (11) 9430-6025<BR>PABX -
(11) 6643-2800<BR>MSN - eric@vianet-express.com.br<BR>Home Page - <A
href="http://www.vianet-express.com.br">http://www.vianet-express.com.br</A>
</FONT><BR></TD>
<TD vAlign=top><IMG src="cid:625082510@02012008-37B1"><BR>
<TR>
<TD colSpan=2>
<MARQUEE><FONT face=webdings color=green size=+2>P</FONT> <FONT
face="Comic Sans MS" color=green size=1><AB>Antes de imprimir pense em sua
responsabilidade e compromisso com o MEIO
AMBIENTE!</B></FONT></MARQUEE></TD></TR></TBODY></TABLE></FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT> </DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=ricardo@mastermaq.com.br
href="mailto:ricardo@mastermaq.com.br">Ricardo Aziz Barbosa</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=carvalho.jorgec@gmail.com
href="mailto:carvalho.jorgec@gmail.com">'Jorge Miguel de Carvalho'</A> ; <A
title=asteriskbrasil@listas.asteriskbrasil.org
href="mailto:asteriskbrasil@listas.asteriskbrasil.org">asteriskbrasil@listas.asteriskbrasil.org</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, December 27, 2007 4:20
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> [AsteriskBrasil] RES: [Spam]
Senha Ligacao</DIV>
<DIV><BR></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>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.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>ficaria algo mais ou menos assim:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten =>
1000,1,Read(senha|Digite_sua_senha|6||3|3)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten =>
1000,2,AGI(ValidaSenha.php|${senha})</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten => 1000,3,HangUp</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten =>
1000,4,Read(numero|digite_o_numero_do_telefone|10||10|3)</FONT></SPAN></DIV></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten => 1000,5,Dial(ZAP ou SIP ou
IAX/numero,30,Ttr)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>exten => 1000,6,HangUp</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>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.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>Se precisar de ajudar para desenvolver o AGI é só
falar.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=086381318-27122007><FONT face=Arial
color=#0000ff size=2>
<DIV align=left>
<TABLE cellSpacing=0 cellPadding=0 align=left border=0>
<TBODY>
<TR>
<TD vAlign=top rowSpan=8><IMG height=123
src="http://www.mastermaq.com.br/imagens/curva_assinatura.jpg"
width=31></TD>
<TD><IMG height=27
src="http://www.mastermaq.com.br/imagens/logo_mmq.jpg" width=136></TD></TR>
<TR>
<TD height=25><FONT face=arial size=2><B>Ricardo Aziz
Barbosa</B></FONT></TD></TR>
<TR>
<TD width=1 bgColor=#a81e28 height=1><IMG height=1
src="http://www.mastermaq.com.br/imagens/ghost.gif" width=1></TD></TR>
<TR>
<TD><FONT face=arial size=2>Gerente de TI<BR><A
style="COLOR: #000000; TEXT-DECORATION: none"
href="mailto:ricardo@mastermaq.com.br">ricardo@mastermaq.com.br</A><BR>Tel.:
(31) 3519-7202 / 8845-8269<BR>Visite: <A
style="COLOR: #000000; TEXT-DECORATION: none"
href="http://www.mastermaq.com.br/" target=_blank>www.mastermaq.com.br
</A></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left><FONT face=Arial size=2></FONT> </DIV>
<DIV align=left> </DIV></FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=pt-br dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>De:</B>
asteriskbrasil-bounces@listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces@listas.asteriskbrasil.org] <B>Em nome de
</B>Jorge Miguel de Carvalho<BR><B>Enviada em:</B> quinta-feira, 27 de
dezembro de 2007 14:58<BR><B>Para:</B>
asteriskbrasil@listas.asteriskbrasil.org<BR><B>Assunto:</B> [Spam]
[AsteriskBrasil] Senha Ligacao<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT face=Arial size=2>Pessoal, boa tarde.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Gostaria de saber se alguem tem alguma dica sobre
autenticação no asterisk.</FONT></DIV>
<DIV><FONT face=Arial size=2>Eu gostaria que quando os meus usuários fossem
fazer uma ligação externa eles tivessemm que digitar um codigo e uma
senha.</FONT></DIV>
<DIV><FONT face=Arial size=2>Se alguém tiver alguma dica poderia me ajudar
muito.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Att.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<P>
<HR>
<P></P>_______________________________________________<BR>Compre uma camiseta
da AsteriskBrasil.org!<BR>http://www.voipmania.com.br<BR><BR>Acesse o canal
IRC de discussão sobre Asterisk em Português Brasileiro na rede Freenode.net:
#asterisk-br<BR>_______________________________________________<BR>Lista de
discussões
AsteriskBrasil.org<BR>AsteriskBrasil@listas.asteriskbrasil.org<BR>http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</BLOCKQUOTE></BODY></HTML>