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

Wanderson Alves Rodrigues wanderson.alves.rodrigues em gmail.com
Terça Março 16 22:34:42 BRT 2010


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
>


Mais detalhes sobre a lista de discussão AsteriskBrasil