2014-04-24 107 views
0

星號11.4.0 Asterisk的java的:1.0.0.CI-快照星號+星號的Java聽新渠道

我已經嘗試運行這段代碼:

import org.asteriskjava.live.AsteriskChannel; 
import org.asteriskjava.live.AsteriskQueue; 
import org.asteriskjava.live.AsteriskQueueEntry; 
import org.asteriskjava.live.internal.AsteriskAgentImpl; 
import org.asteriskjava.live.AsteriskServer; 
import org.asteriskjava.live.AsteriskServerListener; 
import org.asteriskjava.live.DefaultAsteriskServer; 
import org.asteriskjava.live.ManagerCommunicationException; 
import org.asteriskjava.live.MeetMeRoom; 
import org.asteriskjava.live.MeetMeUser; 
import java.beans.PropertyChangeListener; 
import java.beans.PropertyChangeEvent; 

public class HelloLiveEverything implements AsteriskServerListener, PropertyChangeListener 
{ 
private AsteriskServer asteriskServer; 

public HelloLiveEverything() 
{ 
    asteriskServer = new DefaultAsteriskServer("localhost", "manager", "password"); 
} 

public void run() throws ManagerCommunicationException 
{ 
    // listen for new events 
    asteriskServer.addAsteriskServerListener(this); 
    // add property change listeners to existing objects 
    for (AsteriskChannel asteriskChannel : asteriskServer.getChannels()) 
    { 
     System.out.println(asteriskChannel); 
     asteriskChannel.addPropertyChangeListener(this); 
    } 
} 

public void onNewAsteriskChannel(AsteriskChannel channel) 
{ 
    System.out.println(channel); 
    channel.addPropertyChangeListener(this); 
} 

public void onNewMeetMeUser(MeetMeUser user) 
{ 
    System.out.println(user); 
    user.addPropertyChangeListener(this); 
} 


    public void onNewQueueEntry(AsteriskQueueEntry user) 
{ 
    System.out.println(user); 
    user.addPropertyChangeListener(this); 
} 

    public void onNewAgent(AsteriskAgentImpl user) 
{ 
    System.out.println(user); 
    user.addPropertyChangeListener(this); 
} 


public void propertyChange(PropertyChangeEvent propertyChangeEvent) 
{ 
    System.out.println(propertyChangeEvent); 
} 

public static void main(String[] args) throws Exception 
{ 
    HelloLiveEverything helloLiveEverything = new HelloLiveEverything(); 
    helloLiveEverything.run(); 
    while (true) { 
} 

} 
} 

在執行時,連接是可以的。此代碼顯示了當前的頻道,但在撥打電話時從未向我顯示新頻道。 當新的星號通道打開時,我需要捕捉事件。 我做錯了什麼? 謝謝

回答

1

試試這個: 你HelloLiveEverything類應該實現ManagerEventListener
然後重寫onManagerEvent方法

@Override 
public void onManagerEvent(ManagerEvent event) { 
     String event_name = event.getClass().getSimpleName(); 
     if (event_name.equals("DialEvent")) { 
     DialEvent e = (DialEvent) event; 
     System.out.println(e.getCallerIdNum());//caller number 
     System.out.println(e.getDestination());//Called number 
//do something here 
} 
    } 

編輯星號manager.conf:
[manager] secret = password deny=0.0.0.0/0.0.0.0
permit=209.16.236.73/255.255.255.0; change this ip with one your java app is using permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user,originate; add full permission write = system,call,log,verbose,command,agent,user,originate; add full permission

+0

新增ManagerEventListener在implemets,加必要的導入和覆蓋onManagerEvent 相同。顯示當前頻道,沒有任何新頻道。 – Vlad

+0

它已經設置爲允許全部和全部讀寫權限 – Vlad

+0

請從https://github.com/srt/asterisk-java嘗試最新的源代碼 –