首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asterisk + asterisk-java侦听新频道

Asterisk + asterisk-java侦听新频道
EN

Stack Overflow用户
提问于 2014-04-24 20:11:46
回答 1查看 2.7K关注 0票数 1

Asterisk 11.4.0 Asterisk-java: 1.0.0.CI-快照

我试着运行下面的代码:

代码语言:javascript
复制
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的。此代码显示当前通道,但在呼叫者进行呼叫时从不显示新通道。当新的星号频道开放时,我需要捕捉事件。我做错了什么?谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-04-25 07:26:36

试试这个:你的类HelloLiveEverything应该实现ManagerEventListener

然后重写onManagerEvent方法

代码语言:javascript
复制
@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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23268532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档