2014-04-24 2 views
0

Asterisk 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 в порядке. Этот код показывает мне текущие каналы, но никогда не показывайте мне новые каналы, когда звонящие звонят. Мне нужно поймать события, когда открываются новые каналы звездочки. Что я сделал не так? Спасибо

ответ

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 –