Boa tarde.. Muito obrigado para todos que me ajudaram nesse tópico.
Eu consegui resolver o meu problema de pegar dtmf, eu usei a biblioteca manager do asterisk-java, nessa biblioteca tem classes que capturam eventos de dtmf entre outros. Obs. Para poder usar essa biblioteca principalmente a classe DTMFEvent tem que usar o asterisk 1.6. Em 19 de março de 2010 09:46, Wanderson Alves Rodrigues <wanderson.alves.rodrig...@gmail.com> escreveu: > OI Luis Reis. Bom Dia. > > Sim eu estava olhando o tutorial do site asterisk-java. > import org.asteriskjava.fastagi.AgiChannel; > import org.asteriskjava.fastagi.AgiException; > import org.asteriskjava.fastagi.AgiRequest; > import org.asteriskjava.fastagi.BaseAgiScript; > > public class HelloAgiScript extends BaseAgiScript > { > public void service(AgiRequest request, AgiChannel channel) > throws AgiException > { > // Answer the channel... > answer(); > > // ...say hello... > streamFile("welcome"); > > // ...and hangup. > hangup(); > } > } > > Nesse exemplo ele herda de BaseAgiScript, para a construção de um > script para o asterisk. Mais como ficaria para pegar o numero do > telefone que ligou ou o dtmf, to lendo vários tutoriais e até textos > do asteriskBrasil, mais o AGI não ficou tão claro como o Manager. > > Eu não compreendi a comunicação como é feita entre o programa feito > usando AGI como o asterisk é por socket? > > Esse exemplo do site ficar rodando muito parecido como um servidor > feito em socket. > > Esse AGI é um pouco complexo de entender. > > Se você tiver um exemplo mais explicativo tem como me mandar, to > ficando louco para tentar compreender esse tal de AGI. > > Muito Obrigado, as repostas então me ajudando a entender melhor. > > Em 19 de março de 2010 06:10, Luis Reis > <luis.r...@singularideas.com.br> escreveu: >> você usa a baseagiscript como no exemplo do site. >> >> Em 18/03/10, Wanderson Alves >> Rodrigues<wanderson.alves.rodrig...@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.r...@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.rodrig...@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.sigr...@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.r...@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.rodrig...@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.alexan...@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 <brunoantogno...@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.rodrig...@gmail.com> >>>>>>>> >> To: AsteriskBrasil@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@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@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@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@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@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@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@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@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@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@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@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil