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

Luis Reis luis.reis em singularideas.com.br
Sexta Março 19 06:10:06 BRT 2010


você usa a baseagiscript como no exemplo do site.

Em 18/03/10, Wanderson Alves
Rodrigues<wanderson.alves.rodrigues em gmail.com> escreveu:
> 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
> _______________________________________________
> 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


Mais detalhes sobre a lista de discussão AsteriskBrasil