1

星号 11.4.0 星号-java:1.0.0.CI-SNAPSHOT

我尝试运行此代码:

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) {
}

}
}

执行时connectios就OK了。此代码向我显示当前频道,但在呼叫者拨打电话时从不向我显示新频道。当新的星号频道打开时,我需要捕捉事件。我做错了什么?谢谢

4

1 回答 1

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

于 2014-04-24T23:26:35.817 回答