Cara .. a densidade dos requisitos é que nem o Hélio (gás). Altamente voláteis!
[]'s Em 1 de março de 2010 16:28, Paulo Sigrist <paulo.sigr...@gmail.com>escreveu: > Olá pessoal, > > somente concluindo o assunto. Segui o conselho do Luis e utilizei a API do > AGI da asterisk-java para fazer a integração com a minha aplicação. > > Durante a semana, houve uma mudança nos requisitos e a aplicação não > precisará ligar para o usuário (isso até decidirem que vai precisar > novamente hehe). > > Obrigado pela ajuda Luis > > 2010/2/22 Paulo Sigrist <paulo.sigr...@gmail.com> > > Luis, >> >> eu nunca trabalhei com o AGI, só havia utilizado a API do manager para >> conectar o Java com o Asterisk. >> >> Entendi mais ou menos o que voce explicou. Vou estudar como funciona o AGI >> e fazer uns testes aqui. Assim que conseguir um progresso, informo aqui na >> lista. >> >> Obrigado pela ajuda >> >> []´s >> >> Sigrist >> >> 2010/2/19 Luis Reis <luis.r...@singularideas.com.br> >> >>> Jovem >>> >>> já sofri muito com isso e a melhor solução é você fazer um AGI que faça >>> um dial utilizando a opção *G(context^exten^pri), *Isso permite que a >>> chamada, assim que completada, seja transferida para um >>> contexto-extensão-prioridade que tenha a sua URA. Se quiser fazer o dial no >>> Java no agi seria assim >>> >>> public class HelloAgiScript extends BaseAgiScript { >>> public void service(AgiRequest request, AgiChannel channel) throws >>> AgiException { >>> exec("dial", "SIP/gateway/03432320000,30,tTG(ura^n^1)"); >>> } >>> } >>> >>> Neste contexto da URA, tu podes chamar outro AGI que faz o tratamento dos >>> DTMF normalmente. >>> >>> Se for via Manager, tu tens que codificar um OriginateAction e enviar >>> para o Manager através da ManagerAPI e neste caso, a extenção que liga deve >>> conter o AGI que vai tratar os seus DTMFs. >>> . >>> >>> me fala se vc entendeu ou não... >>> Em 19 de fevereiro de 2010 14:45, Paulo Sigrist <paulo.sigr...@gmail.com >>> > escreveu: >>> >>> Luis, >>>> >>>> seguem os arquivos: >>>> >>>> (Lembrando que esses códigos se referem a um teste....) >>>> >>>> = extensions.conf >>>> ============================================================= >>>> [globals] >>>> >>>> [general] >>>> autofallthrough=yes >>>> >>>> [macro-local-calls] >>>> exten => s,1,Dial(${ARG1}) >>>> exten => s,n,Hangup() >>>> >>>> [main-dialplan] >>>> include => dtmf-test >>>> include => local-numbers >>>> include => default-route >>>> >>>> ;Hangup extension >>>> exten => h,1,NoOp(Hangup extension) >>>> >>>> [local-numbers] >>>> ; >>>> ; caracter _ significa que estamos falando de um pattern >>>> ; X = 0-9 >>>> ; Z = 1-9 >>>> ; N = 2-9 >>>> ; [5-7] = 5,6,7 (range) >>>> ; . = um ou mais caracteres >>>> ; ! um ou mais cracteres >>>> ; variavel ${EXTEN} contem numero efetivamente discado >>>> ; ${EXTEN:1} - tira primeiro digito do numero discado >>>> ; ${EXTEN:1:3} - especifica range 1 a 3 >>>> ; ${EXTEN:-4:4} - comeca quatro digitos do final >>>> exten => _3755XXXX,1,Macro(local-calls,SIP/+5519${EXTEN:-8}) >>>> exten => _+19X.3755XXXX,1,Macro(local-calls,SIP/+5519${EXTEN:-8}) >>>> >>>> >>>> [default-route] >>>> >>>> [dtmf-test] >>>> exten => 456,1,Answer() >>>> exten => 456,n,Background(hello-world) >>>> exten => 456,n,WaitExten(100) >>>> exten => 1,1,Playback(digits/1) >>>> exten => 1,n,Goto(ported-numbers,456,1) >>>> >>>> >>>> = sip.conf ============================================================= >>>> [general] >>>> bindport => 5060 >>>> canreinvite = no >>>> dtmfmode=info >>>> disallow=all >>>> allow=ulaw >>>> >>>> [phone-template](!); The exclamation point in parenthesis makes a >>>> template. >>>> type = friend >>>> context = main-dialplan >>>> host = dynamic >>>> srvlookup = yes >>>> >>>> [carrier1.com] >>>> type = friend >>>> ;user=phone >>>> host = carrier1.com >>>> insecure = very >>>> context = incoming-ims-calls >>>> canreinvite = no >>>> srvlookup = yes >>>> disallow = all >>>> allow = ulaw >>>> allow = alaw >>>> ;usereqphone=yes >>>> >>>> [+551937550000] >>>> type = friend >>>> context = main-dialplan >>>> host = dynamic >>>> srvlookup = yes >>>> >>>> [+551937558888] >>>> type = friend >>>> context = main-dialplan >>>> host = dynamic >>>> srvlookup = yes >>>> >>>> >>>> = HelloEvents.java >>>> ============================================================= >>>> package br.org.teste.asterisk.dtmf; >>>> >>>> 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.action.OriginateAction; >>>> import org.asteriskjava.manager.event.DtmfEvent; >>>> import org.asteriskjava.manager.event.ManagerEvent; >>>> import org.asteriskjava.manager.response.ManagerResponse; >>>> >>>> public class HelloEvents implements ManagerEventListener >>>> { >>>> private ManagerConnection managerConnection; >>>> >>>> public HelloEvents() throws IOException >>>> { >>>> ManagerConnectionFactory factory = new ManagerConnectionFactory( >>>> "127.0.0.1", "manager", "pa55w0rd"); >>>> >>>> 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(); >>>> >>>> // request channel state >>>> { >>>> OriginateAction originateAction; >>>> ManagerResponse originateResponse; >>>> >>>> originateAction = new OriginateAction(); >>>> originateAction.setChannel("SIP/+551937550000"); >>>> originateAction.setContext("default"); >>>> originateAction.setExten("37558888"); >>>> originateAction.setPriority(new Integer(1)); >>>> >>>> originateAction.setTimeout(new Integer(30000)); >>>> >>>> // send the originate action and wait for a maximum of 30 >>>> seconds for Asterisk >>>> // to send a reply >>>> originateResponse = >>>> managerConnection.sendAction(originateAction, 30000); >>>> >>>> // print out whether the originate succeeded or not >>>> System.out.println(originateResponse.getResponse()); >>>> >>>> } >>>> >>>> // Fica travado recebendo os eventos (parar o teste pelo STOP da >>>> IDE) >>>> while (true) { >>>> if (false) break; >>>> } >>>> >>>> // 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(); >>>> } >>>> } >>>> >>>> >>>> ============================================================================= >>>> >>>> O que acontece é o seguinte. Quando pego um SIP Client e ligo para 456, >>>> recebo a mensagem "Hello World" e caso aperte algum número, o mesmo é >>>> repetido e logo após o "Hello World" é executado novamente. Se ao mesmo >>>> tempo, roda a minha aplicação Java, recebo o evento DtmfEvent e consigo >>>> realizar uma ação com as informações. >>>> >>>> O segundo teste, é fazer com que o Java ligue, o que eu consigo através >>>> do OriginateAction, mas o que eu não consigo é receber os eventos DTMF no >>>> Asterisk, que por sua vez, não repassa ao Java. >>>> >>>> Obrigado >>>> Paulo Sigrist >>>> >>>> 2010/2/19 Luis Reis <luis.r...@singularideas.com.br> >>>> >>>> Jovem >>>>> >>>>> Tu tens que fazer a aplicação em AGI Síncrono e não orientada à >>>>> eventos. >>>>> >>>>> Manda o fonte aí para eu te ajudar. >>>>> >>>>> Em 19 de fevereiro de 2010 11:50, Paulo Sigrist < >>>>> paulo.sigr...@gmail.com> escreveu: >>>>> >>>>>> Olá pessoal, >>>>>> >>>>>> estou desenvolvendo uma aplicação que envolve o reconhecimento de DTMF >>>>>> em java. Um primeiro teste, eu ligo para uma ramal 456, o asterisk >>>>>> atende a >>>>>> chamada, e a partir desse momento, qualquer tecla que eu pressione no meu >>>>>> aparelho, é enviado um sinal DTMF e o asterisk gera um evento, que eu >>>>>> capturo no Java, através da API asterisk-java. >>>>>> >>>>>> Até ai tudo tranquilo, funcionando muito bem. >>>>>> >>>>>> O problema, é que a lógica da minha aplicação é a seguinte: >>>>>> >>>>>> 1 - Aplicação liga para uma extensão >>>>>> 2 - Aplicação apresenta o menu para o usuário >>>>>> 3 - Usuário seleciona a opção do menu >>>>>> 4 - Aplicação executa a ação correspondente a seleção do usuário. >>>>>> >>>>>> os passos 1 e 2, eu consigo através da api asterisk-java. O que não >>>>>> estou conseguindo é fazer o asterisk reconhecer que o usuário apertou uma >>>>>> tecla no aparelho e gerar o evento DTMF para que o meu código em Java >>>>>> reconheça e possa executar a ação. >>>>>> >>>>>> Minha dúvida é: >>>>>> >>>>>> É possível reconhecer o DTMF do usuário que recebe a ligação? >>>>>> >>>>>> Obrigado >>>>>> Paulo Sigrist >>>>>> >>>>>> _______________________________________________ >>>>>> 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 > -- 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