Bim dia a todos,
resolvi meu problema! Para capturar os eventos do asterisk de maneira bem
simples foi necessário implementar o código abaixo:
CommandAction commandAction = new CommandAction("sip show peers");
CommandResponse response = (CommandResponse)
managerConnection.sendAction(commandAction);
for (String line : response.getResult())
{
System.out.println(line);
}
Att,
Bruno
-----Original Message-----
From: [email protected]
To: [email protected]
Sent: Mon, Dec 7, 2009 4:37 pm
Subject: Re: [AsteriskBrasil] API JAVA - Peer Status
Ok, vou dar uma olhada e logo que resolver posto o código aqui.
Att
Bruno
-----Original Message-----
From: Leiber - Gmail <[email protected]>
To: [email protected]
Sent: Mon, Dec 7, 2009 4:15 pm
Subject: Re: [AsteriskBrasil] API JAVA - Peer Status
Vamos lá...
O que eu passo como argumento para esa.setExten() ?
Sim conforme eu te mandei inclusive o meus ramais aki são 201, 202.. etc.. e
usando o q te mandei funcionou
"Se ele esta dando isso E sempre me retorna -1."
Cara então esse agente ai não encontra-se logado. no meu caso as mensagem com 1
de in use.
Outra forma tem sim, alias tem várias...
http://asterisk-java.org/development/apidocs/org/asteriskjava/manager/action/CommandAction.html
Vc pode fazer uma classe que implementa ManagerEventListener também todos os
eventos que vierem a ocorrer no asterisk vc consegue capturar.
public class ApplicationStartup implements ManagerEventListener
class ApplicationStartup implements ManagerEventListener
public void onManagerEvent(ManagerEvent event) {
String event_name = event.getClass().getSimpleName();
System.out.println("ACONTECEU O EVENTO -->"+
event_name);
ai vc da um cast e pega a informacao necessario
exemplo:
//ou event instanceOf NewExtenEvent
if(event_name.equals("NewExtenEvent")) {
NewExtenEvent e = (NewExtenEvent) event;
System.out.println("Extension
"+e.getExtension());
System.out.println("Channel "+e.getChannel());
System.out.println("Context "+e.getContext());
System.out.println("AppData "+e.getAppData());
System.out.println("Application
"+e.getApplication());
System.out.println("Privilege
"+e.getPrivilege());
System.out.println("Priority "+e.getPriority());
}
}
}
void onManagerEvent(ManagerEvent event) {
String event_name = event.getClass().getSimpleName();
System.out.println("ACONTECEU O EVENTO -->"+
event_name);
ai vc da um cast e pega a informacao necessario
exemplo:
//ou event instanceOf NewExtenEvent
if(event_name.equals("NewExtenEvent")) {
NewExtenEvent e = (NewExtenEvent) event;
System.out.println("Extension
"+e.getExtension());
System.out.println("Channel "+e.getChannel());
System.out.println("Context "+e.getContext());
System.out.println("AppData "+e.getAppData());
System.out.println("Application
"+e.getApplication());
System.out.println("Privilege
"+e.getPrivilege());
System.out.println("Priority "+e.getPriority());
}
}
}
Ai vc teria q ver de qual instancia o event é e dele utilizar como achar
conveniente, para conhecer os eventos existetes vc pode olhar aki.
1 - ManagerEventListener
http://asterisk-java.org/development/apidocs/org/asteriskjava/manager/ManagerEventListener.html
2 - ManagerEvent
http://asterisk-java.org/development/apidocs/org/asteriskjava/manager/event/ManagerEvent.html
Existe varios tipos de listener que vc pode implementar da uma olhada nesse
tutorial aqui:
http://asterisk-java.org/development/tutorial.html
----- Original Message -----
From: [email protected]
To: [email protected]
Sent: Monday, December 07, 2009 3:25 PM
Subject: Re: [AsteriskBrasil] API JAVA - Peer Status
O que eu passo como argumento para esa.setExten() ?
Passando o ramal não deu certo, tentei passar: "1012"; "SIP/1012".
E sempre me retorna -1.
(Outro resultado que daria certo seria algo semelhante ao comando "sip show
peers" lá no asterisk, pois com ele eu poderia ver se estão todos offline. Você
saberia como recuperar as mesmas informações do comando "sip show peers", mas
pelo Asterisk-Java?)
Att,
-----Original Message-----
From: Leiber - Gmail <[email protected]>
To: [email protected]
Sent: Mon, Dec 7, 2009 11:06 am
Subject: Re: [AsteriskBrasil] API JAVA - Peer Status
Se eu entendi... tente o codigo abaixo.
ExtensionStateAction esa = new ExtensionStateAction();
esa.setExten("1012'");
ManagerResponse mr = managerConnection.sendAction(esa);
new ExtensionStateAction();
esa.setExten("1012'");
ManagerResponse mr = managerConnection.sendAction(esa);
System.out.println(mr.getAttribute("status"));
O que será impresso em tela deverá ser como o exemplificado abaixo:
http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+ExtensionState
Seria isso ?
Leiber Wallace
Sistemas para Callcenter
Developer - Mentaframework.org
Developer - WSTframework.org
Contributor - Space4j.org
User - AsteriskBrasil.org
(61) 3035-9058
(61) 9211-1777
----- Original Message -----
From: [email protected]
To: [email protected]
Sent: Friday, December 04, 2009 4:22 PM
Subject: [AsteriskBrasil] API JAVA - Peer Status
Boa tarde a todos.
Estou com uma dúvida, alguém poderia ajudar?
Estou tentando pegar o status de um ramal pelo Java, ao efetuar alguns testes
percebi que vou utilizar o pacote:
org.asteriskjava.manager.event.PeerStatusEvent
Segue abaixo o Log de quando o ramal é desligado
org.asteriskjava.manager.event.PeerStatusEvent[dateReceived=Fri Dec 04 16:17:32
BRST
2009,privilege='system,all',peer='SIP/1012',peerstatus='Unregistered',time='null',cause='null',timestamp='null',systemHashcode=3808966]
Contexto:
Preciso desenvolver uma classe que recebe o número do ramal e me retorna o
Status do mesmo.
Estou utilizando um link de referencia, no exemplo é utilizado Swing, no meu
caso nao precisa.
http://readlist.com/lists/lists.digium.com/asterisk-users/6/34751.html
Segue como está meu código:
public class ExecutarComandosRasterisk {
//Log
private Logger log = Logger.getLogger(ExecutarComandosRasterisk.class);
// Objeto de conexão com o Asterisk
private ManagerConnection managerConnection;
// Obtem resposta Asterisk
ManagerResponse originateResponse;
PeerStatusEvent peerStatus;
PeerEntryEvent peerEntry;
public String enviarComando() throws IOException,
AuthenticationFailedException, TimeoutException
{
String retorno = "Teste realizado com sucesso";
try{
try
{
// Objeto que mapeia o servidor
ManagerConnectionFactory factory = new
ManagerConnectionFactory("192.168.16.14", "manager", "pa55w0rd");
// Obtem uma conexao com o Asterisk
this.managerConnection = factory.createManagerConnection();
// Efetua o Login
managerConnection.login();
SipShowPeerAction sipShowPeerAction = new
SipShowPeerAction("1012");
sipShowPeerAction.setPeer("1012");
managerConnection.sendAction(sipShowPeerAction);
peerEntry.getStatus();
// print out whether the originate succeeded or not
System.out.println();
}
catch(Exception exp)
{
retorno = exp.toString();
System.out.print(exp);
}
}
finally
{
managerConnection.logoff();
managerConnection.getState();
}
return retorno;
}
Att,
Bruno
_______________________________________________
A Redfone é líder no fornecimento de bridges TDMoE <-> E1
- Valor similar ao de placas E1 PCI;
- Não há problemas de compatibilidade com barramento PCI;
- Possibilitam a construção de soluções de alta disponibilidade(dois
servidores compartilham o mesmo E1)
Conheça mais sobre este produto em www.red-fone.com
_______________________________________________
Lista de discussões AsteriskBrasil.org
[email protected]
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________
Redfone é líder no fornecimento de bridges TDMoE <-> E1
Valor similar ao de placas E1 PCI;
Não há problemas de compatibilidade com barramento PCI;
Possibilitam a construção de soluções de alta disponibilidade(dois
ervidores compartilham o mesmo E1)
onheça mais sobre este produto em www.red-fone.com
______________________________________________
ista de discussões AsteriskBrasil.org
[email protected]
ttp://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________
A Redfone é líder no fornecimento de bridges TDMoE <-> E1
- Valor similar ao de placas E1 PCI;
- Não há problemas de compatibilidade com barramento PCI;
- Possibilitam a construção de soluções de alta disponibilidade(dois
servidores compartilham o mesmo E1)
Conheça mais sobre este produto em www.red-fone.com
_______________________________________________
Lista de discussões AsteriskBrasil.org
[email protected]
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________
Redfone é líder no fornecimento de bridges TDMoE <-> E1
Valor similar ao de placas E1 PCI;
Não há problemas de compatibilidade com barramento PCI;
Possibilitam a construção de soluções de alta disponibilidade(dois
ervidores compartilham o mesmo E1)
onheça mais sobre este produto em www.red-fone.com
______________________________________________
ista de discussões AsteriskBrasil.org
[email protected]
ttp://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________
A Redfone é líder no fornecimento de bridges TDMoE <-> E1
- Valor similar ao de placas E1 PCI;
- Não há problemas de compatibilidade com barramento PCI;
- Possibilitam a construção de soluções de alta disponibilidade(dois
servidores compartilham o mesmo E1)
Conheça mais sobre este produto em www.red-fone.com
_______________________________________________
Lista de discussões AsteriskBrasil.org
[email protected]
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil