public class OpenTok
extends java.lang.Object
To create a new OpenTok object, call the OpenTok constructor with your OpenTok API key and the API secret for your Vonage Video API account. Do not publicly share your API secret. You will use it with the OpenTok constructor (only on your web server) to create OpenTok sessions.
Be sure to include the entire OpenTok server SDK on your web server.
| Modifier and Type | Class and Description |
|---|---|
static class |
OpenTok.Builder
Used to create an OpenTok object with advanced settings.
|
| Constructor and Description |
|---|
OpenTok(int apiKey,
java.lang.String apiSecret)
Creates an OpenTok object.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addArchiveStream(java.lang.String archiveId,
java.lang.String streamId,
boolean hasAudio,
boolean hasVideo)
Adds a stream to an OpenTok archive.
|
void |
addBroadcastStream(java.lang.String broadcastId,
java.lang.String streamId,
boolean hasAudio,
boolean hasVideo)
Adds a stream to an Opentok broadcast.
|
void |
close()
Call this method when you are done using the OpenTok object,
to prevent leaked file descriptors.
|
AudioConnector |
connectAudioStream(java.lang.String sessionId,
java.lang.String token,
AudioConnectorProperties properties)
Send audio from a Vonage Video API session to a WebSocket.
|
Session |
createSession()
Creates an OpenTok session with the default settings:
|
Session |
createSession(SessionProperties properties)
Creates a new OpenTok session.
|
void |
deleteArchive(java.lang.String archiveId)
Deletes an OpenTok archive.
|
Sip |
dial(java.lang.String sessionId,
java.lang.String token,
SipProperties properties)
Dials a SIP gateway to connect it an OpenTok session.
|
void |
disableForceMute(java.lang.String sessionId)
Disables the active mute state of the session.
|
void |
forceDisconnect(java.lang.String sessionId,
java.lang.String connectionId)
Disconnect a client from an OpenTok session
|
void |
forceMuteAll(java.lang.String sessionId,
MuteAllProperties properties)
Forces all streams (except for an optional array of streams) in a session
to mute published audio.
|
void |
forceMuteStream(java.lang.String sessionId,
java.lang.String streamId)
Force the publisher of a specific stream to mute its audio.
|
java.lang.String |
generateToken(java.lang.String sessionId)
Creates a token for connecting to an OpenTok session, using the default settings.
|
java.lang.String |
generateToken(java.lang.String sessionId,
TokenOptions tokenOptions)
Creates a token for connecting to an OpenTok session.
|
Archive |
getArchive(java.lang.String archiveId)
Gets an
Archive object for the given archive ID. |
Broadcast |
getBroadcast(java.lang.String broadcastId)
Gets an
Broadcast object for the given broadcast ID. |
Render |
getRender(java.lang.String renderId)
Gets a Render object, with details on an Experience Composer.
|
Stream |
getStream(java.lang.String sessionId,
java.lang.String streamId)
Gets a
Stream object for the given session ID and stream ID. |
ArchiveList |
listArchives()
Returns a List of
Archive objects, representing archives that are both
both completed and in-progress, for your API key. |
ArchiveList |
listArchives(int offset,
int count)
Returns a List of
Archive objects, representing archives that are both
both completed and in-progress, for your API key. |
ArchiveList |
listArchives(java.lang.String sessionId)
Returns a List of
Archive objects, representing archives that are both
both completed and in-progress, for your API key. |
ArchiveList |
listArchives(java.lang.String sessionId,
int offset,
int count)
Returns a List of
Archive objects, representing archives that are both
both completed and in-progress, for your API key. |
java.util.List<Render> |
listRenders()
Gets a list of Render objects, representing Experience Composers associated with the
OpenTok project.
|
java.util.List<Render> |
listRenders(java.lang.Integer offset,
java.lang.Integer count)
Gets a list of Render objects, representing a list of Experience Composers associated
with the OpenTok project.
|
StreamList |
listStreams(java.lang.String sessionId)
Gets a list of
Stream objects for the given session ID. |
void |
playDTMF(java.lang.String sessionId,
java.lang.String dtmfDigits)
Send DTMF digits to all clients in a session.
|
void |
playDTMF(java.lang.String sessionId,
java.lang.String connectionId,
java.lang.String dtmfDigits)
Send DTMF digits a specific client in a session.
|
void |
removeArchiveStream(java.lang.String archiveId,
java.lang.String streamId)
Removes a stream from an Opentok archive.
|
void |
removeBroadcastStream(java.lang.String broadcastId,
java.lang.String streamId)
Removes a stream from an Opentok broadcast.
|
void |
setArchiveLayout(java.lang.String archiveId,
ArchiveProperties properties)
Sets the layout type for a composed archive.
|
void |
setBroadcastLayout(java.lang.String broadcastId,
BroadcastProperties properties)
Sets the layout type for the broadcast.
|
void |
setStreamLayouts(java.lang.String sessionId,
StreamListProperties properties)
Sets the layout class list for streams in a session.
|
void |
signal(java.lang.String sessionId,
SignalProperties props)
Sends a signal to all clients connected to a session.
|
void |
signal(java.lang.String sessionId,
java.lang.String connectionId,
SignalProperties props)
Sends a signal to a specific client connected to a session.
|
Archive |
startArchive(java.lang.String sessionId) |
Archive |
startArchive(java.lang.String sessionId,
ArchiveProperties properties)
Starts archiving an OpenTok session.
|
Archive |
startArchive(java.lang.String sessionId,
java.lang.String name) |
Broadcast |
startBroadcast(java.lang.String sessionId,
BroadcastProperties properties)
Starts a live streaming broadcast for an OpenTok session.
|
Caption |
startCaptions(java.lang.String sessionId,
java.lang.String token,
CaptionProperties properties)
Use the Live Captions API to transcribe audio streams and generate real-time captions for your application.
|
Render |
startRender(java.lang.String sessionId,
java.lang.String token,
RenderProperties properties)
Starts an Experience Composer render for an OpenTok session.
|
Archive |
stopArchive(java.lang.String archiveId)
Stops an OpenTok archive that is being recorded.
|
Broadcast |
stopBroadcast(java.lang.String broadcastId)
Stops a live streaming broadcast of an OpenTok session.
|
void |
stopCaptions(java.lang.String captionsId)
Use this method to stop live captions for a session.
|
void |
stopRender(java.lang.String renderId)
Stops an Experience Composer of an OpenTok session.
|
public OpenTok(int apiKey,
java.lang.String apiSecret)
apiKey - Your OpenTok API key. (See your Vonage Video API account page.)apiSecret - Your OpenTok API secret. (See your Vonage Video API account page.)public java.lang.String generateToken(java.lang.String sessionId,
TokenOptions tokenOptions)
throws OpenTokException
The following example shows how to obtain a token that has a role of "subscriber" and that has a connection metadata string:
import com.opentok.Role;
import com.opentok.TokenOptions;
class Test {
public static void main(String argv[]) throws OpenTokException {
int API_KEY = 0; // Replace with your OpenTok API key (see https://tokbox.com/account).
String API_SECRET = ""; // Replace with your OpenTok API secret.
OpenTok sdk = new OpenTok(API_KEY, API_SECRET);
//Generate a basic session. Or you could use an existing session ID.
String sessionId = System.out.println(sdk.createSession());
// Replace with meaningful metadata for the connection.
String connectionMetadata = "username=Bob,userLevel=4";
// Use the Role value appropriate for the user.
String role = Role.SUBSCRIBER;
// Generate a token:
TokenOptions options = new TokenOptions.Buider().role(role).data(connectionMetadata).build();
String token = sdk.generateToken(sessionId, options);
System.out.println(token);
}
}
For testing, you can also generate tokens by logging in to your Vonage Video API account.
sessionId - The session ID corresponding to the session to which the user will connect.tokenOptions - This TokenOptions object defines options for the token.
These include the following:
OpenTokExceptionpublic java.lang.String generateToken(java.lang.String sessionId)
throws OpenTokException
The following example shows how to generate a token that has the default settings:
import com.opentok.OpenTok;
class Test {
public static void main(String argv[]) throws OpenTokException {
int API_KEY = 0; // Replace with your OpenTok API key (see https://tokbox.com/account).
String API_SECRET = ""; // Replace with your OpenTok API secret.
OpenTok sdk = new OpenTok(API_KEY, API_SECRET);
//Generate a basic session. Or you could use an existing session ID.
String sessionId = System.out.println(sdk.createSession().getSessionId());
String token = sdk.generateToken(sessionId);
System.out.println(token);
}
}
sessionId - The session ID corresponding to the session to which the user will connect.OpenTokExceptiongenerateToken(String, TokenOptions)public Session createSession(SessionProperties properties) throws OpenTokException
For example, when using the OpenTok.js library, use the session ID when calling the OT.initSession() method (to initialize an OpenTok session).
OpenTok sessions do not expire. However, authentication tokens do expire (see the
generateToken(String, TokenOptions) method). Also note that sessions cannot
explicitly be destroyed.
A session ID string can be up to 255 characters long.
Calling this method results in an OpenTokException in
the event of an error. Check the error message for details.
The following code creates a session that attempts to send streams directly between clients (falling back to use the OpenTok TURN server to relay streams if the clients cannot connect):
import com.opentok.MediaMode;
import com.opentok.OpenTok;
import com.opentok.Session;
import com.opentok.SessionProperties;
class Test {
public static void main(String argv[]) throws OpenTokException {
int API_KEY = 0; // Replace with your OpenTok API key.
String API_SECRET = ""; // Replace with your OpenTok API secret.
OpenTok sdk = new OpenTok(API_KEY, API_SECRET);
SessionProperties sp = new SessionProperties().Builder()
.mediaMode(MediaMode.RELAYED).build();
Session session = sdk.createSession(sp);
System.out.println(session.getSessionId());
}
}
You can also create a session using the OpenTok
REST API or or by logging in to your
Vonage Video API account.properties - This SessionProperties object defines options for the session.
These include the following:
getSessionId()
method of the Session object to get the session ID, which uniquely identifies the
session. You will use this session ID in the client SDKs to identify the session.OpenTokExceptionpublic Session createSession() throws OpenTokException
The following example creates a session that uses the default settings:
import com.opentok.OpenTok;
import com.opentok.SessionProperties;
class Test {
public static void main(String argv[]) throws OpenTokException {
int API_KEY = 0; // Replace with your OpenTok API key.
String API_SECRET = ""; // Replace with your OpenTok API secret.
OpenTok sdk = new OpenTok(API_KEY, API_SECRET);
String sessionId = sdk.createSession();
System.out.println(sessionId);
}
}
getSessionId()
method of the Session object to get the session ID, which uniquely identifies the
session. You will use this session ID in the client SDKs to identify the session.OpenTokExceptioncreateSession(SessionProperties)public void signal(java.lang.String sessionId,
SignalProperties props)
throws OpenTokException
For more information, see the Signaling developer guide.
sessionId - The session ID.props - The SignalProperties object that defines the data and type of the signal.OpenTokExceptionpublic void signal(java.lang.String sessionId,
java.lang.String connectionId,
SignalProperties props)
throws OpenTokException
For more information, see the Signaling developer guide.
sessionId - The session ID.connectionId - The connection ID of the client to receive the signal.props - The SignalProperties object that defines the data and type of the signal.OpenTokExceptionpublic Archive getArchive(java.lang.String archiveId) throws OpenTokException
Archive object for the given archive ID.archiveId - The archive ID.Archive object.OpenTokExceptionpublic ArchiveList listArchives() throws OpenTokException
Archive objects, representing archives that are both
both completed and in-progress, for your API key. This list is limited to 1000 archives
starting with the first archive recorded. For a specific range of archives, call
listArchives(int offset, int count).Archive objects.OpenTokExceptionpublic ArchiveList listArchives(java.lang.String sessionId) throws OpenTokException
Archive objects, representing archives that are both
both completed and in-progress, for your API key.sessionId - The sessionid of the session which started or automatically enabled archiving.
If the session is null or empty it will be omitted.Archive objects.OpenTokExceptionpublic ArchiveList listArchives(int offset, int count) throws OpenTokException
Archive objects, representing archives that are both
both completed and in-progress, for your API key.offset - The index offset of the first archive. 0 is offset of the most recently started
archive.
1 is the offset of the archive that started prior to the most recent archive.count - The number of archives to be returned. The maximum number of archives returned
is 1000.Archive objects.OpenTokExceptionpublic ArchiveList listArchives(java.lang.String sessionId, int offset, int count) throws OpenTokException
Archive objects, representing archives that are both
both completed and in-progress, for your API key.offset - The index offset of the first archive. 0 is offset of the most recently started
archive.
1 is the offset of the archive that started prior to the most recent archive.count - The number of archives to be returned. The maximum number of archives returned
is 1000.sessionId - The sessionid of the session which started or automatically enabled archiving.Archive objects.OpenTokExceptionpublic Archive startArchive(java.lang.String sessionId, ArchiveProperties properties) throws OpenTokException
startArchive() method
lets you disable audio or video recording.
Clients must be actively connected to the OpenTok session for you to successfully start recording an archive.
You can only record one archive at a time for a given session. You can only record archives of sessions that use the OpenTok Media Router (sessions with the media mode set to routed); you cannot archive sessions with the media mode set to relayed.
For more information on archiving, see the OpenTok archiving developer guide.
sessionId - The session ID of the OpenTok session to archive.properties - This ArchiveProperties object defines options for the archive.OpenTokExceptionpublic Archive startArchive(java.lang.String sessionId) throws OpenTokException
OpenTokExceptionpublic Archive startArchive(java.lang.String sessionId, java.lang.String name) throws OpenTokException
OpenTokExceptionpublic Archive stopArchive(java.lang.String archiveId) throws OpenTokException
Archives automatically stop recording after 120 minutes or when all clients have disconnected from the session being archived.
archiveId - The archive ID of the archive you want to stop recording.OpenTokExceptionpublic void deleteArchive(java.lang.String archiveId)
throws OpenTokException
You can only delete an archive which has a status of "available" or "uploaded". Deleting an archive removes its record from the list of archives. For an "available" archive, it also removes the archive file, making it unavailable for download.
archiveId - The archive ID of the archive you want to delete.OpenTokExceptionpublic void addArchiveStream(java.lang.String archiveId,
java.lang.String streamId,
boolean hasAudio,
boolean hasVideo)
throws OpenTokException
This method only works for an archive that has a Archive.StreamMode set
to StreamMode.MANUAL.
You can call this method repeatedly with the same stream ID to enable and disable audio or
video, based on the hasAudio and hasVideo parameter values.
archiveId - The archive ID.streamId - The stream ID.hasAudio - Whether the stream should have audio enabled in the archive.hasVideo - Whether the stream should have video enabled in the archive.OpenTokExceptionpublic void removeArchiveStream(java.lang.String archiveId,
java.lang.String streamId)
throws OpenTokException
This method only works for an archive that has a Archive.StreamMode set
to StreamMode.MANUAL.
archiveId - The archive ID.streamId - The stream ID.OpenTokExceptionpublic void setArchiveLayout(java.lang.String archiveId,
ArchiveProperties properties)
throws OpenTokException
archiveId - {String} The archive ID.properties - The ArchiveProperties object defining the archive layout.OpenTokExceptionpublic Broadcast startBroadcast(java.lang.String sessionId, BroadcastProperties properties) throws OpenTokException
To successfully start broadcasting a session, at least one client must be connected to the session.
You can only have one active live streaming broadcast at a time for a session (however, having more than one would not be useful). The live streaming broadcast can target one HLS endpoint and up to five RTMP servers simulteneously for a session. You can only start live streaming for sessions that use the OpenTok Media Router (with the media mode set to routed); you cannot use live streaming with sessions that have the media mode set to relayed OpenTok Media Router. See The OpenTok Media Router and media modes.
For more information on broadcasting, see the Broadcast developer guide.
sessionId - The session ID of the OpenTok session to broadcast.properties - The BroadcastProperties object defines options for the broadcast.OpenTokExceptionpublic Broadcast stopBroadcast(java.lang.String broadcastId) throws OpenTokException
For more information on broadcasting, see the Broadcast developer guide.
broadcastId - The broadcast ID of the broadcasting sessionOpenTokExceptionpublic Broadcast getBroadcast(java.lang.String broadcastId) throws OpenTokException
Broadcast object for the given broadcast ID.broadcastId - The broadcast ID.Broadcast object.OpenTokExceptionpublic void setBroadcastLayout(java.lang.String broadcastId,
BroadcastProperties properties)
throws OpenTokException
broadcastId - {String} The broadcast ID.properties - This BroadcastProperties object that defines layout options for
the broadcast.OpenTokExceptionpublic void addBroadcastStream(java.lang.String broadcastId,
java.lang.String streamId,
boolean hasAudio,
boolean hasVideo)
throws OpenTokException
This method only works for an archive that has a Archive.StreamMode set
to StreamMode.MANUAL.
You can call this method repeatedly with the same stream ID to enable and disable audio or
video, based on the hasAudio and hasVideo parameter values.
broadcastId - The broadcast ID.streamId - The stream ID.hasAudio - Whether the stream should have audio enabled in the broadcast.hasVideo - Whether the stream should have video enabled in the broadcast.OpenTokExceptionpublic void removeBroadcastStream(java.lang.String broadcastId,
java.lang.String streamId)
throws OpenTokException
This method only works for an archive that has a Archive.StreamMode set
to StreamMode.MANUAL.
broadcastId - The broadcast ID.streamId - The stream ID.OpenTokExceptionpublic void setStreamLayouts(java.lang.String sessionId,
StreamListProperties properties)
throws OpenTokException
You can set the initial layout class list for streams published by a client when you generate
used by the client. See the generateToken(String, TokenOptions) method.
sessionId - {String} The session ID of the session the streams belong to.properties - This StreamListProperties object defines class lists for one or more
streams in the session.OpenTokExceptionpublic void forceDisconnect(java.lang.String sessionId,
java.lang.String connectionId)
throws OpenTokException
Use this API to forcibly terminate a connection of a session.
sessionId - The session ID of the connectionconnectionId - The connection ID to disconnectOpenTokExceptionpublic void forceMuteStream(java.lang.String sessionId,
java.lang.String streamId)
throws OpenTokException
For more information, see Muting the audio of streams in a session.
sessionId - The session ID.streamId - The stream ID.OpenTokExceptionforceMuteAll(String, MuteAllProperties)public void forceMuteAll(java.lang.String sessionId,
MuteAllProperties properties)
throws OpenTokException
In addition to existing streams, any streams that are published after the call
to this method are published with audio muted. You can remove the mute state of
a session by calling the OpenTok.disableForceMute() method.
For more information, see Muting the audio of streams in a session.
sessionId - The session ID.properties - Defines a list of stream IDs for streams that should be excluded
from the mute action.OpenTokExceptionforceMuteStream(String, String),
disableForceMute(String)public void disableForceMute(java.lang.String sessionId)
throws OpenTokException
After you call the OpenTok.forceMuteAll() method,
any streams published after the call are published with audio muted. When you call the
OpenTok.disableForceMute() method, future streams published to the session
are not muted (but any existing muted streams remain muted).
sessionId - The session ID.OpenTokExceptionforceMuteAll(String, MuteAllProperties)public Stream getStream(java.lang.String sessionId, java.lang.String streamId) throws OpenTokException
Stream object for the given session ID and stream ID.sessionId - The session ID.streamId - The stream ID.Stream object.OpenTokExceptionpublic StreamList listStreams(java.lang.String sessionId) throws OpenTokException
Stream objects for the given session ID.sessionId - The session ID.Stream objects.OpenTokExceptionpublic Sip dial(java.lang.String sessionId, java.lang.String token, SipProperties properties) throws OpenTokException
sessionId - The session ID.token - OpenTok token to be used for the participant being called. You can add token
data to identify that the participant is on a SIP endpoint or for other identifying data,
such as phone numbers. (The OpenTok client libraries include properties for inspecting
the connection data for a client connected to a session.) See the
Token Creation developer guide.properties - The SipProperties object defining options for the SIP call.Sip object.OpenTokExceptionpublic void playDTMF(java.lang.String sessionId,
java.lang.String dtmfDigits)
throws OpenTokException
sessionId - The session ID.dtmfDigits - The string of DTMF digits to send. This can include 0-9, "*", "#",
and "p". A p indicates a pause of 500ms (if you need to add a delay in sending the digits).OpenTokExceptionpublic void playDTMF(java.lang.String sessionId,
java.lang.String connectionId,
java.lang.String dtmfDigits)
throws OpenTokException
sessionId - The session ID.connectionId - The session ID of the client to receive the DTMF digits.dtmfDigits - The string of DTMF digits to send. This can include 0-9, "*", "#",
and "p". A p indicates a pause of 500ms (if you need to add a delay in sending the digits).OpenTokExceptionpublic AudioConnector connectAudioStream(java.lang.String sessionId, java.lang.String token, AudioConnectorProperties properties) throws OpenTokException
sessionId - The session ID.token - The OpenTok token to be used for the Audio Connector connection to the
OpenTok session. You can add token data to identify that the connection
is the Audio Connector endpoint or for other identifying data.properties - The ConnectProperties object defines options used in the request
to the Audio Connector API endpoint.OpenTokExceptionpublic Render startRender(java.lang.String sessionId, java.lang.String token, RenderProperties properties) throws OpenTokException
sessionId - The session ID.properties - The RenderProperties object defining the properties for the Render call.Render response object.OpenTokExceptionpublic Render getRender(java.lang.String renderId) throws OpenTokException
renderId - The ID of the Experience Composer to retrieve.Render response object associated with the provided ID.OpenTokExceptionpublic void stopRender(java.lang.String renderId)
throws OpenTokException
renderId - The ID of the Experience Composer to stop.OpenTokExceptionpublic java.util.List<Render> listRenders() throws OpenTokException
Render objects.OpenTokExceptionpublic java.util.List<Render> listRenders(java.lang.Integer offset, java.lang.Integer count) throws OpenTokException
offset - (optional) Start offset in the list of existing Renders.count - (optional) Number of Renders to retrieve starting at offset. Maximum 1000.Render objects.OpenTokExceptionpublic Caption startCaptions(java.lang.String sessionId, java.lang.String token, CaptionProperties properties) throws OpenTokException
sessionId - The session ID of the OpenTok session. The audio from Publishers publishing into
this session will be used to generate the captions.token - A valid OpenTok token with role set to Moderator.properties - The CaptionProperties object defining optional properties of the live captioning.Caption response containing the captions ID for this call.OpenTokExceptionpublic void stopCaptions(java.lang.String captionsId)
throws OpenTokException
captionsId - The unique ID for the audio captioning session,
as obtained from Caption.getCaptionsId().OpenTokExceptionpublic void close()