[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