org.asteriskjava.pbx.internal.activity.HoldActivityImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of asterisk-java Show documentation
Show all versions of asterisk-java Show documentation
The free Java library for Asterisk PBX integration.
package org.asteriskjava.pbx.internal.activity;
import java.util.HashSet;
import org.asteriskjava.pbx.ActivityCallback;
import org.asteriskjava.pbx.Channel;
import org.asteriskjava.pbx.ListenerPriority;
import org.asteriskjava.pbx.PBXException;
import org.asteriskjava.pbx.PBXFactory;
import org.asteriskjava.pbx.activities.HoldActivity;
import org.asteriskjava.pbx.agi.AgiChannelActivityHold;
import org.asteriskjava.pbx.asterisk.wrap.events.ManagerEvent;
import org.asteriskjava.pbx.internal.core.AsteriskPBX;
import org.asteriskjava.util.Log;
import org.asteriskjava.util.LogFactory;
public class HoldActivityImpl extends ActivityHelper implements HoldActivity
{
private static final Log logger = LogFactory.getLog(HoldActivityImpl.class);
private final Channel _channel;
public HoldActivityImpl(final Channel channel, final ActivityCallback callback)
{
super("HoldCall", callback);
this._channel = channel;
this.startActivity(false);
}
@Override
public boolean doActivity() throws PBXException
{
boolean success = false;
HoldActivityImpl.logger.debug("*******************************************************************************");
HoldActivityImpl.logger.info("*********** begin Hold Audio ****************");
HoldActivityImpl.logger.info("*********** " + this._channel + " ****************");
HoldActivityImpl.logger.debug("*******************************************************************************");
try
{
AsteriskPBX pbx = (AsteriskPBX) PBXFactory.getActivePBX();
if (!pbx.moveChannelToAgi(_channel))
{
throw new PBXException("Channel: " + _channel + " couldn't be moved to agi");
}
_channel.setCurrentActivityAction(new AgiChannelActivityHold());
success = true;
}
catch (IllegalArgumentException | IllegalStateException e)
{
HoldActivityImpl.logger.error(e, e);
HoldActivityImpl.logger.error(e, e);
throw new PBXException(e);
}
return success;
}
public Channel getChannel()
{
return this._channel;
}
@Override
public HashSet> requiredEvents()
{
HashSet> required = new HashSet<>();
// no events requried.
return required;
}
@Override
public ListenerPriority getPriority()
{
return ListenerPriority.NORMAL;
}
@Override
public void onManagerEvent(ManagerEvent event)
{
// NOOP
}
}