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">carrier1.com</a>]<br>type = friend<br>;user=phone<br>host = <a href="http://carrier1.com">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">luis.reis@singularideas.com.br</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<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: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;" class="gmail_quote"><div><div></div><div class="h5">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">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>