com.bandwidth.voice.bxml.verbs.Conference Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bandwidth-sdk Show documentation
Show all versions of bandwidth-sdk Show documentation
The official client SDK for Bandwidth's Voice, Messaging, MFA, and WebRTC APIs
package com.bandwidth.voice.bxml.verbs;
import lombok.Builder;
import java.net.URI;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import java.util.List;
/**
* The PlayAudio verb is used to play an audio file in the call. The URL of an audio file should be included in the body of the tag. If a relative URL is given, it is resolved relative to the endpoint that returned the BXML.
*
* NOTE: .wav files encoded as PCM or G711 are supported.
*/
@Builder
@XmlType(name = Conference.TYPE_NAME)
public class Conference implements Verb {
public static final String TYPE_NAME = "Conference";
/**
* The name of the conference with alphanumeric characters and the symbols -, _, and . with maximum length of 100 characters.
*/
@XmlValue
private String name;
/**
* (optional) A boolean value to indicate whether the member should be on mute in the conference. When muted, a member can hear others speak, but others cannot hear them speak. Defaults to false
*/
@XmlAttribute
protected boolean mute;
/**
* (optional) A boolean value to indicate whether the member should be on hold in the conference. When on hold, a member cannot hear others, and they cannot be heard. Defaults to false
*/
@XmlAttribute
protected boolean hold;
/**
* (optional) A comma-separated list of call ids to coach. When a call joins a conference with this attribute set, it will coach the listed calls. Those calls will be able to hear and be heard by the coach, but other calls in the conference will not hear the coach.
*
* Calls may be added to the conference in any order - if the matching calls are not already in the conference, then once the matching calls are added, the coach will be able to hear and speak to the matching calls. Note that this will not add the matching calls to the conference; each call must individually execute a verb to join.
*
* A conference may only have one coach.
*/
@XmlAttribute
protected String callIdsToCoach;
/**
* (optional) URL to send Conference events to. The URL, method, username, and password are set by the BXML document that creates the conference, and all events related to that conference will be delivered to that same endpoint. If more calls join afterwards and also have this property (or any other callback related properties like username and password), they will be ignored and the original callback information will be used.
*/
@XmlAttribute
protected URI conferenceEventUrl;
/**
* (optional) The HTTP method to use for the request to conferenceEventUrl. GET or POST. Default value is POST.
*/
@XmlAttribute
protected Method conferenceEventMethod;
/**
* (optional) The username to send in the HTTP request to conferenceEventUrl.
*/
@XmlAttribute
protected String username;
/**
* (optional) The password to send in the HTTP request to conferenceEventUrl.
*/
@XmlAttribute
protected String password;
@XmlAttribute
protected String fallbackUsername;
@XmlAttribute
protected String fallbackPassword;
@XmlAttribute
protected URI conferenceEventFallbackUrl;
@XmlAttribute
protected Method conferenceEventFallbackMethod;
/**
* (optional) A custom string that will be sent with this and all future callbacks unless overwritten by a future tag attribute or cleared.
*
* May be cleared by setting tag=""
*
* Max length 256 characters.
*/
@XmlAttribute
private String tag;
public static class ConferenceBuilder{
/**
*/
public ConferenceBuilder conferenceEventUrl(String uri){
return this.conferenceEventUrl(URI.create(uri));
}
/**
*/
public ConferenceBuilder conferenceEventUrl(URI uri){
this.conferenceEventUrl = uri;
return this;
}
/**
* (optional) he HTTP method to use for the request to conferenceEventMethod. GET or POST. Default value is POST. Converts String to Method using Method.fromValue(method)
*/
public ConferenceBuilder conferenceEventMethod(String method){
return this.conferenceEventMethod(Method.fromValue(method));
}
/**
* (optional) he HTTP method to use for the request to conferenceEventMethod. GET or POST. Default value is POST.
*/
public ConferenceBuilder conferenceEventMethod(Method method){
this.conferenceEventMethod = method;
return this;
}
public ConferenceBuilder conferenceEventFallbackUrl(String uri){
return this.conferenceEventFallbackUrl(URI.create(uri));
}
public ConferenceBuilder conferenceEventFallbackUrl(URI uri){
this.conferenceEventFallbackUrl = uri;
return this;
}
public ConferenceBuilder conferenceEventFallbackMethod(String method){
return this.conferenceEventFallbackMethod(Method.fromValue(method));
}
public ConferenceBuilder conferenceEventFallbackMethod(Method method){
this.conferenceEventFallbackMethod = method;
return this;
}
/**
* (optional) A list of call ids to coach. When a call joins a conference with this attribute set, it will coach the listed calls. Those calls will be able to hear and be heard by the coach, but other calls in the conference will not hear the coach.
*
* Calls may be added to the conference in any order - if the matching calls are not already in the conference, then once the matching calls are added, the coach will be able to hear and speak to the matching calls. Note that this will not add the matching calls to the conference; each call must individually execute a verb to join.
*
* A conference may only have one coach.
*/
public ConferenceBuilder callIdsToCoach(List callIds){
this.callIdsToCoach = String.join(",", callIds);
return this;
}
}
}