<div>Cara .. a densidade dos requisitos é que nem o Hélio (gás). Altamente voláteis!</div>
<div> </div>
<div>[]&#39;s<br><br></div>
<div class="gmail_quote">Em 1 de março de 2010 16:28, Paulo Sigrist <span dir="ltr">&lt;<a href="mailto:paulo.sigrist@gmail.com">paulo.sigrist@gmail.com</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Olá pessoal,<br><br>somente concluindo o assunto. Segui o conselho do Luis e utilizei a API do AGI da asterisk-java para fazer a integração com a minha aplicação.<br>
<br>Durante a semana, houve uma mudança nos requisitos e a aplicação não precisará ligar para o usuário (isso até decidirem que vai precisar novamente hehe).<br><br>Obrigado pela ajuda Luis<br><br>
<div class="gmail_quote">2010/2/22 Paulo Sigrist <span dir="ltr">&lt;<a href="mailto:paulo.sigrist@gmail.com" target="_blank">paulo.sigrist@gmail.com</a>&gt;</span> 
<div>
<div></div>
<div class="h5"><br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Luis,<br><br>eu nunca trabalhei com o AGI, só havia utilizado a API do manager para conectar o Java com o Asterisk.<br>
<br>Entendi mais ou menos o que voce explicou. Vou estudar como funciona o AGI e fazer uns testes aqui. Assim que conseguir um progresso, informo aqui na lista.<br><br>Obrigado pela ajuda<br><font color="#888888"><br>[]´s</font> 
<div>
<div></div>
<div><br>Sigrist<br><br>
<div class="gmail_quote">2010/2/19 Luis Reis <span dir="ltr">&lt;<a href="mailto:luis.reis@singularideas.com.br" target="_blank">luis.reis@singularideas.com.br</a>&gt;</span><br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>Jovem</div>
<div> </div>
<div>já sofri muito com isso e a melhor solução é você fazer um AGI que faça um dial utilizando a opção <b>G(context^exten^pri), </b>Isso permite que a chamada, assim que completada, seja transferida para um contexto-extensão-prioridade que tenha a sua URA. Se quiser fazer o dial no Java no agi seria assim</div>

