简体   繁体   English

星号+星号-Java收听新频道

[英]Asterisk + asterisk-java listen new channels

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

I've try to run this code: 我尝试运行以下代码:

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

}
}

When executed, connectios is OK. 执行后,connectios正常。 This code show me current channels but never show me new channels when callers make a calls. 该代码向我显示当前频道,但在呼叫者拨打电话时从不向我显示新频道。 I need to catch the events when new asterisk channels are opening. 当新的星号频道打开时,我需要捕捉事件。 What I made wrong? 我做错了什么? Thank you 谢谢

Try This: Your Class HelloLiveEverything should implement ManagerEventListener 试试这个:你的类HelloLiveEverything应该实施ManagerEventListener
then override the onManagerEvent method 然后覆盖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
}
    }

edit asterisk manager.conf : 编辑星号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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM