<font color='black' size='2' face='arial'>
<div><FONT face="Arial, Helvetica, sans-serif">Então blz, vamos lá...</FONT></div>


<div>&nbsp;</div>


<div>Para fazer a integração asterisk-java é necessário 2 coisas... um dialplan para chamar o agi e o próprio agi, abaixo coloquei um dialplan chamando uma classe java, veja:</div>


<div>&nbsp;</div>


<div><STRONG>Dialplan:</STRONG></div>


<div>exten =&gt; 001,n,NoOp(*** Chamando AGI ***)<br>
exten =&gt; 001,n,Agi(agi://localhost/validacao.agi?op=validarEntradaSemAsterisco)<br>
exten =&gt; 001,n,NoOp(*** Valor Valido? ${VALORVALIDO} ***)</div>


<div><br>
&nbsp;</div>


<div><STRONG>Java:</STRONG></div>


<div><STRONG></STRONG>&nbsp;</div>


<div>import org.apache.log4j.Logger;<br>
import org.asteriskjava.fastagi.AgiChannel;<br>
import org.asteriskjava.fastagi.AgiException;<br>
import org.asteriskjava.fastagi.AgiRequest;<br>
import org.asteriskjava.fastagi.BaseAgiScript;</div>


<div><STRONG></STRONG>&nbsp;</div>


<div>/**<br>
&nbsp;*<br>
&nbsp;* @author bruno.antognolli<br>
&nbsp;*/</div>


<div><br>
<STRONG>public class Validacao extends BaseAgiScript {</STRONG></div>


<div>&nbsp;&nbsp;&nbsp; private AgiChannel channel = null;<br>
&nbsp;&nbsp;&nbsp; private org.apache.log4j.Logger log = Logger.getLogger(Validacao.class);</div>


<div>&nbsp;&nbsp;&nbsp; public void service(AgiRequest request, AgiChannel channel) throws AgiException {</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("Executando Service da Classe: " + this.getClass().getSimpleName());</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Define o objeto channel como atributo de classe<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.channel = channel;</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Recupera a operação solicitada no canal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;String op = request.getParameter("op");</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Executa validarEntradaSemAsterisco<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (op.equalsIgnoreCase("validarEntradaSemAsterisco")) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; validarEntradaSemAsterisco();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (op == null || op.equalsIgnoreCase("")) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new AgiException("O método informado não existe!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>


<div>&nbsp;</div>


<div>&nbsp;</div>


<div><STRONG>public void validarEntradaSemAsterisco() throws AgiException {</STRONG></div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Logando a Operação de Validação<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("Executando Método: validarEntrada");</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Recuperando valores do Asterisk<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String valorVariavel =&nbsp; channel.getVariable("ARG1");</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Verifica se é número.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isNumber(valorVariavel) == true) { //Aqui eh uma funcao que eu criei para validar numeros, nem coloquei no email a funcao</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Se o usuário digitou valores diferentes de 0, valor válido<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //ex: 0000001*<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( ((Long.parseLong(valorVariavel) + 0) != 0 )){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("[Validacao.java] -&gt; Valor valido: '" + valorVariavel + "'");</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //Devolvendo valores para o ASTERISK<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.setVariable("VALORVALIDO", "1");</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {//if ( ((Integer.parseInt(valorFormatado) + 0) != 0 ))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Registrando erro no arquivo de log<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.error("[Validacao.java] -&gt; Erro de validacao, valor invalido: '" + valorVariavel + "'");</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; channel.setVariable("VALORVALIDO", "0");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>


<div>&nbsp;</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else { //if (isNumber(valorFormatado) == true)<br>
</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Registrando erro no arquivo de log<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.error("[Validacao.java] -&gt; Erro de validacao, valor invalido: '" + valorVariavel + "'");</div>


<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; channel.setVariable("VALORVALIDO", "0");</div>


<div><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>


<div>}</div>


<div><br>
<br>
<STRONG>OBS: O que é importante saber sobre a classe java:</STRONG></div>


<div>Para pegar um valor vindo do Asterisk e usar no Java vc utiliza:</div>


<div>channel.getVariable("ARG1");</div>


<div>&nbsp;</div>


<div>Onde: ARG1 é a variável vinda do Asterisk</div>


<div>&nbsp;</div>


<div>&nbsp;</div>


<div>Para pegar um valor "processado" pelo Java e devolver ao Asterisk vc utiliza:</div>


<div>channel.setVariable("VALORVALIDO", "0");</div>


<div>&nbsp;</div>


<div>Onde: VALORVALIDO é o nome da variável que o Asterisk guardará o resultado e 0 é o valor da variável VALORVALIDO.</div>


<div>&nbsp;</div>


<div><STRONG>OBS 2:</STRONG></div>


<div>Para a integração Asterisk-Java funcionar, é necessário vc pegar o .jar do seu projeto Java (dentro da pasta dist) e jogar dentro da pasta:</div>


<div>&nbsp;</div>


<div>/var/lib/asterisk/agi-bin</div>


<div>&nbsp;</div>


<div>Após fazer isso é necessário startar o java no asterisk, dar um nome para o seu agi no arquivo fastagi-mapping.properties&nbsp;e pronto!</div>


<div>&nbsp;</div>


<div>Espero ter ajudado!!! :)</div>


<div>&nbsp;</div>


<div>Att,</div>


<div>Bruno</div>


<div><STRONG></STRONG>&nbsp;</div>


<div><br>
</div>


<div style="CLEAR: both"></div>
<br>
<br>


<div style="FONT-FAMILY: arial,helvetica; COLOR: black; FONT-SIZE: 10pt">-----Original Message-----<br>
From: Wendell Silva &lt;wendbandeira@gmail.com&gt;<br>
To: asteriskbrasil@listas.asteriskbrasil.org<br>
Sent: Fri, Feb 5, 2010 11:28 am<br>
Subject: Re: [AsteriskBrasil] AGI<br>
<br>


<div id=AOLMsgPart_3_8fcda8f0-2671-4e4e-924d-89d9ea3d0940>Pode ser sim. <br>
<br>


<div class=gmail_quote>Em 5 de fevereiro de 2010 11:05, <SPAN dir=ltr>&lt;<A href="mailto:brunoantognolli@email.com">brunoantognolli@email.com</A>&gt;</SPAN> escreveu:<br>

<BLOCKQUOTE style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" class=gmail_quote><FONT color=black size=2 face=arial>

<div>Wendel, pode ser um AGI em java?</div>


<div>&nbsp;</div>


<div>Se for, posso ajudar sim! ;)</div>


<div>&nbsp;</div>


<div>Att.</div>


<div>Bruno<br>
<br>
</div>


<div style="CLEAR: both"></div>
<br>
<br>


<div style="FONT-FAMILY: arial,helvetica; COLOR: black; FONT-SIZE: 10pt">

<div class=im>-----Original Message-----<br>
From: Wendell Silva &lt;<A href="mailto:wendbandeira@gmail.com">wendbandeira@gmail.com</A>&gt;<br>
To: <A href="mailto:asteriskbrasil@listas.asteriskbrasil.org">asteriskbrasil@listas.asteriskbrasil.org</A><br>
</div>


<div>

<div></div>


<div class=h5>Sent: Fri, Feb 5, 2010 10:21 am<br>
Subject: [AsteriskBrasil] AGI<br>
<br>


<div>Alguém tem um exemplo claro de AGI pra mim passar, com dialplan e scripit.agi. ? <br>
<br>
<br>
Att.<br>
<br>
Wendell Silva Bandeira<br>
</div>
</div>
</div>


<div class=im>

<div style="BACKGROUND-COLOR: rgb(255,255,255); MARGIN: 0px; FONT-FAMILY: Tahoma,Verdana,Arial,Sans-Serif; COLOR: rgb(0,0,0); FONT-SIZE: 12px"><PRE style="FONT-SIZE: 9pt"><TT>_______________________________________________
KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. 
- Hardware com alta disponibilidade de recursos e qualidade KHOMP
- Suporte técnico local qualificado e gratuito 
Conheça a linha completa de produtos KHOMP em <A href="http://www.khomp.com.br/" target=_blank>www.khomp.com.br</A>
_______________________________________________
Lista de discussões AsteriskBrasil.org
<A href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</A>
<A href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil" target=_blank>http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</A>
</TT></PRE></div>
</div>
</div>
</FONT><br>
_______________________________________________<br>
KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk.<br>
- Hardware com alta disponibilidade de recursos e qualidade KHOMP<br>
- Suporte técnico local qualificado e gratuito<br>
Conheça a linha completa de produtos KHOMP em <A href="http://www.khomp.com.br/" target=_blank>www.khomp.com.br</A><br>
_______________________________________________<br>
Lista de discussões AsteriskBrasil.org<br>
<A href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</A><br>
<A href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil" target=_blank>http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</A><br>
</BLOCKQUOTE></div>
<br>
</div>
<!-- end of AOLMsgPart_3_8fcda8f0-2671-4e4e-924d-89d9ea3d0940 -->

<div style="BACKGROUND-COLOR: #fff; MARGIN: 0px; FONT-FAMILY: Tahoma, Verdana, Arial, Sans-Serif; COLOR: #000; FONT-SIZE: 12px" id=AOLMsgPart_4_8fcda8f0-2671-4e4e-924d-89d9ea3d0940><PRE style="FONT-SIZE: 9pt"><TT>_______________________________________________
KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. 
- Hardware com alta disponibilidade de recursos e qualidade KHOMP
- Suporte técnico local qualificado e gratuito 
Conheça a linha completa de produtos KHOMP em <A href="http://www.khomp.com.br/" target=_blank>www.khomp.com.br</A>
_______________________________________________
Lista de discussões AsteriskBrasil.org
<A href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</A>
<A href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil" target=_blank>http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</A>
</TT></PRE></div>
<!-- end of AOLMsgPart_4_8fcda8f0-2671-4e4e-924d-89d9ea3d0940 --></div>
</font>