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

Wanderson Alves Rodrigues wanderson.alves.rodrigues em gmail.com
Segunda Março 8 22:32:41 BRT 2010


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
>


Mais detalhes sobre a lista de discussão AsteriskBrasil