<div> </div>
<div>public class HelloAgiScript extends BaseAgiScript {<br>    public void service(AgiRequest request, AgiChannel channel) throws AgiException {</div>
<div>        exec(&quot;dial&quot;, &quot;SIP/gateway/03432320000,30,tTG(ura^n^1)&quot;);<br>    }<br>}</div>
<div> </div>
<div>Neste contexto da URA, tu podes chamar outro AGI que faz o tratamento dos DTMF normalmente. </div>
<div> </div>
<div>Se for via Manager, tu tens que codificar um OriginateAction e enviar para o Manager através da ManagerAPI e neste caso, a extenção que liga deve conter o AGI que vai tratar os seus DTMFs.<br></div>
<div>.</div>
<div> </div>
<div>me fala se vc entendeu ou não...<br></div>
<div class="gmail_quote">Em 19 de fevereiro de 2010 14:45, Paulo Sigrist <span dir="ltr">&lt;<a href="mailto:paulo.sigrist@gmail.com" target="_blank">paulo.sigrist@gmail.com</a>&gt;</span> escreveu: 
<div>
<div></div>
<div><br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Luis,<br><br>seguem os arquivos:<br><br>(Lembrando que esses códigos se referem a um teste....)<br>
<br>= extensions.conf =============================================================<br>[globals]<br><br>[general]<br>autofallthrough=yes<br><br>[macro-local-calls]<br>exten =&gt; s,1,Dial(${ARG1})<br>exten =&gt; s,n,Hangup()<br>
<br>[main-dialplan]<br>include =&gt; dtmf-test<br>include =&gt; local-numbers<br>include =&gt; default-route<br><br>;Hangup extension<br>exten =&gt; h,1,NoOp(Hangup extension)<br><br>[local-numbers]<br>;<br>; caracter _ significa que estamos falando de um pattern<br>
; X = 0-9<br>; Z = 1-9<br>; N = 2-9<br>; [5-7] = 5,6,7 (range)<br>; . = um ou mais caracteres<br>; ! um ou mais cracteres<br>; variavel ${EXTEN} contem numero efetivamente discado<br>; ${EXTEN:1} - tira primeiro digito do numero discado<br>
; ${EXTEN:1:3} - especifica range 1 a 3<br>; ${EXTEN:-4:4} - comeca quatro digitos do final<br>exten =&gt; _3755XXXX,1,Macro(local-calls,SIP/+5519${EXTEN:-8})<br>exten =&gt; _+19X.3755XXXX,1,Macro(local-calls,SIP/+5519${EXTEN:-8})<br>
<br><br>[default-route]<br><br>[dtmf-test]<br>exten =&gt; 456,1,Answer()<br>exten =&gt; 456,n,Background(hello-world)<br>exten =&gt; 456,n,WaitExten(100)<br>exten =&gt; 1,1,Playback(digits/1)<br>exten =&gt; 1,n,Goto(ported-numbers,456,1)<br>
<br><br>= sip.conf =============================================================<br>[general]<br>bindport =&gt; 5060<br>canreinvite = no<br>dtmfmode=info<br>disallow=all<br>allow=ulaw<br><br>[phone-template](!); The exclamation point in parenthesis makes a template.<br>
type = friend<br>context = main-dialplan<br>host = dynamic<br>srvlookup = yes<br><br>[<a href="http://carrier1.com/" target="_blank">carrier1.com</a>]<br>type = friend<br>;user=phone<br>host = <a href="http://carrier1.com/" target="_blank">carrier1.com</a><br>
insecure = very<br>context = incoming-ims-calls<br>canreinvite = no<br>srvlookup = yes<br>disallow = all<br>allow = ulaw<br>allow = alaw<br>;usereqphone=yes<br><br>[+551937550000]<br>type = friend<br>context = main-dialplan<br>
host = dynamic<br>srvlookup = yes<br><br>[+551937558888]<br>type = friend<br>context = main-dialplan<br>host = dynamic<br>srvlookup = yes<br><br><br>= HelloEvents.java =============================================================<br>
package br.org.teste.asterisk.dtmf;<br><br>import java.io.IOException;<br><br>import org.asteriskjava.manager.AuthenticationFailedException;<br>import org.asteriskjava.manager.ManagerConnection;<br>import org.asteriskjava.manager.ManagerConnectionFactory;<br>
import org.asteriskjava.manager.ManagerEventListener;<br>import org.asteriskjava.manager.TimeoutException;<br>import org.asteriskjava.manager.action.OriginateAction;<br>import org.asteriskjava.manager.event.DtmfEvent;<br>
import org.asteriskjava.manager.event.ManagerEvent;<br>import org.asteriskjava.manager.response.ManagerResponse;<br><br>public class HelloEvents implements ManagerEventListener<br>{<br>    private ManagerConnection managerConnection;<br>
<br>    public HelloEvents() throws IOException<br>    {<br>        ManagerConnectionFactory factory = new ManagerConnectionFactory(<br>                &quot;127.0.0.1&quot;, &quot;manager&quot;, &quot;pa55w0rd&quot;);<br>
<br>        this.managerConnection = factory.createManagerConnection();<br>    }<br><br>    public void run() throws IOException, AuthenticationFailedException,<br>            TimeoutException, InterruptedException<br>    {<br>
        // register for events<br>        managerConnection.addEventListener(this);<br>        <br>        // connect to Asterisk and log in<br>        managerConnection.login();<br><br>        // request channel state<br>
        {<br>            OriginateAction originateAction;<br>            ManagerResponse originateResponse;<br><br>            originateAction = new OriginateAction();<br>            originateAction.setChannel(&quot;SIP/+551937550000&quot;);<br>
            originateAction.setContext(&quot;default&quot;);<br>            originateAction.setExten(&quot;37558888&quot;);<br>            originateAction.setPriority(new Integer(1));<br>            <br>            originateAction.setTimeout(new Integer(30000));<br>
<br>            // send the originate action and wait for a maximum of 30 seconds for Asterisk<br>            // to send a reply<br>            originateResponse = managerConnection.sendAction(originateAction, 30000);<br>
<br>            // print out whether the originate succeeded or not<br>            System.out.println(originateResponse.getResponse());<br><br>        }<br>        <br>        // Fica travado recebendo os eventos (parar o teste pelo STOP da IDE)<br>
        while (true) {<br>            if (false) break;<br>        }<br><br>        // and finally log off and disconnect<br>        managerConnection.logoff();<br>    }<br><br>    public void onManagerEvent(ManagerEvent event)<br>
    {<br>        if (event instanceof DtmfEvent) {<br>            DtmfEvent dtmf = (DtmfEvent) event;<br>            <br>            System.out.println(&quot;Digit  : &quot; +dtmf.getDigit());<br>            System.out.println(&quot;Source : &quot; + dtmf.getSource());<br>
            System.out.println(&quot;Channel: &quot; +dtmf.getChannel());<br>            <br>            System.out.println(dtmf);<br>        }<br>        <br>    }<br><br>    public static void main(String[] args) throws Exception<br>
    {<br>        HelloEvents helloEvents;<br><br>        helloEvents = new HelloEvents();<br>        helloEvents.run();<br>    }<br>}<br><br>=============================================================================<br>
<br>O que acontece é o seguinte. Quando pego um SIP Client e ligo para 456, recebo a mensagem &quot;Hello World&quot; e caso aperte algum número, o mesmo é repetido e logo após o &quot;Hello World&quot; é executado novamente. Se ao mesmo tempo, roda a minha aplicação Java, recebo o evento DtmfEvent e consigo realizar uma ação com as informações.<br>
<br>O segundo teste, é fazer com que o Java ligue, o que eu consigo através do OriginateAction, mas o que eu não consigo é receber os eventos DTMF no Asterisk, que por sua vez, não repassa ao Java.<br><br>Obrigado<br>Paulo Sigrist<br>
<br>
<div class="gmail_quote">2010/2/19 Luis Reis <span dir="ltr">&lt;<a href="mailto:luis.reis@singularideas.com.br" target="_blank">luis.reis@singularideas.com.br</a>&gt;</span> 
<div>
<div></div>
<div><br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>Jovem</div>
<div> </div>
<div>Tu tens que fazer a aplicação em AGI Síncrono e não orientada à eventos.</div>
<div> </div>
<div>Manda o fonte aí para eu te ajudar.<br><br></div>
<div class="gmail_quote">Em 19 de fevereiro de 2010 11:50, Paulo Sigrist <span dir="ltr">&lt;<a href="mailto:paulo.sigrist@gmail.com" target="_blank">paulo.sigrist@gmail.com</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>
<div></div>
<div>Olá pessoal,<br><br>estou desenvolvendo uma aplicação que envolve o reconhecimento de DTMF em java. Um primeiro teste, eu ligo para uma ramal 456, o asterisk atende a chamada, e a partir desse momento, qualquer tecla que eu pressione no meu aparelho, é enviado um sinal DTMF e o asterisk gera um evento, que eu capturo no Java, através da API asterisk-java.<br>
<br>Até ai tudo tranquilo, funcionando muito bem.<br><br>O problema, é que a lógica da minha aplicação é a seguinte:<br><br>1 - Aplicação liga para uma extensão<br>2 - Aplicação apresenta o menu para o usuário<br>3 - Usuário seleciona a opção do menu<br>
4 - Aplicação executa a ação correspondente a seleção do usuário.<br><br>os passos 1 e 2, eu consigo através da api asterisk-java. O que não estou conseguindo é fazer o asterisk reconhecer que o usuário apertou uma tecla no aparelho e gerar o evento DTMF para que o meu código em Java reconheça e possa executar a ação.<br>
<br>Minha dúvida é:<br><br>É possível reconhecer o DTMF do usuário que recebe a ligação?<br><br>Obrigado<br><font color="#888888">Paulo Sigrist<br></font><br></div></div>_______________________________________________<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" target="_blank">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><br clear="all"><br>-- <br>Luis Machado Reis<br>Analista de Sistemas<br><a href="http://www.singularideas.com.br/" target="_blank">www.singularideas.com.br</a><br><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" target="_blank">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></div></div><br><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" target="_blank">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></div></div>
<div>
<div></div>
<div><br><br clear="all"><br>-- <br>Luis Machado Reis<br>Analista de Sistemas<br><a href="http://www.singularideas.com.br/" target="_blank">www.singularideas.com.br</a><br></div></div><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" target="_blank">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></div></blockquote></div></div></div><br><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><br clear="all"><br>-- <br>Luis Machado Reis<br>Analista de Sistemas<br><a href="http://www.singularideas.com.br">www.singularideas.com.br</a><br>