[AsteriskBrasil] como buscar o DTMF e passar pro Java?

Wanderson Alves Rodrigues wanderson.alves.rodrigues em gmail.com
Quinta Março 18 22:34:43 BRT 2010


Oi Luis Rei.

Muito obrigado pela reposta me ajudou. Mais tenho outra duvida, quando
uso AGI da biblioteca asterisk-java para pegar DTMF qual classe da
Package org.asteriskjava.fastagi  devo usar.

Em 17 de março de 2010 06:03, Luis Reis
<luis.reis em singularideas.com.br> escreveu:
> opa
>
> Quando você coloca o agi no /var/lib/asterisk/agi-bin ele é feito em
> qualquer linguagem em que ele recebe os comandos em stdin e responde
> para o asterisk em stdout. Ele funciona como um shellscrip.
>
> Quando usamos o asterisk-java, ele executa este mesmo protocolo sò que
> em cima de sockets. Isto permite que tenhamos vários asterisk rodando
> todos os agis em um mesmo lugar. Outra vantagem de colocar os agi em
> outra máquina é que a escala do asterisk não ficaćomprometida pelo
> números dos forks dos agi locais.
>
> Logo: agi local is evil.
>
> agora, como no exemplo ele dah um streamfile, todos os arquivos fe som
> ou arqivos que voce manda gravar o audio ou dtmf serão armazenados
> localmente no astwrisk. No meu caso eu tenho uma area comum num
> storage para fazer isso e deixar os arquivos disponiveis para todos os
> asterisk.
>
> Espero ter ajudado.
>
> Em 16/03/10, Wanderson Alves
> Rodrigues<wanderson.alves.rodrigues em gmail.com> escreveu:
>> Oi Pessoal.
>>
>> Estou com algumas duvida, quando faço um programa tipo aquele exemplo
>> do site asterisk-java:
>>
>> import net.sf.asterisk.fastagi.AGIChannel;
>> import net.sf.asterisk.fastagi.AGIException;
>> import net.sf.asterisk.fastagi.AGIRequest;
>> import net.sf.asterisk.fastagi.AbstractAGIScript;
>>
>> public class HelloAGIScript extends AbstractAGIScript
>> {
>>     public void service(AGIRequest request, AGIChannel channel)
>>             throws AGIException
>>     {
>>         // Answer the channel...
>>         answer(channel);
>>
>>         // ...say hello...
>>         streamFile(channel, "welcome");
>>
>>         // ...and hangup.
>>         hangup(channel);
>>     }
>> }
>>
>>
>> No meu caso tenho duas maquinas uma rodando o asterisk em um linux, e
>> na maquina onde estou programando em  java(outra maquina). Depois de
>> ter configurado o extensions.conf e criado o
>> fastagi-mapping.properties eu copilei o codigo java gerando um .jar.
>> Eu estava lendo em outros sites que esse .jar tem que ir nesse
>> diretorio no asterisk /var/lib/asterisk/agi-bin, isso não compreendi.
>> Esse código quando executado fica como um servidor, esperando a
>> interação com o asterisk. Mais se eu quiser pegar o telefone ou
>> dígitos do dtmf como eu faço, tenho que fazer uma associação entre a
>> classe que herda de  AbstractAGIScript é um classe que mostre ou
>> guarde esses valores,será que funcionar?.
>>
>> To meio perdido ainda no funcionamento do AGI java, eu estava tentando
>> usar o Manage API a classe EventDTM, mais essa classe só funciona com
>> asterisk 1.6 eu tenho 1.4.
>>
>> Obrigado pela ajuda..
>>
>> Em 15 de março de 2010 19:36, Paulo Sigrist <paulo.sigrist em gmail.com>
>> escreveu:
>>> Opa!
>>> Pra quem quiser saber da ajuda que o Luis me deu, aqui vai a Thread
>>> http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/2010-February/038699.html
>>> []´s
>>> Sigrist
>>>
>>> 2010/3/9 Luis Reis <luis.reis em singularideas.com.br>
>>>>
>>>> Pessoal
>>>>
>>>> Capturar DTMF pelo Asterisk-JAVA é mais confiavel utilizar um
>>>> BaseAgiScript.
>>>>
>>>> Eu auxiliei um amigo aqui pela lista no início de fevereiro .. dá uma
>>>> pesquisada no histórico .. eu passei um exemplo pra ele.
>>>>
>>>> Aqui nos usamos assim e funciona perfeitamente.
>>>>
>>>> []'s
>>>>
>>>> Em 8 de março de 2010 22:32, Wanderson Alves Rodrigues
>>>> <wanderson.alves.rodrigues em gmail.com> escreveu:
>>>>>
>>>>> Boa noite pessoal.
>>>>>
>>>>> Tenho uma duvida no funcionamento dos eventos do asterisk-java.
>>>>>
>>>>> Nesse exemplo eu consigo pegar o evento de conecção que meu programa
>>>>> realiza com o asterisk.
>>>>>
>>>>> import java.io.IOException;
>>>>>
>>>>> import org.asteriskjava.manager.AuthenticationFailedException;
>>>>> import org.asteriskjava.manager.ManagerConnection;
>>>>> import org.asteriskjava.manager.ManagerConnectionFactory;
>>>>> import org.asteriskjava.manager.ManagerEventListener;
>>>>> import org.asteriskjava.manager.TimeoutException;
>>>>> import org.asteriskjava.manager.event.ConnectEvent;
>>>>> import org.asteriskjava.manager.event.ManagerEvent;
>>>>>
>>>>> public class HelloEvents implements ManagerEventListener
>>>>> {
>>>>>
>>>>>    private ManagerConnection managerConnection;
>>>>>
>>>>>
>>>>>    public HelloEvents() throws IOException
>>>>>    {
>>>>>
>>>>>        ManagerConnectionFactory factory = new ManagerConnectionFactory(
>>>>>        "192.168.40.66", "admin", "digi");
>>>>>        this.managerConnection = factory.createManagerConnection();
>>>>>
>>>>>    }
>>>>>    public void run() throws IOException, AuthenticationFailedException,
>>>>>    TimeoutException, InterruptedException
>>>>>    {
>>>>>
>>>>>        // register for events
>>>>>        managerConnection.addEventListener(this);
>>>>>        // connect to Asterisk and log in
>>>>>        managerConnection.login();
>>>>>        // and finally log off and disconnect
>>>>>        managerConnection.logoff();
>>>>>
>>>>>    }
>>>>>
>>>>>    public void onManagerEvent(ManagerEvent event)
>>>>>    {
>>>>>       if (event instanceof ConnectEvent)
>>>>>       {
>>>>>            ConnectEvent conect = (ConnectEvent) event;
>>>>>
>>>>>            System.out.println("versão do protocolo : "
>>>>> +conect.getProtocolIdentifier());
>>>>>
>>>>>        }
>>>>>
>>>>>
>>>>>    }
>>>>>
>>>>>    public static void main(String[] args) throws Exception
>>>>>    {
>>>>>
>>>>>        HelloEvents helloEvents;
>>>>>        helloEvents = new HelloEvents();
>>>>>        helloEvents.run();
>>>>>
>>>>>    }
>>>>>
>>>>> }
>>>>>
>>>>> ###########################################################################
>>>>> Beleza isso é fácil, mais por exemplo se eu quiser pegar os dígitos do
>>>>> dtmf de um celular por exemplo como usar a classe DtmfEvent.
>>>>> Claro que vou ter que configurar os extensions e sip, mais se eu fizer
>>>>> por exemplo.
>>>>>
>>>>> import java.io.IOException;
>>>>>
>>>>> import org.asteriskjava.manager.AuthenticationFailedException;
>>>>> import org.asteriskjava.manager.ManagerConnection;
>>>>> import org.asteriskjava.manager.ManagerConnectionFactory;
>>>>> import org.asteriskjava.manager.ManagerEventListener;
>>>>> import org.asteriskjava.manager.TimeoutException;
>>>>> import org.asteriskjava.manager.event.DtmfEvent;
>>>>> import org.asteriskjava.manager.event.ManagerEvent;
>>>>>
>>>>> public class HelloEvents implements ManagerEventListener
>>>>> {
>>>>>
>>>>>    private ManagerConnection managerConnection;
>>>>>
>>>>>
>>>>>    public HelloEvents() throws IOException
>>>>>    {
>>>>>
>>>>>        ManagerConnectionFactory factory = new ManagerConnectionFactory(
>>>>>        "192.168.40.66", "admin", "digi");
>>>>>        this.managerConnection = factory.createManagerConnection();
>>>>>
>>>>>    }
>>>>>    public void run() throws IOException, AuthenticationFailedException,
>>>>>    TimeoutException, InterruptedException
>>>>>    {
>>>>>
>>>>>        // register for events
>>>>>        managerConnection.addEventListener(this);
>>>>>        // connect to Asterisk and log in
>>>>>        managerConnection.login();
>>>>>        // and finally log off and disconnect
>>>>>        managerConnection.logoff();
>>>>>
>>>>>    }
>>>>>
>>>>>    public void onManagerEvent(ManagerEvent event)
>>>>>    {
>>>>>      if (event instanceof DtmfEvent) {
>>>>>            DtmfEvent dtmf = (DtmfEvent) event;
>>>>>
>>>>>            System.out.println("Digit  : " +dtmf.getDigit());
>>>>>            System.out.println("Source : " + dtmf.getSource());
>>>>>            System.out.println("Channel: " +dtmf.getChannel());
>>>>>
>>>>>            System.out.println(dtmf);
>>>>>        }
>>>>>
>>>>>
>>>>>
>>>>>    }
>>>>>
>>>>>    public static void main(String[] args) throws Exception
>>>>>    {
>>>>>
>>>>>        HelloEvents helloEvents;
>>>>>        helloEvents = new HelloEvents();
>>>>>        helloEvents.run();
>>>>>
>>>>>    }
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> Só isso não garante que eu possa usar os dígitos dtmf, no caso exibir.
>>>>>
>>>>> To quebrando a cabeça, por favo me de uma luz. Existe uma maneira de
>>>>> usar essa classe DtmfEvent(como essa classe funciona). Caso eu ligue
>>>>> para um canal da placa VB0408 que tenho, o asterisk faria a gerencia
>>>>> do atendimento mais se eu tecla em um numero como garantir que a
>>>>> classe DtmfEvent saiba que ocorreu um evento dtmf.
>>>>>
>>>>> Muito obrigado..
>>>>>
>>>>>
>>>>> Em 8 de março de 2010 17:21, jefferson alexandre
>>>>> <jefferson.alexandre em gmail.com> escreveu:
>>>>> > Já tentou usar " AGI get data"?
>>>>> > Aqui tem um exemplo em PHP que talvez lhe ajude.
>>>>> >
>>>>> > http://phpagi.sourceforge.net/phpagi2/docs/__examplesource/exsource__root_phpagi-2.14_examples_dtmf.php_9f0d08538805cb50bb0f290606fe78d3.html
>>>>> >
>>>>> > 2010/3/8 <brunoantognolli em email.com>
>>>>> >>
>>>>> >> Boa tarde Wanderson,
>>>>> >>
>>>>> >> Eu precisei utilizar "comparações de som" com o Asterisk-Java e não
>>>>> >> consegui inicialmente, e não tive a oportunidade de tentar outra vez.
>>>>> >>
>>>>> >> Imagino que você possa gravar o DMTF e após isso comparar as ondas de
>>>>> >> som,
>>>>> >> a partir daí poderia saber qual número foi digitado.
>>>>> >>
>>>>> >> Talvez esse link ajude um pouco:
>>>>> >>
>>>>> >>
>>>>> >> http://blogs.reucon.com/asterisk-java/2009/04/03/speech_recognition_with_asterisk_java.html
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> Se você conseguir dar continuidade no assunto e resolver o problema
>>>>> >> posta
>>>>> >> aí...
>>>>> >> Att,
>>>>> >> Bruno
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> -----Original Message-----
>>>>> >> From: Wanderson Alves Rodrigues <wanderson.alves.rodrigues em gmail.com>
>>>>> >> To: AsteriskBrasil em listas.asteriskbrasil.org
>>>>> >> Sent: Mon, Mar 8, 2010 3:23 pm
>>>>> >> Subject: [AsteriskBrasil] como buscar o DTMF e passar pro Java?
>>>>> >>
>>>>> >> Caros, esta é a primeira vez que preciso de um Help da lista.
>>>>> >> Preciso buscar o DTMF de um dos oito canais de uma placa VB0408 e
>>>>> >> passar para um programa Java.
>>>>> >>
>>>>> >> Já consigo buscar os eventos de conexão (embora não saiba o que
>>>>> >> significam os numeros que aparecem).
>>>>> >>
>>>>> >> O servidor está 100% operacional, drivers devidamente compilados e
>>>>> >> placa funcionando corretamente. Uso um Trixbox.
>>>>> >>
>>>>> >> Optei por Asterisk-Java por ter facilidade com a linguagem.
>>>>> >> O case final é o seguinte:
>>>>> >>
>>>>> >> Preciso que meu programa seja capaz de buscar simultaneamente os
>>>>> >> DTMFs
>>>>> >> de cada canal da VB0408 e exiba o número pressionado no celular (após
>>>>> >> capturar o DTMF) na tela, para cada canal.
>>>>> >>
>>>>> >> Alguém sabe se usando a Menager API somente, eu consigo obter os
>>>>> >> DTMFs?
>>>>> >> Qualquer exemplo será muito bem vindo!
>>>>> >>
>>>>> >> Grande abraço a todos!
>>>>> >>
>>>>> >> Wanderson.
>>>>> >> _______________________________________________
>>>>> >> 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 www.khomp.com.br
>>>>> >> _______________________________________________
>>>>> >> Lista de discussões AsteriskBrasil.org
>>>>> >> AsteriskBrasil em listas.asteriskbrasil.org
>>>>> >> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>> >>
>>>>> >> _______________________________________________
>>>>> >> 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 www.khomp.com.br
>>>>> >> _______________________________________________
>>>>> >> Lista de discussões AsteriskBrasil.org
>>>>> >> AsteriskBrasil em listas.asteriskbrasil.org
>>>>> >> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > 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 www.khomp.com.br
>>>>> > _______________________________________________
>>>>> > Lista de discussões AsteriskBrasil.org
>>>>> > AsteriskBrasil em listas.asteriskbrasil.org
>>>>> > http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>> >
>>>>> _______________________________________________
>>>>> 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 www.khomp.com.br
>>>>> _______________________________________________
>>>>> Lista de discussões AsteriskBrasil.org
>>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>>
>>>>
>>>>
>>>> --
>>>> Luis Machado Reis
>>>> Analista de Sistemas
>>>> www.singularideas.com.br
>>>>
>>>> _______________________________________________
>>>> 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 www.khomp.com.br
>>>> _______________________________________________
>>>> Lista de discussões AsteriskBrasil.org
>>>> AsteriskBrasil em listas.asteriskbrasil.org
>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>
>>>
>>> _______________________________________________
>>> 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 www.khomp.com.br
>>> _______________________________________________
>>> Lista de discussões AsteriskBrasil.org
>>> AsteriskBrasil em listas.asteriskbrasil.org
>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>>
>> _______________________________________________
>> 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 www.khomp.com.br
>> _______________________________________________
>> Lista de discussões AsteriskBrasil.org
>> AsteriskBrasil em listas.asteriskbrasil.org
>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>>
>
>
> --
> Luis Machado Reis
> Analista de Sistemas
> www.singularideas.com.br
> _______________________________________________
> 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 www.khomp.com.br
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil


Mais detalhes sobre a lista de discussão AsteriskBrasil