AGI Asterisk Java

Olá pessoal, boa tarde.

Nesse post, gostaria de falar um pouco sobre Asterisk-Java, um assunto muito interessante. Hoje de maneira bem prática vou demonstrar como realizar a integração entre Asterisk e Java, essa integração pode trazer inúmeros benefícios ao seu servidor de telefonia.

Primeiramente, vamos criar a classe Java, eu utilizei o Netbeans, mas pode ser realizado com Eclipse sem problemas. Minha classe é simples, ela cria uma varíavel no contexto da ligação chamada “resultado” e atribui o valor “ok” para ela. Em seguida vou “printar” esse valor no console do meu Asterisk.

Vamos lá?

Classe Java “AgiJava”:


import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;

public class AgiJava extends BaseAgiScript{

 public void service(AgiRequest request, AgiChannel channel)
 throws AgiException
 {
 // Atende o canal...
 answer();

 setVariable("resultado", "ok");

 }

}

Após compilar copie o jar gerado para o Asterisk e mapeie a classe no arquivo de propriedades do FastAgi. O nome do meu AGI faz referência ao nome da minha classe Java, vejam:


--fastagi-mapping.properties
hello.agi = AgiJava

Feito isso inicie o servidor padrão do AGI com o seguinte comando:

 


--Iniciando o serviço Java
java -classpath /usr/local/asterisk-java/target/asterisk-java.jar:/usr/local/asterisk-java/target/TesteAsterisk.jar:. org.asteriskjava.fastagi.DefaultAgiServer

Para finalizar configure o seu contexto de ligação, no meu exemplo eu simplesmente

inicio o AGI e exibo o valor da variavel “resultado” que foi criada pelo Java.


--extensions.conf
[testeAgi]
exten => 001,1,Agi(agi://localhost/bruno/hello.agi)
exten => 001,n,NoOp( resultado: ${resultado})
exten => 001,n,Hangup

O resultado disso pode ser visto no console:

ConsoleAsterisk

 

Resultado da execução do servidor AGI:

ServidorAgi

Mais links?
http://www.asterisklibre.org/arquivos/category/agi-java
http://www.asterisk-java.org/development/tutorial.html
http://www.beanizer.org/site/index.php/en/Articles/A-simple-AGI-scripting-engine-with-Asterisk-Java.html

É isso pessoal.

Confira meu perfil profissional no LinkedIn e faça parte da minha rede. https://lnkd.in/w9kyFR

Abraços,
Bruno Fernando Antognolli.

 

Não há servidores registrados no IDE. Para registrar um servidor, clique no botão “Adicionar” Netbeans ..

Olá, boa tarde.

Estava tentando instalar o Netbeans na minha máquina e eu tive a seguinte (e nada agradável) mensagem:

Não há servidores registrados no IDE. Para registrar um servidor, clique no botão “Adicionar”…

Ok, isso é um BUG da ferramenta e me fez perder alguns minutos, então vou compartilhar a solução.

Eu havia instalado o Netbeans sem nenhum servidor, apenas para fazer um teste para a minha pós graduação e depois de terminados os testes eu desinstalei. Naquela ocasião eu não removi as pastas de configurações da ferramenta… 

Hoje, quando fui instalar novamente, o sistema detectou que havia uma instalação antiga e perguntou se eu desejava importar as configurações e eu cliquei em “sim”. Pois bem, o Netbeans importou os antigos arquivos de configuração e os antigos arquivos não possuíam referência a servidores (Glassfish, Tomcat, etc.).

Resultado?

Quando eu tentei criar meu projeto EE, o mensagem era apresentada e eu não conseguia criar/importar projetos WEB. Eu iniciava o Tomcat e o Glassfish pela ferramenta, ia no navegador digitava localhost:porta e verifiquei que ambos servidores estavam funcionando.

Qual a solução?

Desinstalar o Netbeans e todos os servidores associados a ele, e reinstalar. Reinicie a máquina.

No meu caso funcionou. Segue o link onde o BUG é detectado:
https://netbeans.org/bugzilla/show_bug.cgi?id=156116

 

Espero que possa ser útil.

Abs,

Bruno F. Antognolli

Instalando HSQLDB

Olá pessoal, boa tarde.

Conhecem o HSQLDB? Não? Pois bem. Ele é um banco de dados que não precisa de instalação, pode rodar em memória ou salvar banco de dados em disco físicos, pode rodar standalone e também em uma versão server, é possível criar um banco de dados embarcado para a sua aplicação e como se não bastassem tantas funcionalidades ele é padrão ANSI. Legal né?

Neste post vou falar um pouco sobre a instalação e alguns erros possíveis durante a instalação.

Suas principais características são:

  • Suporte à linguagem SQL básica, incluindo junções, triggers e visões.
  • Portabilidade em virtude de sua implementação ser feita em Java.
  • Repositórios acessíveis através de tecnologia JDBC.
  • Criação de bancos de dados em arquivo texto, banco de dados e em memória.
  • Recurso de dump para backups facilitados.
  • Ocupa pouco espaço em disco.
  • Praticamente dispensa configurações para operar.

Fonte: http://pt.wikipedia.org/wiki/HSQLDB

Ok, chega de papo. Para fazer o download:
http://sourceforge.net/projects/hsqldb/files/

Descompacte em uma pasta de sua preferência, por exemplo: E:\hsqldb

Feito isso basta você iniciar o servidor e testar. Simples assim.

Para iniciá-lo acesse a pasta bin, algo como: E:\hsqldb\hsqldb-2.3.0\hsqldb\bin

Para executar uma versão StandAlone execute:

  • runServer.bat
    Irá iniciar a sua instância local do banco de dados. Enquanto o prompt estiver aberto sua instância estará funcionando.
    Banco Iniciado
  • runManagerSwing.bat
    Para conectar no seu banco será necessário abrir o “Manager”, ele oferece diversas formas de conexão, “In-Memory”, “Engine Server”, “Web Server”, etc. Para fins didáticos você pode selecionar “In-Memory” ou o modo “Engine Server”. Após isso clique em “OK”..
    (O usuário padrão é SA sem senha)
    Inicia Banco

Ok. Seu banco está funcionando, duvida que foi fácil assim?

Na sua ferramenta “Manager” clique em Opções  -> Insert Test Data para que o banco crie algumas tabelas automaticamente. Pressione CRTL + R para atualizar a lista de tabelas de seu banco e divirta-se!

Insere dados

Bom, é isso.

Espero que tenham gostado. Mas como nem tudo são flores, você poderá ter problemas ao fazer esse camarada funcionar assim como eu tive, acompanhe a sequência desse post.

Confira meu perfil profissional no LinkedIn e faça parte da minha rede. https://lnkd.in/w9kyFR

Abraços,
Bruno F. Antognolli